From: Sam Ravnborg <sam@ravnborg.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>,
Sean Paul <sean@poorly.run>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
dri-devel@lists.freedesktop.org,
Boris Brezillon <bbrezillon@kernel.org>
Subject: Re: [PATCH v3 04/50] drm/bridge: Add connector-related bridge operations and data
Date: Sun, 15 Dec 2019 11:22:44 +0100 [thread overview]
Message-ID: <20191215102244.GC27552@ravnborg.org> (raw)
In-Reply-To: <20191210225750.15709-5-laurent.pinchart@ideasonboard.com>
Hi Laurent
Small nit below.
> /**
> * struct drm_bridge_funcs - drm_bridge control functions
> @@ -338,6 +343,119 @@ struct drm_bridge_funcs {
> */
> void (*atomic_post_disable)(struct drm_bridge *bridge,
> struct drm_atomic_state *old_state);
> +
> + /**
> + * @detect:
> + *
> + * Check if anything is attached to the bridge output.
> + *
> + * This callback is optional, if not implemented the bridge will be
> + * considered as always having a component attached to its output.
> + * Bridges that implement this callback shall set the
> + * DRM_BRIDGE_OP_DETECT flag in their &drm_bridge->ops.
> + *
> + * RETURNS:
> + *
> + * drm_connector_status indicating the bridge output status.
> + */
> + enum drm_connector_status (*detect)(struct drm_bridge *bridge);
> +
> + /**
> + * @get_modes:
> + *
> + * Fill all modes currently valid for the sink into the &drm_connector
> + * with drm_mode_probed_add().
> + *
> + * The @get_modes callback is mostly intended to support non-probable
non-probeable?
> + * displays such as many fixed panels. Bridges that support reading
> + * EDID shall leave @get_modes unimplemented and implement the
> + * &drm_bridge_funcs->get_edid callback instead.
> + *
> + * This callback is optional. Bridges that implement it shall set the
> + * DRM_BRIDGE_OP_MODES flag in their &drm_bridge->ops.
> + *
> + * The connector parameter shall be used for the sole purpose of
> + * filling modes, and shall not be stored internally by bridge drivers
> + * for future usage.
> + *
> + * RETURNS:
> + *
> + * The number of modes added by calling drm_mode_probed_add().
> + */
> + int (*get_modes)(struct drm_bridge *bridge,
> + struct drm_connector *connector);
> +
> + /**
> + * @get_edid:
> + *
> + * Read and parse the EDID data of the connected display.
> + *
> + * The @get_edid callback is the preferred way of reporting mode
> + * information for a display connected to the bridge output. Bridges
> + * that support readind EDID shall implement this callback and leave
s/readind/probing/? - or fix the spelling mistake.
> + * the @get_modes callback unimplemented.
> + *
> + * The caller of this operation shall first verify the output
> + * connection status and refrain from reading EDID from a disconnected
> + * output.
> + *
> + * This callback is optional. Bridges that implement it shall set the
> + * DRM_BRIDGE_OP_EDID flag in their &drm_bridge->ops.
> + *
> + * The connector parameter shall be used for the sole purpose of EDID
> + * retrieval and parsing, and shall not be stored internally by bridge
> + * drivers for future usage.
> + *
> + * RETURNS:
> + *
> + * An edid structure newly allocated with kmalloc() (or similar) on
> + * success, or NULL otherwise. The caller is responsible for freeing
> + * the returned edid structure with kfree().
> + */
> + struct edid *(*get_edid)(struct drm_bridge *bridge,
> + struct drm_connector *connector);
> +
> + /**
> + * @hpd_notify:
> + *
> + * Notify the bridge of hot plug detection.
> + *
> + * This callback is optional, it may be implemented by bridges that
> + * need to be notified of display connection or disconnection for
> + * internal reasons. One use case is to reset the internal state of CEC
> + * controllers for HDMI bridges.
> + */
> + void (*hpd_notify)(struct drm_bridge *bridge,
> + enum drm_connector_status status);
> +
> + /**
> + * @hpd_enable:
> + *
> + * Enable hot plug detection. From now on the bridge shall call
> + * drm_bridge_hpd_notify() each time a change is detected in the output
> + * connection status, until hot plug detection gets disabled with
> + * @hpd_disable.
> + *
> + * This callback is optional and shall only be implemented by bridges
> + * that support hot-plug notification without polling. Bridges that
> + * implement it shall also implement the @hpd_disable callback and set
> + * the DRM_BRIDGE_OP_HPD flag in their &drm_bridge->ops.
> + */
> + void (*hpd_enable)(struct drm_bridge *bridge);
> +
> + /**
> + * @hpd_disable:
> + *
> + * Disable hot plug detection. Once this function returns the bridge
> + * shall not call drm_bridge_hpd_notify() when a change in the output
> + * connection status occurs.
> + *
> + * This callback is optional and shall only be implemented by bridges
> + * that support hot-plug notification without polling. Bridges that
> + * implement it shall also implement the @hpd_enable callback and set
> + * the DRM_BRIDGE_OP_HPD flag in their &drm_bridge->ops.
> + */
> + void (*hpd_disable)(struct drm_bridge *bridge);
> };
>
> /**
> @@ -376,6 +494,39 @@ struct drm_bridge_timings {
> bool dual_link;
> };
>
> +/**
> + * enum drm_bridge_ops - Bitmask of operations supported by the bridge
> + */
> +enum drm_bridge_ops {
> + /**
> + * @DRM_BRIDGE_OP_DETECT: The bridge can detect displays connected to
> + * its output. Bridges that set this flag shall implement the
> + * &drm_bridge_funcs->detect callback.
> + */
> + DRM_BRIDGE_OP_DETECT = BIT(0),
> + /**
> + * @DRM_BRIDGE_OP_EDID: The bridge can retrieve the EDID of the display
> + * connected to its output. Bridges that set this flag shall implement
> + * the &drm_bridge_funcs->get_edid callback.
> + */
> + DRM_BRIDGE_OP_EDID = BIT(1),
> + /**
> + * @DRM_BRIDGE_OP_HPD: The bridge can detect hot-plug and hot-unplug
> + * without requiring polling. Bridges that set this flag shall
> + * implement the &drm_bridge_funcs->hpd_enable and
> + * &drm_bridge_funcs->hpd_disable callbacks if they support enabling
> + * and disabling hot-plug detection dynamically.
> + */
> + DRM_BRIDGE_OP_HPD = BIT(2),
> + /**
> + * @DRM_BRIDGE_OP_MODES: The bridge can retrieving the modes supported
> + * by the display at its output. This does not include readind EDID
s/readind/probing/?
> + * which is separately covered by @DRM_BRIDGE_OP_EDID. Bridges that set
> + * this flag shall implement the &drm_bridge_funcs->get_modes callback.
> + */
> + DRM_BRIDGE_OP_MODES = BIT(3),
> +};
> +
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-12-15 10:22 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-10 22:57 [PATCH v3 00/50] drm/omap: Replace custom display drivers with drm_bridge and drm_panel Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 01/50] video: hdmi: Change return type of hdmi_avi_infoframe_init() to void Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 02/50] drm/connector: Add helper to get a connector type name Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 03/50] drm/edid: Add flag to drm_display_info to identify HDMI sinks Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 04/50] drm/bridge: Add connector-related bridge operations and data Laurent Pinchart
2019-12-11 11:01 ` Mihail Atanassov
2019-12-12 23:15 ` Laurent Pinchart
2019-12-12 23:24 ` Laurent Pinchart
2019-12-15 10:22 ` Sam Ravnborg [this message]
2019-12-18 1:16 ` Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 05/50] drm/bridge: Extend bridge API to disable connector creation Laurent Pinchart
2019-12-17 12:12 ` Tomi Valkeinen
2019-12-18 1:17 ` Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 06/50] drm/bridge: dumb-vga-dac: Rename internal symbols to simple-bridge Laurent Pinchart
2019-12-11 21:13 ` Sam Ravnborg
2019-12-11 23:42 ` Laurent Pinchart
2019-12-12 8:58 ` Maxime Ripard
2019-12-10 22:57 ` [PATCH v3 07/50] drm/bridge: dumb-vga-dac: Rename driver " Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 08/50] drm/bridge: simple-bridge: Add support for non-VGA bridges Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 09/50] drm/bridge: simple-bridge: Add support for enable GPIO Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 10/50] drm/bridge: simple-bridge: Add support for the TI OP362 Laurent Pinchart
2019-12-18 7:04 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 11/50] drm/bridge: Add bridge driver for display connectors Laurent Pinchart
2019-12-15 12:03 ` Sam Ravnborg
2019-12-18 1:48 ` Laurent Pinchart
2019-12-16 9:07 ` Boris Brezillon
2019-12-16 13:11 ` Tomi Valkeinen
2019-12-18 1:45 ` Laurent Pinchart
2019-12-18 6:57 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 12/50] drm/bridge: Add driver for the TI TPD12S015 HDMI level shifter Laurent Pinchart
2019-12-16 13:06 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 13/50] drm/bridge: panel: Implement bridge connector operations Laurent Pinchart
2019-12-16 9:09 ` Boris Brezillon
2019-12-10 22:57 ` [PATCH v3 14/50] drm/bridge: tfp410: Replace manual connector handling with bridge Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 15/50] drm/bridge: tfp410: Allow operation without drm_connector Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 16/50] drm: Add helper to create a connector for a chain of bridges Laurent Pinchart
2019-12-16 9:21 ` Boris Brezillon
2019-12-10 22:57 ` [PATCH v3 17/50] drm/omap: Fix possible object reference leak Laurent Pinchart
2019-12-17 7:28 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 18/50] drm/omap: dss: Cleanup DSS ports on initialisation failure Laurent Pinchart
2019-12-17 7:49 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 19/50] drm/omap: Simplify HDMI mode and infoframe configuration Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 20/50] drm/omap: Factor out display type to connector type conversion Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 21/50] drm/omap: Use the drm_panel_bridge API Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 22/50] drm/omap: dss: Fix output next device lookup in DT Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 23/50] drm/omap: Add infrastructure to support drm_bridge local to DSS outputs Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 24/50] drm/omap: dss: Make omap_dss_device_ops optional Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 25/50] drm/omap: hdmi: Allocate EDID in the .read_edid() operation Laurent Pinchart
2019-12-10 22:57 ` [PATCH v3 26/50] drm/omap: hdmi4: Rework EDID read to isolate data read Laurent Pinchart
2019-12-17 12:25 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 27/50] drm/omap: hdmi5: " Laurent Pinchart
2019-12-17 12:36 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 28/50] drm/omap: hdmi4: Register a drm_bridge for EDID read Laurent Pinchart
2019-12-17 12:41 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 29/50] drm/omap: hdmi5: " Laurent Pinchart
2019-12-17 12:41 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 30/50] drm/omap: hdmi4: Move mode set, enable and disable operations to bridge Laurent Pinchart
2019-12-18 11:26 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 31/50] drm/omap: hdmi5: " Laurent Pinchart
2019-12-18 11:28 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 32/50] drm/omap: hdmi4: Implement drm_bridge .hpd_notify() operation Laurent Pinchart
2019-12-18 11:47 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 33/50] drm/omap: dss: Remove .set_hdmi_mode() and .set_infoframe() operations Laurent Pinchart
2019-12-18 11:50 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 34/50] drm/omap: venc: Register a drm_bridge Laurent Pinchart
2019-12-18 11:53 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 35/50] drm/omap: Create connector for bridges Laurent Pinchart
2019-12-15 10:00 ` Sam Ravnborg
2019-12-18 1:56 ` Laurent Pinchart
2019-12-18 12:55 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 36/50] drm/omap: Switch the HDMI and VENC outputs to drm_bridge Laurent Pinchart
2019-12-18 13:22 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 37/50] drm/omap: Remove HPD, detect and EDID omapdss operations Laurent Pinchart
2019-12-19 8:25 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 38/50] drm/omap: hdmi: Remove omap_dss_device operations Laurent Pinchart
2019-12-19 8:26 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 39/50] drm/omap: venc: " Laurent Pinchart
2019-12-19 8:27 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 40/50] drm/omap: hdmi4: Simplify EDID read Laurent Pinchart
2019-12-19 8:28 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 41/50] drm/omap: hdmi5: " Laurent Pinchart
2019-12-19 8:30 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 42/50] drm/omap: dpi: Sort includes alphabetically Laurent Pinchart
2019-12-19 8:54 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 43/50] drm/omap: dpi: Reorder functions in sections Laurent Pinchart
2019-12-19 8:56 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 44/50] drm/omap: dpi: Simplify clock setting API Laurent Pinchart
2019-12-19 9:01 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 45/50] drm/omap: dpi: Register a drm_bridge Laurent Pinchart
2019-12-19 9:21 ` Tomi Valkeinen
2019-12-19 9:40 ` Laurent Pinchart
2019-12-19 10:01 ` Tomi Valkeinen
2019-12-19 10:03 ` Laurent Pinchart
2019-12-19 10:15 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 46/50] drm/omap: sdi: Sort includes alphabetically Laurent Pinchart
2019-12-19 9:04 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 47/50] drm/omap: sdi: Register a drm_bridge Laurent Pinchart
2019-12-19 9:27 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 48/50] drm/omap: dss: Remove unused omap_dss_device operations Laurent Pinchart
2019-12-19 9:28 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 49/50] drm/omap: dss: Inline the omapdss_display_get() function Laurent Pinchart
2019-12-19 9:31 ` Tomi Valkeinen
2019-12-10 22:57 ` [PATCH v3 50/50] drm/omap: dss: Remove unused omapdss_of_find_connected_device() function Laurent Pinchart
2019-12-19 9:31 ` Tomi Valkeinen
2019-12-15 12:27 ` [PATCH v3 00/50] drm/omap: Replace custom display drivers with drm_bridge and drm_panel Sam Ravnborg
2019-12-18 2:03 ` Laurent Pinchart
2019-12-18 7:07 ` Tomi Valkeinen
2019-12-18 14:46 ` Laurent Pinchart
2019-12-18 15:27 ` Tomi Valkeinen
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=20191215102244.GC27552@ravnborg.org \
--to=sam@ravnborg.org \
--cc=bbrezillon@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=sean@poorly.run \
--cc=sebastian.reichel@collabora.com \
--cc=tomi.valkeinen@ti.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox