From: Jani Nikula <jani.nikula@linux.intel.com>
To: Yongbang Shi <shiyongbang@huawei.com>,
xinliang.liu@linaro.org, tiantao6@hisilicon.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch,
kong.kongxinwei@hisilicon.com
Cc: liangjian010@huawei.com, chenjianmin@huawei.com,
lidongming5@huawei.com, libaihan@huawei.com,
shenjian15@huawei.com, shaojijie@huawei.com,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
shiyongbang@huawei.com
Subject: Re: [PATCH v7 drm-dp 5/9] drm/hisilicon/hibmc: Getting connector info and EDID by using AUX channel
Date: Mon, 24 Mar 2025 15:33:13 +0200 [thread overview]
Message-ID: <87jz8ea6zq.fsf@intel.com> (raw)
In-Reply-To: <ff11c8ac-7eb4-42cb-86d3-ad9924c9374b@huawei.com>
On Mon, 24 Mar 2025, Yongbang Shi <shiyongbang@huawei.com> wrote:
>> On Wed, 19 Mar 2025, Yongbang Shi <shiyongbang@huawei.com> wrote:
>>> From: Baihan Li <libaihan@huawei.com>
>>>
>>> Add registering drm_aux and use it to get connector edid with drm
>>> functions. Add ddc channel in connector initialization to put drm_aux
>>> in drm_connector.
>>>
>>> Signed-off-by: Baihan Li <libaihan@huawei.com>
>>> Signed-off-by: Yongbang Shi <shiyongbang@huawei.com>
>>> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>> ---
>>> ChangeLog:
>>> v6 -> v7:
>>> - add if statement about drm aux in hibmc_dp_connector_get_modes(), suggested by Jani Nikula
>> I don't understand this, and I did not suggest such a thing.
>>
>> BR,
>> Jani.
>>
> Hi Jani,
>
> Is the modification of v8 correct?
I never received that for whatever reason.
>
>
>>> v5 -> v6:
>>> - move the detect_ctx() to the patch 7/9.
>>> v2 -> v3:
>>> - Capitalized EDID and AUX, suggested by Dmitry Baryshkov.
>>> v1 -> v2:
>>> - deleting type conversion, suggested by Dmitry Baryshkov.
>>> - deleting hibmc_dp_connector_get_modes() and using drm_connector_helper_get_modes(), suggested by Dmitry Baryshkov.
>>> ---
>>> drivers/gpu/drm/hisilicon/hibmc/dp/dp_aux.c | 3 +-
>>> .../gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c | 35 ++++++++++++++++---
>>> .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h | 5 +++
>>> 3 files changed, 37 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_aux.c b/drivers/gpu/drm/hisilicon/hibmc/dp/dp_aux.c
>>> index ded9e7ce887a..e0bb9b14d9d8 100644
>>> --- a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_aux.c
>>> +++ b/drivers/gpu/drm/hisilicon/hibmc/dp/dp_aux.c
>>> @@ -161,7 +161,8 @@ void hibmc_dp_aux_init(struct hibmc_dp *dp)
>>> HIBMC_DP_MIN_PULSE_NUM);
>>>
>>> dp->aux.transfer = hibmc_dp_aux_xfer;
>>> - dp->aux.is_remote = 0;
>>> + dp->aux.name = kasprintf(GFP_KERNEL, "HIBMC DRM dp aux");
>>> + dp->aux.drm_dev = dp->drm_dev;
>>> drm_dp_aux_init(&dp->aux);
>>> dp->dp_dev->aux = &dp->aux;
>>> }
>>> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
>>> index 603d6b198a54..0256724d8b9b 100644
>>> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
>>> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_dp.c
>>> @@ -15,11 +15,20 @@
>>>
>>> static int hibmc_dp_connector_get_modes(struct drm_connector *connector)
>>> {
>>> + struct hibmc_dp *dp = to_hibmc_dp(connector);
>>> + const struct drm_edid *drm_edid;
>>> int count;
>>>
>>> - count = drm_add_modes_noedid(connector, connector->dev->mode_config.max_width,
>>> - connector->dev->mode_config.max_height);
>>> - drm_set_preferred_mode(connector, 1024, 768); // temporary implementation
>>> + if (!dp->aux.name)
>>> + return 0;
>>> +
>>> + drm_edid = drm_edid_read_ddc(connector, &dp->aux.ddc);
>>> +
>>> + drm_edid_connector_update(connector, drm_edid);
>>> +
>>> + count = drm_edid_connector_add_modes(connector);
>>> +
>>> + drm_edid_free(drm_edid);
>>>
>>> return count;
>>> }
>>> @@ -28,12 +37,28 @@ static const struct drm_connector_helper_funcs hibmc_dp_conn_helper_funcs = {
>>> .get_modes = hibmc_dp_connector_get_modes,
>>> };
>>>
>>> +static int hibmc_dp_late_register(struct drm_connector *connector)
>>> +{
>>> + struct hibmc_dp *dp = to_hibmc_dp(connector);
>>> +
>>> + return drm_dp_aux_register(&dp->aux);
>>> +}
>>> +
>>> +static void hibmc_dp_early_unregister(struct drm_connector *connector)
>>> +{
>>> + struct hibmc_dp *dp = to_hibmc_dp(connector);
>>> +
>>> + drm_dp_aux_unregister(&dp->aux);
>>> +}
>>> +
>>> static const struct drm_connector_funcs hibmc_dp_conn_funcs = {
>>> .reset = drm_atomic_helper_connector_reset,
>>> .fill_modes = drm_helper_probe_single_connector_modes,
>>> .destroy = drm_connector_cleanup,
>>> .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
>>> .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>>> + .late_register = hibmc_dp_late_register,
>>> + .early_unregister = hibmc_dp_early_unregister,
>>> };
>>>
>>> static inline int hibmc_dp_prepare(struct hibmc_dp *dp, struct drm_display_mode *mode)
>>> @@ -103,8 +128,8 @@ int hibmc_dp_init(struct hibmc_drm_private *priv)
>>>
>>> drm_encoder_helper_add(encoder, &hibmc_dp_encoder_helper_funcs);
>>>
>>> - ret = drm_connector_init(dev, connector, &hibmc_dp_conn_funcs,
>>> - DRM_MODE_CONNECTOR_DisplayPort);
>>> + ret = drm_connector_init_with_ddc(dev, connector, &hibmc_dp_conn_funcs,
>>> + DRM_MODE_CONNECTOR_DisplayPort, &dp->aux.ddc);
>>> if (ret) {
>>> drm_err(dev, "init dp connector failed: %d\n", ret);
>>> return ret;
>>> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
>>> index d982f1e4b958..3ddd71aada66 100644
>>> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
>>> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h
>>> @@ -47,6 +47,11 @@ static inline struct hibmc_vdac *to_hibmc_vdac(struct drm_connector *connector)
>>> return container_of(connector, struct hibmc_vdac, connector);
>>> }
>>>
>>> +static inline struct hibmc_dp *to_hibmc_dp(struct drm_connector *connector)
>>> +{
>>> + return container_of(connector, struct hibmc_dp, connector);
>>> +}
>>> +
>>> static inline struct hibmc_drm_private *to_hibmc_drm_private(struct drm_device *dev)
>>> {
>>> return container_of(dev, struct hibmc_drm_private, dev);
--
Jani Nikula, Intel
next prev parent reply other threads:[~2025-03-24 13:33 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 3:24 [PATCH v7 drm-dp 0/9] Add HPD, getting EDID, colorbar features in DP function Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 1/9] drm/hisilicon/hibmc: Restructuring the header dp_reg.h Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 2/9] drm/hisilicon/hibmc: Add dp serdes cfg to adjust serdes rate, voltage and pre-emphasis Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 3/9] drm/hisilicon/hibmc: Add dp serdes cfg in dp process Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 4/9] drm/hisilicon/hibmc: Refactor the member of drm_aux in struct hibmc_dp Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 5/9] drm/hisilicon/hibmc: Getting connector info and EDID by using AUX channel Yongbang Shi
2025-03-20 9:50 ` Jani Nikula
2025-03-24 12:41 ` Yongbang Shi
2025-03-24 13:33 ` Jani Nikula [this message]
2025-03-25 3:14 ` Yongbang Shi
2025-03-26 9:32 ` Jani Nikula
2025-03-27 3:00 ` Yongbang Shi
2025-03-27 9:59 ` Jani Nikula
2025-03-28 6:43 ` Yongbang Shi
2025-03-28 10:28 ` Jani Nikula
2025-03-28 10:51 ` Maxime Ripard
2025-03-29 6:12 ` Yongbang Shi
2025-03-30 16:56 ` Dmitry Baryshkov
2025-03-19 3:24 ` [PATCH v7 drm-dp 6/9] drm/hisilicon/hibmc: Add colorbar-cfg feature and its debugfs file Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 7/9] drm/hisilicon/hibmc: Enable this hot plug detect of irq feature Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 8/9] drm/hisilicon/hibmc: Add MSI irq getting and requesting for HPD Yongbang Shi
2025-03-19 3:24 ` [PATCH v7 drm-dp 9/9] drm/hisilicon/hibmc: Add vga connector detect functions Yongbang Shi
2025-03-19 11:54 ` [PATCH v7 drm-dp 0/9] Add HPD, getting EDID, colorbar features in DP function Dmitry Baryshkov
2025-03-20 5:12 ` Yongbang Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jz8ea6zq.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=airlied@gmail.com \
--cc=chenjianmin@huawei.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=kong.kongxinwei@hisilicon.com \
--cc=liangjian010@huawei.com \
--cc=libaihan@huawei.com \
--cc=lidongming5@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=shaojijie@huawei.com \
--cc=shenjian15@huawei.com \
--cc=shiyongbang@huawei.com \
--cc=tiantao6@hisilicon.com \
--cc=tzimmermann@suse.de \
--cc=xinliang.liu@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.