|
@@ -33,6 +33,7 @@
|
|
|
#include "tea5767.h"
|
|
|
#include "tda18271.h"
|
|
|
#include "xc5000.h"
|
|
|
+#include "s5h1411.h"
|
|
|
|
|
|
/* commly used strings */
|
|
|
static char name_mute[] = "mute";
|
|
@@ -5712,6 +5713,36 @@ struct saa7134_board saa7134_boards[] = {
|
|
|
.amux = LINE1,
|
|
|
} },
|
|
|
},
|
|
|
+ [SAA7134_BOARD_KWORLD_PC150U] = {
|
|
|
+ .name = "Kworld PC150-U",
|
|
|
+ .audio_clock = 0x00187de7,
|
|
|
+ .tuner_type = TUNER_PHILIPS_TDA8290,
|
|
|
+ .radio_type = UNSET,
|
|
|
+ .tuner_addr = ADDR_UNSET,
|
|
|
+ .radio_addr = ADDR_UNSET,
|
|
|
+ .mpeg = SAA7134_MPEG_DVB,
|
|
|
+ .gpiomask = 1 << 21,
|
|
|
+ .ts_type = SAA7134_MPEG_TS_PARALLEL,
|
|
|
+ .inputs = { {
|
|
|
+ .name = name_tv,
|
|
|
+ .vmux = 1,
|
|
|
+ .amux = TV,
|
|
|
+ .tv = 1,
|
|
|
+ }, {
|
|
|
+ .name = name_comp,
|
|
|
+ .vmux = 3,
|
|
|
+ .amux = LINE1,
|
|
|
+ }, {
|
|
|
+ .name = name_svideo,
|
|
|
+ .vmux = 8,
|
|
|
+ .amux = LINE2,
|
|
|
+ } },
|
|
|
+ .radio = {
|
|
|
+ .name = name_radio,
|
|
|
+ .amux = TV,
|
|
|
+ .gpio = 0x0000000,
|
|
|
+ },
|
|
|
+ },
|
|
|
|
|
|
};
|
|
|
|
|
@@ -6305,6 +6336,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
|
|
|
.subdevice = 0x7352,
|
|
|
.driver_data = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
|
|
|
},{
|
|
|
+ .vendor = PCI_VENDOR_ID_PHILIPS,
|
|
|
+ .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
|
|
|
+ .subvendor = 0x17de,
|
|
|
+ .subdevice = 0xa134,
|
|
|
+ .driver_data = SAA7134_BOARD_KWORLD_PC150U,
|
|
|
+ }, {
|
|
|
.vendor = PCI_VENDOR_ID_PHILIPS,
|
|
|
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
|
|
|
.subvendor = 0x1461,
|
|
@@ -7134,6 +7171,23 @@ static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
|
|
|
+ enum tda18271_mode mode)
|
|
|
+{
|
|
|
+ switch (mode) {
|
|
|
+ case TDA18271_ANALOG:
|
|
|
+ saa7134_set_gpio(dev, 18, 0);
|
|
|
+ break;
|
|
|
+ case TDA18271_DIGITAL:
|
|
|
+ saa7134_set_gpio(dev, 18, 1);
|
|
|
+ msleep(30);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
|
|
|
int command, int arg)
|
|
|
{
|
|
@@ -7150,6 +7204,9 @@ static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
|
|
|
case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
|
|
|
ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
|
|
|
break;
|
|
|
+ case SAA7134_BOARD_KWORLD_PC150U:
|
|
|
+ ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -7171,6 +7228,7 @@ static int saa7134_tda8290_callback(struct saa7134_dev *dev,
|
|
|
case SAA7134_BOARD_HAUPPAUGE_HVR1120:
|
|
|
case SAA7134_BOARD_AVERMEDIA_M733A:
|
|
|
case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
|
|
|
+ case SAA7134_BOARD_KWORLD_PC150U:
|
|
|
case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
|
|
|
/* tda8290 + tda18271 */
|
|
|
ret = saa7134_tda8290_18271_callback(dev, command, arg);
|
|
@@ -7452,6 +7510,7 @@ int saa7134_board_init1(struct saa7134_dev *dev)
|
|
|
case SAA7134_BOARD_BEHOLD_X7:
|
|
|
case SAA7134_BOARD_BEHOLD_H7:
|
|
|
case SAA7134_BOARD_BEHOLD_A7:
|
|
|
+ case SAA7134_BOARD_KWORLD_PC150U:
|
|
|
dev->has_remote = SAA7134_REMOTE_I2C;
|
|
|
break;
|
|
|
case SAA7134_BOARD_AVERMEDIA_A169_B:
|