diff options
author | Sascha Hauer <sascha@saschahauer.de> | 2005-07-17 20:15:36 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-07-17 20:15:36 +0100 |
commit | 772a9e631ccad0423ed6d08acb3a4b1084ae2613 (patch) | |
tree | cf4243b9f4ed2e8a8661f08588f2a1df6370896b /drivers | |
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/imxfb.c | 14 | ||||
-rw-r--r-- | drivers/video/imxfb.h | 1 |
2 files changed, 8 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) /* disable hardware cursor */ LCDC_CPOS &= ~(CPOS_CC0 | CPOS_CC1); - /* fixed burst length (see erratum 11) */ - LCDC_DMACR = DMACR_BURST | DMACR_HM(8) | DMACR_TM(2); - LCDC_RMCR = RMCR_LCDC_EN; if(fbi->backlight_power) @@ -359,6 +356,7 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf LCDC_PCR = fbi->pcr; LCDC_PWMR = fbi->pwmr; LCDC_LSCR1 = fbi->lscr1; + LCDC_DMACR = fbi->dmacr; return 0; } @@ -509,6 +507,7 @@ static int __init imxfb_init_fbinfo(struct device *dev) fbi->cmap_inverse = inf->cmap_inverse; fbi->pcr = inf->pcr; fbi->lscr1 = inf->lscr1; + fbi->dmacr = inf->dmacr; fbi->pwmr = inf->pwmr; fbi->lcd_power = inf->lcd_power; fbi->backlight_power = inf->backlight_power; @@ -642,12 +641,12 @@ static int imxfb_remove(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct fb_info *info = dev_get_drvdata(dev); + struct imxfb_info *fbi = info->par; struct resource *res; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - /* disable LCD controller */ - LCDC_RMCR &= ~RMCR_LCDC_EN; + imxfb_disable_controller(fbi); unregister_framebuffer(info); @@ -663,8 +662,9 @@ static int imxfb_remove(struct device *dev) void imxfb_shutdown(struct device * dev) { - /* disable LCD Controller */ - LCDC_RMCR &= ~RMCR_LCDC_EN; + struct fb_info *info = dev_get_drvdata(dev); + struct imxfb_info *fbi = info->par; + imxfb_disable_controller(fbi); } 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 { u_int pcr; u_int pwmr; u_int lscr1; + u_int dmacr; u_int cmap_inverse:1, cmap_static:1, unused:30; |