2012-04-28 14:20:00 +04:00
/*
* Definitions for AUO - K190X framebuffer drivers
*
* Copyright ( C ) 2012 Heiko Stuebner < heiko @ sntech . de >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef _LINUX_VIDEO_AUO_K190XFB_H_
# define _LINUX_VIDEO_AUO_K190XFB_H_
/* Controller standby command needs a param */
# define AUOK190X_QUIRK_STANDBYPARAM (1 << 0)
/* Controller standby is completely broken */
# define AUOK190X_QUIRK_STANDBYBROKEN (1 << 1)
/*
* Resolutions for the displays
*/
# define AUOK190X_RESOLUTION_800_600 0
# define AUOK190X_RESOLUTION_1024_768 1
2013-03-22 18:17:32 +04:00
# define AUOK190X_RESOLUTION_600_800 4
# define AUOK190X_RESOLUTION_768_1024 5
2012-04-28 14:20:00 +04:00
/*
* struct used by auok190x . board specific stuff comes from * board
*/
struct auok190xfb_par {
struct fb_info * info ;
struct auok190x_board * board ;
struct regulator * regulator ;
struct mutex io_lock ;
struct delayed_work work ;
wait_queue_head_t waitq ;
int resolution ;
int rotation ;
int consecutive_threshold ;
int update_cnt ;
/* panel and controller informations */
int epd_type ;
int panel_size_int ;
int panel_size_float ;
int panel_model ;
int tcon_version ;
int lut_version ;
/* individual controller callbacks */
void ( * update_partial ) ( struct auok190xfb_par * par , u16 y1 , u16 y2 ) ;
void ( * update_all ) ( struct auok190xfb_par * par ) ;
bool ( * need_refresh ) ( struct auok190xfb_par * par ) ;
void ( * init ) ( struct auok190xfb_par * par ) ;
void ( * recover ) ( struct auok190xfb_par * par ) ;
int update_mode ; /* mode to use for updates */
int last_mode ; /* update mode last used */
int flash ;
/* power management */
int autosuspend_delay ;
bool standby ;
bool manual_standby ;
} ;
/**
* Board specific platform - data
* @ init : initialize the controller interface
* @ cleanup : cleanup the controller interface
* @ wait_for_rdy : wait until the controller is not busy anymore
* @ set_ctl : change an interface control
* @ set_hdb : write a value to the data register
* @ get_hdb : read a value from the data register
* @ setup_irq : method to setup the irq handling on the busy gpio
* @ gpio_nsleep : sleep gpio
* @ gpio_nrst : reset gpio
* @ gpio_nbusy : busy gpio
* @ resolution : one of the AUOK190X_RESOLUTION constants
* @ rotation : rotation of the framebuffer
* @ quirks : controller quirks to honor
* @ fps : frames per second for defio
*/
struct auok190x_board {
int ( * init ) ( struct auok190xfb_par * ) ;
void ( * cleanup ) ( struct auok190xfb_par * ) ;
int ( * wait_for_rdy ) ( struct auok190xfb_par * ) ;
void ( * set_ctl ) ( struct auok190xfb_par * , unsigned char , u8 ) ;
void ( * set_hdb ) ( struct auok190xfb_par * , u16 ) ;
u16 ( * get_hdb ) ( struct auok190xfb_par * ) ;
int ( * setup_irq ) ( struct fb_info * ) ;
int gpio_nsleep ;
int gpio_nrst ;
int gpio_nbusy ;
int resolution ;
int quirks ;
int fps ;
} ;
# endif