All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Thomas Zimmermann <tzimmermann@suse.de>,
	Maxime Ripard <mripard@kernel.org>
Cc: airlied@redhat.com, jfalempe@redhat.com,
	maarten.lankhorst@linux.intel.com, airlied@gmail.com,
	daniel@ffwll.ch, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v4 12/12] drm/ast: Implement polling for VGA and SIL164 connectors
Date: Tue, 19 Mar 2024 12:13:41 +0200	[thread overview]
Message-ID: <87il1io7fu.fsf@intel.com> (raw)
In-Reply-To: <87le6eo7p2.fsf@intel.com>

On Tue, 19 Mar 2024, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Tue, 19 Mar 2024, Thomas Zimmermann <tzimmermann@suse.de> wrote:
>> Hi
>>
>> Am 19.03.24 um 10:37 schrieb Maxime Ripard:
>>> Hi,
>>>
>>> On Tue, Mar 19, 2024 at 09:00:32AM +0100, Thomas Zimmermann wrote:
>>>> Implement polling for VGA and SIL164 connectors. Set the flag
>>>> DRM_CONNECTOR_POLL_DISCONNECT for each to detect the removal of the
>>>> monitor cable. Implement struct drm_connector_helper_funcs.detect_ctx
>>>> for each type of connector by testing for EDID data. The code for
>>>> both types of connectors is identical for now. Maybe this can later
>>>> become a common helper function for various drivers.
>>>>
>>>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>>>> ---
>>>>   drivers/gpu/drm/ast/ast_mode.c | 36 ++++++++++++++++++++++++++++++++--
>>>>   1 file changed, 34 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
>>>> index 71cc681d6188f..f740b8706a38b 100644
>>>> --- a/drivers/gpu/drm/ast/ast_mode.c
>>>> +++ b/drivers/gpu/drm/ast/ast_mode.c
>>>> @@ -1344,8 +1344,24 @@ static int ast_crtc_init(struct drm_device *dev)
>>>>    * VGA Connector
>>>>    */
>>>>   
>>>> +static int ast_vga_connector_helper_detect_ctx(struct drm_connector *connector,
>>>> +					       struct drm_modeset_acquire_ctx *ctx,
>>>> +					       bool force)
>>>> +{
>>>> +	enum drm_connector_status status = connector_status_disconnected;
>>>> +	const struct drm_edid *edid;
>>>> +
>>>> +	edid = drm_edid_read(connector);
>>>> +	if (edid)
>>>> +		status = connector_status_connected;
>>>> +	drm_edid_free(edid);
>>>> +
>>>> +	return status;
>>>> +}
>>>> +
>>> Yeah, I think it would be worth turning it into a helper. We have a
>>> number of drivers using some variation of that already
>>> (display-connector, loongson).
>>>
>>> It's probably better to use drm_probe_ddc here too instead of parsing
>>> and updating the EDID property each time we call detect.
>>
>> I see. I'll update the patch accordingly. drm_probe_ddc() doesn't update 
>> the property, which is probably better anyway.
>
> The struct drm_edid based drm_edid_read() and friends do *not* parse the
> EDID (apart from what's necessary to read the EDID) nor update the EDID
> property. You need to call drm_edid_connector_update() separately for
> that. This is by design.
>
> The struct edid based drm_get_edid() does parse and update the property,
> and I think adding that was a mistake that a lot of drivers later
> depended on, and couldn't be removed.
>
> As a design consideration, IMO it's also a fine approach to read and
> cache the EDID and update the property at ->detect, and then use
> drm_edid_connector_add_modes() in ->get_modes to avoid re-reading the
> EDID at that time. It's not uncommon to need stuff from the EDID between
> those hooks.

But if drm_probe_ddc() at ->detect and drm_connector_helper_get_modes()
for ->get_modes are sufficient, nothing wrong with that either.

BR,
Jani.

>
>
> BR,
> Jani.

-- 
Jani Nikula, Intel

  reply	other threads:[~2024-03-19 10:13 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-19  8:00 [PATCH v4 00/12] drm/ast: Detect connector status for VGA and SIL164 Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 01/12] drm/ast: Include <linux/of.h> where necessary Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 02/12] drm/ast: Fail probing if DDC channel could not be initialized Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 03/12] drm/ast: Remove struct ast_{vga,sil165}_connector Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 04/12] drm/ast: Allocate instance of struct ast_i2c_chan with managed helpers Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 05/12] drm/ast: Move DDC code to ast_ddc.{c,h} Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 06/12] drm/ast: Rename struct ast_i2c_chan to struct ast_ddc Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 07/12] drm/ast: Pass AST device to ast_ddc_create() Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 08/12] drm/ast: Store AST device in struct ast_ddc Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 09/12] drm/ast: Rename struct i2c_algo_bit_data callbacks and their parameters Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 10/12] drm/ast: Acquire I/O-register lock in DDC code Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 11/12] drm/ast: Use drm_connector_helper_get_modes() Thomas Zimmermann
2024-03-19  8:00 ` [PATCH v4 12/12] drm/ast: Implement polling for VGA and SIL164 connectors Thomas Zimmermann
2024-03-19  9:37   ` Maxime Ripard
2024-03-19  9:51     ` Thomas Zimmermann
2024-03-19 10:08       ` Jani Nikula
2024-03-19 10:13         ` Jani Nikula [this message]
2024-03-19 11:27         ` Thomas Zimmermann

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=87il1io7fu.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=airlied@gmail.com \
    --cc=airlied@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jfalempe@redhat.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=tzimmermann@suse.de \
    /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.