162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * broadsheetfb.h - definitions for the broadsheet framebuffer driver 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2008 by Jaya Kumar 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 762306a36Sopenharmony_ci * License. See the file COPYING in the main directory of this archive for 862306a36Sopenharmony_ci * more details. 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#ifndef _LINUX_BROADSHEETFB_H_ 1362306a36Sopenharmony_ci#define _LINUX_BROADSHEETFB_H_ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* Broadsheet command defines */ 1662306a36Sopenharmony_ci#define BS_CMD_INIT_SYS_RUN 0x06 1762306a36Sopenharmony_ci#define BS_CMD_INIT_DSPE_CFG 0x09 1862306a36Sopenharmony_ci#define BS_CMD_INIT_DSPE_TMG 0x0A 1962306a36Sopenharmony_ci#define BS_CMD_INIT_ROTMODE 0x0B 2062306a36Sopenharmony_ci#define BS_CMD_RD_REG 0x10 2162306a36Sopenharmony_ci#define BS_CMD_WR_REG 0x11 2262306a36Sopenharmony_ci#define BS_CMD_LD_IMG 0x20 2362306a36Sopenharmony_ci#define BS_CMD_LD_IMG_AREA 0x22 2462306a36Sopenharmony_ci#define BS_CMD_LD_IMG_END 0x23 2562306a36Sopenharmony_ci#define BS_CMD_WAIT_DSPE_TRG 0x28 2662306a36Sopenharmony_ci#define BS_CMD_WAIT_DSPE_FREND 0x29 2762306a36Sopenharmony_ci#define BS_CMD_RD_WFM_INFO 0x30 2862306a36Sopenharmony_ci#define BS_CMD_UPD_INIT 0x32 2962306a36Sopenharmony_ci#define BS_CMD_UPD_FULL 0x33 3062306a36Sopenharmony_ci#define BS_CMD_UPD_GDRV_CLR 0x37 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci/* Broadsheet register interface defines */ 3362306a36Sopenharmony_ci#define BS_REG_REV 0x00 3462306a36Sopenharmony_ci#define BS_REG_PRC 0x02 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* Broadsheet pin interface specific defines */ 3762306a36Sopenharmony_ci#define BS_CS 0x01 3862306a36Sopenharmony_ci#define BS_DC 0x02 3962306a36Sopenharmony_ci#define BS_WR 0x03 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/* Broadsheet IO interface specific defines */ 4262306a36Sopenharmony_ci#define BS_MMIO_CMD 0x01 4362306a36Sopenharmony_ci#define BS_MMIO_DATA 0x02 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci/* struct used by broadsheet. board specific stuff comes from *board */ 4662306a36Sopenharmony_cistruct broadsheetfb_par { 4762306a36Sopenharmony_ci struct fb_info *info; 4862306a36Sopenharmony_ci struct broadsheet_board *board; 4962306a36Sopenharmony_ci void (*write_reg)(struct broadsheetfb_par *, u16 reg, u16 val); 5062306a36Sopenharmony_ci u16 (*read_reg)(struct broadsheetfb_par *, u16 reg); 5162306a36Sopenharmony_ci wait_queue_head_t waitq; 5262306a36Sopenharmony_ci int panel_index; 5362306a36Sopenharmony_ci struct mutex io_lock; 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci/* board specific routines */ 5762306a36Sopenharmony_cistruct broadsheet_board { 5862306a36Sopenharmony_ci struct module *owner; 5962306a36Sopenharmony_ci int (*init)(struct broadsheetfb_par *); 6062306a36Sopenharmony_ci int (*wait_for_rdy)(struct broadsheetfb_par *); 6162306a36Sopenharmony_ci void (*cleanup)(struct broadsheetfb_par *); 6262306a36Sopenharmony_ci int (*get_panel_type)(void); 6362306a36Sopenharmony_ci int (*setup_irq)(struct fb_info *); 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci /* Functions for boards that use GPIO */ 6662306a36Sopenharmony_ci void (*set_ctl)(struct broadsheetfb_par *, unsigned char, u8); 6762306a36Sopenharmony_ci void (*set_hdb)(struct broadsheetfb_par *, u16); 6862306a36Sopenharmony_ci u16 (*get_hdb)(struct broadsheetfb_par *); 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci /* Functions for boards that have specialized MMIO */ 7162306a36Sopenharmony_ci void (*mmio_write)(struct broadsheetfb_par *, int type, u16); 7262306a36Sopenharmony_ci u16 (*mmio_read)(struct broadsheetfb_par *); 7362306a36Sopenharmony_ci}; 7462306a36Sopenharmony_ci#endif 75