On Mon, May 5, 2025 at 7:04 PM Sasha Levin <sas...@kernel.org> wrote: > > From: Alex Deucher <alexander.deuc...@amd.com> > > [ Upstream commit 2ed83f2cc41e8f7ced1c0610ec2b0821c5522ed5 ] > > Use the value pulled from the vbios just like newer chips. > > Reviewed-by: Harry Wentland <harry.wentl...@amd.com> > Signed-off-by: Alex Deucher <alexander.deuc...@amd.com> > Signed-off-by: Sasha Levin <sas...@kernel.org>
This is a new feature not a bug fix and this change only makes sense with the other changes in kernel 6.15. Alex > --- > .../drm/amd/display/dc/dce120/dce120_resource.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c > b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c > index 18c5a86d2d614..21f10fd8e7025 100644 > --- a/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c > +++ b/drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c > @@ -67,6 +67,7 @@ > #include "reg_helper.h" > > #include "dce100/dce100_resource.h" > +#include "link.h" > > #ifndef mmDP0_DP_DPHY_INTERNAL_CTRL > #define mmDP0_DP_DPHY_INTERNAL_CTRL 0x210f > @@ -659,6 +660,12 @@ static void dce120_resource_destruct(struct > dce110_resource_pool *pool) > > if (pool->base.dmcu != NULL) > dce_dmcu_destroy(&pool->base.dmcu); > + > + if (pool->base.oem_device != NULL) { > + struct dc *dc = pool->base.oem_device->ctx->dc; > + > + dc->link_srv->destroy_ddc_service(&pool->base.oem_device); > + } > } > > static void read_dce_straps( > @@ -1054,6 +1061,7 @@ static bool dce120_resource_construct( > struct dc *dc, > struct dce110_resource_pool *pool) > { > + struct ddc_service_init_data ddc_init_data = {0}; > unsigned int i; > int j; > struct dc_context *ctx = dc->ctx; > @@ -1257,6 +1265,15 @@ static bool dce120_resource_construct( > > bw_calcs_data_update_from_pplib(dc); > > + if (dc->ctx->dc_bios->fw_info.oem_i2c_present) { > + ddc_init_data.ctx = dc->ctx; > + ddc_init_data.link = NULL; > + ddc_init_data.id.id = > dc->ctx->dc_bios->fw_info.oem_i2c_obj_id; > + ddc_init_data.id.enum_id = 0; > + ddc_init_data.id.type = OBJECT_TYPE_GENERIC; > + pool->base.oem_device = > dc->link_srv->create_ddc_service(&ddc_init_data); > + } > + > return true; > > irqs_create_fail: > -- > 2.39.5 >