diff options
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-cards.c')
-rw-r--r-- | drivers/media/video/saa7134/saa7134-cards.c | 51 |
1 files changed, 12 insertions, 39 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index e7aa588c6c5..deb8fcf4aa4 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -5179,18 +5179,8 @@ struct saa7134_board saa7134_boards[] = { | |||
5179 | [SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG] = { | 5179 | [SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG] = { |
5180 | .name = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid", | 5180 | .name = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid", |
5181 | .audio_clock = 0x00187de7, | 5181 | .audio_clock = 0x00187de7, |
5182 | #if 0 | 5182 | .tuner_type = TUNER_PHILIPS_TDA8290, |
5183 | /* | ||
5184 | * FIXME: Analog mode doesn't work, if digital is enabled. The proper | ||
5185 | * fix is to use tda8290 driver, but Kworld seems to use an | ||
5186 | * unsupported version of tda8295. | ||
5187 | */ | ||
5188 | .tuner_type = TUNER_NXP_TDA18271, /* TUNER_PHILIPS_TDA8290 */ | ||
5189 | .tuner_addr = 0x60, | ||
5190 | #else | ||
5191 | .tuner_type = UNSET, | ||
5192 | .tuner_addr = ADDR_UNSET, | 5183 | .tuner_addr = ADDR_UNSET, |
5193 | #endif | ||
5194 | .radio_type = UNSET, | 5184 | .radio_type = UNSET, |
5195 | .radio_addr = ADDR_UNSET, | 5185 | .radio_addr = ADDR_UNSET, |
5196 | .gpiomask = 0x8e054000, | 5186 | .gpiomask = 0x8e054000, |
@@ -6932,10 +6922,17 @@ static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev, | |||
6932 | /* toggle AGC switch through GPIO 27 */ | 6922 | /* toggle AGC switch through GPIO 27 */ |
6933 | switch (mode) { | 6923 | switch (mode) { |
6934 | case TDA18271_ANALOG: | 6924 | case TDA18271_ANALOG: |
6935 | saa7134_set_gpio(dev, 27, 0); | 6925 | saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000); |
6926 | saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000); | ||
6927 | msleep(20); | ||
6936 | break; | 6928 | break; |
6937 | case TDA18271_DIGITAL: | 6929 | case TDA18271_DIGITAL: |
6938 | saa7134_set_gpio(dev, 27, 1); | 6930 | saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x14000); |
6931 | saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x14000); | ||
6932 | msleep(20); | ||
6933 | saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x54000); | ||
6934 | saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x54000); | ||
6935 | msleep(30); | ||
6939 | break; | 6936 | break; |
6940 | default: | 6937 | default: |
6941 | return -EINVAL; | 6938 | return -EINVAL; |
@@ -6993,6 +6990,7 @@ static int saa7134_tda8290_callback(struct saa7134_dev *dev, | |||
6993 | int saa7134_tuner_callback(void *priv, int component, int command, int arg) | 6990 | int saa7134_tuner_callback(void *priv, int component, int command, int arg) |
6994 | { | 6991 | { |
6995 | struct saa7134_dev *dev = priv; | 6992 | struct saa7134_dev *dev = priv; |
6993 | |||
6996 | if (dev != NULL) { | 6994 | if (dev != NULL) { |
6997 | switch (dev->tuner_type) { | 6995 | switch (dev->tuner_type) { |
6998 | case TUNER_PHILIPS_TDA8290: | 6996 | case TUNER_PHILIPS_TDA8290: |
@@ -7659,36 +7657,11 @@ int saa7134_board_init2(struct saa7134_dev *dev) | |||
7659 | break; | 7657 | break; |
7660 | } | 7658 | } |
7661 | case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG: | 7659 | case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG: |
7662 | { | ||
7663 | struct i2c_msg msg = { .addr = 0x4b, .flags = 0 }; | ||
7664 | int i; | ||
7665 | static u8 buffer[][2] = { | ||
7666 | {0x30, 0x31}, | ||
7667 | {0xff, 0x00}, | ||
7668 | {0x41, 0x03}, | ||
7669 | {0x41, 0x1a}, | ||
7670 | {0xff, 0x02}, | ||
7671 | {0x34, 0x00}, | ||
7672 | {0x45, 0x97}, | ||
7673 | {0x45, 0xc1}, | ||
7674 | }; | ||
7675 | saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000); | 7660 | saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000); |
7676 | saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000); | 7661 | saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000); |
7677 | 7662 | ||
7678 | /* | 7663 | saa7134_set_gpio(dev, 27, 0); |
7679 | * FIXME: identify what device is at addr 0x4b and what means | ||
7680 | * this initialization | ||
7681 | */ | ||
7682 | for (i = 0; i < ARRAY_SIZE(buffer); i++) { | ||
7683 | msg.buf = &buffer[i][0]; | ||
7684 | msg.len = ARRAY_SIZE(buffer[0]); | ||
7685 | if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1) | ||
7686 | printk(KERN_WARNING | ||
7687 | "%s: Unable to enable tuner(%i).\n", | ||
7688 | dev->name, i); | ||
7689 | } | ||
7690 | break; | 7664 | break; |
7691 | } | ||
7692 | } /* switch() */ | 7665 | } /* switch() */ |
7693 | 7666 | ||
7694 | /* initialize tuner */ | 7667 | /* initialize tuner */ |