Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 174148
b: refs/heads/master
c: bfbde8e
h: refs/heads/master
v: v3
  • Loading branch information
Andy Walls authored and Mauro Carvalho Chehab committed Dec 5, 2009
1 parent c48e012 commit 4b9b3a3
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 28 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: f412d36a8c9f8e40e057b71e80d534ac388e903e
refs/heads/master: bfbde8ee56d4a19e2d36a5a24b6dbfd298298bf1
3 changes: 3 additions & 0 deletions trunk/drivers/media/video/ivtv/ivtv-driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,9 @@ static void ivtv_load_and_init_modules(struct ivtv *itv)
itv->hw_flags |= device;
}

/* probe for legacy IR controllers that aren't in card definitions */
ivtv_i2c_new_ir_legacy(itv);

if (itv->card->hw_all & IVTV_HW_CX25840)
itv->sd_video = ivtv_find_hw(itv, IVTV_HW_CX25840);
else if (itv->card->hw_all & IVTV_HW_SAA717X)
Expand Down
58 changes: 31 additions & 27 deletions trunk/drivers/media/video/ivtv/ivtv-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,36 @@ static const char * const hw_devicenames[] = {
"gpio",
};

/* Instantiate the IR receiver device using probing -- undesirable */
struct i2c_client *ivtv_i2c_new_ir_legacy(struct ivtv *itv)
{
struct i2c_board_info info;
/*
* The external IR receiver is at i2c address 0x34.
* The internal IR receiver is at i2c address 0x30.
*
* In theory, both can be fitted, and Hauppauge suggests an external
* overrides an internal. That's why we probe 0x1a (~0x34) first. CB
*
* Some of these addresses we probe may collide with other i2c address
* allocations, so this function must be called after all other i2c
* devices we care about are registered.
*/
const unsigned short addr_list[] = {
0x1a, /* Hauppauge IR external - collides with WM8739 */
0x18, /* Hauppauge IR internal */
0x71, /* Hauppauge IR (PVR150) */
0x64, /* Pixelview IR */
0x30, /* KNC ONE IR */
0x6b, /* Adaptec IR */
I2C_CLIENT_END
};

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

int ivtv_i2c_register(struct ivtv *itv, unsigned idx)
{
struct v4l2_subdev *sd;
Expand Down Expand Up @@ -579,7 +609,7 @@ static struct i2c_client ivtv_i2c_client_template = {
.name = "ivtv internal",
};

/* init + register i2c adapter + instantiate IR receiver */
/* init + register i2c adapter */
int init_ivtv_i2c(struct ivtv *itv)
{
int retval;
Expand Down Expand Up @@ -626,32 +656,6 @@ int init_ivtv_i2c(struct ivtv *itv)
else
retval = i2c_bit_add_bus(&itv->i2c_adap);

/* Instantiate the IR receiver device, if present */
if (retval == 0) {
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, /* Hauppauge IR external */
0x18, /* Hauppauge IR internal */
0x71, /* Hauppauge IR (PVR150) */
0x64, /* Pixelview IR */
0x30, /* KNC ONE IR */
0x6b, /* Adaptec IR */
I2C_CLIENT_END
};

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

return retval;
}

Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/video/ivtv/ivtv-i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#ifndef IVTV_I2C_H
#define IVTV_I2C_H

struct i2c_client *ivtv_i2c_new_ir_legacy(struct ivtv *itv);
int ivtv_i2c_register(struct ivtv *itv, unsigned idx);
struct v4l2_subdev *ivtv_find_hw(struct ivtv *itv, u32 hw);

Expand Down

0 comments on commit 4b9b3a3

Please sign in to comment.