Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 219160
b: refs/heads/master
c: c0c4682
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Oct 21, 2010
1 parent eef2a3c commit 374a6f3
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 80 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8403472f19fea7e7cec7899e998f38b899e59604
refs/heads/master: c0c46826274a4da5d9e312d7cfd4ca0806c0a358
38 changes: 0 additions & 38 deletions trunk/drivers/media/video/bt8xx/bttv-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -390,41 +390,3 @@ int __devinit init_bttv_i2c(struct bttv *btv)

return btv->i2c_rc;
}

/* Instantiate the I2C IR receiver device, if present */
void __devinit init_bttv_i2c_ir(struct bttv *btv)
{
if (0 == btv->i2c_rc) {
struct i2c_board_info info;
/* 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.
That's why we probe 0x1a (~0x34) first. CB
*/
const unsigned short addr_list[] = {
0x1a, 0x18, 0x4b, 0x64, 0x30, 0x71,
I2C_CLIENT_END
};

memset(&info, 0, sizeof(struct i2c_board_info));
strlcpy(info.type, "ir_video", I2C_NAME_SIZE);
i2c_new_probed_device(&btv->c.i2c_adap, &info, addr_list, NULL);
}
}

int __devexit fini_bttv_i2c(struct bttv *btv)
{
if (0 != btv->i2c_rc)
return 0;

return i2c_del_adapter(&btv->c.i2c_adap);
}

/*
* Local variables:
* c-basic-offset: 8
* End:
*/
84 changes: 77 additions & 7 deletions trunk/drivers/media/video/bt8xx/bttv-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,83 @@ static void bttv_ir_stop(struct bttv *btv)
}
}

/*
* Get_key functions used by I2C remotes
*/

static int get_key_pv951(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
{
unsigned char b;

/* poll IR chip */
if (1 != i2c_master_recv(ir->c, &b, 1)) {
dprintk(KERN_INFO DEVNAME ": read error\n");
return -EIO;
}

/* ignore 0xaa */
if (b==0xaa)
return 0;
dprintk(KERN_INFO DEVNAME ": key %02x\n", b);

*ir_key = b;
*ir_raw = b;
return 1;
}

/* Instantiate the I2C IR receiver device, if present */
void __devinit init_bttv_i2c_ir(struct bttv *btv)
{
const unsigned short addr_list[] = {
0x1a, 0x18, 0x64, 0x30, 0x71,
I2C_CLIENT_END
};
struct i2c_board_info info;

if (0 != btv->i2c_rc)
return;

memset(&info, 0, sizeof(struct i2c_board_info));
memset(&btv->init_data, 0, sizeof(btv->init_data));
strlcpy(info.type, "ir_video", I2C_NAME_SIZE);

switch (btv->c.type) {
case BTTV_BOARD_PV951:
btv->init_data.name = "PV951";
btv->init_data.get_key = get_key_pv951;
btv->init_data.ir_codes = RC_MAP_PV951;
btv->init_data.type = IR_TYPE_OTHER;
info.addr = 0x4b;
break;
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.
* That's why we probe 0x1a (~0x34) first. CB
*/

i2c_new_probed_device(&btv->c.i2c_adap, &info, addr_list, NULL);
return;
}

if (btv->init_data.name)
info.platform_data = &btv->init_data;
i2c_new_device(&btv->c.i2c_adap, &info);

return;
}

int __devexit fini_bttv_i2c(struct bttv *btv)
{
if (0 != btv->i2c_rc)
return 0;

return i2c_del_adapter(&btv->c.i2c_adap);
}

int bttv_input_init(struct bttv *btv)
{
struct card_ir *ir;
Expand Down Expand Up @@ -420,10 +497,3 @@ void bttv_input_fini(struct bttv *btv)
kfree(btv->remote);
btv->remote = NULL;
}


/*
* Local variables:
* c-basic-offset: 8
* End:
*/
1 change: 0 additions & 1 deletion trunk/drivers/media/video/bt8xx/bttv.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#include <linux/i2c.h>
#include <media/v4l2-device.h>
#include <media/ir-common.h>
#include <media/ir-kbd-i2c.h>
#include <media/i2c-addr.h>
#include <media/tuner.h>

Expand Down
13 changes: 10 additions & 3 deletions trunk/drivers/media/video/bt8xx/bttvp.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
#include <media/videobuf-dma-sg.h>
#include <media/tveeprom.h>
#include <media/ir-common.h>

#include <media/ir-kbd-i2c.h>

#include "bt848.h"
#include "bttv.h"
Expand Down Expand Up @@ -270,6 +270,12 @@ int bttv_sub_del_devices(struct bttv_core *core);

extern int no_overlay;

/* ---------------------------------------------------------- */
/* bttv-input.c */

extern void init_bttv_i2c_ir(struct bttv *btv);
extern int fini_bttv_i2c(struct bttv *btv);

/* ---------------------------------------------------------- */
/* bttv-driver.c */

Expand All @@ -279,8 +285,6 @@ extern unsigned int bttv_debug;
extern unsigned int bttv_gpio;
extern void bttv_gpio_tracking(struct bttv *btv, char *comment);
extern int init_bttv_i2c(struct bttv *btv);
extern void init_bttv_i2c_ir(struct bttv *btv);
extern int fini_bttv_i2c(struct bttv *btv);

#define bttv_printk if (bttv_verbose) printk
#define dprintk if (bttv_debug >= 1) printk
Expand Down Expand Up @@ -366,6 +370,9 @@ struct bttv {
int has_remote;
struct card_ir *remote;

/* I2C remote data */
struct IR_i2c_init_data init_data;

/* locking */
spinlock_t s_lock;
struct mutex lock;
Expand Down
29 changes: 0 additions & 29 deletions trunk/drivers/media/video/ir-kbd-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,26 +146,6 @@ static int get_key_pixelview(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
return 1;
}

static int get_key_pv951(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
{
unsigned char b;

/* poll IR chip */
if (1 != i2c_master_recv(ir->c, &b, 1)) {
dprintk(1,"read error\n");
return -EIO;
}

/* ignore 0xaa */
if (b==0xaa)
return 0;
dprintk(2,"key %02x\n", b);

*ir_key = b;
*ir_raw = b;
return 1;
}

static int get_key_fusionhdtv(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
{
unsigned char buf[4];
Expand Down Expand Up @@ -321,12 +301,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
ir_type = IR_TYPE_OTHER;
ir_codes = RC_MAP_EMPTY;
break;
case 0x4b:
name = "PV951";
ir->get_key = get_key_pv951;
ir_type = IR_TYPE_OTHER;
ir_codes = RC_MAP_PV951;
break;
case 0x18:
case 0x1f:
case 0x1a:
Expand Down Expand Up @@ -396,9 +370,6 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
case IR_KBD_GET_KEY_PIXELVIEW:
ir->get_key = get_key_pixelview;
break;
case IR_KBD_GET_KEY_PV951:
ir->get_key = get_key_pv951;
break;
case IR_KBD_GET_KEY_HAUP:
ir->get_key = get_key_haup;
break;
Expand Down
1 change: 0 additions & 1 deletion trunk/include/media/ir-kbd-i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ struct IR_i2c {
enum ir_kbd_get_key_fn {
IR_KBD_GET_KEY_CUSTOM = 0,
IR_KBD_GET_KEY_PIXELVIEW,
IR_KBD_GET_KEY_PV951,
IR_KBD_GET_KEY_HAUP,
IR_KBD_GET_KEY_KNC1,
IR_KBD_GET_KEY_FUSIONHDTV,
Expand Down

0 comments on commit 374a6f3

Please sign in to comment.