ir-kbd-i2c.h revision 6bda96447cef24fbf97a798b1ea664224d5fdc25
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];
23d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab	int                    (*get_key)(struct IR_i2c*, u32*, u32*);
24d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab};
254d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare
261b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Wallsenum ir_kbd_get_key_fn {
271b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_CUSTOM = 0,
281b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_PIXELVIEW,
291b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_HAUP,
301b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_KNC1,
311b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_FUSIONHDTV,
321b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_HAUP_XVR,
331b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	IR_KBD_GET_KEY_AVERMEDIA_CARDBUS,
341b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls};
351b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls
364d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare/* Can be passed when instantiating an ir_video i2c device */
374d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvarestruct IR_i2c_init_data {
3802858eedcb78a664215b918d98cdb753ce432ce6Mauro Carvalho Chehab	char			*ir_codes;
39c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab	const char		*name;
40c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab	u64			type; /* IR_TYPE_RC5, etc */
41c72ba8e6ae7376d20e509a9a54a2dd45fb483fc2Mauro Carvalho Chehab	u32			polling_interval; /* 0 means DEFAULT_POLLING_INTERVAL */
4262c6503125389763a74911408d984c5dd09eeb97David Härdeman
431b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	/*
441b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	 * Specify either a function pointer or a value indicating one of
451b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	 * ir_kbd_i2c's internal get_key functions
461b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	 */
474d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare	int                    (*get_key)(struct IR_i2c*, u32*, u32*);
481b6e59e3f48eecdab97bdd1568422e22f7d2f4f5Andy Walls	enum ir_kbd_get_key_fn internal_get_key_func;
492eb258327722de3ed4d84ce1b9add2bad21a0ec4Mauro Carvalho Chehab
502eb258327722de3ed4d84ce1b9add2bad21a0ec4Mauro Carvalho Chehab	struct rc_dev		*rc_dev;
514d7a2d6721a6380d4ffc26d81d2c8232fd0d2dfcJean Delvare};
52d5e5265315770bda46c50ecaa64e2b9790f2064cMauro Carvalho Chehab#endif
53