1d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab#ifndef _IR_I2C 2d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab#define _IR_I2C 3d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab 46bda96447cef24fbf97a798b1ea664224d5fdc25Mauro Carvalho Chehab#include <media/rc-core.h> 5d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab 6c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab#define DEFAULT_POLLING_INTERVAL 100 /* ms */ 7c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab 8d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehabstruct IR_i2c; 9d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab 10d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehabstruct IR_i2c { 1102858eedcb78a664215b918d98cdb753ce432ce6Mauro Carvalho Chehab char *ir_codes; 12c668f32dca105d876e51862a003a302fa61e4ae4Jean Delvare struct i2c_client *c; 13d8b4b5822f51e2142b731b42c81e3f03eec475b2David Härdeman struct rc_dev *rc; 1462c6503125389763a74911408d984c5dd09eeb97David Härdeman 15d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab /* Used to avoid fast repeating */ 16d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab unsigned char old; 17d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab 18c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab u32 polling_interval; /* in ms */ 19c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab 20c1089bdc07f06b90f0bc50d0789c2a4833097df7Jean Delvare struct delayed_work work; 211df8e9861cf9fac5737ccb61c7f7fefa77711d40Jean Delvare char name[32]; 22d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab char phys[32]; 234dd9bb91bb5dc44e3f8c23c60a0ba432e50d7488David Härdeman int (*get_key)(struct IR_i2c *ir, enum rc_type *protocol, 244dd9bb91bb5dc44e3f8c23c60a0ba432e50d7488David Härdeman u32 *scancode, u8 *toggle); 25d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab}; 264d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare 271b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Wallsenum ir_kbd_get_key_fn { 281b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_CUSTOM = 0, 291b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_PIXELVIEW, 301b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_HAUP, 311b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_KNC1, 321b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_FUSIONHDTV, 331b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_HAUP_XVR, 341b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls IR_KBD_GET_KEY_AVERMEDIA_CARDBUS, 351b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls}; 361b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls 374d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare/* Can be passed when instantiating an ir_video i2c device */ 384d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvarestruct IR_i2c_init_data { 3902858eedcb78a664215b918d98cdb753ce432ce6Mauro Carvalho Chehab char *ir_codes; 40c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab const char *name; 41c003ab1bedf028db15b0185b683d5c387204e8f5David Härdeman u64 type; /* RC_BIT_RC5, etc */ 42c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab u32 polling_interval; /* 0 means DEFAULT_POLLING_INTERVAL */ 4362c6503125389763a74911408d984c5dd09eeb97David Härdeman 441b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls /* 451b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls * Specify either a function pointer or a value indicating one of 461b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls * ir_kbd_i2c's internal get_key functions 471b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls */ 484dd9bb91bb5dc44e3f8c23c60a0ba432e50d7488David Härdeman int (*get_key)(struct IR_i2c *ir, enum rc_type *protocol, 494dd9bb91bb5dc44e3f8c23c60a0ba432e50d7488David Härdeman u32 *scancode, u8 *toggle); 501b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls enum ir_kbd_get_key_fn internal_get_key_func; 512eb258327722de3ed4d84ce1b9add2bad21a0ec4Mauro Carvalho Chehab 522eb258327722de3ed4d84ce1b9add2bad21a0ec4Mauro Carvalho Chehab struct rc_dev *rc_dev; 534d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare}; 54d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab#endif 55