⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 epson1356fb.h

📁 S3C44B0X下的LCD (framebuffer)驱动资料与相关代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* *	epson1356fb.h  --  Epson SED1356 Framebuffer Driver * *	Copyright 2001, 2002, 2003 MontaVista Software Inc. *	Author: MontaVista Software, Inc. *		stevel@mvista.com or source@mvista.com * *	This program is free software; you can redistribute  it and/or modify it *	under  the terms of  the GNU General  Public License as published by the *	Free Software Foundation;  either version 2 of the  License, or (at your *	option) any later version. * *	THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED *	WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF *	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN *	NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT, *	INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT *	NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF *	USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON *	ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT *	(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF *	THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *	You should have received a copy of the  GNU General Public License along *	with this program; if not, write  to the Free Software Foundation, Inc., *	675 Mass Ave, Cambridge, MA 02139, USA. * */#ifdef E1356FB_DEBUG#define DPRINTK(a,b...) printk(KERN_DEBUG "e1356fb: %s: " a, __FUNCTION__ , ## b)#else#define DPRINTK(a,b...)#endif #define E1356_REG_SIZE  0x200000#define PICOS2KHZ(a) (1000000000UL/(a))#define KHZ2PICOS(a) (1000000000UL/(a))#define MAX_PIXCLOCK  40000 // KHz#define NTSC_PIXCLOCK 14318 // KHz#define PAL_PIXCLOCK  17734 // KHz/* * Maximum percent errors between desired pixel clock and * supported pixel clock. Lower-than and higher-than desired * clock percent errors. */#define MAX_PCLK_ERROR_LOWER  10#define MAX_PCLK_ERROR_HIGHER -1#define fontwidth_x8(p) (((fontwidth(p) + 7) >> 3) << 3)/* * Register Structures */// Basic#define REG_BASE_BASIC     0x00typedef struct {	u8 rev_code;           // 00	u8 misc;               // 01} reg_basic_t;// General IO Pins#define REG_BASE_GENIO     0x04typedef struct {	u8 gpio_cfg;           // 04	u8 gpio_cfg2;          // 05 SED13806	u8 spacer[2];          // 06	u8 gpio_ctrl;          // 08	u8 gpio_ctrl2;         // 09 SED13806} reg_genio_t;// MD Config Readback#define REG_BASE_MDCFG     0x0ctypedef struct {	u8 md_cfg_stat0;       // 0C	u8 md_cfg_stat1;       // 0D} reg_mdcfg_t;// Clock Config#define REG_BASE_CLKCFG    0x10typedef struct {	u8 mem_clk_cfg;        // 10	u8 spacer1[3];         // 11	u8 lcd_pclk_cfg;       // 14	u8 spacer2[3];         // 15	u8 crttv_pclk_cfg;     // 18	u8 spacer3[3];         // 19	u8 mpclk_cfg;          // 1C	u8 spacer4;            // 1D	u8 cpu2mem_wait_sel;   // 1E} reg_clkcfg_t;// Memory Config#define REG_BASE_MEMCFG    0x20typedef struct {	u8 mem_cfg;            // 20	u8 dram_refresh;       // 21	u8 spacer[8];          // 22	u8 dram_timings_ctrl0; // 2A	u8 dram_timings_ctrl1; // 2B} reg_memcfg_t;// Panel Config#define REG_BASE_PANELCFG  0x30typedef struct {	u8 panel_type;         // 30	u8 mod_rate;           // 31} reg_panelcfg_t;// LCD and CRTTV Display Config#define REG_BASE_LCD_DISPCFG   0x32#define REG_BASE_CRTTV_DISPCFG 0x50typedef struct {	u8 hdw;                // 32 or 50	u8 spacer1;            // 33 or 51	u8 hndp;               // 34 or 52	u8 hsync_start;        // 35 or 53	u8 hsync_pulse;        // 36 or 54	u8 spacer2;            // 37 or 55	u8 vdh0;               // 38 or 56	u8 vdh1;               // 39 or 57	u8 vndp;               // 3A or 58	u8 vsync_start;        // 3B or 59	u8 vsync_pulse;        // 3C or 5A	u8 tv_output_ctrl;     // 5B (TV only)} reg_dispcfg_t;// LCD and CRTTV Display Mode#define REG_BASE_LCD_DISPMODE   0x40#define REG_BASE_CRTTV_DISPMODE 0x60typedef struct {	u8 disp_mode;          // 40 or 60	u8 lcd_misc;           // 41 (LCD only)	u8 start_addr0;        // 42 or 62	u8 start_addr1;        // 43 or 63	u8 start_addr2;        // 44 or 64	u8 spacer1;            // 45 or 65	u8 mem_addr_offset0;   // 46 or 66	u8 mem_addr_offset1;   // 47 or 67	u8 pixel_panning;      // 48 or 68	u8 spacer2;            // 49 or 69	u8 fifo_high_thresh;   // 4A or 6A	u8 fifo_low_thresh;    // 4B or 6B} reg_dispmode_t;// LCD and CRTTV Ink/Cursor#define REG_BASE_LCD_INKCURS   0x70#define REG_BASE_CRTTV_INKCURS 0x80typedef struct {	u8 ctrl;               // 70 or 80	u8 start_addr;         // 71 or 81	u8 x_pos0;             // 72 or 82	u8 x_pos1;             // 73 or 83	u8 y_pos0;             // 74 or 84	u8 y_pos1;             // 75 or 85	u8 blue0;              // 76 or 86	u8 green0;             // 77 or 87	u8 red0;               // 78 or 88	u8 spacer1;            // 79 or 89	u8 blue1;              // 7A or 8A	u8 green1;             // 7B or 8B	u8 red1;               // 7C or 8C	u8 spacer2;            // 7D or 8D	u8 fifo;               // 7E or 8E} reg_inkcurs_t;// BitBlt Config#define REG_BASE_BITBLT        0x100typedef struct {	u8 ctrl0;              // 100	u8 ctrl1;              // 101	u8 rop_code;           // 102	u8 operation;          // 103	u8 src_start_addr0;    // 104	u8 src_start_addr1;    // 105	u8 src_start_addr2;    // 106	u8 spacer1;            // 107	u8 dest_start_addr0;   // 108	u8 dest_start_addr1;   // 109	u8 dest_start_addr2;   // 10A	u8 spacer2;            // 10B	u8 mem_addr_offset0;   // 10C	u8 mem_addr_offset1;   // 10D	u8 spacer3[2];         // 10E	u8 width0;             // 110	u8 width1;             // 111	u8 height0;            // 112	u8 height1;            // 113	u8 bg_color0;          // 114	u8 bg_color1;          // 115	u8 spacer4[2];         // 116	u8 fg_color0;          // 118	u8 fg_color1;          // 119} reg_bitblt_t;// LUT#define REG_BASE_LUT           0x1e0typedef struct {	u8 mode;               // 1E0	u8 spacer1;            // 1E1	u8 addr;               // 1E2	u8 spacer2;            // 1E3	u8 data;               // 1E4} reg_lut_t;// Power Save Config#define REG_BASE_PWRSAVE       0x1f0typedef struct {	u8 cfg;                // 1F0	u8 status;             // 1F1} reg_pwrsave_t;// Misc#define REG_BASE_MISC          0x1f4typedef struct {	u8 cpu2mem_watchdog;   // 1F4	u8 spacer[7];          // 1F5	u8 disp_mode;          // 1FC} reg_misc_t;// MediaPlug#define REG_BASE_MEDIAPLUG     0x1000typedef struct {	u8 lcmd;               // 1000	u8 spacer1;            // 1001	u8 reserved_lcmd;      // 1002	u8 spacer2;            // 1003	u8 cmd;                // 1004	u8 spacer3;            // 1005	u8 reserved_cmd;       // 1006	u8 spacer4;            // 1007	u8 data;               // 1008} reg_mediaplug_t;// BitBlt data register. 16-bit access only#define REG_BASE_BITBLT_DATA   0x100000typedef struct {	reg_basic_t* basic;	reg_genio_t* genio;	reg_mdcfg_t* md_cfg;	reg_clkcfg_t* clk_cfg;	reg_memcfg_t* mem_cfg;	reg_panelcfg_t* panel_cfg;	reg_dispcfg_t* lcd_cfg;	reg_dispcfg_t* crttv_cfg;	reg_dispmode_t* lcd_mode;	reg_dispmode_t* crttv_mode;	reg_inkcurs_t* lcd_inkcurs;	reg_inkcurs_t* crttv_inkcurs;	reg_bitblt_t* bitblt;	reg_lut_t* lut;	reg_pwrsave_t* pwr_save;	reg_misc_t* misc;	reg_mediaplug_t* mediaplug;	u16* bitblt_data;} e1356_reg_t;/*--------------------------------------------------------*/enum mem_type_t {	MEM_TYPE_EDO_2CAS = 0,	MEM_TYPE_FPM_2CAS,	MEM_TYPE_EDO_2WE,	MEM_TYPE_FPM_2WE,	MEM_TYPE_EMBEDDED_SDRAM = 0x80};enum mem_smr_t {	MEM_SMR_CBR = 0,	MEM_SMR_SELF,	MEM_SMR_NONE};enum disp_type_t {	DISP_TYPE_LCD = 0,	DISP_TYPE_TFT,	DISP_TYPE_CRT,	DISP_TYPE_PAL,	DISP_TYPE_NTSC};/* * Maximum timing values, as determined by the SED1356 register * field sizes. All are indexed by display type, except * max_hsync_start which is first indexed by color depth, * then by display type. */static const int max_hndp[5] = {256, 256, 512, 511, 510};static const int max_hsync_start[2][5] = {	{0, 252, 507, 505, 505}, // 8 bpp	{0, 254, 509, 507, 507}  // 16 bpp};static const int max_hsync_width[5] = {0, 128, 128, 0, 0};static const int max_vndp[5] = {64, 64, 128, 128, 128};static const int max_vsync_start[5] = {0, 64, 128, 128, 128};static const int max_vsync_width[5] = {0, 8, 8, 0, 0};#define IS_PANEL(disp_type) \    (disp_type == DISP_TYPE_LCD || disp_type == DISP_TYPE_TFT)#define IS_CRT(disp_type) (disp_type == DISP_TYPE_CRT)#define IS_TV(disp_type) \    (disp_type == DISP_TYPE_NTSC || disp_type == DISP_TYPE_PAL)enum tv_filters_t {	TV_FILT_LUM = 1,	TV_FILT_CHROM = 2,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -