1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * metronomefb.h - definitions for the metronome 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_METRONOMEFB_H_ 13*4882a593Smuzhiyun #define _LINUX_METRONOMEFB_H_ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* command structure used by metronome controller */ 16*4882a593Smuzhiyun struct metromem_cmd { 17*4882a593Smuzhiyun u16 opcode; 18*4882a593Smuzhiyun u16 args[((64-2)/2)]; 19*4882a593Smuzhiyun u16 csum; 20*4882a593Smuzhiyun }; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* struct used by metronome. board specific stuff comes from *board */ 23*4882a593Smuzhiyun struct metronomefb_par { 24*4882a593Smuzhiyun struct metromem_cmd *metromem_cmd; 25*4882a593Smuzhiyun unsigned char *metromem_wfm; 26*4882a593Smuzhiyun unsigned char *metromem_img; 27*4882a593Smuzhiyun u16 *metromem_img_csum; 28*4882a593Smuzhiyun u16 *csum_table; 29*4882a593Smuzhiyun dma_addr_t metromem_dma; 30*4882a593Smuzhiyun struct fb_info *info; 31*4882a593Smuzhiyun struct metronome_board *board; 32*4882a593Smuzhiyun wait_queue_head_t waitq; 33*4882a593Smuzhiyun u8 frame_count; 34*4882a593Smuzhiyun int extra_size; 35*4882a593Smuzhiyun int dt; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun /* board specific routines and data */ 39*4882a593Smuzhiyun struct metronome_board { 40*4882a593Smuzhiyun struct module *owner; /* the platform device */ 41*4882a593Smuzhiyun void (*set_rst)(struct metronomefb_par *, int); 42*4882a593Smuzhiyun void (*set_stdby)(struct metronomefb_par *, int); 43*4882a593Smuzhiyun void (*cleanup)(struct metronomefb_par *); 44*4882a593Smuzhiyun int (*met_wait_event)(struct metronomefb_par *); 45*4882a593Smuzhiyun int (*met_wait_event_intr)(struct metronomefb_par *); 46*4882a593Smuzhiyun int (*setup_irq)(struct fb_info *); 47*4882a593Smuzhiyun int (*setup_fb)(struct metronomefb_par *); 48*4882a593Smuzhiyun int (*setup_io)(struct metronomefb_par *); 49*4882a593Smuzhiyun int (*get_panel_type)(void); 50*4882a593Smuzhiyun unsigned char *metromem; 51*4882a593Smuzhiyun int fw; 52*4882a593Smuzhiyun int fh; 53*4882a593Smuzhiyun int wfm_size; 54*4882a593Smuzhiyun struct fb_info *host_fbinfo; /* the host LCD controller's fbi */ 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #endif 58