[PATCH 17/17] OMAP: DSS2: DSI: Add VC support for update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Update was hardcoded to use virtual channel 0. This patch adds a parameter
that specifies the VC.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxx>
---
 arch/arm/plat-omap/include/plat/display.h |    1 +
 drivers/video/omap2/dss/dsi.c             |   13 +++++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h
index ccf35a8..cd7b769 100644
--- a/arch/arm/plat-omap/include/plat/display.h
+++ b/arch/arm/plat-omap/include/plat/display.h
@@ -564,6 +564,7 @@ int omapdss_dsi_enable_te(struct omap_dss_device *dssdev, bool enable);
 int omap_dsi_prepare_update(struct omap_dss_device *dssdev,
 				    u16 *x, u16 *y, u16 *w, u16 *h);
 int omap_dsi_update(struct omap_dss_device *dssdev,
+		int channel,
 		u16 x, u16 y, u16 w, u16 h,
 		void (*callback)(int, void *), void *data);
 
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index 79d27de..624d53e 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -233,6 +233,7 @@ static struct
 
 	struct completion bta_completion;
 
+	int update_channel;
 	struct dsi_update_region update_region;
 
 	bool te_enabled;
@@ -2721,7 +2722,7 @@ static void dsi_update_screen_dispc(struct omap_dss_device *dssdev,
 	unsigned packet_len;
 	u32 l;
 	bool use_te_trigger;
-	const unsigned channel = 0;
+	const unsigned channel = dsi.update_channel;
 	/* line buffer is 1024 x 24bits */
 	/* XXX: for some reason using full buffer size causes considerable TX
 	 * slowdown with update sizes that fill the whole buffer */
@@ -2732,6 +2733,8 @@ static void dsi_update_screen_dispc(struct omap_dss_device *dssdev,
 	DSSDBG("dsi_update_screen_dispc(%d,%d %dx%d)\n",
 			x, y, w, h);
 
+	dsi_vc_config_vp(channel);
+
 	bytespp	= dssdev->ctrl.pixel_size / 8;
 	bytespl = w * bytespp;
 	bytespf = bytespl * h;
@@ -2799,7 +2802,7 @@ static void dsi_te_timeout(unsigned long arg)
 static void dsi_framedone_timeout_work_callback(struct work_struct *work)
 {
 	int r;
-	const int channel = 0;
+	const int channel = dsi.update_channel;
 	bool use_te_trigger;
 
 	DSSERR("Framedone not received for 250ms!\n");
@@ -2852,7 +2855,7 @@ static void dsi_framedone_irq_callback(void *data, u32 mask)
 static void dsi_handle_framedone(void)
 {
 	int r;
-	const int channel = 0;
+	const int channel = dsi.update_channel;
 	bool use_te_trigger;
 
 	use_te_trigger = dsi.te_enabled && !dsi.use_ext_te;
@@ -2935,13 +2938,15 @@ int omap_dsi_prepare_update(struct omap_dss_device *dssdev,
 EXPORT_SYMBOL(omap_dsi_prepare_update);
 
 int omap_dsi_update(struct omap_dss_device *dssdev,
+		int channel,
 		u16 x, u16 y, u16 w, u16 h,
 		void (*callback)(int, void *), void *data)
 {
+	dsi.update_channel = channel;
+
 	if (dssdev->manager->caps & OMAP_DSS_OVL_MGR_CAP_DISPC) {
 		dsi.framedone_callback = callback;
 		dsi.framedone_data = data;
-		dsi_vc_config_vp(0);
 
 		dsi.update_region.x = x;
 		dsi.update_region.y = y;
-- 
1.6.5

--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Tourism]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux