[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