Message ID | 20240622110929.3115714-3-a-bhatia1@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge: cdns-dsi: Fix the color-shift issue | expand |
On 22/06/2024 14:09, Aradhya Bhatia wrote: > Instead of manually finding the next bridge/panel, and maintaining the > panel-bridge (in-case the next entity is a panel), switch to using the > automatically managing devm_drm_of_get_bridge() API. > > Drop the drm_panel support completely from the driver while at it. > > Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tomi > --- > .../gpu/drm/bridge/cadence/cdns-dsi-core.c | 28 ++----------------- > .../gpu/drm/bridge/cadence/cdns-dsi-core.h | 2 -- > 2 files changed, 3 insertions(+), 27 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > index b016f2ba06bb..5159c3f0853e 100644 > --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c > @@ -920,8 +920,6 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, > struct cdns_dsi_output *output = &dsi->output; > struct cdns_dsi_input *input = &dsi->input; > struct drm_bridge *bridge; > - struct drm_panel *panel; > - struct device_node *np; > int ret; > > /* > @@ -939,26 +937,10 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, > /* > * The host <-> device link might be described using an OF-graph > * representation, in this case we extract the device of_node from > - * this representation, otherwise we use dsidev->dev.of_node which > - * should have been filled by the core. > + * this representation. > */ > - np = of_graph_get_remote_node(dsi->base.dev->of_node, DSI_OUTPUT_PORT, > - dev->channel); > - if (!np) > - np = of_node_get(dev->dev.of_node); > - > - panel = of_drm_find_panel(np); > - if (!IS_ERR(panel)) { > - bridge = drm_panel_bridge_add_typed(panel, > - DRM_MODE_CONNECTOR_DSI); > - } else { > - bridge = of_drm_find_bridge(np); > - if (!bridge) > - bridge = ERR_PTR(-EINVAL); > - } > - > - of_node_put(np); > - > + bridge = devm_drm_of_get_bridge(dsi->base.dev, dsi->base.dev->of_node, > + DSI_OUTPUT_PORT, dev->channel); > if (IS_ERR(bridge)) { > ret = PTR_ERR(bridge); > dev_err(host->dev, "failed to add DSI device %s (err = %d)", > @@ -968,7 +950,6 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, > > output->dev = dev; > output->bridge = bridge; > - output->panel = panel; > > /* > * The DSI output has been properly configured, we can now safely > @@ -984,12 +965,9 @@ static int cdns_dsi_detach(struct mipi_dsi_host *host, > struct mipi_dsi_device *dev) > { > struct cdns_dsi *dsi = to_cdns_dsi(host); > - struct cdns_dsi_output *output = &dsi->output; > struct cdns_dsi_input *input = &dsi->input; > > drm_bridge_remove(&input->bridge); > - if (output->panel) > - drm_panel_bridge_remove(output->bridge); > > return 0; > } > diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h > index ca7ea2da635c..5db5dbbbcaad 100644 > --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h > +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h > @@ -10,7 +10,6 @@ > > #include <drm/drm_bridge.h> > #include <drm/drm_mipi_dsi.h> > -#include <drm/drm_panel.h> > > #include <linux/bits.h> > #include <linux/completion.h> > @@ -21,7 +20,6 @@ struct reset_control; > > struct cdns_dsi_output { > struct mipi_dsi_device *dev; > - struct drm_panel *panel; > struct drm_bridge *bridge; > union phy_configure_opts phy_opts; > };
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c index b016f2ba06bb..5159c3f0853e 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -920,8 +920,6 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, struct cdns_dsi_output *output = &dsi->output; struct cdns_dsi_input *input = &dsi->input; struct drm_bridge *bridge; - struct drm_panel *panel; - struct device_node *np; int ret; /* @@ -939,26 +937,10 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, /* * The host <-> device link might be described using an OF-graph * representation, in this case we extract the device of_node from - * this representation, otherwise we use dsidev->dev.of_node which - * should have been filled by the core. + * this representation. */ - np = of_graph_get_remote_node(dsi->base.dev->of_node, DSI_OUTPUT_PORT, - dev->channel); - if (!np) - np = of_node_get(dev->dev.of_node); - - panel = of_drm_find_panel(np); - if (!IS_ERR(panel)) { - bridge = drm_panel_bridge_add_typed(panel, - DRM_MODE_CONNECTOR_DSI); - } else { - bridge = of_drm_find_bridge(np); - if (!bridge) - bridge = ERR_PTR(-EINVAL); - } - - of_node_put(np); - + bridge = devm_drm_of_get_bridge(dsi->base.dev, dsi->base.dev->of_node, + DSI_OUTPUT_PORT, dev->channel); if (IS_ERR(bridge)) { ret = PTR_ERR(bridge); dev_err(host->dev, "failed to add DSI device %s (err = %d)", @@ -968,7 +950,6 @@ static int cdns_dsi_attach(struct mipi_dsi_host *host, output->dev = dev; output->bridge = bridge; - output->panel = panel; /* * The DSI output has been properly configured, we can now safely @@ -984,12 +965,9 @@ static int cdns_dsi_detach(struct mipi_dsi_host *host, struct mipi_dsi_device *dev) { struct cdns_dsi *dsi = to_cdns_dsi(host); - struct cdns_dsi_output *output = &dsi->output; struct cdns_dsi_input *input = &dsi->input; drm_bridge_remove(&input->bridge); - if (output->panel) - drm_panel_bridge_remove(output->bridge); return 0; } diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h index ca7ea2da635c..5db5dbbbcaad 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h @@ -10,7 +10,6 @@ #include <drm/drm_bridge.h> #include <drm/drm_mipi_dsi.h> -#include <drm/drm_panel.h> #include <linux/bits.h> #include <linux/completion.h> @@ -21,7 +20,6 @@ struct reset_control; struct cdns_dsi_output { struct mipi_dsi_device *dev; - struct drm_panel *panel; struct drm_bridge *bridge; union phy_configure_opts phy_opts; };
Instead of manually finding the next bridge/panel, and maintaining the panel-bridge (in-case the next entity is a panel), switch to using the automatically managing devm_drm_of_get_bridge() API. Drop the drm_panel support completely from the driver while at it. Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com> --- .../gpu/drm/bridge/cadence/cdns-dsi-core.c | 28 ++----------------- .../gpu/drm/bridge/cadence/cdns-dsi-core.h | 2 -- 2 files changed, 3 insertions(+), 27 deletions(-)