aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2014-12-31 04:26:06 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-02-04 05:32:07 -0500
commita2408154a14b5633b1f233e4b5fea85c09917eef (patch)
treec8d78d4473669f5a18bdcdd741b3161ef0be0f40 /drivers/video
parentadb5ff835c0db95e969c717f981f65f855f147bf (diff)
OMAPDSS: DPI: DRA7xx support
Add support for DRA7xx DPI output. DRA7xx has three DPI outputs, each of which gets its input from a DISPC channel. However, DRA72x has only one video PLL, and DRA74x has two video PLLs. In both cases the video PLLs need to be shared between multiple outputs. The driver doesn't handle this at the moment. Also, DRA7xx requires configuring CONTROL module bits to route the clock from the PLL to the used DISPC channel. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/fbdev/omap2/dss/dpi.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/video/fbdev/omap2/dss/dpi.c b/drivers/video/fbdev/omap2/dss/dpi.c
index 9a2f8c3b102d..f83e7b030249 100644
--- a/drivers/video/fbdev/omap2/dss/dpi.c
+++ b/drivers/video/fbdev/omap2/dss/dpi.c
@@ -106,6 +106,17 @@ static struct dss_pll *dpi_get_pll(enum omap_channel channel)
106 return NULL; 106 return NULL;
107 } 107 }
108 108
109 case OMAPDSS_VER_DRA7xx:
110 switch (channel) {
111 case OMAP_DSS_CHANNEL_LCD:
112 case OMAP_DSS_CHANNEL_LCD2:
113 return dss_pll_find("video0");
114 case OMAP_DSS_CHANNEL_LCD3:
115 return dss_pll_find("video1");
116 default:
117 return NULL;
118 }
119
109 default: 120 default:
110 return NULL; 121 return NULL;
111 } 122 }
@@ -590,6 +601,10 @@ static void dpi_init_pll(struct dpi_data *dpi)
590 if (!pll) 601 if (!pll)
591 return; 602 return;
592 603
604 /* On DRA7 we need to set a mux to use the PLL */
605 if (omapdss_get_version() == OMAPDSS_VER_DRA7xx)
606 dss_ctrl_pll_set_control_mux(pll->id, dpi->output.dispc_channel);
607
593 if (dpi_verify_dsi_pll(pll)) { 608 if (dpi_verify_dsi_pll(pll)) {
594 DSSWARN("DSI PLL not operational\n"); 609 DSSWARN("DSI PLL not operational\n");
595 return; 610 return;
@@ -615,6 +630,17 @@ static enum omap_channel dpi_get_channel(int port_num)
615 case OMAPDSS_VER_AM43xx: 630 case OMAPDSS_VER_AM43xx:
616 return OMAP_DSS_CHANNEL_LCD; 631 return OMAP_DSS_CHANNEL_LCD;
617 632
633 case OMAPDSS_VER_DRA7xx:
634 switch (port_num) {
635 case 2:
636 return OMAP_DSS_CHANNEL_LCD3;
637 case 1:
638 return OMAP_DSS_CHANNEL_LCD2;
639 case 0:
640 default:
641 return OMAP_DSS_CHANNEL_LCD;
642 }
643
618 case OMAPDSS_VER_OMAP4430_ES1: 644 case OMAPDSS_VER_OMAP4430_ES1:
619 case OMAPDSS_VER_OMAP4430_ES2: 645 case OMAPDSS_VER_OMAP4430_ES2:
620 case OMAPDSS_VER_OMAP4: 646 case OMAPDSS_VER_OMAP4: