]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
OMAPDSS: DPI: Add support for multiple instances
authorArchit Taneja <archit@ti.com>
Tue, 6 May 2014 11:37:39 +0000 (17:07 +0530)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 12 Nov 2014 11:40:10 +0000 (13:40 +0200)
Register DPI outputs, and assign the port_num to them as specified by the
'reg' property in the DPI ports in DT.

To support multiple DPI instances, dpi_get_channel needs to take the DPI
instance's port number to get the corresponding channel. Make it take this
argument. We just pass 0 in the non-DT path, since we don't support multiple
instances in the non-DT case.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/fbdev/omap2/dss/dpi.c

index 224d7885eeeb32c446e0420083c4d14761bb35b1..03376354b360d3ee1dd86620dc9b28ae8e153e34 100644 (file)
@@ -616,7 +616,7 @@ static void dpi_init_pll(struct dpi_data *dpi)
  * the channel in some more dynamic manner, or get the channel as a user
  * parameter.
  */
-static enum omap_channel dpi_get_channel(void)
+static enum omap_channel dpi_get_channel(int port_num)
 {
        switch (omapdss_get_version()) {
        case OMAPDSS_VER_OMAP24xx:
@@ -710,7 +710,7 @@ static void dpi_init_output(struct platform_device *pdev)
        out->id = OMAP_DSS_OUTPUT_DPI;
        out->output_type = OMAP_DISPLAY_TYPE_DPI;
        out->name = "dpi.0";
-       out->dispc_channel = dpi_get_channel();
+       out->dispc_channel = dpi_get_channel(0);
        out->ops.dpi = &dpi_ops;
        out->owner = THIS_MODULE;
 
@@ -730,11 +730,31 @@ static void dpi_init_output_port(struct platform_device *pdev,
 {
        struct dpi_data *dpi = port->data;
        struct omap_dss_device *out = &dpi->output;
+       int r;
+       u32 port_num;
+
+       r = of_property_read_u32(port, "reg", &port_num);
+       if (r)
+               port_num = 0;
+
+       switch (port_num) {
+       case 2:
+               out->name = "dpi.2";
+               break;
+       case 1:
+               out->name = "dpi.1";
+               break;
+       case 0:
+       default:
+               out->name = "dpi.0";
+               break;
+       }
 
        out->dev = &pdev->dev;
        out->id = OMAP_DSS_OUTPUT_DPI;
        out->output_type = OMAP_DISPLAY_TYPE_DPI;
-       out->dispc_channel = dpi_get_channel();
+       out->dispc_channel = dpi_get_channel(port_num);
+       out->port_num = port_num;
        out->ops.dpi = &dpi_ops;
        out->owner = THIS_MODULE;