aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/imxfb.c17
-rw-r--r--include/linux/platform_data/video-imxfb.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faadb3080..c166e0725be5 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,9 @@
117 117
118#define IMXFB_LSCR1_DEFAULT 0x00120300 118#define IMXFB_LSCR1_DEFAULT 0x00120300
119 119
120#define LCDC_LAUSCR 0x80
121#define LAUSCR_AUS_MODE (1<<31)
122
120/* Used fb-mode. Can be set on kernel command line, therefore file-static. */ 123/* Used fb-mode. Can be set on kernel command line, therefore file-static. */
121static const char *fb_mode; 124static const char *fb_mode;
122 125
@@ -158,6 +161,7 @@ struct imxfb_info {
158 dma_addr_t dbar2; 161 dma_addr_t dbar2;
159 162
160 u_int pcr; 163 u_int pcr;
164 u_int lauscr;
161 u_int pwmr; 165 u_int pwmr;
162 u_int lscr1; 166 u_int lscr1;
163 u_int dmacr; 167 u_int dmacr;
@@ -422,6 +426,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
422 pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25)); 426 pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
423 427
424 fbi->pcr = pcr; 428 fbi->pcr = pcr;
429 /*
430 * The LCDC AUS Mode Control Register does not exist on imx1.
431 */
432 if (!is_imx1_fb(fbi) && imxfb_mode->aus_mode)
433 fbi->lauscr = LAUSCR_AUS_MODE;
425 434
426 /* 435 /*
427 * Copy the RGB parameters for this display 436 * Copy the RGB parameters for this display
@@ -638,6 +647,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
638 if (fbi->dmacr) 647 if (fbi->dmacr)
639 writel(fbi->dmacr, fbi->regs + LCDC_DMACR); 648 writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
640 649
650 if (fbi->lauscr)
651 writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
652
641 return 0; 653 return 0;
642} 654}
643 655
@@ -734,6 +746,11 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
734 imxfb_mode->bpp = bpp; 746 imxfb_mode->bpp = bpp;
735 imxfb_mode->pcr = pcr; 747 imxfb_mode->pcr = pcr;
736 748
749 /*
750 * fsl,aus-mode is optional
751 */
752 imxfb_mode->aus_mode = of_property_read_bool(np, "fsl,aus-mode");
753
737 return 0; 754 return 0;
738} 755}
739 756
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71ec914..cf9348b376ac 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
50struct imx_fb_videomode { 50struct imx_fb_videomode {
51 struct fb_videomode mode; 51 struct fb_videomode mode;
52 u32 pcr; 52 u32 pcr;
53 bool aus_mode;
53 unsigned char bpp; 54 unsigned char bpp;
54}; 55};
55 56