Commit 71f49a8b authored by Sean Young's avatar Sean Young Committed by Mauro Carvalho Chehab

media: ttpci: use rc-core for the IR receiver

The IR protocol can now only be set via the rc protocols sysfs file rather
than via module parameters or a custom procfs file. So, it is no longer
necessary to periodically check for protocol changes.

The IR_RCMM protocol does not decode the Philips RC-MM protocol (12, 24 or
32 bit variants) or any protocol rc-core can encode, so this is marked
RC_PROTO_UNKNOWN.

Tested on Technotrend/Hauppauge WinTV Nexus-S rev2.1, which comes
with a small black hauppauge remote.
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent eb5005df
...@@ -218,7 +218,7 @@ static void recover_arm(struct av7110 *av7110) ...@@ -218,7 +218,7 @@ static void recover_arm(struct av7110 *av7110)
restart_feeds(av7110); restart_feeds(av7110);
#if IS_ENABLED(CONFIG_DVB_AV7110_IR) #if IS_ENABLED(CONFIG_DVB_AV7110_IR)
av7110_check_ir_config(av7110, true); av7110_set_ir_config(av7110);
#endif #endif
} }
...@@ -250,10 +250,6 @@ static int arm_thread(void *data) ...@@ -250,10 +250,6 @@ static int arm_thread(void *data)
if (!av7110->arm_ready) if (!av7110->arm_ready)
continue; continue;
#if IS_ENABLED(CONFIG_DVB_AV7110_IR)
av7110_check_ir_config(av7110, false);
#endif
if (mutex_lock_interruptible(&av7110->dcomlock)) if (mutex_lock_interruptible(&av7110->dcomlock))
break; break;
newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2); newloops = rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2);
...@@ -659,9 +655,11 @@ static void gpioirq(unsigned long cookie) ...@@ -659,9 +655,11 @@ static void gpioirq(unsigned long cookie)
return; return;
case DATA_IRCOMMAND: case DATA_IRCOMMAND:
if (av7110->ir.ir_handler) #if IS_ENABLED(CONFIG_DVB_AV7110_IR)
av7110->ir.ir_handler(av7110, av7110_ir_handler(av7110,
swahw32(irdebi(av7110, DEBINOSWAP, Reserved, 0, 4))); swahw32(irdebi(av7110, DEBINOSWAP, Reserved,
0, 4)));
#endif
iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2);
break; break;
......
...@@ -81,23 +81,11 @@ struct av7110; ...@@ -81,23 +81,11 @@ struct av7110;
/* infrared remote control */ /* infrared remote control */
struct infrared { struct infrared {
u16 key_map[256]; struct rc_dev *rcdev;
struct input_dev *input_dev;
char input_phys[32]; char input_phys[32];
struct timer_list keyup_timer;
struct tasklet_struct ir_tasklet;
void (*ir_handler)(struct av7110 *av7110, u32 ircom);
u32 ir_command;
u32 ir_config; u32 ir_config;
u32 device_mask;
u8 protocol;
u8 inversion;
u16 last_key;
u16 last_toggle;
bool keypressed;
}; };
/* place to store all the necessary device information */ /* place to store all the necessary device information */
struct av7110 { struct av7110 {
...@@ -304,9 +292,10 @@ struct av7110 { ...@@ -304,9 +292,10 @@ struct av7110 {
extern int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, extern int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid,
u16 subpid, u16 pcrpid); u16 subpid, u16 pcrpid);
extern int av7110_check_ir_config(struct av7110 *av7110, int force); void av7110_ir_handler(struct av7110 *av7110, u32 ircom);
extern int av7110_ir_init(struct av7110 *av7110); int av7110_set_ir_config(struct av7110 *av7110);
extern void av7110_ir_exit(struct av7110 *av7110); int av7110_ir_init(struct av7110 *av7110);
void av7110_ir_exit(struct av7110 *av7110);
/* msp3400 i2c subaddresses */ /* msp3400 i2c subaddresses */
#define MSP_WR_DEM 0x10 #define MSP_WR_DEM 0x10
......
This diff is collapsed.
...@@ -233,6 +233,7 @@ static struct rc_map_table rc5_hauppauge_new[] = { ...@@ -233,6 +233,7 @@ static struct rc_map_table rc5_hauppauge_new[] = {
* This one also uses RC-5 protocol * This one also uses RC-5 protocol
* Keycodes start with address = 0x00 * Keycodes start with address = 0x00
*/ */
{ 0x000f, KEY_TV },
{ 0x001f, KEY_TV }, { 0x001f, KEY_TV },
{ 0x0020, KEY_CHANNELUP }, { 0x0020, KEY_CHANNELUP },
{ 0x000c, KEY_RADIO }, { 0x000c, KEY_RADIO },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment