aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <sascha@saschahauer.de>2005-07-17 15:15:36 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-07-17 15:15:36 -0400
commit772a9e631ccad0423ed6d08acb3a4b1084ae2613 (patch)
treecf4243b9f4ed2e8a8661f08588f2a1df6370896b
parent246b49768bc96d942ab0e2a17aab6fc3d2e011da (diff)
[PATCH] ARM: 2687/1: i.MX framebuffer: make dmacr register platform configurable
Patch from Sascha Hauer The dmacr needs different settings on some boards. This patch makes the register configurable by the platform part. Also we have imxfb_disable_controller(), so lets use it. Signed-off-by: Steven Scholz Signed-off-by: Sascha Hauer Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--drivers/video/imxfb.c14
-rw-r--r--drivers/video/imxfb.h1
-rw-r--r--include/asm-arm/arch-imx/imxfb.h1
3 files changed, 9 insertions, 7 deletions
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c
index 8fe1c12a17bd..cabd53cec991 100644
--- a/drivers/video/imxfb.c
+++ b/drivers/video/imxfb.c
@@ -249,9 +249,6 @@ static void imxfb_enable_controller(struct imxfb_info *fbi)
249 /* disable hardware cursor */ 249 /* disable hardware cursor */
250 LCDC_CPOS &= ~(CPOS_CC0 | CPOS_CC1); 250 LCDC_CPOS &= ~(CPOS_CC0 | CPOS_CC1);
251 251
252 /* fixed burst length (see erratum 11) */
253 LCDC_DMACR = DMACR_BURST | DMACR_HM(8) | DMACR_TM(2);
254
255 LCDC_RMCR = RMCR_LCDC_EN; 252 LCDC_RMCR = RMCR_LCDC_EN;
256 253
257 if(fbi->backlight_power) 254 if(fbi->backlight_power)
@@ -359,6 +356,7 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
359 LCDC_PCR = fbi->pcr; 356 LCDC_PCR = fbi->pcr;
360 LCDC_PWMR = fbi->pwmr; 357 LCDC_PWMR = fbi->pwmr;
361 LCDC_LSCR1 = fbi->lscr1; 358 LCDC_LSCR1 = fbi->lscr1;
359 LCDC_DMACR = fbi->dmacr;
362 360
363 return 0; 361 return 0;
364} 362}
@@ -509,6 +507,7 @@ static int __init imxfb_init_fbinfo(struct device *dev)
509 fbi->cmap_inverse = inf->cmap_inverse; 507 fbi->cmap_inverse = inf->cmap_inverse;
510 fbi->pcr = inf->pcr; 508 fbi->pcr = inf->pcr;
511 fbi->lscr1 = inf->lscr1; 509 fbi->lscr1 = inf->lscr1;
510 fbi->dmacr = inf->dmacr;
512 fbi->pwmr = inf->pwmr; 511 fbi->pwmr = inf->pwmr;
513 fbi->lcd_power = inf->lcd_power; 512 fbi->lcd_power = inf->lcd_power;
514 fbi->backlight_power = inf->backlight_power; 513 fbi->backlight_power = inf->backlight_power;
@@ -642,12 +641,12 @@ static int imxfb_remove(struct device *dev)
642{ 641{
643 struct platform_device *pdev = to_platform_device(dev); 642 struct platform_device *pdev = to_platform_device(dev);
644 struct fb_info *info = dev_get_drvdata(dev); 643 struct fb_info *info = dev_get_drvdata(dev);
644 struct imxfb_info *fbi = info->par;
645 struct resource *res; 645 struct resource *res;
646 646
647 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 647 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
648 648
649 /* disable LCD controller */ 649 imxfb_disable_controller(fbi);
650 LCDC_RMCR &= ~RMCR_LCDC_EN;
651 650
652 unregister_framebuffer(info); 651 unregister_framebuffer(info);
653 652
@@ -663,8 +662,9 @@ static int imxfb_remove(struct device *dev)
663 662
664void imxfb_shutdown(struct device * dev) 663void imxfb_shutdown(struct device * dev)
665{ 664{
666 /* disable LCD Controller */ 665 struct fb_info *info = dev_get_drvdata(dev);
667 LCDC_RMCR &= ~RMCR_LCDC_EN; 666 struct imxfb_info *fbi = info->par;
667 imxfb_disable_controller(fbi);
668} 668}
669 669
670static struct device_driver imxfb_driver = { 670static struct device_driver imxfb_driver = {
diff --git a/drivers/video/imxfb.h b/drivers/video/imxfb.h
index 128c3ee515c7..e837a8b48eb8 100644
--- a/drivers/video/imxfb.h
+++ b/drivers/video/imxfb.h
@@ -54,6 +54,7 @@ struct imxfb_info {
54 u_int pcr; 54 u_int pcr;
55 u_int pwmr; 55 u_int pwmr;
56 u_int lscr1; 56 u_int lscr1;
57 u_int dmacr;
57 u_int cmap_inverse:1, 58 u_int cmap_inverse:1,
58 cmap_static:1, 59 cmap_static:1,
59 unused:30; 60 unused:30;
diff --git a/include/asm-arm/arch-imx/imxfb.h b/include/asm-arm/arch-imx/imxfb.h
index 2346d454ab9c..7dbc7bbba65d 100644
--- a/include/asm-arm/arch-imx/imxfb.h
+++ b/include/asm-arm/arch-imx/imxfb.h
@@ -25,6 +25,7 @@ struct imxfb_mach_info {
25 u_int pcr; 25 u_int pcr;
26 u_int pwmr; 26 u_int pwmr;
27 u_int lscr1; 27 u_int lscr1;
28 u_int dmacr;
28 29
29 u_char * fixed_screen_cpu; 30 u_char * fixed_screen_cpu;
30 dma_addr_t fixed_screen_dma; 31 dma_addr_t fixed_screen_dma;