1/* 2 * Porting to u-boot: 3 * 4 * (C) Copyright 2011 5 * Stefano Babic, DENX Software Engineering, sbabic@denx.de. 6 * 7 * Copyright (C) 2008-2009 MontaVista Software Inc. 8 * Copyright (C) 2008-2009 Texas Instruments Inc 9 * 10 * Based on the LCD driver for TI Avalanche processors written by 11 * Ajay Singh and Shalom Hai. 12 * 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License as published by 15 * the Free Software Foundation; either version 2 of the License, or 16 * (at your option)any later version. 17 * 18 * This program is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 * GNU General Public License for more details. 22 * 23 * You should have received a copy of the GNU General Public License 24 * along with this program; if not, write to the Free Software 25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 26 */ 27 28#ifndef DA8XX_FB_H 29#define DA8XX_FB_H 30 31enum panel_type { 32 QVGA = 0 33}; 34 35enum panel_shade { 36 MONOCHROME = 0, 37 COLOR_ACTIVE, 38 COLOR_PASSIVE, 39}; 40 41enum raster_load_mode { 42 LOAD_DATA = 1, 43 LOAD_PALETTE, 44}; 45 46struct display_panel { 47 enum panel_type panel_type; /* QVGA */ 48 int max_bpp; 49 int min_bpp; 50 enum panel_shade panel_shade; 51}; 52 53struct da8xx_panel { 54 const char name[25]; /* Full name <vendor>_<model> */ 55 unsigned short width; 56 unsigned short height; 57 int hfp; /* Horizontal front porch */ 58 int hbp; /* Horizontal back porch */ 59 int hsw; /* Horizontal Sync Pulse Width */ 60 int vfp; /* Vertical front porch */ 61 int vbp; /* Vertical back porch */ 62 int vsw; /* Vertical Sync Pulse Width */ 63 unsigned int pxl_clk; /* Pixel clock */ 64 unsigned char invert_pxl_clk; /* Invert Pixel clock */ 65}; 66 67struct da8xx_lcdc_platform_data { 68 const char manu_name[10]; 69 void *controller_data; 70 const char type[25]; 71 void (*panel_power_ctrl)(int); 72}; 73 74struct lcd_ctrl_config { 75 const struct display_panel *p_disp_panel; 76 77 /* AC Bias Pin Frequency */ 78 int ac_bias; 79 80 /* AC Bias Pin Transitions per Interrupt */ 81 int ac_bias_intrpt; 82 83 /* DMA burst size */ 84 int dma_burst_sz; 85 86 /* Bits per pixel */ 87 int bpp; 88 89 /* FIFO DMA Request Delay */ 90 int fdd; 91 92 /* TFT Alternative Signal Mapping (Only for active) */ 93 unsigned char tft_alt_mode; 94 95 /* 12 Bit Per Pixel (5-6-5) Mode (Only for passive) */ 96 unsigned char stn_565_mode; 97 98 /* Mono 8-bit Mode: 1=D0-D7 or 0=D0-D3 */ 99 unsigned char mono_8bit_mode; 100 101 /* Invert line clock */ 102 unsigned char invert_line_clock; 103 104 /* Invert frame clock */ 105 unsigned char invert_frm_clock; 106 107 /* Horizontal and Vertical Sync Edge: 0=rising 1=falling */ 108 unsigned char sync_edge; 109 110 /* Horizontal and Vertical Sync: Control: 0=ignore */ 111 unsigned char sync_ctrl; 112 113 /* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */ 114 unsigned char raster_order; 115}; 116 117struct lcd_sync_arg { 118 int back_porch; 119 int front_porch; 120 int pulse_width; 121}; 122 123void da8xx_video_init(const struct da8xx_panel *panel, int bits_pixel); 124 125#endif /* ifndef DA8XX_FB_H */ 126