On Thu, 7 Dec 2023 at 15:50, Maxime Ripard <mripard@xxxxxxxxxx> wrote: > > The next features we will need to share across drivers will need to > store some parameters for drivers to use, such as the selected output > format. > > Let's create a new connector sub-state dedicated to HDMI controllers, > that will eventually store everything we need. > > Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx> Reviewed-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_atomic_state_helper.c | 35 +++++++++++++++++++++++++++++++ > include/drm/drm_atomic_state_helper.h | 4 ++++ > include/drm/drm_connector.h | 7 +++++++ > 3 files changed, 46 insertions(+) > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c > index 54975de44a0e..e69c0cc1c6da 100644 > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > @@ -570,6 +570,22 @@ void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector) > } > EXPORT_SYMBOL(drm_atomic_helper_connector_tv_reset); > > +/** > + * __drm_atomic_helper_connector_hdmi_reset() - Initializes all HDMI @drm_connector_state resources > + * @connector: DRM connector > + * @new_state: connector state to reset > + * > + * Initializes all HDMI resources from a @drm_connector_state without > + * actually allocating it. This is useful for HDMI drivers, in > + * combination with __drm_atomic_helper_connector_reset() or > + * drm_atomic_helper_connector_reset(). > + */ > +void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector, > + struct drm_connector_state *new_state) > +{ > +} > +EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset); > + > /** > * drm_atomic_helper_connector_tv_check - Validate an analog TV connector state > * @connector: DRM Connector > @@ -619,6 +635,25 @@ int drm_atomic_helper_connector_tv_check(struct drm_connector *connector, > } > EXPORT_SYMBOL(drm_atomic_helper_connector_tv_check); > > +/** > + * drm_atomic_helper_connector_hdmi_check() - Helper to check HDMI connector atomic state > + * @connector: DRM Connector > + * @state: the DRM State object > + * > + * Provides a default connector state check handler for HDMI connectors. > + * Checks that a desired connector update is valid, and updates various > + * fields of derived state. > + * > + * RETURNS: > + * Zero on success, or an errno code otherwise. > + */ > +int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, > + struct drm_atomic_state *state) > +{ > + return 0; > +} > +EXPORT_SYMBOL(drm_atomic_helper_connector_hdmi_check); > + > /** > * __drm_atomic_helper_connector_duplicate_state - copy atomic connector state > * @connector: connector object > diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h > index b9740edb2658..d59d2b3aef9a 100644 > --- a/include/drm/drm_atomic_state_helper.h > +++ b/include/drm/drm_atomic_state_helper.h > @@ -71,7 +71,11 @@ void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_ > void __drm_atomic_helper_connector_reset(struct drm_connector *connector, > struct drm_connector_state *conn_state); > void drm_atomic_helper_connector_reset(struct drm_connector *connector); > +void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector, > + struct drm_connector_state *new_state); > void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector); > +int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector, > + struct drm_atomic_state *state); > int drm_atomic_helper_connector_tv_check(struct drm_connector *connector, > struct drm_atomic_state *state); > void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector); > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 4491c4c2fb6e..000a2a156619 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -1031,6 +1031,13 @@ struct drm_connector_state { > * DRM blob property for HDR output metadata > */ > struct drm_property_blob *hdr_output_metadata; > + > + /** > + * @hdmi: HDMI-related variable and properties. Filled by > + * @drm_atomic_helper_connector_hdmi_check(). > + */ > + struct { > + } hdmi; > }; > > /** > > -- > 2.43.0 >