]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/video/fbdev/imxfb.c
Merge tag 'iio-for-4.13a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23...
[karo-tx-linux.git] / drivers / video / fbdev / imxfb.c
index 1b0faadb30801921d74231b6fc788fac5b67d9cd..c166e0725be5dab13e9a685a93ea7ea9c23a3351 100644 (file)
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR    0x80
+#define LAUSCR_AUS_MODE        (1<<31)
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +161,7 @@ struct imxfb_info {
        dma_addr_t              dbar2;
 
        u_int                   pcr;
+       u_int                   lauscr;
        u_int                   pwmr;
        u_int                   lscr1;
        u_int                   dmacr;
@@ -422,6 +426,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
        pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
        fbi->pcr = pcr;
+       /*
+        * The LCDC AUS Mode Control Register does not exist on imx1.
+        */
+       if (!is_imx1_fb(fbi) && imxfb_mode->aus_mode)
+               fbi->lauscr = LAUSCR_AUS_MODE;
 
        /*
         * 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
        if (fbi->dmacr)
                writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+       if (fbi->lauscr)
+               writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
        return 0;
 }
 
@@ -734,6 +746,11 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
        imxfb_mode->bpp = bpp;
        imxfb_mode->pcr = pcr;
 
+       /*
+        * fsl,aus-mode is optional
+        */
+       imxfb_mode->aus_mode = of_property_read_bool(np, "fsl,aus-mode");
+
        return 0;
 }