diff options
author | Tomi Valkeinen <tomi.valkeinen@nokia.com> | 2009-12-16 06:18:07 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@nokia.com> | 2010-01-11 06:33:09 -0500 |
commit | f778a12dd33200513596a0d4d3ba4d5f09e79c09 (patch) | |
tree | 91fbb2cb9e9031fc41e4e649a1a72cec154cb432 /drivers | |
parent | fc248a497d83f5aba9d46d7ff114c070fb2a2fa2 (diff) |
OMAP: OMAPFB: fix clk_get for RFBI
omapfb platform device was still used to get clocks inside rfbi.c
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
Tested-by: Sergey Lapin <slapin@ossfans.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/omap/dispc.c | 18 | ||||
-rw-r--r-- | drivers/video/omap/omapfb.h | 2 | ||||
-rw-r--r-- | drivers/video/omap/omapfb_main.c | 18 | ||||
-rw-r--r-- | drivers/video/omap/rfbi.c | 4 |
4 files changed, 25 insertions, 17 deletions
diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c index c7c6455f1fa8..e192b058a688 100644 --- a/drivers/video/omap/dispc.c +++ b/drivers/video/omap/dispc.c | |||
@@ -189,11 +189,6 @@ static struct { | |||
189 | struct omapfb_color_key color_key; | 189 | struct omapfb_color_key color_key; |
190 | } dispc; | 190 | } dispc; |
191 | 191 | ||
192 | static struct platform_device omapdss_device = { | ||
193 | .name = "omapdss", | ||
194 | .id = -1, | ||
195 | }; | ||
196 | |||
197 | static void enable_lcd_clocks(int enable); | 192 | static void enable_lcd_clocks(int enable); |
198 | 193 | ||
199 | static void inline dispc_write_reg(int idx, u32 val) | 194 | static void inline dispc_write_reg(int idx, u32 val) |
@@ -920,20 +915,20 @@ static irqreturn_t omap_dispc_irq_handler(int irq, void *dev) | |||
920 | 915 | ||
921 | static int get_dss_clocks(void) | 916 | static int get_dss_clocks(void) |
922 | { | 917 | { |
923 | dispc.dss_ick = clk_get(&omapdss_device.dev, "ick"); | 918 | dispc.dss_ick = clk_get(&dispc.fbdev->dssdev->dev, "ick"); |
924 | if (IS_ERR(dispc.dss_ick)) { | 919 | if (IS_ERR(dispc.dss_ick)) { |
925 | dev_err(dispc.fbdev->dev, "can't get ick\n"); | 920 | dev_err(dispc.fbdev->dev, "can't get ick\n"); |
926 | return PTR_ERR(dispc.dss_ick); | 921 | return PTR_ERR(dispc.dss_ick); |
927 | } | 922 | } |
928 | 923 | ||
929 | dispc.dss1_fck = clk_get(&omapdss_device.dev, "dss1_fck"); | 924 | dispc.dss1_fck = clk_get(&dispc.fbdev->dssdev->dev, "dss1_fck"); |
930 | if (IS_ERR(dispc.dss1_fck)) { | 925 | if (IS_ERR(dispc.dss1_fck)) { |
931 | dev_err(dispc.fbdev->dev, "can't get dss1_fck\n"); | 926 | dev_err(dispc.fbdev->dev, "can't get dss1_fck\n"); |
932 | clk_put(dispc.dss_ick); | 927 | clk_put(dispc.dss_ick); |
933 | return PTR_ERR(dispc.dss1_fck); | 928 | return PTR_ERR(dispc.dss1_fck); |
934 | } | 929 | } |
935 | 930 | ||
936 | dispc.dss_54m_fck = clk_get(&omapdss_device.dev, "tv_fck"); | 931 | dispc.dss_54m_fck = clk_get(&dispc.fbdev->dssdev->dev, "tv_fck"); |
937 | if (IS_ERR(dispc.dss_54m_fck)) { | 932 | if (IS_ERR(dispc.dss_54m_fck)) { |
938 | dev_err(dispc.fbdev->dev, "can't get tv_fck\n"); | 933 | dev_err(dispc.fbdev->dev, "can't get tv_fck\n"); |
939 | clk_put(dispc.dss_ick); | 934 | clk_put(dispc.dss_ick); |
@@ -1385,12 +1380,6 @@ static int omap_dispc_init(struct omapfb_device *fbdev, int ext_mode, | |||
1385 | int skip_init = 0; | 1380 | int skip_init = 0; |
1386 | int i; | 1381 | int i; |
1387 | 1382 | ||
1388 | r = platform_device_register(&omapdss_device); | ||
1389 | if (r) { | ||
1390 | dev_err(fbdev->dev, "can't register omapdss device\n"); | ||
1391 | return r; | ||
1392 | } | ||
1393 | |||
1394 | memset(&dispc, 0, sizeof(dispc)); | 1383 | memset(&dispc, 0, sizeof(dispc)); |
1395 | 1384 | ||
1396 | dispc.base = ioremap(DISPC_BASE, SZ_1K); | 1385 | dispc.base = ioremap(DISPC_BASE, SZ_1K); |
@@ -1534,7 +1523,6 @@ static void omap_dispc_cleanup(void) | |||
1534 | free_irq(INT_24XX_DSS_IRQ, dispc.fbdev); | 1523 | free_irq(INT_24XX_DSS_IRQ, dispc.fbdev); |
1535 | put_dss_clocks(); | 1524 | put_dss_clocks(); |
1536 | iounmap(dispc.base); | 1525 | iounmap(dispc.base); |
1537 | platform_device_unregister(&omapdss_device); | ||
1538 | } | 1526 | } |
1539 | 1527 | ||
1540 | const struct lcd_ctrl omap2_int_ctrl = { | 1528 | const struct lcd_ctrl omap2_int_ctrl = { |
diff --git a/drivers/video/omap/omapfb.h b/drivers/video/omap/omapfb.h index 46e4714014e8..af3c9e571ec3 100644 --- a/drivers/video/omap/omapfb.h +++ b/drivers/video/omap/omapfb.h | |||
@@ -203,6 +203,8 @@ struct omapfb_device { | |||
203 | 203 | ||
204 | struct omapfb_mem_desc mem_desc; | 204 | struct omapfb_mem_desc mem_desc; |
205 | struct fb_info *fb_info[OMAPFB_PLANE_NUM]; | 205 | struct fb_info *fb_info[OMAPFB_PLANE_NUM]; |
206 | |||
207 | struct platform_device *dssdev; /* dummy dev for clocks */ | ||
206 | }; | 208 | }; |
207 | 209 | ||
208 | #ifdef CONFIG_ARCH_OMAP1 | 210 | #ifdef CONFIG_ARCH_OMAP1 |
diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c index c7f59a5ccdbc..f74aec91aee0 100644 --- a/drivers/video/omap/omapfb_main.c +++ b/drivers/video/omap/omapfb_main.c | |||
@@ -83,6 +83,12 @@ static struct caps_table_struct color_caps[] = { | |||
83 | { 1 << OMAPFB_COLOR_YUY422, "YUY422", }, | 83 | { 1 << OMAPFB_COLOR_YUY422, "YUY422", }, |
84 | }; | 84 | }; |
85 | 85 | ||
86 | /* dummy device for clocks */ | ||
87 | static struct platform_device omapdss_device = { | ||
88 | .name = "omapdss", | ||
89 | .id = -1, | ||
90 | }; | ||
91 | |||
86 | /* | 92 | /* |
87 | * --------------------------------------------------------------------------- | 93 | * --------------------------------------------------------------------------- |
88 | * LCD panel | 94 | * LCD panel |
@@ -1700,6 +1706,7 @@ static int omapfb_do_probe(struct platform_device *pdev, | |||
1700 | 1706 | ||
1701 | fbdev->dev = &pdev->dev; | 1707 | fbdev->dev = &pdev->dev; |
1702 | fbdev->panel = panel; | 1708 | fbdev->panel = panel; |
1709 | fbdev->dssdev = &omapdss_device; | ||
1703 | platform_set_drvdata(pdev, fbdev); | 1710 | platform_set_drvdata(pdev, fbdev); |
1704 | 1711 | ||
1705 | mutex_init(&fbdev->rqueue_mutex); | 1712 | mutex_init(&fbdev->rqueue_mutex); |
@@ -1814,8 +1821,16 @@ cleanup: | |||
1814 | 1821 | ||
1815 | static int omapfb_probe(struct platform_device *pdev) | 1822 | static int omapfb_probe(struct platform_device *pdev) |
1816 | { | 1823 | { |
1824 | int r; | ||
1825 | |||
1817 | BUG_ON(fbdev_pdev != NULL); | 1826 | BUG_ON(fbdev_pdev != NULL); |
1818 | 1827 | ||
1828 | r = platform_device_register(&omapdss_device); | ||
1829 | if (r) { | ||
1830 | dev_err(&pdev->dev, "can't register omapdss device\n"); | ||
1831 | return r; | ||
1832 | } | ||
1833 | |||
1819 | /* Delay actual initialization until the LCD is registered */ | 1834 | /* Delay actual initialization until the LCD is registered */ |
1820 | fbdev_pdev = pdev; | 1835 | fbdev_pdev = pdev; |
1821 | if (fbdev_panel != NULL) | 1836 | if (fbdev_panel != NULL) |
@@ -1843,6 +1858,9 @@ static int omapfb_remove(struct platform_device *pdev) | |||
1843 | fbdev->state = OMAPFB_DISABLED; | 1858 | fbdev->state = OMAPFB_DISABLED; |
1844 | omapfb_free_resources(fbdev, saved_state); | 1859 | omapfb_free_resources(fbdev, saved_state); |
1845 | 1860 | ||
1861 | platform_device_unregister(&omapdss_device); | ||
1862 | fbdev->dssdev = NULL; | ||
1863 | |||
1846 | return 0; | 1864 | return 0; |
1847 | } | 1865 | } |
1848 | 1866 | ||
diff --git a/drivers/video/omap/rfbi.c b/drivers/video/omap/rfbi.c index fed7b1bda19c..1162603c72e5 100644 --- a/drivers/video/omap/rfbi.c +++ b/drivers/video/omap/rfbi.c | |||
@@ -83,13 +83,13 @@ static inline u32 rfbi_read_reg(int idx) | |||
83 | 83 | ||
84 | static int rfbi_get_clocks(void) | 84 | static int rfbi_get_clocks(void) |
85 | { | 85 | { |
86 | rfbi.dss_ick = clk_get(rfbi.fbdev->dev, "ick"); | 86 | rfbi.dss_ick = clk_get(&dispc.fbdev->dssdev->dev, "ick"); |
87 | if (IS_ERR(rfbi.dss_ick)) { | 87 | if (IS_ERR(rfbi.dss_ick)) { |
88 | dev_err(rfbi.fbdev->dev, "can't get ick\n"); | 88 | dev_err(rfbi.fbdev->dev, "can't get ick\n"); |
89 | return PTR_ERR(rfbi.dss_ick); | 89 | return PTR_ERR(rfbi.dss_ick); |
90 | } | 90 | } |
91 | 91 | ||
92 | rfbi.dss1_fck = clk_get(rfbi.fbdev->dev, "dss1_fck"); | 92 | rfbi.dss1_fck = clk_get(&dispc.fbdev->dssdev->dev, "dss1_fck"); |
93 | if (IS_ERR(rfbi.dss1_fck)) { | 93 | if (IS_ERR(rfbi.dss1_fck)) { |
94 | dev_err(rfbi.fbdev->dev, "can't get dss1_fck\n"); | 94 | dev_err(rfbi.fbdev->dev, "can't get dss1_fck\n"); |
95 | clk_put(rfbi.dss_ick); | 95 | clk_put(rfbi.dss_ick); |