|
@@ -40,6 +40,27 @@
|
|
#define MSP_MONO MSP_INPUT(MSP_IN_MONO, MSP_IN_TUNER1, \
|
|
#define MSP_MONO MSP_INPUT(MSP_IN_MONO, MSP_IN_TUNER1, \
|
|
MSP_DSP_IN_SCART, MSP_DSP_IN_SCART)
|
|
MSP_DSP_IN_SCART, MSP_DSP_IN_SCART)
|
|
|
|
|
|
|
|
+/* usual i2c tuner addresses to probe */
|
|
|
|
+static struct ivtv_card_tuner_i2c ivtv_i2c_std = {
|
|
|
|
+ .radio = { I2C_CLIENT_END },
|
|
|
|
+ .demod = { 0x43, I2C_CLIENT_END },
|
|
|
|
+ .tv = { 0x61, 0x60, I2C_CLIENT_END },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* as above, but with possible radio tuner */
|
|
|
|
+static struct ivtv_card_tuner_i2c ivtv_i2c_radio = {
|
|
|
|
+ .radio = { 0x60, I2C_CLIENT_END },
|
|
|
|
+ .demod = { 0x43, I2C_CLIENT_END },
|
|
|
|
+ .tv = { 0x61, I2C_CLIENT_END },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* using the tda8290+75a combo */
|
|
|
|
+static struct ivtv_card_tuner_i2c ivtv_i2c_tda8290 = {
|
|
|
|
+ .radio = { I2C_CLIENT_END },
|
|
|
|
+ .demod = { I2C_CLIENT_END },
|
|
|
|
+ .tv = { 0x4b, I2C_CLIENT_END },
|
|
|
|
+};
|
|
|
|
+
|
|
/********************** card configuration *******************************/
|
|
/********************** card configuration *******************************/
|
|
|
|
|
|
/* Please add new PCI IDs to: http://pci-ids.ucw.cz/iii
|
|
/* Please add new PCI IDs to: http://pci-ids.ucw.cz/iii
|
|
@@ -73,6 +94,7 @@ static const struct ivtv_card ivtv_card_pvr250 = {
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
},
|
|
},
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -127,6 +149,7 @@ static const struct ivtv_card ivtv_card_pvr350 = {
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
},
|
|
},
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* PVR-350 V1 boards have a different audio tuner input and use a
|
|
/* PVR-350 V1 boards have a different audio tuner input and use a
|
|
@@ -158,6 +181,7 @@ static const struct ivtv_card ivtv_card_pvr350_v1 = {
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
{ IVTV_CARD_INPUT_LINE_IN2, MSP_SCART3 },
|
|
},
|
|
},
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
.radio_input = { IVTV_CARD_INPUT_AUD_TUNER, MSP_SCART2 },
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -193,6 +217,7 @@ static const struct ivtv_card ivtv_card_pvr150 = {
|
|
CX25840_AUDIO_SERIAL, WM8775_AIN4 },
|
|
CX25840_AUDIO_SERIAL, WM8775_AIN4 },
|
|
/* apparently needed for the IR blaster */
|
|
/* apparently needed for the IR blaster */
|
|
.gpio_init = { .direction = 0x1f01, .initial_value = 0x26f3 },
|
|
.gpio_init = { .direction = 0x1f01, .initial_value = 0x26f3 },
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -235,6 +260,7 @@ static const struct ivtv_card ivtv_card_m179 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_NTSC },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_NTSC },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_m179,
|
|
.pci_list = ivtv_pci_m179,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -276,6 +302,7 @@ static const struct ivtv_card ivtv_card_mpg600 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_mpg600,
|
|
.pci_list = ivtv_pci_mpg600,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -316,6 +343,7 @@ static const struct ivtv_card ivtv_card_mpg160 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_mpg160,
|
|
.pci_list = ivtv_pci_mpg160,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -351,6 +379,7 @@ static const struct ivtv_card ivtv_card_pg600 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_pg600,
|
|
.pci_list = ivtv_pci_pg600,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -394,6 +423,7 @@ static const struct ivtv_card ivtv_card_avc2410 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_avc2410,
|
|
.pci_list = ivtv_pci_avc2410,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -464,6 +494,7 @@ static const struct ivtv_card ivtv_card_tg5000tv = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_tg5000tv,
|
|
.pci_list = ivtv_pci_tg5000tv,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -494,6 +525,7 @@ static const struct ivtv_card ivtv_card_va2000 = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_va2000,
|
|
.pci_list = ivtv_pci_va2000,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -538,6 +570,7 @@ static const struct ivtv_card ivtv_card_cx23416gyc = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_cx23416gyc,
|
|
.pci_list = ivtv_pci_cx23416gyc,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
static const struct ivtv_card ivtv_card_cx23416gyc_nogr = {
|
|
static const struct ivtv_card ivtv_card_cx23416gyc_nogr = {
|
|
@@ -568,6 +601,7 @@ static const struct ivtv_card ivtv_card_cx23416gyc_nogr = {
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
},
|
|
},
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
static const struct ivtv_card ivtv_card_cx23416gyc_nogrycs = {
|
|
static const struct ivtv_card ivtv_card_cx23416gyc_nogrycs = {
|
|
@@ -597,6 +631,7 @@ static const struct ivtv_card ivtv_card_cx23416gyc_nogrycs = {
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
},
|
|
},
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -636,6 +671,7 @@ static const struct ivtv_card ivtv_card_gv_mvprx = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PANASONIC_VP27 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PANASONIC_VP27 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_gv_mvprx,
|
|
.pci_list = ivtv_pci_gv_mvprx,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -672,6 +708,7 @@ static const struct ivtv_card ivtv_card_gv_mvprx2e = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PANASONIC_VP27 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PANASONIC_VP27 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_gv_mvprx2e,
|
|
.pci_list = ivtv_pci_gv_mvprx2e,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -706,6 +743,7 @@ static const struct ivtv_card ivtv_card_gotview_pci_dvd = {
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_gotview_pci_dvd,
|
|
.pci_list = ivtv_pci_gotview_pci_dvd,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -744,6 +782,7 @@ static const struct ivtv_card ivtv_card_gotview_pci_dvd2 = {
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
{ .std = V4L2_STD_625_50, .tuner = TUNER_PHILIPS_FM1216ME_MK3 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_gotview_pci_dvd2,
|
|
.pci_list = ivtv_pci_gotview_pci_dvd2,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -779,6 +818,7 @@ static const struct ivtv_card ivtv_card_yuan_mpc622 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_TDA8290 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_PHILIPS_TDA8290 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_yuan_mpc622,
|
|
.pci_list = ivtv_pci_yuan_mpc622,
|
|
|
|
+ .i2c = &ivtv_i2c_tda8290,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -820,6 +860,7 @@ static const struct ivtv_card ivtv_card_dctmvtvp1 = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FQ1286 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_dctmvtvp1,
|
|
.pci_list = ivtv_pci_dctmvtvp1,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -852,6 +893,7 @@ static const struct ivtv_card ivtv_card_pg600v2 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_pg600v2,
|
|
.pci_list = ivtv_pci_pg600v2,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -883,6 +925,7 @@ static const struct ivtv_card ivtv_card_club3d = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_club3d,
|
|
.pci_list = ivtv_pci_club3d,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -914,6 +957,7 @@ static const struct ivtv_card ivtv_card_avertv_mce116 = {
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
{ .std = V4L2_STD_ALL, .tuner = TUNER_XC2028 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_avertv_mce116,
|
|
.pci_list = ivtv_pci_avertv_mce116,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -952,6 +996,7 @@ static const struct ivtv_card ivtv_card_aver_pvr150 = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_TCL_2002N },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_TCL_2002N },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_aver_pvr150,
|
|
.pci_list = ivtv_pci_aver_pvr150,
|
|
|
|
+ .i2c = &ivtv_i2c_radio,
|
|
};
|
|
};
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
/* ------------------------------------------------------------------------- */
|
|
@@ -979,6 +1024,7 @@ static const struct ivtv_card ivtv_card_aver_ezmaker = {
|
|
{ IVTV_CARD_INPUT_LINE_IN1, CX25840_AUDIO_SERIAL, 0 },
|
|
{ IVTV_CARD_INPUT_LINE_IN1, CX25840_AUDIO_SERIAL, 0 },
|
|
},
|
|
},
|
|
.gpio_init = { .direction = 0x4000, .initial_value = 0x4000 },
|
|
.gpio_init = { .direction = 0x4000, .initial_value = 0x4000 },
|
|
|
|
+ /* Does not have a tuner */
|
|
.pci_list = ivtv_pci_aver_ezmaker,
|
|
.pci_list = ivtv_pci_aver_ezmaker,
|
|
};
|
|
};
|
|
|
|
|
|
@@ -1018,6 +1064,7 @@ static const struct ivtv_card ivtv_card_asus_falcon2 = {
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
{ .std = V4L2_STD_525_60, .tuner = TUNER_PHILIPS_FM1236_MK3 },
|
|
},
|
|
},
|
|
.pci_list = ivtv_pci_asus_falcon2,
|
|
.pci_list = ivtv_pci_asus_falcon2,
|
|
|
|
+ .i2c = &ivtv_i2c_std,
|
|
};
|
|
};
|
|
|
|
|
|
static const struct ivtv_card *ivtv_card_list[] = {
|
|
static const struct ivtv_card *ivtv_card_list[] = {
|