Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

authored by

Sascha Hauer and committed by
Russell King
772a9e63 246b4976

+9 -7
+7 -7
drivers/video/imxfb.c
··· 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) ··· 356 359 LCDC_PCR = fbi->pcr; 357 360 LCDC_PWMR = fbi->pwmr; 358 361 LCDC_LSCR1 = fbi->lscr1; 362 + LCDC_DMACR = fbi->dmacr; 359 363 360 364 return 0; 361 365 } ··· 507 509 fbi->cmap_inverse = inf->cmap_inverse; 508 510 fbi->pcr = inf->pcr; 509 511 fbi->lscr1 = inf->lscr1; 512 + fbi->dmacr = inf->dmacr; 510 513 fbi->pwmr = inf->pwmr; 511 514 fbi->lcd_power = inf->lcd_power; 512 515 fbi->backlight_power = inf->backlight_power; ··· 641 642 { 642 643 struct platform_device *pdev = to_platform_device(dev); 643 644 struct fb_info *info = dev_get_drvdata(dev); 645 + struct imxfb_info *fbi = info->par; 644 646 struct resource *res; 645 647 646 648 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 647 649 648 - /* disable LCD controller */ 649 - LCDC_RMCR &= ~RMCR_LCDC_EN; 650 + imxfb_disable_controller(fbi); 650 651 651 652 unregister_framebuffer(info); 652 653 ··· 662 663 663 664 void imxfb_shutdown(struct device * dev) 664 665 { 665 - /* disable LCD Controller */ 666 - LCDC_RMCR &= ~RMCR_LCDC_EN; 666 + struct fb_info *info = dev_get_drvdata(dev); 667 + struct imxfb_info *fbi = info->par; 668 + imxfb_disable_controller(fbi); 667 669 } 668 670 669 671 static struct device_driver imxfb_driver = {
+1
drivers/video/imxfb.h
··· 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;
+1
include/asm-arm/arch-imx/imxfb.h
··· 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;