Commit 772a9e631ccad0423ed6d08acb3a4b1084ae2613

Authored by Sascha Hauer
Committed by Russell King
1 parent 246b49768b

[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>

Showing 3 changed files with 9 additions and 7 deletions Side-by-side Diff

drivers/video/imxfb.c
... ... @@ -249,9 +249,6 @@
249 249 /* disable hardware cursor */
250 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 252 LCDC_RMCR = RMCR_LCDC_EN;
256 253  
257 254 if(fbi->backlight_power)
... ... @@ -359,6 +356,7 @@
359 356 LCDC_PCR = fbi->pcr;
360 357 LCDC_PWMR = fbi->pwmr;
361 358 LCDC_LSCR1 = fbi->lscr1;
  359 + LCDC_DMACR = fbi->dmacr;
362 360  
363 361 return 0;
364 362 }
... ... @@ -509,6 +507,7 @@
509 507 fbi->cmap_inverse = inf->cmap_inverse;
510 508 fbi->pcr = inf->pcr;
511 509 fbi->lscr1 = inf->lscr1;
  510 + fbi->dmacr = inf->dmacr;
512 511 fbi->pwmr = inf->pwmr;
513 512 fbi->lcd_power = inf->lcd_power;
514 513 fbi->backlight_power = inf->backlight_power;
515 514  
... ... @@ -642,12 +641,12 @@
642 641 {
643 642 struct platform_device *pdev = to_platform_device(dev);
644 643 struct fb_info *info = dev_get_drvdata(dev);
  644 + struct imxfb_info *fbi = info->par;
645 645 struct resource *res;
646 646  
647 647 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
648 648  
649   - /* disable LCD controller */
650   - LCDC_RMCR &= ~RMCR_LCDC_EN;
  649 + imxfb_disable_controller(fbi);
651 650  
652 651 unregister_framebuffer(info);
653 652  
... ... @@ -663,8 +662,9 @@
663 662  
664 663 void imxfb_shutdown(struct device * dev)
665 664 {
666   - /* disable LCD Controller */
667   - LCDC_RMCR &= ~RMCR_LCDC_EN;
  665 + struct fb_info *info = dev_get_drvdata(dev);
  666 + struct imxfb_info *fbi = info->par;
  667 + imxfb_disable_controller(fbi);
668 668 }
669 669  
670 670 static struct device_driver imxfb_driver = {
drivers/video/imxfb.h
... ... @@ -54,6 +54,7 @@
54 54 u_int pcr;
55 55 u_int pwmr;
56 56 u_int lscr1;
  57 + u_int dmacr;
57 58 u_int cmap_inverse:1,
58 59 cmap_static:1,
59 60 unused:30;
include/asm-arm/arch-imx/imxfb.h
... ... @@ -25,6 +25,7 @@
25 25 u_int pcr;
26 26 u_int pwmr;
27 27 u_int lscr1;
  28 + u_int dmacr;
28 29  
29 30 u_char * fixed_screen_cpu;
30 31 dma_addr_t fixed_screen_dma;