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