OMAP: OMAPFB: add omapdss device
authorTomi Valkeinen <tomi.valkeinen@nokia.com>
Thu, 18 Jun 2009 10:02:39 +0000 (13:02 +0300)
committerTomi Valkeinen <tomi.valkeinen@nokia.com>
Wed, 9 Dec 2009 10:04:32 +0000 (12:04 +0200)
The upcoming new display subsystem driver is divided to two devices,
omapdss and omapfb, of which omapdss handles the actual hardware.

This patch adds a dummy omapdss platform device for the current omapfb
driver, which is then used to get the clocks. This will make it possible
for the current and the new display drivers to co-exist.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
Acked-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/clock24xx.c
arch/arm/mach-omap2/clock34xx.c
drivers/video/omap/dispc.c

index e70e7e000eaae00b5ad6942c58edc16e11024c34..845b478ebeee9ead35b0628ed334e731dea231b3 100644 (file)
@@ -116,10 +116,10 @@ static struct omap_clk omap24xx_clks[] = {
        CLK(NULL,       "mdm_ick",      &mdm_ick,       CK_243X),
        CLK(NULL,       "mdm_osc_ck",   &mdm_osc_ck,    CK_243X),
        /* DSS domain clocks */
-       CLK("omapfb",   "ick",          &dss_ick,       CK_243X | CK_242X),
-       CLK("omapfb",   "dss1_fck",     &dss1_fck,      CK_243X | CK_242X),
-       CLK("omapfb",   "dss2_fck",     &dss2_fck,      CK_243X | CK_242X),
-       CLK("omapfb",   "tv_fck",       &dss_54m_fck,   CK_243X | CK_242X),
+       CLK("omapdss",  "ick",          &dss_ick,       CK_243X | CK_242X),
+       CLK("omapdss",  "dss1_fck",     &dss1_fck,      CK_243X | CK_242X),
+       CLK("omapdss",  "dss2_fck",     &dss2_fck,      CK_243X | CK_242X),
+       CLK("omapdss",  "tv_fck",       &dss_54m_fck,   CK_243X | CK_242X),
        /* L3 domain clocks */
        CLK(NULL,       "core_l3_ck",   &core_l3_ck,    CK_243X | CK_242X),
        CLK(NULL,       "ssi_fck",      &ssi_ssr_sst_fck, CK_243X | CK_242X),
index 9f2feaf798658933951a723232a005466e6599bc..ecbb5cd8eec8b33955a61ec033aa18318125f79c 100644 (file)
@@ -236,13 +236,13 @@ static struct omap_clk omap34xx_clks[] = {
        CLK("omap_rng", "ick",          &rng_ick,       CK_343X),
        CLK(NULL,       "sha11_ick",    &sha11_ick,     CK_343X),
        CLK(NULL,       "des1_ick",     &des1_ick,      CK_343X),
-       CLK("omapfb",   "dss1_fck",     &dss1_alwon_fck_3430es1, CK_3430ES1),
-       CLK("omapfb",   "dss1_fck",     &dss1_alwon_fck_3430es2, CK_3430ES2),
-       CLK("omapfb",   "tv_fck",       &dss_tv_fck,    CK_343X),
-       CLK("omapfb",   "video_fck",    &dss_96m_fck,   CK_343X),
-       CLK("omapfb",   "dss2_fck",     &dss2_alwon_fck, CK_343X),
-       CLK("omapfb",   "ick",          &dss_ick_3430es1,       CK_3430ES1),
-       CLK("omapfb",   "ick",          &dss_ick_3430es2,       CK_3430ES2),
+       CLK("omapdss",  "dss1_fck",     &dss1_alwon_fck_3430es1, CK_3430ES1),
+       CLK("omapdss",  "dss1_fck",     &dss1_alwon_fck_3430es2, CK_3430ES2),
+       CLK("omapdss",  "tv_fck",       &dss_tv_fck,    CK_343X),
+       CLK("omapdss",  "video_fck",    &dss_96m_fck,   CK_343X),
+       CLK("omapdss",  "dss2_fck",     &dss2_alwon_fck, CK_343X),
+       CLK("omapdss",  "ick",          &dss_ick_3430es1,       CK_3430ES1),
+       CLK("omapdss",  "ick",          &dss_ick_3430es2,       CK_3430ES2),
        CLK(NULL,       "cam_mclk",     &cam_mclk,      CK_343X),
        CLK(NULL,       "cam_ick",      &cam_ick,       CK_343X),
        CLK(NULL,       "csi2_96m_fck", &csi2_96m_fck,  CK_343X),
index b8f75a7936a276ea72a3e832c6b7431227f12819..c7c6455f1fa89350c2ef45bb1eefc3f5fad10dd8 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/vmalloc.h>
 #include <linux/clk.h>
 #include <linux/io.h>
+#include <linux/platform_device.h>
 
 #include <plat/sram.h>
 #include <plat/board.h>
@@ -188,6 +189,11 @@ static struct {
        struct omapfb_color_key color_key;
 } dispc;
 
+static struct platform_device omapdss_device = {
+       .name           = "omapdss",
+       .id             = -1,
+};
+
 static void enable_lcd_clocks(int enable);
 
 static void inline dispc_write_reg(int idx, u32 val)
@@ -914,20 +920,20 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *dev)
 
 static int get_dss_clocks(void)
 {
-       dispc.dss_ick = clk_get(dispc.fbdev->dev, "ick");
+       dispc.dss_ick = clk_get(&omapdss_device.dev, "ick");
        if (IS_ERR(dispc.dss_ick)) {
                dev_err(dispc.fbdev->dev, "can't get ick\n");
                return PTR_ERR(dispc.dss_ick);
        }
 
-       dispc.dss1_fck = clk_get(dispc.fbdev->dev, "dss1_fck");
+       dispc.dss1_fck = clk_get(&omapdss_device.dev, "dss1_fck");
        if (IS_ERR(dispc.dss1_fck)) {
                dev_err(dispc.fbdev->dev, "can't get dss1_fck\n");
                clk_put(dispc.dss_ick);
                return PTR_ERR(dispc.dss1_fck);
        }
 
-       dispc.dss_54m_fck = clk_get(dispc.fbdev->dev, "tv_fck");
+       dispc.dss_54m_fck = clk_get(&omapdss_device.dev, "tv_fck");
        if (IS_ERR(dispc.dss_54m_fck)) {
                dev_err(dispc.fbdev->dev, "can't get tv_fck\n");
                clk_put(dispc.dss_ick);
@@ -1379,6 +1385,12 @@ static int omap_dispc_init(struct omapfb_device *fbdev, int ext_mode,
        int skip_init = 0;
        int i;
 
+       r = platform_device_register(&omapdss_device);
+       if (r) {
+               dev_err(fbdev->dev, "can't register omapdss device\n");
+               return r;
+       }
+
        memset(&dispc, 0, sizeof(dispc));
 
        dispc.base = ioremap(DISPC_BASE, SZ_1K);
@@ -1522,6 +1534,7 @@ static void omap_dispc_cleanup(void)
        free_irq(INT_24XX_DSS_IRQ, dispc.fbdev);
        put_dss_clocks();
        iounmap(dispc.base);
+       platform_device_unregister(&omapdss_device);
 }
 
 const struct lcd_ctrl omap2_int_ctrl = {