[media] cx23885: implement tuner_bus parameter for cx23885_board structure
There is two external I2C buses in cx23885 chip. Currently, analog tuners supported for second I2C bus only In NetUP Dual DVB-T/C CI RF card tuners connected to first bus So, in order to support analog tuners sitting on first bus we need modifications. Signed-off-by: Igor M. Liplianin <liplianin@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
78db854757
commit
557f48d572
|
@ -94,6 +94,7 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.portc = CX23885_MPEG_DVB,
|
||||
.tuner_type = TUNER_PHILIPS_TDA8290,
|
||||
.tuner_addr = 0x42, /* 0x84 >> 1 */
|
||||
.tuner_bus = 1,
|
||||
.input = {{
|
||||
.type = CX23885_VMUX_TELEVISION,
|
||||
.vmux = CX25840_VIN7_CH3 |
|
||||
|
@ -216,6 +217,7 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.name = "Mygica X8506 DMB-TH",
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_bus = 1,
|
||||
.porta = CX23885_ANALOG_VIDEO,
|
||||
.portb = CX23885_MPEG_DVB,
|
||||
.input = {
|
||||
|
@ -245,6 +247,7 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.name = "Magic-Pro ProHDTV Extreme 2",
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_bus = 1,
|
||||
.porta = CX23885_ANALOG_VIDEO,
|
||||
.portb = CX23885_MPEG_DVB,
|
||||
.input = {
|
||||
|
@ -293,6 +296,7 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.porta = CX23885_ANALOG_VIDEO,
|
||||
.tuner_type = TUNER_XC2028,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_bus = 1,
|
||||
.input = {{
|
||||
.type = CX23885_VMUX_TELEVISION,
|
||||
.vmux = CX25840_VIN2_CH1 |
|
||||
|
@ -317,6 +321,7 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.name = "GoTView X5 3D Hybrid",
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x64,
|
||||
.tuner_bus = 1,
|
||||
.porta = CX23885_ANALOG_VIDEO,
|
||||
.portb = CX23885_MPEG_DVB,
|
||||
.input = {{
|
||||
|
|
|
@ -970,11 +970,12 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
/* Assume some sensible defaults */
|
||||
dev->tuner_type = cx23885_boards[dev->board].tuner_type;
|
||||
dev->tuner_addr = cx23885_boards[dev->board].tuner_addr;
|
||||
dev->tuner_bus = cx23885_boards[dev->board].tuner_bus;
|
||||
dev->radio_type = cx23885_boards[dev->board].radio_type;
|
||||
dev->radio_addr = cx23885_boards[dev->board].radio_addr;
|
||||
|
||||
dprintk(1, "%s() tuner_type = 0x%x tuner_addr = 0x%x\n",
|
||||
__func__, dev->tuner_type, dev->tuner_addr);
|
||||
dprintk(1, "%s() tuner_type = 0x%x tuner_addr = 0x%x tuner_bus = %d\n",
|
||||
__func__, dev->tuner_type, dev->tuner_addr, dev->tuner_bus);
|
||||
dprintk(1, "%s() radio_type = 0x%x radio_addr = 0x%x\n",
|
||||
__func__, dev->radio_type, dev->radio_addr);
|
||||
|
||||
|
|
|
@ -1468,16 +1468,17 @@ int cx23885_video_register(struct cx23885_dev *dev)
|
|||
|
||||
cx23885_irq_add_enable(dev, 0x01);
|
||||
|
||||
if (TUNER_ABSENT != dev->tuner_type) {
|
||||
if ((TUNER_ABSENT != dev->tuner_type) &&
|
||||
((dev->tuner_bus == 0) || (dev->tuner_bus == 1))) {
|
||||
struct v4l2_subdev *sd = NULL;
|
||||
|
||||
if (dev->tuner_addr)
|
||||
sd = v4l2_i2c_new_subdev(&dev->v4l2_dev,
|
||||
&dev->i2c_bus[1].i2c_adap,
|
||||
&dev->i2c_bus[dev->tuner_bus].i2c_adap,
|
||||
"tuner", dev->tuner_addr, NULL);
|
||||
else
|
||||
sd = v4l2_i2c_new_subdev(&dev->v4l2_dev,
|
||||
&dev->i2c_bus[1].i2c_adap,
|
||||
&dev->i2c_bus[dev->tuner_bus].i2c_adap,
|
||||
"tuner", 0, v4l2_i2c_tuner_addrs(ADDRS_TV));
|
||||
if (sd) {
|
||||
struct tuner_setup tun_setup;
|
||||
|
|
|
@ -209,6 +209,7 @@ struct cx23885_board {
|
|||
unsigned int radio_type;
|
||||
unsigned char tuner_addr;
|
||||
unsigned char radio_addr;
|
||||
unsigned int tuner_bus;
|
||||
|
||||
/* Vendors can and do run the PCIe bridge at different
|
||||
* clock rates, driven physically by crystals on the PCBs.
|
||||
|
@ -364,6 +365,7 @@ struct cx23885_dev {
|
|||
v4l2_std_id tvnorm;
|
||||
unsigned int tuner_type;
|
||||
unsigned char tuner_addr;
|
||||
unsigned int tuner_bus;
|
||||
unsigned int radio_type;
|
||||
unsigned char radio_addr;
|
||||
unsigned int has_radio;
|
||||
|
|
Loading…
Reference in New Issue