diff options
Diffstat (limited to 'target/linux/omap24xx/patches-2.6.36/700-video-omap.patch')
-rw-r--r-- | target/linux/omap24xx/patches-2.6.36/700-video-omap.patch | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/target/linux/omap24xx/patches-2.6.36/700-video-omap.patch b/target/linux/omap24xx/patches-2.6.36/700-video-omap.patch new file mode 100644 index 0000000000..c1a5e2a08d --- /dev/null +++ b/target/linux/omap24xx/patches-2.6.36/700-video-omap.patch @@ -0,0 +1,198 @@ +Index: linux-2.6.35/drivers/video/omap/dispc.c +=================================================================== +--- linux-2.6.35.orig/drivers/video/omap/dispc.c 2010-08-08 12:56:09.000000000 +0200 ++++ linux-2.6.35/drivers/video/omap/dispc.c 2010-08-08 12:57:42.000000000 +0200 +@@ -190,6 +190,11 @@ static struct { + struct omapfb_color_key color_key; + } dispc; + ++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) +@@ -916,20 +921,20 @@ static irqreturn_t omap_dispc_irq_handle + + static int get_dss_clocks(void) + { +- dispc.dss_ick = clk_get(&dispc.fbdev->dssdev->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->dssdev->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->dssdev->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); +@@ -1381,6 +1386,12 @@ static int omap_dispc_init(struct omapfb + 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); +@@ -1524,6 +1535,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 = { +Index: linux-2.6.35/drivers/video/omap/lcd_htcherald.c +=================================================================== +--- linux-2.6.35.orig/drivers/video/omap/lcd_htcherald.c 2010-08-08 12:56:09.000000000 +0200 ++++ linux-2.6.35/drivers/video/omap/lcd_htcherald.c 2010-08-08 12:57:43.000000000 +0200 +@@ -115,12 +115,12 @@ struct platform_driver htcherald_panel_d + }, + }; + +-static int __init htcherald_panel_drv_init(void) ++static int htcherald_panel_drv_init(void) + { + return platform_driver_register(&htcherald_panel_driver); + } + +-static void __exit htcherald_panel_drv_cleanup(void) ++static void htcherald_panel_drv_cleanup(void) + { + platform_driver_unregister(&htcherald_panel_driver); + } +Index: linux-2.6.35/drivers/video/omap/lcd_mipid.c +=================================================================== +--- linux-2.6.35.orig/drivers/video/omap/lcd_mipid.c 2010-08-08 12:56:09.000000000 +0200 ++++ linux-2.6.35/drivers/video/omap/lcd_mipid.c 2010-08-08 12:57:44.000000000 +0200 +@@ -551,9 +551,9 @@ static int mipid_detect(struct mipid_dev + md->esd_check = ls041y3_esd_check; + break; + default: +- md->panel.name = "unknown"; +- dev_err(&md->spi->dev, "invalid display ID\n"); +- return -ENODEV; ++ dev_err(&md->spi->dev, "FIXME: LCD panel detection failed! ID: %02x%02x%02x\n", display_id[0], display_id[1], display_id[2]); ++ md->panel.name = "ls041y3"; ++ md->esd_check = ls041y3_esd_check; + } + + md->revision = display_id[1]; +Index: linux-2.6.35/drivers/video/omap/omapfb.h +=================================================================== +--- linux-2.6.35.orig/drivers/video/omap/omapfb.h 2010-08-08 12:56:09.000000000 +0200 ++++ linux-2.6.35/drivers/video/omap/omapfb.h 2010-08-08 12:57:45.000000000 +0200 +@@ -203,8 +203,6 @@ struct omapfb_device { + + struct omapfb_mem_desc mem_desc; + struct fb_info *fb_info[OMAPFB_PLANE_NUM]; +- +- struct platform_device *dssdev; /* dummy dev for clocks */ + }; + + #ifdef CONFIG_ARCH_OMAP1 +@@ -226,4 +224,6 @@ extern int omapfb_update_window_async(s + void (*callback)(void *), + void *callback_data); + ++extern struct platform_device omapdss_device; ++ + #endif /* __OMAPFB_H */ +Index: linux-2.6.35/drivers/video/omap/omapfb_main.c +=================================================================== +--- linux-2.6.35.orig/drivers/video/omap/omapfb_main.c 2010-08-08 12:56:09.000000000 +0200 ++++ linux-2.6.35/drivers/video/omap/omapfb_main.c 2010-08-08 12:57:46.000000000 +0200 +@@ -84,19 +84,6 @@ static struct caps_table_struct color_ca + { 1 << OMAPFB_COLOR_YUY422, "YUY422", }, + }; + +-static void omapdss_release(struct device *dev) +-{ +-} +- +-/* dummy device for clocks */ +-static struct platform_device omapdss_device = { +- .name = "omapdss", +- .id = -1, +- .dev = { +- .release = omapdss_release, +- }, +-}; +- + /* + * --------------------------------------------------------------------------- + * LCD panel +@@ -1715,7 +1702,6 @@ static int omapfb_do_probe(struct platfo + + fbdev->dev = &pdev->dev; + fbdev->panel = panel; +- fbdev->dssdev = &omapdss_device; + platform_set_drvdata(pdev, fbdev); + + mutex_init(&fbdev->rqueue_mutex); +@@ -1830,16 +1816,8 @@ cleanup: + + static int omapfb_probe(struct platform_device *pdev) + { +- int r; +- + BUG_ON(fbdev_pdev != NULL); + +- r = platform_device_register(&omapdss_device); +- if (r) { +- dev_err(&pdev->dev, "can't register omapdss device\n"); +- return r; +- } +- + /* Delay actual initialization until the LCD is registered */ + fbdev_pdev = pdev; + if (fbdev_panel != NULL) +@@ -1867,9 +1845,6 @@ static int omapfb_remove(struct platform + fbdev->state = OMAPFB_DISABLED; + omapfb_free_resources(fbdev, saved_state); + +- platform_device_unregister(&omapdss_device); +- fbdev->dssdev = NULL; +- + return 0; + } + +--- + drivers/video/omap/rfbi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- linux-2.6.35.orig/drivers/video/omap/rfbi.c ++++ linux-2.6.35/drivers/video/omap/rfbi.c +@@ -84,13 +84,13 @@ static inline u32 rfbi_read_reg(int idx) + + static int rfbi_get_clocks(void) + { +- rfbi.dss_ick = clk_get(&rfbi.fbdev->dssdev->dev, "ick"); ++ rfbi.dss_ick = clk_get(&omapdss_device.dev, "ick"); + if (IS_ERR(rfbi.dss_ick)) { + dev_err(rfbi.fbdev->dev, "can't get ick\n"); + return PTR_ERR(rfbi.dss_ick); + } + +- rfbi.dss1_fck = clk_get(&rfbi.fbdev->dssdev->dev, "dss1_fck"); ++ rfbi.dss1_fck = clk_get(&omapdss_device.dev, "dss1_fck"); + if (IS_ERR(rfbi.dss1_fck)) { + dev_err(rfbi.fbdev->dev, "can't get dss1_fck\n"); + clk_put(rfbi.dss_ick); |