summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Chiras <robert.chiras@nxp.com>2018-04-19 11:25:41 +0300
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:31:17 +0800
commit45f8c8d7741e5e067a5e40fbc6995cf27abcc141 (patch)
tree9b52d6164de9bd030e2cffc39befdf05f96209c4
parent775b628d75bed0049d55f07150166eb1ff9e7837 (diff)
MLK-18106: drm/bridge: Fix nwl-dsi bridge handling
Since the drm_bridge_attach function now supports chained bridges, there is no need for nwl_dsi_add_bridge and nwl_dsi_del_bridge functions, so remove them. Now, we can pass the existent bridge to drm_bridge_attach. This fixes a bug created during kernel 4.14 rebase process. Signed-off-by: Robert Chiras <robert.chiras@nxp.com>
-rw-r--r--drivers/gpu/drm/bridge/nwl-dsi.c72
-rw-r--r--include/drm/bridge/nwl_dsi.h10
2 files changed, 1 insertions, 81 deletions
diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c b/drivers/gpu/drm/bridge/nwl-dsi.c
index fbba405e3773..b6b669e5c24b 100644
--- a/drivers/gpu/drm/bridge/nwl-dsi.c
+++ b/drivers/gpu/drm/bridge/nwl-dsi.c
@@ -269,60 +269,6 @@ static enum dpi_pixel_format nwl_dsi_get_dpi_pixel_format(
}
}
-/* Adds a bridge to encoder bridge chain */
-bool nwl_dsi_add_bridge(struct drm_encoder *encoder,
- struct drm_bridge *next_bridge)
-{
- struct drm_bridge *bridge = encoder->bridge;
-
- if (!next_bridge)
- return false;
-
- next_bridge->encoder = encoder;
- if (!bridge) {
- encoder->bridge = bridge;
- return true;
- }
-
- while (bridge != next_bridge && bridge->next)
- bridge = bridge->next;
-
- /* Avoid adding an existing bridge to the chain */
- if (bridge == next_bridge) {
- next_bridge->encoder = NULL;
- return false;
- }
-
- bridge->next = next_bridge;
- return true;
-}
-EXPORT_SYMBOL_GPL(nwl_dsi_add_bridge);
-
-/* Removes last bridge from encoder bridge chain */
-bool nwl_dsi_del_bridge(struct drm_encoder *encoder,
- struct drm_bridge *bridge)
-{
- struct drm_bridge *b = encoder->bridge;
- struct drm_bridge *prev = NULL;
-
- if (!b || !bridge)
- return false;
-
- while (b->next) {
- prev = b;
- b = b->next;
- }
-
- bridge->encoder = NULL;
- if (prev)
- prev->next = NULL;
- else
- encoder->bridge = NULL;
-
- return true;
-}
-EXPORT_SYMBOL_GPL(nwl_dsi_del_bridge);
-
unsigned long nwl_dsi_get_bit_clock(struct drm_bridge *bridge,
unsigned long pixclock)
{
@@ -980,21 +926,6 @@ static int nwl_dsi_create_connector(struct drm_device *drm,
return 0;
}
-static int nwl_dsi_attach_next_bridge(struct drm_encoder *encoder,
- struct drm_bridge *bridge)
-{
- int ret = 0;
-
- /* Attach the next bridge in chain */
- if (!nwl_dsi_add_bridge(encoder, bridge))
- return -EEXIST;
- ret = drm_bridge_attach(encoder, bridge, NULL);
- if (ret)
- nwl_dsi_del_bridge(encoder, bridge);
-
- return ret;
-}
-
static int nwl_dsi_bridge_attach(struct drm_bridge *bridge)
{
struct nwl_mipi_dsi *dsi = bridge->driver_private;
@@ -1028,7 +959,7 @@ static int nwl_dsi_bridge_attach(struct drm_bridge *bridge)
}
dsi->next_bridge = of_drm_find_bridge(remote_node);
- ret = nwl_dsi_attach_next_bridge(encoder, dsi->next_bridge);
+ ret = drm_bridge_attach(encoder, dsi->next_bridge, encoder->bridge);
if (ret)
dsi->next_bridge = NULL;
of_node_put(remote_node);
@@ -1057,7 +988,6 @@ static void nwl_dsi_bridge_detach(struct drm_bridge *bridge)
drm_connector_cleanup(&dsi->connector);
dsi->panel = NULL;
} else if (dsi->next_bridge) {
- nwl_dsi_del_bridge(dsi->next_bridge->encoder, dsi->next_bridge);
dsi->next_bridge = NULL;
}
if (dsi->host.dev)
diff --git a/include/drm/bridge/nwl_dsi.h b/include/drm/bridge/nwl_dsi.h
index 21fe1d0d4313..2ca1e5838edc 100644
--- a/include/drm/bridge/nwl_dsi.h
+++ b/include/drm/bridge/nwl_dsi.h
@@ -39,16 +39,6 @@ enum dpi_pixel_format {
DPI_FMT_24_BIT /* 0x3 */
};
-/*
- * Just some helper functions to add/remove a bridge into/from encoder bridge
- * chain.
- */
-bool nwl_dsi_add_bridge(struct drm_encoder *encoder,
- struct drm_bridge *next_bridge);
-
-bool nwl_dsi_del_bridge(struct drm_encoder *encoder,
- struct drm_bridge *bridge);
-
unsigned long nwl_dsi_get_bit_clock(struct drm_bridge *bridge,
unsigned long pixclock);