All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/omap: add OMAP5 DSIPHY lane-enable support
@ 2017-08-10  6:45 Tomi Valkeinen
  2017-08-10  7:22 ` Laurent Pinchart
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Tomi Valkeinen @ 2017-08-10  6:45 UTC (permalink / raw)
  To: dri-devel, Laurent Pinchart
  Cc: H . Nikolaus Schaller, Tomi Valkeinen, linux-omap

We are missing OMAP5 DSIPHY lane-enable support, which has prevented
OMAP5 DSI working in mainline. This patch adds the lane-enable similarly
to the recently added OMAP4 version.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---

Based on Laurent's recent omapdrm series.

 drivers/gpu/drm/omapdrm/dss/dsi.c | 50 +++++++++++++++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index a66d2b1a6c74..1f0b29af9b86 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -2139,14 +2139,51 @@ static int dsi_omap4_mux_pads(struct dsi_data *dsi, unsigned int lanes)
 	return 0;
 }
 
+#define OMAP5_DSIPHY_SYSCON_OFFSET	0x74
+
+#define OMAP5_DSI1_LANEENABLE_SHIFT	24
+#define OMAP5_DSI2_LANEENABLE_SHIFT	19
+#define OMAP5_DSI_LANEENABLE_MASK	0x1f
+
+static int dsi_omap5_mux_pads(struct dsi_data *dsi, unsigned int lanes)
+{
+	u32 enable_mask, enable_shift, reg;
+
+	if (!dsi->syscon)
+		return 0;
+
+	if (dsi->module_id == 0)
+		enable_shift = OMAP5_DSI1_LANEENABLE_SHIFT;
+	else if (dsi->module_id == 1)
+		enable_shift = OMAP5_DSI2_LANEENABLE_SHIFT;
+	else
+		return -ENODEV;
+
+	enable_mask = OMAP5_DSI_LANEENABLE_MASK << enable_shift;
+
+	regmap_read(dsi->syscon, OMAP5_DSIPHY_SYSCON_OFFSET, &reg);
+	reg &= ~enable_mask;
+	reg |= (lanes << enable_shift) & enable_mask;
+	regmap_write(dsi->syscon, OMAP5_DSIPHY_SYSCON_OFFSET, reg);
+
+	return 0;
+}
+
 static int dsi_enable_pads(struct dsi_data *dsi, unsigned int lane_mask)
 {
-	return dsi_omap4_mux_pads(dsi, lane_mask);
+	if (dsi->data->model == DSI_MODEL_OMAP4)
+		return dsi_omap4_mux_pads(dsi, lane_mask);
+	if (dsi->data->model == DSI_MODEL_OMAP5)
+		return dsi_omap5_mux_pads(dsi, lane_mask);
+	return 0;
 }
 
 static void dsi_disable_pads(struct dsi_data *dsi)
 {
-	dsi_omap4_mux_pads(dsi, 0);
+	if (dsi->data->model == DSI_MODEL_OMAP4)
+		dsi_omap4_mux_pads(dsi, 0);
+	if (dsi->data->model == DSI_MODEL_OMAP4)
+		dsi_omap5_mux_pads(dsi, 0);
 }
 
 static int dsi_cio_init(struct platform_device *dsidev)
@@ -5480,14 +5517,17 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
 
 	dsi->module_id = d->id;
 
-	if (dsi->data->model == DSI_MODEL_OMAP4) {
+	if (dsi->data->model == DSI_MODEL_OMAP4 ||
+	    dsi->data->model == DSI_MODEL_OMAP5) {
 		struct device_node *np;
 
 		/*
-		 * The OMAP4 display DT bindings don't reference the padconf
+		 * The OMAP4/5 display DT bindings don't reference the padconf
 		 * syscon. Our only option to retrieve it is to find it by name.
 		 */
-		np = of_find_node_by_name(NULL, "omap4_padconf_global");
+		np = of_find_node_by_name(NULL,
+			dsi->data->model == DSI_MODEL_OMAP4 ?
+			"omap4_padconf_global" : "omap5_padconf_global");
 		if (!np)
 			return -ENODEV;
 
-- 
2.7.4


Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-08-10 13:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-10  6:45 [PATCH] drm/omap: add OMAP5 DSIPHY lane-enable support Tomi Valkeinen
2017-08-10  7:22 ` Laurent Pinchart
2017-08-10  8:28   ` Tomi Valkeinen
2017-08-10  9:44 ` [PATCHv2] " Tomi Valkeinen
2017-08-10 10:31   ` Laurent Pinchart
2017-08-10 12:29 ` [PATCHv3 1/2] drm/omap: use regmap_update_bit() when muxing DSI pads Tomi Valkeinen
2017-08-10 12:29   ` [PATCHv3 2/2] drm/omap: add OMAP5 DSIPHY lane-enable support Tomi Valkeinen
2017-08-10 13:23     ` Laurent Pinchart
2017-08-10 13:22   ` [PATCHv3 1/2] drm/omap: use regmap_update_bit() when muxing DSI pads Laurent Pinchart

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.