[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240601143226.GA2003970@ravnborg.org>
Date: Sat, 1 Jun 2024 16:32:26 +0200
From: Sam Ravnborg <sam@...nborg.org>
To: Cristian Ciocaltea <cristian.ciocaltea@...labora.com>
Cc: Andrzej Hajda <andrzej.hajda@...el.com>,
Neil Armstrong <neil.armstrong@...aro.org>,
Robert Foss <rfoss@...nel.org>,
Laurent Pinchart <Laurent.pinchart@...asonboard.com>,
Jonas Karlman <jonas@...boo.se>,
Jernej Skrabec <jernej.skrabec@...il.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>,
Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Daniel Vetter <daniel@...ll.ch>,
Sandy Huang <hjc@...k-chips.com>,
Heiko Stübner <heiko@...ech.de>,
Andy Yan <andy.yan@...k-chips.com>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Mark Yao <markyao0591@...il.com>, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-rockchip@...ts.infradead.org, devicetree@...r.kernel.org,
kernel@...labora.com, Alexandre ARNOUD <aarnoud@...com>,
Luis de Arquer <ldearquer@...il.com>,
Algea Cao <algea.cao@...k-chips.com>
Subject: Re: [PATCH 13/14] drm/bridge: synopsys: Add DW HDMI QP TX controller
driver
Hi Cristian,
a few drive-by comments below.
Sam
> +
> +static const struct drm_connector_funcs dw_hdmi_qp_connector_funcs = {
> + .fill_modes = drm_helper_probe_single_connector_modes,
> + .detect = dw_hdmi_connector_detect,
> + .destroy = drm_connector_cleanup,
> + .force = dw_hdmi_qp_connector_force,
> + .reset = drm_atomic_helper_connector_reset,
> + .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> + .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> +};
> +
> +static int dw_hdmi_qp_bridge_attach(struct drm_bridge *bridge,
> + enum drm_bridge_attach_flags flags)
> +{
> + struct dw_hdmi *hdmi = bridge->driver_private;
> +
> + if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)
> + return drm_bridge_attach(bridge->encoder, hdmi->next_bridge,
> + bridge, flags);
> +
> + return dw_hdmi_connector_create(hdmi, &dw_hdmi_qp_connector_funcs);
> +}
Are there any users left that requires the display driver to create the
connector?
In other words - could this driver fail if DRM_BRIDGE_ATTACH_NO_CONNECTOR
is not passed and drop dw_hdmi_connector_create()?
I did not try to verify this - just a naive question.
> +
> +static enum drm_mode_status
> +dw_hdmi_qp_bridge_mode_valid(struct drm_bridge *bridge,
> + const struct drm_display_info *info,
> + const struct drm_display_mode *mode)
> +{
> + struct dw_hdmi *hdmi = bridge->driver_private;
> + const struct dw_hdmi_plat_data *pdata = hdmi->plat_data;
> + enum drm_mode_status mode_status = MODE_OK;
> +
> + if (pdata->mode_valid)
> + mode_status = pdata->mode_valid(hdmi, pdata->priv_data, info,
> + mode);
> +
> + return mode_status;
> +}
> +
> +static void dw_hdmi_qp_bridge_atomic_disable(struct drm_bridge *bridge,
> + struct drm_bridge_state *old_state)
> +{
> + struct dw_hdmi *hdmi = bridge->driver_private;
> +
> + mutex_lock(&hdmi->mutex);
> + hdmi->disabled = true;
> + hdmi->curr_conn = NULL;
> + dw_hdmi_qp_update_power(hdmi);
> + dw_handle_plugged_change(hdmi, false);
> + mutex_unlock(&hdmi->mutex);
> +}
> +
> +static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge,
> + struct drm_bridge_state *old_state)
> +{
> + struct dw_hdmi *hdmi = bridge->driver_private;
> + struct drm_atomic_state *state = old_state->base.state;
> + struct drm_connector *connector;
> +
> + connector = drm_atomic_get_new_connector_for_encoder(state,
> + bridge->encoder);
> +
> + mutex_lock(&hdmi->mutex);
> + hdmi->disabled = false;
> + hdmi->curr_conn = connector;
> + dw_hdmi_qp_update_power(hdmi);
> + dw_handle_plugged_change(hdmi, true);
> + mutex_unlock(&hdmi->mutex);
> +}
> +
> +static const struct drm_bridge_funcs dw_hdmi_qp_bridge_funcs = {
> + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
> + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
> + .atomic_reset = drm_atomic_helper_bridge_reset,
> + .attach = dw_hdmi_qp_bridge_attach,
> + .detach = dw_hdmi_bridge_detach,
> + .atomic_check = dw_hdmi_bridge_atomic_check,
> + .atomic_enable = dw_hdmi_qp_bridge_atomic_enable,
> + .atomic_disable = dw_hdmi_qp_bridge_atomic_disable,
> + .mode_set = dw_hdmi_bridge_mode_set,
The use of mode_set is deprecated - see drm_bridge.h
Powered by blists - more mailing lists