aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7134/saa7134-cards.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7134/saa7134-cards.c')
-rw-r--r--drivers/media/video/saa7134/saa7134-cards.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c
index 065d0f6be4a0..53aae5968ffb 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -33,6 +33,7 @@
33#include "tea5767.h" 33#include "tea5767.h"
34#include "tda18271.h" 34#include "tda18271.h"
35#include "xc5000.h" 35#include "xc5000.h"
36#include "s5h1411.h"
36 37
37/* commly used strings */ 38/* commly used strings */
38static char name_mute[] = "mute"; 39static char name_mute[] = "mute";
@@ -5712,6 +5713,36 @@ struct saa7134_board saa7134_boards[] = {
5712 .amux = LINE1, 5713 .amux = LINE1,
5713 } }, 5714 } },
5714 }, 5715 },
5716 [SAA7134_BOARD_KWORLD_PC150U] = {
5717 .name = "Kworld PC150-U",
5718 .audio_clock = 0x00187de7,
5719 .tuner_type = TUNER_PHILIPS_TDA8290,
5720 .radio_type = UNSET,
5721 .tuner_addr = ADDR_UNSET,
5722 .radio_addr = ADDR_UNSET,
5723 .mpeg = SAA7134_MPEG_DVB,
5724 .gpiomask = 1 << 21,
5725 .ts_type = SAA7134_MPEG_TS_PARALLEL,
5726 .inputs = { {
5727 .name = name_tv,
5728 .vmux = 1,
5729 .amux = TV,
5730 .tv = 1,
5731 }, {
5732 .name = name_comp,
5733 .vmux = 3,
5734 .amux = LINE1,
5735 }, {
5736 .name = name_svideo,
5737 .vmux = 8,
5738 .amux = LINE2,
5739 } },
5740 .radio = {
5741 .name = name_radio,
5742 .amux = TV,
5743 .gpio = 0x0000000,
5744 },
5745 },
5715 5746
5716}; 5747};
5717 5748
@@ -6306,6 +6337,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
6306 .driver_data = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */ 6337 .driver_data = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
6307 },{ 6338 },{
6308 .vendor = PCI_VENDOR_ID_PHILIPS, 6339 .vendor = PCI_VENDOR_ID_PHILIPS,
6340 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6341 .subvendor = 0x17de,
6342 .subdevice = 0xa134,
6343 .driver_data = SAA7134_BOARD_KWORLD_PC150U,
6344 }, {
6345 .vendor = PCI_VENDOR_ID_PHILIPS,
6309 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 6346 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
6310 .subvendor = 0x1461, 6347 .subvendor = 0x1461,
6311 .subdevice = 0x7360, 6348 .subdevice = 0x7360,
@@ -7134,6 +7171,23 @@ static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
7134 return 0; 7171 return 0;
7135} 7172}
7136 7173
7174static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
7175 enum tda18271_mode mode)
7176{
7177 switch (mode) {
7178 case TDA18271_ANALOG:
7179 saa7134_set_gpio(dev, 18, 0);
7180 break;
7181 case TDA18271_DIGITAL:
7182 saa7134_set_gpio(dev, 18, 1);
7183 msleep(30);
7184 break;
7185 default:
7186 return -EINVAL;
7187 }
7188 return 0;
7189}
7190
7137static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev, 7191static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
7138 int command, int arg) 7192 int command, int arg)
7139{ 7193{
@@ -7150,6 +7204,9 @@ static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
7150 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG: 7204 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
7151 ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg); 7205 ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
7152 break; 7206 break;
7207 case SAA7134_BOARD_KWORLD_PC150U:
7208 ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
7209 break;
7153 default: 7210 default:
7154 break; 7211 break;
7155 } 7212 }
@@ -7171,6 +7228,7 @@ static int saa7134_tda8290_callback(struct saa7134_dev *dev,
7171 case SAA7134_BOARD_HAUPPAUGE_HVR1120: 7228 case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7172 case SAA7134_BOARD_AVERMEDIA_M733A: 7229 case SAA7134_BOARD_AVERMEDIA_M733A:
7173 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG: 7230 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
7231 case SAA7134_BOARD_KWORLD_PC150U:
7174 case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2: 7232 case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
7175 /* tda8290 + tda18271 */ 7233 /* tda8290 + tda18271 */
7176 ret = saa7134_tda8290_18271_callback(dev, command, arg); 7234 ret = saa7134_tda8290_18271_callback(dev, command, arg);
@@ -7452,6 +7510,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
7452 case SAA7134_BOARD_BEHOLD_X7: 7510 case SAA7134_BOARD_BEHOLD_X7:
7453 case SAA7134_BOARD_BEHOLD_H7: 7511 case SAA7134_BOARD_BEHOLD_H7:
7454 case SAA7134_BOARD_BEHOLD_A7: 7512 case SAA7134_BOARD_BEHOLD_A7:
7513 case SAA7134_BOARD_KWORLD_PC150U:
7455 dev->has_remote = SAA7134_REMOTE_I2C; 7514 dev->has_remote = SAA7134_REMOTE_I2C;
7456 break; 7515 break;
7457 case SAA7134_BOARD_AVERMEDIA_A169_B: 7516 case SAA7134_BOARD_AVERMEDIA_A169_B: