Commit 18b1ae7d authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

V4L/DVB (10506): saa7134: move tuner init code to saa7134-cards

On certain devices, before opening a tuner, we need to open the tuner
gate via i2c.

This patch just moves the tuner probing code to the same place where
such i2c commands are handled, to make easier to fix this trouble on
later patches.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 31063814
...@@ -6197,6 +6197,30 @@ int saa7134_board_init2(struct saa7134_dev *dev) ...@@ -6197,6 +6197,30 @@ int saa7134_board_init2(struct saa7134_dev *dev)
unsigned char buf; unsigned char buf;
int board; int board;
/* initialize hardware #2 */
if (TUNER_ABSENT != dev->tuner_type) {
int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
/* Note: radio tuner address is always filled in,
so we do not need to probe for a radio tuner device. */
if (dev->radio_type != UNSET)
v4l2_i2c_new_subdev(&dev->i2c_adap,
"tuner", "tuner", dev->radio_addr);
if (has_demod)
v4l2_i2c_new_probed_subdev(&dev->i2c_adap, "tuner",
"tuner", v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
if (dev->tuner_addr == ADDR_UNSET) {
enum v4l2_i2c_tuner_type type =
has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
v4l2_i2c_new_probed_subdev(&dev->i2c_adap, "tuner",
"tuner", v4l2_i2c_tuner_addrs(type));
} else {
v4l2_i2c_new_subdev(&dev->i2c_adap,
"tuner", "tuner", dev->tuner_addr);
}
}
switch (dev->board) { switch (dev->board) {
case SAA7134_BOARD_BMK_MPEX_NOTUNER: case SAA7134_BOARD_BMK_MPEX_NOTUNER:
case SAA7134_BOARD_BMK_MPEX_TUNER: case SAA7134_BOARD_BMK_MPEX_TUNER:
......
...@@ -973,30 +973,6 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev, ...@@ -973,30 +973,6 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev,
/* wait a bit, register i2c bus */ /* wait a bit, register i2c bus */
msleep(100); msleep(100);
saa7134_i2c_register(dev); saa7134_i2c_register(dev);
/* initialize hardware #2 */
if (TUNER_ABSENT != dev->tuner_type) {
int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
/* Note: radio tuner address is always filled in,
so we do not need to probe for a radio tuner device. */
if (dev->radio_type != UNSET)
v4l2_i2c_new_subdev(&dev->i2c_adap,
"tuner", "tuner", dev->radio_addr);
if (has_demod)
v4l2_i2c_new_probed_subdev(&dev->i2c_adap, "tuner",
"tuner", v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
if (dev->tuner_addr == ADDR_UNSET) {
enum v4l2_i2c_tuner_type type =
has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
v4l2_i2c_new_probed_subdev(&dev->i2c_adap, "tuner",
"tuner", v4l2_i2c_tuner_addrs(type));
} else {
v4l2_i2c_new_subdev(&dev->i2c_adap,
"tuner", "tuner", dev->tuner_addr);
}
}
saa7134_board_init2(dev); saa7134_board_init2(dev);
saa7134_hwinit2(dev); saa7134_hwinit2(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment