diff options
author | Sascha Hauer <sascha@saschahauer.de> | 2005-07-17 15:15:36 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-07-17 15:15:36 -0400 |
commit | 772a9e631ccad0423ed6d08acb3a4b1084ae2613 (patch) | |
tree | cf4243b9f4ed2e8a8661f08588f2a1df6370896b | |
parent | 246b49768bc96d942ab0e2a17aab6fc3d2e011da (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.c | 14 | ||||
-rw-r--r-- | drivers/video/imxfb.h | 1 | ||||
-rw-r--r-- | include/asm-arm/arch-imx/imxfb.h | 1 |
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 | ||
664 | void imxfb_shutdown(struct device * dev) | 663 | void 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 | ||
670 | static struct device_driver imxfb_driver = { | 670 | static 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; |