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