[PATCH 07/14] drm/amdgpu: To define whether the GPU has DCE engine.

Alex Deucher alexdeucher at gmail.com
Fri Aug 5 18:33:34 UTC 2016


On Fri, Aug 5, 2016 at 2:08 AM, Emily Deng <Emily.Deng at amd.com> wrote:
> For virtual display feature, when the GPU has DCE engine, need to disable
> the VGA render and CRTC, or it will hang when initialize GMC. So first detect
> whether the GPU has DCE engine.
>
> Signed-off-by: Emily Deng <Emily.Deng at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 27 +++++++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h |  2 ++
>  2 files changed, 29 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> index 9831753..1b62116 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
> @@ -259,6 +259,33 @@ static const int object_connector_convert[] = {
>         DRM_MODE_CONNECTOR_Unknown
>  };
>
> +bool amdgpu_atombios_has_dce_engine_info(struct amdgpu_device *adev)
> +{
> +       struct amdgpu_mode_info *mode_info = &adev->mode_info;
> +       struct atom_context *ctx = mode_info->atom_context;
> +       int index = GetIndexIntoMasterTable(DATA, Object_Header);
> +       u16 size, data_offset;
> +       u8 frev, crev;
> +       ATOM_DISPLAY_OBJECT_PATH_TABLE *path_obj;
> +       ATOM_OBJECT_HEADER *obj_header;
> +
> +       if (!amdgpu_atom_parse_data_header(ctx, index, &size, &frev, &crev, &data_offset))
> +               return false;
> +
> +       if (crev < 2)
> +               return false;
> +
> +       obj_header = (ATOM_OBJECT_HEADER *) (ctx->bios + data_offset);
> +       path_obj = (ATOM_DISPLAY_OBJECT_PATH_TABLE *)
> +           (ctx->bios + data_offset +
> +            le16_to_cpu(obj_header->usDisplayPathTableOffset));
> +
> +       if (path_obj->ucNumOfDispPath)
> +               return true;
> +       else
> +               return false;
> +}
> +
>  bool amdgpu_atombios_get_connector_info_from_object_table(struct amdgpu_device *adev)
>  {
>         struct amdgpu_mode_info *mode_info = &adev->mode_info;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h
> index 8c2e696..15dd43e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h
> @@ -140,6 +140,8 @@ struct amdgpu_i2c_bus_rec amdgpu_atombios_lookup_i2c_gpio(struct amdgpu_device *
>                                                           uint8_t id);
>  void amdgpu_atombios_i2c_init(struct amdgpu_device *adev);
>
> +bool amdgpu_atombios_has_dce_engine_info(struct amdgpu_device *adev);
> +
>  bool amdgpu_atombios_get_connector_info_from_object_table(struct amdgpu_device *adev);
>
>  int amdgpu_atombios_get_clock_info(struct amdgpu_device *adev);
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list