From: Jani Nikula <jani.nikula@linux.intel.com>
To: "Alvin Šipraga" <alvin@pqrs.dk>,
"Andrzej Hajda" <andrzej.hajda@intel.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Robert Foss" <rfoss@kernel.org>,
"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
"Jonas Karlman" <jonas@kwiboo.se>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"David Airlie" <airlied@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
"Alvin Šipraga" <alsi@bang-olufsen.dk>
Subject: Re: [PATCH] drm: bridge: adv7511: get edid in hpd_work to update CEC phys address
Date: Mon, 23 Oct 2023 14:42:56 +0300 [thread overview]
Message-ID: <87pm15bm4f.fsf@intel.com> (raw)
In-Reply-To: <20231014-adv7511-cec-edid-v1-1-a58ceae0b57e@bang-olufsen.dk>
On Sat, 14 Oct 2023, Alvin Šipraga <alvin@pqrs.dk> wrote:
> From: Alvin Šipraga <alsi@bang-olufsen.dk>
>
> The adv7511 driver is solely responsible for setting the physical
> address of its CEC adapter. To do this, it must read the EDID. However,
> EDID is only read when either the drm_bridge_funcs :: get_edid or
> drm_connector_helper_funcs :: get_modes ops are called. Without loss of
> generality, it cannot be assumed that these ops are called when a sink
> gets attached. Therefore there exist scenarios in which the CEC physical
> address will be invalid (f.f.f.f), rendering the CEC adapter inoperable.
>
> Address this problem by always fetching the EDID in the HPD work when we
> detect a connection. The CEC physical address is set in the process.
>
> Signed-off-by: Alvin Šipraga <alsi@bang-olufsen.dk>
> ---
> Pardon the insertion of the ugly adv7511_get_edid() prototype, but I did
> not want to clobber git history by rearranging a bunch of functions. If
> this is the preferred approach I will happily re-spin the patch.
> ---
> drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> index 2611afd2c1c1..3d32c109963c 100644
> --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
> @@ -424,6 +424,9 @@ static bool adv7511_hpd(struct adv7511 *adv7511)
> return false;
> }
>
> +static struct edid *adv7511_get_edid(struct adv7511 *adv7511,
> + struct drm_connector *connector);
> +
> static void adv7511_hpd_work(struct work_struct *work)
> {
> struct adv7511 *adv7511 = container_of(work, struct adv7511, hpd_work);
> @@ -457,6 +460,9 @@ static void adv7511_hpd_work(struct work_struct *work)
> if (adv7511->connector.dev) {
> if (status == connector_status_disconnected)
> cec_phys_addr_invalidate(adv7511->cec_adap);
> + else
> + adv7511_get_edid(adv7511, &adv7511->connector);
This leaks the returned EDID.
BR,
Jani.
> +
> drm_kms_helper_hotplug_event(adv7511->connector.dev);
> } else {
> drm_bridge_hpd_notify(&adv7511->bridge, status);
>
> ---
> base-commit: 4366faf43308bd91c59a20c43a9f853a9c3bb6e4
> change-id: 20231014-adv7511-cec-edid-ff75bd3ac929
>
--
Jani Nikula, Intel
next prev parent reply other threads:[~2023-10-23 11:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-14 19:43 [PATCH] drm: bridge: adv7511: get edid in hpd_work to update CEC phys address Alvin Šipraga
2023-10-14 19:43 ` Alvin Šipraga
2023-10-14 19:48 ` Alvin Šipraga
2023-10-14 19:48 ` Alvin Šipraga
2023-10-16 8:17 ` Laurent Pinchart
2023-10-16 8:17 ` Laurent Pinchart
2023-10-16 8:46 ` Alvin Šipraga
2023-10-16 8:46 ` Alvin Šipraga
2023-10-23 11:42 ` Jani Nikula [this message]
2023-10-25 7:26 ` Alvin Šipraga
2023-10-25 7:26 ` Alvin Šipraga
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=87pm15bm4f.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alsi@bang-olufsen.dk \
--cc=alvin@pqrs.dk \
--cc=andrzej.hajda@intel.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=linux-kernel@vger.kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.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.