2005-11-08 21:37:32 -08:00
# ifndef _IR_I2C
# define _IR_I2C
2010-11-17 13:28:38 -03:00
# include <media/rc-core.h>
2005-11-08 21:37:32 -08:00
2010-09-23 01:23:10 -03:00
# define DEFAULT_POLLING_INTERVAL 100 /* ms */
2005-11-08 21:37:32 -08:00
struct IR_i2c ;
struct IR_i2c {
2010-04-02 20:01:00 -03:00
char * ir_codes ;
2009-05-13 16:48:50 -03:00
struct i2c_client * c ;
2010-10-29 16:08:23 -03:00
struct rc_dev * rc ;
2010-10-29 16:08:07 -03:00
2005-11-08 21:37:32 -08:00
/* Used to avoid fast repeating */
unsigned char old ;
2010-09-23 01:23:10 -03:00
u32 polling_interval ; /* in ms */
2009-03-07 07:43:43 -03:00
struct delayed_work work ;
2009-05-13 16:48:07 -03:00
char name [ 32 ] ;
2005-11-08 21:37:32 -08:00
char phys [ 32 ] ;
int ( * get_key ) ( struct IR_i2c * , u32 * , u32 * ) ;
} ;
2009-05-13 16:49:32 -03:00
2009-07-28 11:44:05 -03:00
enum ir_kbd_get_key_fn {
IR_KBD_GET_KEY_CUSTOM = 0 ,
IR_KBD_GET_KEY_PIXELVIEW ,
IR_KBD_GET_KEY_HAUP ,
IR_KBD_GET_KEY_KNC1 ,
IR_KBD_GET_KEY_FUSIONHDTV ,
IR_KBD_GET_KEY_HAUP_XVR ,
IR_KBD_GET_KEY_AVERMEDIA_CARDBUS ,
} ;
2009-05-13 16:49:32 -03:00
/* Can be passed when instantiating an ir_video i2c device */
struct IR_i2c_init_data {
2010-04-02 20:01:00 -03:00
char * ir_codes ;
2010-09-23 01:23:10 -03:00
const char * name ;
u64 type ; /* IR_TYPE_RC5, etc */
u32 polling_interval ; /* 0 means DEFAULT_POLLING_INTERVAL */
2010-10-29 16:08:07 -03:00
2009-07-28 11:44:05 -03:00
/*
* Specify either a function pointer or a value indicating one of
* ir_kbd_i2c ' s internal get_key functions
*/
2009-05-13 16:49:32 -03:00
int ( * get_key ) ( struct IR_i2c * , u32 * , u32 * ) ;
2009-07-28 11:44:05 -03:00
enum ir_kbd_get_key_fn internal_get_key_func ;
2010-11-12 09:02:40 -03:00
struct rc_dev * rc_dev ;
2009-05-13 16:49:32 -03:00
} ;
2005-11-08 21:37:32 -08:00
# endif