1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * broadsheetfb.h - definitions for the broadsheet framebuffer driver 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2008 by Jaya Kumar 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 7*4882a593Smuzhiyun * License. See the file COPYING in the main directory of this archive for 8*4882a593Smuzhiyun * more details. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #ifndef _LINUX_BROADSHEETFB_H_ 13*4882a593Smuzhiyun #define _LINUX_BROADSHEETFB_H_ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* Broadsheet command defines */ 16*4882a593Smuzhiyun #define BS_CMD_INIT_SYS_RUN 0x06 17*4882a593Smuzhiyun #define BS_CMD_INIT_DSPE_CFG 0x09 18*4882a593Smuzhiyun #define BS_CMD_INIT_DSPE_TMG 0x0A 19*4882a593Smuzhiyun #define BS_CMD_INIT_ROTMODE 0x0B 20*4882a593Smuzhiyun #define BS_CMD_RD_REG 0x10 21*4882a593Smuzhiyun #define BS_CMD_WR_REG 0x11 22*4882a593Smuzhiyun #define BS_CMD_LD_IMG 0x20 23*4882a593Smuzhiyun #define BS_CMD_LD_IMG_AREA 0x22 24*4882a593Smuzhiyun #define BS_CMD_LD_IMG_END 0x23 25*4882a593Smuzhiyun #define BS_CMD_WAIT_DSPE_TRG 0x28 26*4882a593Smuzhiyun #define BS_CMD_WAIT_DSPE_FREND 0x29 27*4882a593Smuzhiyun #define BS_CMD_RD_WFM_INFO 0x30 28*4882a593Smuzhiyun #define BS_CMD_UPD_INIT 0x32 29*4882a593Smuzhiyun #define BS_CMD_UPD_FULL 0x33 30*4882a593Smuzhiyun #define BS_CMD_UPD_GDRV_CLR 0x37 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* Broadsheet register interface defines */ 33*4882a593Smuzhiyun #define BS_REG_REV 0x00 34*4882a593Smuzhiyun #define BS_REG_PRC 0x02 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* Broadsheet pin interface specific defines */ 37*4882a593Smuzhiyun #define BS_CS 0x01 38*4882a593Smuzhiyun #define BS_DC 0x02 39*4882a593Smuzhiyun #define BS_WR 0x03 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* Broadsheet IO interface specific defines */ 42*4882a593Smuzhiyun #define BS_MMIO_CMD 0x01 43*4882a593Smuzhiyun #define BS_MMIO_DATA 0x02 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* struct used by broadsheet. board specific stuff comes from *board */ 46*4882a593Smuzhiyun struct broadsheetfb_par { 47*4882a593Smuzhiyun struct fb_info *info; 48*4882a593Smuzhiyun struct broadsheet_board *board; 49*4882a593Smuzhiyun void (*write_reg)(struct broadsheetfb_par *, u16 reg, u16 val); 50*4882a593Smuzhiyun u16 (*read_reg)(struct broadsheetfb_par *, u16 reg); 51*4882a593Smuzhiyun wait_queue_head_t waitq; 52*4882a593Smuzhiyun int panel_index; 53*4882a593Smuzhiyun struct mutex io_lock; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* board specific routines */ 57*4882a593Smuzhiyun struct broadsheet_board { 58*4882a593Smuzhiyun struct module *owner; 59*4882a593Smuzhiyun int (*init)(struct broadsheetfb_par *); 60*4882a593Smuzhiyun int (*wait_for_rdy)(struct broadsheetfb_par *); 61*4882a593Smuzhiyun void (*cleanup)(struct broadsheetfb_par *); 62*4882a593Smuzhiyun int (*get_panel_type)(void); 63*4882a593Smuzhiyun int (*setup_irq)(struct fb_info *); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* Functions for boards that use GPIO */ 66*4882a593Smuzhiyun void (*set_ctl)(struct broadsheetfb_par *, unsigned char, u8); 67*4882a593Smuzhiyun void (*set_hdb)(struct broadsheetfb_par *, u16); 68*4882a593Smuzhiyun u16 (*get_hdb)(struct broadsheetfb_par *); 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun /* Functions for boards that have specialized MMIO */ 71*4882a593Smuzhiyun void (*mmio_write)(struct broadsheetfb_par *, int type, u16); 72*4882a593Smuzhiyun u16 (*mmio_read)(struct broadsheetfb_par *); 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun #endif 75