]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/lcd.h
common/lcd.c: cleanup use of global variables
[karo-tx-uboot.git] / include / lcd.h
index 3d9ef167107e6f6e1bbfdcd874d6854025b0dae8..e8c6c96f5c597cf6c5de03c2b3f3aedb2ebe97ec 100644 (file)
 extern char lcd_is_enabled;
 
 extern int lcd_line_length;
-extern int lcd_color_fg;
-extern int lcd_color_bg;
 
 /*
  * Frame buffer memory information
  */
-extern void *lcd_base;         /* Start of framebuffer memory  */
+extern void *lcd_base;                 /* Start of framebuffer memory  */
 extern void *lcd_console_address;      /* Start of console buffer      */
 
 extern short console_col;
@@ -47,14 +45,26 @@ extern struct vidinfo panel_info;
 
 extern void lcd_ctrl_init (void *lcdbase);
 extern void lcd_enable (void);
+extern int board_splash_screen_prepare(void);
 
 /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */
 extern void lcd_setcolreg (ushort regno,
                                ushort red, ushort green, ushort blue);
 extern void lcd_initcolregs (void);
 
+extern int lcd_getfgcolor(void);
+
 /* gunzip_bmp used if CONFIG_VIDEO_BMP_GZIP */
 extern struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp);
+extern int bmp_display(ulong addr, int x, int y);
+
+/**
+ * Set whether we need to flush the dcache when changing the LCD image. This
+ * defaults to off.
+ *
+ * @param flush                non-zero to flush cache after update, 0 to skip
+ */
+void lcd_set_flush_dcache(int flush);
 
 #if defined CONFIG_MPC823
 /*
@@ -157,7 +167,7 @@ typedef struct vidinfo {
        struct  pxafb_info pxa;
 } vidinfo_t;
 
-#elif defined(CONFIG_ATMEL_LCD)
+#elif defined(CONFIG_ATMEL_LCD) || defined(CONFIG_ATMEL_HLCD)
 
 typedef struct vidinfo {
        ushort vl_col;          /* Number of columns (i.e. 640) */
@@ -169,6 +179,7 @@ typedef struct vidinfo {
        u_long vl_bpix;         /* Bits per pixel, 0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16 */
        u_long vl_tft;          /* 0 = passive, 1 = TFT */
        u_long vl_cont_pol_low; /* contrast polarity is low */
+       u_long vl_clk_pol;      /* clock polarity */
 
        /* Horizontal control register. */
        u_long vl_hsync_len;    /* Length of horizontal sync */
@@ -190,6 +201,13 @@ enum {
        FIMD_CPU_INTERFACE = 2,
 };
 
+enum exynos_fb_rgb_mode_t {
+       MODE_RGB_P = 0,
+       MODE_BGR_P = 1,
+       MODE_RGB_S = 2,
+       MODE_BGR_S = 3,
+};
+
 typedef struct vidinfo {
        ushort vl_col;          /* Number of columns (i.e. 640) */
        ushort vl_row;          /* Number of rows (i.e. 480) */
@@ -231,10 +249,17 @@ typedef struct vidinfo {
        unsigned int reset_delay;
        unsigned int interface_mode;
        unsigned int mipi_enabled;
+       unsigned int dp_enabled;
        unsigned int cs_setup;
        unsigned int wr_setup;
        unsigned int wr_act;
        unsigned int wr_hold;
+       unsigned int logo_on;
+       unsigned int logo_width;
+       unsigned int logo_height;
+       unsigned long logo_addr;
+       unsigned int rgb_mode;
+       unsigned int resolution;
 
        /* parent clock name(MPLL, EPLL or VPLL) */
        unsigned int pclk_name;
@@ -278,9 +303,48 @@ void       lcd_printf      (const char *fmt, ...);
 void   lcd_clear(void);
 int    lcd_display_bitmap(ulong bmp_image, int x, int y);
 
+/**
+ * Get the width of the LCD in pixels
+ *
+ * @return width of LCD in pixels
+ */
+int lcd_get_pixel_width(void);
+
+/**
+ * Get the height of the LCD in pixels
+ *
+ * @return height of LCD in pixels
+ */
+int lcd_get_pixel_height(void);
+
+/**
+ * Get the number of text lines/rows on the LCD
+ *
+ * @return number of rows
+ */
+int lcd_get_screen_rows(void);
+
+/**
+ * Get the number of text columns on the LCD
+ *
+ * @return number of columns
+ */
+int lcd_get_screen_columns(void);
+
+/**
+ * Set the position of the text cursor
+ *
+ * @param col  Column to place cursor (0 = left side)
+ * @param row  Row to place cursor (0 = top line)
+ */
+void lcd_position_cursor(unsigned col, unsigned row);
+
 /* Allow boards to customize the information displayed */
 void lcd_show_board_info(void);
 
+/* Return the size of the LCD frame buffer, and the line length */
+int lcd_get_size(int *line_length);
+
 /************************************************************************/
 /* ** BITMAP DISPLAY SUPPORT                                           */
 /************************************************************************/