diff options
| -rw-r--r-- | drivers/video/fbdev/imxfb.c | 17 | ||||
| -rw-r--r-- | include/linux/platform_data/video-imxfb.h | 1 |
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. */ |
| 121 | static const char *fb_mode; | 124 | static 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 @@ | |||
| 50 | struct imx_fb_videomode { | 50 | struct 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 | ||
