dm: x86: video: Add a driver-model driver for ivybridge graphics
[oweals/u-boot.git] / drivers / video / mpc8xx_lcd.c
index 50eed89d0925e51e7bb231c7652880697b992019..b08576eab203f3ef6a6f6ab4ab348128fdff38da 100644 (file)
@@ -15,7 +15,6 @@
 #include <common.h>
 #include <command.h>
 #include <watchdog.h>
-#include <version.h>
 #include <stdarg.h>
 #include <lcdvideo.h>
 #include <linux/types.h>
 #define CONFIG_LCD_INFO                /* Display Logo, (C) and system info    */
 #endif
 
-#if defined(CONFIG_EDT32F10)
-#undef CONFIG_LCD_LOGO
-#undef CONFIG_LCD_INFO
-#endif
-
 /*----------------------------------------------------------------------*/
 #ifdef CONFIG_KYOCERA_KCS057QV1AJ
 /*
@@ -224,20 +218,6 @@ vidinfo_t panel_info = {
 };
 #endif /* CONFIG_OPTREX_BW */
 
-/*-----------------------------------------------------------------*/
-#ifdef CONFIG_EDT32F10
-/*
- * Emerging Display Technologies 320x240. Passive, monochrome, single scan.
- */
-#define LCD_BPP                LCD_MONOCHROME
-#define LCD_DF         10
-
-vidinfo_t panel_info = {
-    320, 240, 0, 0, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_HIGH, CONFIG_SYS_LOW,
-    LCD_BPP,  0, 0, 0, 0, 33, 0, 0, 0
-};
-#endif
-
 /************************************************************************/
 /* ----------------- chipset specific functions ----------------------- */
 /************************************************************************/
@@ -305,7 +285,6 @@ void lcd_ctrl_init (void *lcdbase)
        immr->im_clkrst.car_sccr &= ~0x1F;
        immr->im_clkrst.car_sccr |= LCD_DF;     /* was 8 */
 
-#if !defined(CONFIG_EDT32F10)
        /* Enable LCD on port D.
         */
        immr->im_ioport.iop_pdpar |= 0x1FFF;
@@ -315,14 +294,6 @@ void lcd_ctrl_init (void *lcdbase)
         */
        immr->im_cpm.cp_pbpar |= 0x00005001;
        immr->im_cpm.cp_pbdir |= 0x00005001;
-#else
-       /* Enable LCD on port D.
-        */
-       immr->im_ioport.iop_pdpar |= 0x1DFF;
-       immr->im_ioport.iop_pdpar &= ~0x0200;
-       immr->im_ioport.iop_pddir |= 0x1FFF;
-       immr->im_ioport.iop_pddat |= 0x0200;
-#endif
 
        /* Load the physical address of the linear frame buffer
         * into the LCD controller.
@@ -373,9 +344,7 @@ lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
        colreg = ((red   & 0x0F) << 8) |
                 ((green & 0x0F) << 4) |
                  (blue  & 0x0F) ;
-#ifdef CONFIG_SYS_INVERT_COLORS
-       colreg ^= 0x0FFF;
-#endif
+
        *cmap_ptr = colreg;
 
        debug ("setcolreg: reg %2d @ %p: R=%02X G=%02X B=%02X => %02X%02X\n",
@@ -387,22 +356,34 @@ lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
 
 /*----------------------------------------------------------------------*/
 
-#if LCD_BPP == LCD_MONOCHROME
-static
-void lcd_initcolregs (void)
+ushort *configuration_get_cmap(void)
 {
-       volatile immap_t *immr = (immap_t *) CONFIG_SYS_IMMR;
-       volatile cpm8xx_t *cp = &(immr->im_cpm);
-       ushort regno;
+       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+       cpm8xx_t *cp = &(immr->im_cpm);
+       return (ushort *)&(cp->lcd_cmap[255 * sizeof(ushort)]);
+}
 
-       for (regno = 0; regno < 16; regno++) {
-               cp->lcd_cmap[regno * 2] = 0;
-               cp->lcd_cmap[(regno * 2) + 1] = regno & 0x0f;
-       }
+#if defined(CONFIG_MPC823)
+void fb_put_byte(uchar **fb, uchar **from)
+{
+       *(*fb)++ = (255 - *(*from)++);
 }
 #endif
 
-/*----------------------------------------------------------------------*/
+#ifdef CONFIG_LCD_LOGO
+#include <bmp_logo.h>
+void lcd_logo_set_cmap(void)
+{
+       int i;
+       ushort *cmap;
+       immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
+       cpm8xx_t *cp = &(immr->im_cpm);
+       cmap = (ushort *)&(cp->lcd_cmap[BMP_LOGO_OFFSET * sizeof(ushort)]);
+
+       for (i = 0; i < BMP_LOGO_COLORS; ++i)
+               *cmap++ = bmp_logo_palette[i];
+}
+#endif
 
 void lcd_enable (void)
 {