|
@@ -133,10 +133,10 @@ void bttv_input_irq(struct bttv *btv)
|
|
|
ir_handle_key(btv);
|
|
|
}
|
|
|
|
|
|
-static void bttv_input_timer(unsigned long data)
|
|
|
+static void bttv_input_timer(struct timer_list *t)
|
|
|
{
|
|
|
- struct bttv *btv = (struct bttv*)data;
|
|
|
- struct bttv_ir *ir = btv->remote;
|
|
|
+ struct bttv_ir *ir = from_timer(ir, t, timer);
|
|
|
+ struct bttv *btv = ir->btv;
|
|
|
|
|
|
if (btv->c.type == BTTV_BOARD_ENLTV_FM_2)
|
|
|
ir_enltv_handle_key(btv);
|
|
@@ -189,9 +189,9 @@ static u32 bttv_rc5_decode(unsigned int code)
|
|
|
return rc5;
|
|
|
}
|
|
|
|
|
|
-static void bttv_rc5_timer_end(unsigned long data)
|
|
|
+static void bttv_rc5_timer_end(struct timer_list *t)
|
|
|
{
|
|
|
- struct bttv_ir *ir = (struct bttv_ir *)data;
|
|
|
+ struct bttv_ir *ir = from_timer(ir, t, timer);
|
|
|
ktime_t tv;
|
|
|
u32 gap, rc5, scancode;
|
|
|
u8 toggle, command, system;
|
|
@@ -296,15 +296,15 @@ static int bttv_rc5_irq(struct bttv *btv)
|
|
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
|
|
-static void bttv_ir_start(struct bttv *btv, struct bttv_ir *ir)
|
|
|
+static void bttv_ir_start(struct bttv_ir *ir)
|
|
|
{
|
|
|
if (ir->polling) {
|
|
|
- setup_timer(&ir->timer, bttv_input_timer, (unsigned long)btv);
|
|
|
+ timer_setup(&ir->timer, bttv_input_timer, 0);
|
|
|
ir->timer.expires = jiffies + msecs_to_jiffies(1000);
|
|
|
add_timer(&ir->timer);
|
|
|
} else if (ir->rc5_gpio) {
|
|
|
/* set timer_end for code completion */
|
|
|
- setup_timer(&ir->timer, bttv_rc5_timer_end, (unsigned long)ir);
|
|
|
+ timer_setup(&ir->timer, bttv_rc5_timer_end, 0);
|
|
|
ir->shift_by = 1;
|
|
|
ir->rc5_remote_gap = ir_rc5_remote_gap;
|
|
|
}
|
|
@@ -531,6 +531,7 @@ int bttv_input_init(struct bttv *btv)
|
|
|
|
|
|
/* init input device */
|
|
|
ir->dev = rc;
|
|
|
+ ir->btv = btv;
|
|
|
|
|
|
snprintf(ir->name, sizeof(ir->name), "bttv IR (card=%d)",
|
|
|
btv->c.type);
|
|
@@ -553,7 +554,7 @@ int bttv_input_init(struct bttv *btv)
|
|
|
rc->driver_name = MODULE_NAME;
|
|
|
|
|
|
btv->remote = ir;
|
|
|
- bttv_ir_start(btv, ir);
|
|
|
+ bttv_ir_start(ir);
|
|
|
|
|
|
/* all done */
|
|
|
err = rc_register_device(rc);
|