Skip to content

Commit

Permalink
[media] rc: remove ir-common module
Browse files Browse the repository at this point in the history
Something weird happened with commit 740069e6e043403199dbe2b42256722fb814f6ae.
Instead of dong the right thing, it got somehow corrupted and reverted the
rc changes.

Thanks to David Härdeman for pointing me about the problem.

This patch should be merged with 740069e6e04 before sending upstream.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed Dec 29, 2010
1 parent 1697c8d commit bce8d0f
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 356 deletions.
5 changes: 0 additions & 5 deletions drivers/media/rc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@ menuconfig IR_CORE
if you don't need IR, as otherwise, you may not be able to
compile the driver for your adapter.

config IR_LEGACY
tristate
depends on IR_CORE
default IR_CORE

if IR_CORE

config LIRC
Expand Down
2 changes: 0 additions & 2 deletions drivers/media/rc/Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
ir-common-objs := ir-functions.o
rc-core-objs := rc-main.o rc-raw.o

obj-y += keymaps/

obj-$(CONFIG_IR_CORE) += rc-core.o
obj-$(CONFIG_IR_LEGACY) += ir-common.o
obj-$(CONFIG_LIRC) += lirc_dev.o
obj-$(CONFIG_IR_NEC_DECODER) += ir-nec-decoder.o
obj-$(CONFIG_IR_RC5_DECODER) += ir-rc5-decoder.o
Expand Down
120 changes: 0 additions & 120 deletions drivers/media/rc/ir-functions.c

This file was deleted.

2 changes: 1 addition & 1 deletion drivers/media/video/bt8xx/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ config VIDEO_BT848
select I2C_ALGOBIT
select VIDEO_BTCX
select VIDEOBUF_DMA_SG
depends on IR_LEGACY
depends on IR_CORE
select VIDEO_TUNER
select VIDEO_TVEEPROM
select VIDEO_MSP3400 if VIDEO_HELPER_CHIPS_AUTO
Expand Down
105 changes: 99 additions & 6 deletions drivers/media/video/bt8xx/bttv-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,100 @@ static void bttv_input_timer(unsigned long data)
mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
}

/* ---------------------------------------------------------------*/
/*
* FIXME: Nebula digi uses the legacy way to decode RC5, instead of relying
* on the rc-core way. As we need to be sure that both IRQ transitions are
* properly triggered, Better to touch it only with this hardware for
* testing.
*/

/* decode raw bit pattern to RC5 code */
static u32 bttv_rc5_decode(unsigned int code)
{
unsigned int org_code = code;
unsigned int pair;
unsigned int rc5 = 0;
int i;

for (i = 0; i < 14; ++i) {
pair = code & 0x3;
code >>= 2;

rc5 <<= 1;
switch (pair) {
case 0:
case 2:
break;
case 1:
rc5 |= 1;
break;
case 3:
dprintk(KERN_INFO DEVNAME ":rc5_decode(%x) bad code\n",
org_code);
return 0;
}
}
dprintk(KERN_INFO DEVNAME ":"
"code=%x, rc5=%x, start=%x, toggle=%x, address=%x, "
"instr=%x\n", rc5, org_code, RC5_START(rc5),
RC5_TOGGLE(rc5), RC5_ADDR(rc5), RC5_INSTR(rc5));
return rc5;
}

void bttv_rc5_timer_end(unsigned long data)
{
struct card_ir *ir = (struct card_ir *)data;
struct timeval tv;
unsigned long current_jiffies;
u32 gap;
u32 rc5 = 0;

/* get time */
current_jiffies = jiffies;
do_gettimeofday(&tv);

/* avoid overflow with gap >1s */
if (tv.tv_sec - ir->base_time.tv_sec > 1) {
gap = 200000;
} else {
gap = 1000000 * (tv.tv_sec - ir->base_time.tv_sec) +
tv.tv_usec - ir->base_time.tv_usec;
}

/* signal we're ready to start a new code */
ir->active = 0;

/* Allow some timer jitter (RC5 is ~24ms anyway so this is ok) */
if (gap < 28000) {
dprintk(KERN_INFO DEVNAME ": spurious timer_end\n");
return;
}

if (ir->last_bit < 20) {
/* ignore spurious codes (caused by light/other remotes) */
dprintk(KERN_INFO DEVNAME ": short code: %x\n", ir->code);
} else {
ir->code = (ir->code << ir->shift_by) | 1;
rc5 = bttv_rc5_decode(ir->code);

/* two start bits? */
if (RC5_START(rc5) != ir->start) {
printk(KERN_INFO DEVNAME ":"
" rc5 start bits invalid: %u\n", RC5_START(rc5));

/* right address? */
} else if (RC5_ADDR(rc5) == ir->addr) {
u32 toggle = RC5_TOGGLE(rc5);
u32 instr = RC5_INSTR(rc5);

/* Good code */
ir_keydown(ir->dev, instr, toggle);
dprintk(KERN_INFO DEVNAME ":"
" instruction %x, toggle %x\n",
instr, toggle);
}
}
}

static int bttv_rc5_irq(struct bttv *btv)
{
Expand Down Expand Up @@ -206,7 +299,7 @@ static void bttv_ir_start(struct bttv *btv, struct card_ir *ir)
} else if (ir->rc5_gpio) {
/* set timer_end for code completion */
init_timer(&ir->timer_end);
ir->timer_end.function = ir_rc5_timer_end;
ir->timer_end.function = bttv_rc5_timer_end;
ir->timer_end.data = (unsigned long)ir;
ir->shift_by = 1;
ir->start = 3;
Expand Down Expand Up @@ -283,10 +376,10 @@ void __devinit init_bttv_i2c_ir(struct bttv *btv)
default:
/*
* The external IR receiver is at i2c address 0x34 (0x35 for
* reads). Future Hauppauge cards will have an internal
* receiver at 0x30 (0x31 for reads). In theory, both can be
* fitted, and Hauppauge suggest an external overrides an
* internal.
* reads). Future Hauppauge cards will have an internal
* receiver at 0x30 (0x31 for reads). In theory, both can be
* fitted, and Hauppauge suggest an external overrides an
* internal.
* That's why we probe 0x1a (~0x34) first. CB
*/

Expand Down
2 changes: 1 addition & 1 deletion drivers/media/video/saa7134/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ config VIDEO_SAA7134_ALSA

config VIDEO_SAA7134_RC
bool "Philips SAA7134 Remote Controller support"
depends on IR_LEGACY
depends on IR_CORE
depends on VIDEO_SAA7134
default y
---help---
Expand Down
Loading

0 comments on commit bce8d0f

Please sign in to comment.