mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
drm/bridge: fsl-ldb: don't create a panel_bridge
Now a panel_bridge is automatically created for every drm_panel and the panel-bridge API is just a deprecated wrapper to access it. Update and simplify the code by just getting a reference to the already-existing bridge using of_drm_find_and_get_bridge(). And since of_drm_find_and_get_bridge() returns a refcounted bridge, take care of putting the bridge reference by using bridge->next_bridge. Reviewed-by: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com> Acked-by: Maxime Ripard <mripard@kernel.org> Link: https://patch.msgid.link/20260916-drm-bridge-every-panel-v3-13-83afb4f1a707@bootlin.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
parent
662ede0bc4
commit
802372cf31
|
|
@ -87,7 +87,6 @@ config DRM_FSL_LDB
|
|||
depends on OF
|
||||
depends on ARCH_MXC || COMPILE_TEST
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_PANEL_BRIDGE
|
||||
help
|
||||
Support for i.MX8MP DPI-to-LVDS on-SoC encoder.
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_bridge.h>
|
||||
#include <drm/drm_of.h>
|
||||
#include <drm/drm_panel.h>
|
||||
|
||||
#define LDB_CTRL_CH0_ENABLE BIT(0)
|
||||
#define LDB_CTRL_CH0_DI_SELECT BIT(1)
|
||||
|
|
@ -86,7 +85,6 @@ static const struct fsl_ldb_devdata fsl_ldb_devdata[] = {
|
|||
struct fsl_ldb {
|
||||
struct device *dev;
|
||||
struct drm_bridge bridge;
|
||||
struct drm_bridge *panel_bridge;
|
||||
struct clk *clk;
|
||||
struct regmap *regmap;
|
||||
const struct fsl_ldb_devdata *devdata;
|
||||
|
|
@ -119,7 +117,7 @@ static int fsl_ldb_attach(struct drm_bridge *bridge,
|
|||
{
|
||||
struct fsl_ldb *fsl_ldb = to_fsl_ldb(bridge);
|
||||
|
||||
return drm_bridge_attach(encoder, fsl_ldb->panel_bridge,
|
||||
return drm_bridge_attach(encoder, fsl_ldb->bridge.next_bridge,
|
||||
bridge, flags);
|
||||
}
|
||||
|
||||
|
|
@ -298,7 +296,6 @@ static int fsl_ldb_probe(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
struct device_node *panel_node;
|
||||
struct device_node *remote1, *remote2;
|
||||
struct drm_panel *panel;
|
||||
struct fsl_ldb *fsl_ldb;
|
||||
int dual_link;
|
||||
|
||||
|
|
@ -339,19 +336,13 @@ static int fsl_ldb_probe(struct platform_device *pdev)
|
|||
fsl_ldb_is_dual(fsl_ldb) ? "dual-link mode" :
|
||||
fsl_ldb->ch0_enabled ? "channel 0" : "channel 1");
|
||||
|
||||
panel = of_drm_find_panel(panel_node);
|
||||
of_node_put(panel_node);
|
||||
if (IS_ERR(panel))
|
||||
return PTR_ERR(panel);
|
||||
|
||||
if (of_property_present(dev->of_node, "nxp,enable-termination-resistor"))
|
||||
fsl_ldb->use_termination_resistor = true;
|
||||
|
||||
fsl_ldb->panel_bridge = devm_drm_panel_bridge_add(dev, panel);
|
||||
drm_panel_put(panel);
|
||||
if (IS_ERR(fsl_ldb->panel_bridge))
|
||||
return PTR_ERR(fsl_ldb->panel_bridge);
|
||||
|
||||
fsl_ldb->bridge.next_bridge = of_drm_find_and_get_bridge(panel_node);
|
||||
of_node_put(panel_node);
|
||||
if (!fsl_ldb->bridge.next_bridge)
|
||||
return -ENODEV;
|
||||
|
||||
if (fsl_ldb_is_dual(fsl_ldb)) {
|
||||
struct device_node *port1, *port2;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user