[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CADnq5_PTVy-gTr=xWnTULQfUsBYY9WbyL1yZ45ew+OPHpO8xdA@mail.gmail.com>
Date: Tue, 6 May 2025 11:04:16 -0400
From: Alex Deucher <alexdeucher@...il.com>
To: Sasha Levin <sashal@...nel.org>
Cc: linux-kernel@...r.kernel.org, stable@...r.kernel.org,
Alex Deucher <alexander.deucher@....com>, Harry Wentland <harry.wentland@....com>, sunpeng.li@....com,
christian.koenig@....com, airlied@...il.com, simona@...ll.ch,
roman.li@....com, srinivasan.shanmugam@....com, amd-gfx@...ts.freedesktop.org,
dri-devel@...ts.freedesktop.org
Subject: Re: [PATCH AUTOSEL 6.12 376/486] drm/amd/display/dc: enable oem i2c
support for DCE 12.x
On Mon, May 5, 2025 at 6:53 PM Sasha Levin <sashal@...nel.org> wrote:
>
> From: Alex Deucher <alexander.deucher@....com>
>
> [ Upstream commit 2ed83f2cc41e8f7ced1c0610ec2b0821c5522ed5 ]
>
> Use the value pulled from the vbios just like newer chips.
>
> Reviewed-by: Harry Wentland <harry.wentland@....com>
> Signed-off-by: Alex Deucher <alexander.deucher@....com>
> Signed-off-by: Sasha Levin <sashal@...nel.org>
This is not a bug fix. It's only applicable as part of a new feature
that was added in 6.15.
Alex
> ---
> .../dc/resource/dce120/dce120_resource.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/resource/dce120/dce120_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dce120/dce120_resource.c
> index 621825a51f46e..a2ab6776b8855 100644
> --- a/drivers/gpu/drm/amd/display/dc/resource/dce120/dce120_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/resource/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
>
Powered by blists - more mailing lists