Commit 8e2cc1af authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

Merge branch 'work-fixes'

parents c499ec24 be6f655d
...@@ -111,4 +111,8 @@ source: linux/Documentation/video4linux/CARDLIST.bttv ...@@ -111,4 +111,8 @@ source: linux/Documentation/video4linux/CARDLIST.bttv
If you have problems with this please do ask on the mailing list. If you have problems with this please do ask on the mailing list.
-- --
Authors: Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham Authors: Richard Walker,
Jamie Honan,
Michael Hunold,
Manu Abraham,
Michael Krufky
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
12 -> Medion 7134 [16be:0003] 12 -> Medion 7134 [16be:0003]
13 -> Typhoon TV+Radio 90031 13 -> Typhoon TV+Radio 90031
14 -> ELSA EX-VISION 300TV [1048:226b] 14 -> ELSA EX-VISION 300TV [1048:226b]
15 -> ELSA EX-VISION 500TV [1048:226b] 15 -> ELSA EX-VISION 500TV [1048:226a]
16 -> ASUS TV-FM 7134 [1043:4842,1043:4830,1043:4840] 16 -> ASUS TV-FM 7134 [1043:4842,1043:4830,1043:4840]
17 -> AOPEN VA1000 POWER [1131:7133] 17 -> AOPEN VA1000 POWER [1131:7133]
18 -> BMK MPEX No Tuner 18 -> BMK MPEX No Tuner
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
74 -> LifeView FlyTV Platinum Mini2 [14c0:1212] 74 -> LifeView FlyTV Platinum Mini2 [14c0:1212]
75 -> AVerMedia AVerTVHD MCE A180 [1461:1044] 75 -> AVerMedia AVerTVHD MCE A180 [1461:1044]
76 -> SKNet MonsterTV Mobile [1131:4ee9] 76 -> SKNet MonsterTV Mobile [1131:4ee9]
77 -> Pinnacle PCTV 110i (saa7133) [11bd:002e] 77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e]
78 -> ASUSTeK P7131 Dual [1043:4862] 78 -> ASUSTeK P7131 Dual [1043:4862]
79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
80 -> ASUS Digimatrix TV [1043:0210] 80 -> ASUS Digimatrix TV [1043:0210]
......
...@@ -838,7 +838,6 @@ S: Maintained ...@@ -838,7 +838,6 @@ S: Maintained
DVB SUBSYSTEM AND DRIVERS DVB SUBSYSTEM AND DRIVERS
P: LinuxTV.org Project P: LinuxTV.org Project
M: mchehab@infradead.org
M: v4l-dvb-maintainer@linuxtv.org M: v4l-dvb-maintainer@linuxtv.org
L: linux-dvb@linuxtv.org (subscription required) L: linux-dvb@linuxtv.org (subscription required)
W: http://linuxtv.org/ W: http://linuxtv.org/
......
...@@ -526,7 +526,7 @@ int flexcop_frontend_init(struct flexcop_device *fc) ...@@ -526,7 +526,7 @@ int flexcop_frontend_init(struct flexcop_device *fc)
info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address); info("found the stv0297 at i2c address: 0x%02x",alps_tdee4_stv0297_config.demod_address);
} else } else
/* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */ /* try the sky v2.3 (vp310/Samsung tbdu18132(tsa5059)) */
if ((fc->fe = vp310_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) { if ((fc->fe = vp310_mt312_attach(&skystar23_samsung_tbdu18132_config, &fc->i2c_adap)) != NULL) {
ops = fc->fe->ops; ops = fc->fe->ops;
ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd; ops->diseqc_send_master_cmd = flexcop_diseqc_send_master_cmd;
......
...@@ -382,7 +382,7 @@ bt878_device_control(struct bt878 *bt, unsigned int cmd, union dst_gpio_packet * ...@@ -382,7 +382,7 @@ bt878_device_control(struct bt878 *bt, unsigned int cmd, union dst_gpio_packet *
EXPORT_SYMBOL(bt878_device_control); EXPORT_SYMBOL(bt878_device_control);
struct cards card_list[] __devinitdata = { static struct cards card_list[] __devinitdata = {
{ 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
{ 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, { 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" },
......
...@@ -602,7 +602,7 @@ static int dst_type_print(u8 type) ...@@ -602,7 +602,7 @@ static int dst_type_print(u8 type)
*/ */
struct dst_types dst_tlist[] = { static struct dst_types dst_tlist[] = {
{ {
.device_id = "200103A", .device_id = "200103A",
.offset = 0, .offset = 0,
......
...@@ -282,7 +282,7 @@ static struct cx22702_config cxusb_cx22702_config = { ...@@ -282,7 +282,7 @@ static struct cx22702_config cxusb_cx22702_config = {
.pll_set = dvb_usb_pll_set_i2c, .pll_set = dvb_usb_pll_set_i2c,
}; };
static struct lgdt330x_config cxusb_lgdt330x_config = { static struct lgdt330x_config cxusb_lgdt3303_config = {
.demod_address = 0x0e, .demod_address = 0x0e,
.demod_chip = LGDT3303, .demod_chip = LGDT3303,
.pll_set = dvb_usb_pll_set_i2c, .pll_set = dvb_usb_pll_set_i2c,
...@@ -357,14 +357,14 @@ static int cxusb_cx22702_frontend_attach(struct dvb_usb_device *d) ...@@ -357,14 +357,14 @@ static int cxusb_cx22702_frontend_attach(struct dvb_usb_device *d)
return -EIO; return -EIO;
} }
static int cxusb_lgdt330x_frontend_attach(struct dvb_usb_device *d) static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_device *d)
{ {
if (usb_set_interface(d->udev,0,7) < 0) if (usb_set_interface(d->udev,0,7) < 0)
err("set interface failed"); err("set interface failed");
cxusb_ctrl_msg(d,CMD_DIGITAL, NULL, 0, NULL, 0); cxusb_ctrl_msg(d,CMD_DIGITAL, NULL, 0, NULL, 0);
if ((d->fe = lgdt330x_attach(&cxusb_lgdt330x_config, &d->i2c_adap)) != NULL) if ((d->fe = lgdt330x_attach(&cxusb_lgdt3303_config, &d->i2c_adap)) != NULL)
return 0; return 0;
return -EIO; return -EIO;
...@@ -506,7 +506,7 @@ static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = { ...@@ -506,7 +506,7 @@ static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = {
.streaming_ctrl = cxusb_streaming_ctrl, .streaming_ctrl = cxusb_streaming_ctrl,
.power_ctrl = cxusb_power_ctrl, .power_ctrl = cxusb_power_ctrl,
.frontend_attach = cxusb_lgdt330x_frontend_attach, .frontend_attach = cxusb_lgdt3303_frontend_attach,
.tuner_attach = cxusb_lgh064f_tuner_attach, .tuner_attach = cxusb_lgh064f_tuner_attach,
.i2c_algo = &cxusb_i2c_algo, .i2c_algo = &cxusb_i2c_algo,
......
...@@ -29,7 +29,7 @@ config DVB_TDA8083 ...@@ -29,7 +29,7 @@ config DVB_TDA8083
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
config DVB_MT312 config DVB_MT312
tristate "Zarlink MT312 based" tristate "Zarlink VP310/MT312 based"
depends on DVB_CORE depends on DVB_CORE
help help
A DVB-S tuner module. Say Y when you want to support this frontend. A DVB-S tuner module. Say Y when you want to support this frontend.
......
...@@ -612,76 +612,6 @@ static void mt312_release(struct dvb_frontend* fe) ...@@ -612,76 +612,6 @@ static void mt312_release(struct dvb_frontend* fe)
kfree(state); kfree(state);
} }
static struct dvb_frontend_ops vp310_mt312_ops;
struct dvb_frontend* vp310_attach(const struct mt312_config* config,
struct i2c_adapter* i2c)
{
struct mt312_state* state = NULL;
/* allocate memory for the internal state */
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
if (state == NULL)
goto error;
/* setup the state */
state->config = config;
state->i2c = i2c;
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
strcpy(state->ops.info.name, "Zarlink VP310 DVB-S");
/* check if the demod is there */
if (mt312_readreg(state, ID, &state->id) < 0)
goto error;
if (state->id != ID_VP310) {
goto error;
}
/* create dvb_frontend */
state->frequency = 90;
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state;
return &state->frontend;
error:
kfree(state);
return NULL;
}
struct dvb_frontend* mt312_attach(const struct mt312_config* config,
struct i2c_adapter* i2c)
{
struct mt312_state* state = NULL;
/* allocate memory for the internal state */
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
if (state == NULL)
goto error;
/* setup the state */
state->config = config;
state->i2c = i2c;
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
strcpy(state->ops.info.name, "Zarlink MT312 DVB-S");
/* check if the demod is there */
if (mt312_readreg(state, ID, &state->id) < 0)
goto error;
if (state->id != ID_MT312) {
goto error;
}
/* create dvb_frontend */
state->frequency = 60;
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state;
return &state->frontend;
error:
kfree(state);
return NULL;
}
static struct dvb_frontend_ops vp310_mt312_ops = { static struct dvb_frontend_ops vp310_mt312_ops = {
.info = { .info = {
...@@ -720,6 +650,49 @@ static struct dvb_frontend_ops vp310_mt312_ops = { ...@@ -720,6 +650,49 @@ static struct dvb_frontend_ops vp310_mt312_ops = {
.set_voltage = mt312_set_voltage, .set_voltage = mt312_set_voltage,
}; };
struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
struct i2c_adapter* i2c)
{
struct mt312_state* state = NULL;
/* allocate memory for the internal state */
state = kmalloc(sizeof(struct mt312_state), GFP_KERNEL);
if (state == NULL)
goto error;
/* setup the state */
state->config = config;
state->i2c = i2c;
memcpy(&state->ops, &vp310_mt312_ops, sizeof(struct dvb_frontend_ops));
/* check if the demod is there */
if (mt312_readreg(state, ID, &state->id) < 0)
goto error;
switch (state->id) {
case ID_VP310:
strcpy(state->ops.info.name, "Zarlink VP310 DVB-S");
state->frequency = 90;
break;
case ID_MT312:
strcpy(state->ops.info.name, "Zarlink MT312 DVB-S");
state->frequency = 60;
break;
default:
printk (KERN_WARNING "Only Zarlink VP310/MT312 are supported chips.\n");
goto error;
}
/* create dvb_frontend */
state->frontend.ops = &state->ops;
state->frontend.demodulator_priv = state;
return &state->frontend;
error:
kfree(state);
return NULL;
}
module_param(debug, int, 0644); module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off)."); MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
...@@ -727,5 +700,4 @@ MODULE_DESCRIPTION("Zarlink VP310/MT312 DVB-S Demodulator driver"); ...@@ -727,5 +700,4 @@ MODULE_DESCRIPTION("Zarlink VP310/MT312 DVB-S Demodulator driver");
MODULE_AUTHOR("Andreas Oberritter <obi@linuxtv.org>"); MODULE_AUTHOR("Andreas Oberritter <obi@linuxtv.org>");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
EXPORT_SYMBOL(mt312_attach); EXPORT_SYMBOL(vp310_mt312_attach);
EXPORT_SYMBOL(vp310_attach);
...@@ -38,10 +38,8 @@ struct mt312_config ...@@ -38,10 +38,8 @@ struct mt312_config
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
}; };
extern struct dvb_frontend* mt312_attach(const struct mt312_config* config, struct dvb_frontend* vp310_mt312_attach(const struct mt312_config* config,
struct i2c_adapter* i2c); struct i2c_adapter* i2c);
extern struct dvb_frontend* vp310_attach(const struct mt312_config* config,
struct i2c_adapter* i2c);
#endif // MT312_H #endif // MT312_H
...@@ -393,10 +393,6 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par ...@@ -393,10 +393,6 @@ static int stv0297_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
break; break;
case QAM_128: case QAM_128:
delay = 150;
sweeprate = 1000;
break;
case QAM_256: case QAM_256:
delay = 200; delay = 200;
sweeprate = 500; sweeprate = 500;
......
...@@ -2477,7 +2477,8 @@ static int frontend_init(struct av7110 *av7110) ...@@ -2477,7 +2477,8 @@ static int frontend_init(struct av7110 *av7110)
* The same behaviour of missing VSYNC can be duplicated on budget * The same behaviour of missing VSYNC can be duplicated on budget
* cards, by seting DD1_INIT trigger mode 7 in 3rd nibble. * cards, by seting DD1_INIT trigger mode 7 in 3rd nibble.
*/ */
static int av7110_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *pci_ext) static int __devinit av7110_attach(struct saa7146_dev* dev,
struct saa7146_pci_extension_data *pci_ext)
{ {
const int length = TS_WIDTH * TS_HEIGHT; const int length = TS_WIDTH * TS_HEIGHT;
struct pci_dev *pdev = dev->pci; struct pci_dev *pdev = dev->pci;
...@@ -2827,7 +2828,7 @@ static int av7110_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_d ...@@ -2827,7 +2828,7 @@ static int av7110_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_d
goto out; goto out;
} }
static int av7110_detach(struct saa7146_dev* saa) static int __devexit av7110_detach(struct saa7146_dev* saa)
{ {
struct av7110 *av7110 = saa->ext_priv; struct av7110 *av7110 = saa->ext_priv;
dprintk(4, "%p\n", av7110); dprintk(4, "%p\n", av7110);
...@@ -2974,7 +2975,7 @@ static struct saa7146_extension av7110_extension = { ...@@ -2974,7 +2975,7 @@ static struct saa7146_extension av7110_extension = {
.module = THIS_MODULE, .module = THIS_MODULE,
.pci_tbl = &pci_tbl[0], .pci_tbl = &pci_tbl[0],
.attach = av7110_attach, .attach = av7110_attach,
.detach = av7110_detach, .detach = __devexit_p(av7110_detach),
.irq_mask = MASK_19 | MASK_03 | MASK_10, .irq_mask = MASK_19 | MASK_03 | MASK_10,
.irq_func = av7110_irq, .irq_func = av7110_irq,
......
...@@ -208,7 +208,7 @@ static void ir_handler(struct av7110 *av7110, u32 ircom) ...@@ -208,7 +208,7 @@ static void ir_handler(struct av7110 *av7110, u32 ircom)
} }
int __init av7110_ir_init(struct av7110 *av7110) int __devinit av7110_ir_init(struct av7110 *av7110)
{ {
static struct proc_dir_entry *e; static struct proc_dir_entry *e;
...@@ -248,7 +248,7 @@ int __init av7110_ir_init(struct av7110 *av7110) ...@@ -248,7 +248,7 @@ int __init av7110_ir_init(struct av7110 *av7110)
} }
void __exit av7110_ir_exit(struct av7110 *av7110) void __devexit av7110_ir_exit(struct av7110 *av7110)
{ {
int i; int i;
......
...@@ -567,7 +567,7 @@ static struct v4l2_queryctrl cx25840_qctrl[] = { ...@@ -567,7 +567,7 @@ static struct v4l2_queryctrl cx25840_qctrl[] = {
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
.name = "Contrast", .name = "Contrast",
.minimum = 0, .minimum = 0,
.maximum = 255, .maximum = 127,
.step = 1, .step = 1,
.default_value = 64, .default_value = 64,
.flags = 0, .flags = 0,
...@@ -576,7 +576,7 @@ static struct v4l2_queryctrl cx25840_qctrl[] = { ...@@ -576,7 +576,7 @@ static struct v4l2_queryctrl cx25840_qctrl[] = {
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
.name = "Saturation", .name = "Saturation",
.minimum = 0, .minimum = 0,
.maximum = 255, .maximum = 127,
.step = 1, .step = 1,
.default_value = 64, .default_value = 64,
.flags = 0, .flags = 0,
......
...@@ -1027,7 +1027,7 @@ static struct v4l2_queryctrl saa7115_qctrl[] = { ...@@ -1027,7 +1027,7 @@ static struct v4l2_queryctrl saa7115_qctrl[] = {
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
.name = "Contrast", .name = "Contrast",
.minimum = 0, .minimum = 0,
.maximum = 255, .maximum = 127,
.step = 1, .step = 1,
.default_value = 64, .default_value = 64,
.flags = 0, .flags = 0,
...@@ -1036,7 +1036,7 @@ static struct v4l2_queryctrl saa7115_qctrl[] = { ...@@ -1036,7 +1036,7 @@ static struct v4l2_queryctrl saa7115_qctrl[] = {
.type = V4L2_CTRL_TYPE_INTEGER, .type = V4L2_CTRL_TYPE_INTEGER,
.name = "Saturation", .name = "Saturation",
.minimum = 0, .minimum = 0,
.maximum = 255, .maximum = 127,
.step = 1, .step = 1,
.default_value = 64, .default_value = 64,
.flags = 0, .flags = 0,
......
...@@ -54,10 +54,12 @@ MODULE_PARM_DESC(debug,"enable debug messages [alsa]"); ...@@ -54,10 +54,12 @@ MODULE_PARM_DESC(debug,"enable debug messages [alsa]");
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 0}; static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 1};
module_param_array(index, int, NULL, 0444); module_param_array(index, int, NULL, 0444);
module_param_array(enable, int, NULL, 0444);
MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s)."); MODULE_PARM_DESC(index, "Index value for SAA7134 capture interface(s).");
MODULE_PARM_DESC(enable, "Enable (or not) the SAA7134 capture interface(s).");
#define dprintk(fmt, arg...) if (debug) \ #define dprintk(fmt, arg...) if (debug) \
printk(KERN_DEBUG "%s/alsa: " fmt, dev->name , ##arg) printk(KERN_DEBUG "%s/alsa: " fmt, dev->name , ##arg)
......
...@@ -977,7 +977,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -977,7 +977,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE, .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
.vmux = 3, .vmux = 3,
...@@ -1666,7 +1666,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -1666,7 +1666,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = ADDR_UNSET, .tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_ACTIVE, .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -2187,7 +2187,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2187,7 +2187,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = 0x61, .tuner_addr = 0x61,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -2211,7 +2211,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2211,7 +2211,7 @@ struct saa7134_board saa7134_boards[] = {
.radio_type = UNSET, .radio_type = UNSET,
.tuner_addr = 0x61, .tuner_addr = 0x61,
.radio_addr = ADDR_UNSET, .radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT, .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
.mpeg = SAA7134_MPEG_DVB, .mpeg = SAA7134_MPEG_DVB,
.inputs = {{ .inputs = {{
.name = name_tv, .name = name_tv,
...@@ -2392,7 +2392,7 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2392,7 +2392,7 @@ struct saa7134_board saa7134_boards[] = {
}}, }},
}, },
[SAA7134_BOARD_PINNACLE_PCTV_110i] = { [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
.name = "Pinnacle PCTV 110i (saa7133)", .name = "Pinnacle PCTV 40i/50i/110i (saa7133)",
.audio_clock = 0x00187de7, .audio_clock = 0x00187de7,
.tuner_type = TUNER_PHILIPS_TDA8290, .tuner_type = TUNER_PHILIPS_TDA8290,
.radio_type = UNSET, .radio_type = UNSET,
...@@ -2407,6 +2407,10 @@ struct saa7134_board saa7134_boards[] = { ...@@ -2407,6 +2407,10 @@ struct saa7134_board saa7134_boards[] = {
},{ },{
.name = name_comp1, .name = name_comp1,
.vmux = 1, .vmux = 1,
.amux = LINE2,
},{
.name = name_comp2,
.vmux = 0,
.amux = LINE2, .amux = LINE2,
},{ },{
.name = name_svideo, .name = name_svideo,
...@@ -2745,7 +2749,7 @@ struct pci_device_id saa7134_pci_tbl[] = { ...@@ -2745,7 +2749,7 @@ struct pci_device_id saa7134_pci_tbl[] = {
.vendor = PCI_VENDOR_ID_PHILIPS, .vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7130, .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
.subvendor = 0x1048, .subvendor = 0x1048,
.subdevice = 0x226b, .subdevice = 0x226a,
.driver_data = SAA7134_BOARD_ELSA_500TV, .driver_data = SAA7134_BOARD_ELSA_500TV,
},{ },{
.vendor = PCI_VENDOR_ID_PHILIPS, .vendor = PCI_VENDOR_ID_PHILIPS,
...@@ -3201,6 +3205,11 @@ int saa7134_board_init1(struct saa7134_dev *dev) ...@@ -3201,6 +3205,11 @@ int saa7134_board_init1(struct saa7134_dev *dev)
/* power-up tuner chip */ /* power-up tuner chip */
saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000); saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000); saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
/* this turns the remote control chip off to work around a bug in it */
saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
break;
case SAA7134_BOARD_MONSTERTV_MOBILE: case SAA7134_BOARD_MONSTERTV_MOBILE:
/* power-up tuner chip */ /* power-up tuner chip */
saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000); saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
......
...@@ -110,6 +110,7 @@ static int mt352_pinnacle_init(struct dvb_frontend* fe) ...@@ -110,6 +110,7 @@ static int mt352_pinnacle_init(struct dvb_frontend* fe)
mt352_write(fe, fsm_ctl_cfg, sizeof(fsm_ctl_cfg)); mt352_write(fe, fsm_ctl_cfg, sizeof(fsm_ctl_cfg));
mt352_write(fe, scan_ctl_cfg, sizeof(scan_ctl_cfg)); mt352_write(fe, scan_ctl_cfg, sizeof(scan_ctl_cfg));
mt352_write(fe, irq_cfg, sizeof(irq_cfg)); mt352_write(fe, irq_cfg, sizeof(irq_cfg));
return 0; return 0;
} }
...@@ -117,8 +118,10 @@ static int mt352_pinnacle_pll_set(struct dvb_frontend* fe, ...@@ -117,8 +118,10 @@ static int mt352_pinnacle_pll_set(struct dvb_frontend* fe,
struct dvb_frontend_parameters* params, struct dvb_frontend_parameters* params,
u8* pllbuf) u8* pllbuf)
{ {
static int on = TDA9887_PRESENT | TDA9887_PORT2_INACTIVE; u8 off[] = { 0x00, 0xf1};
static int off = TDA9887_PRESENT | TDA9887_PORT2_ACTIVE; u8 on[] = { 0x00, 0x71};
struct i2c_msg msg = {.addr=0x43, .flags=0, .buf=off, .len = sizeof(off)};
struct saa7134_dev *dev = fe->dvb->priv; struct saa7134_dev *dev = fe->dvb->priv;
struct v4l2_frequency f; struct v4l2_frequency f;
...@@ -126,9 +129,10 @@ static int mt352_pinnacle_pll_set(struct dvb_frontend* fe, ...@@ -126,9 +129,10 @@ static int mt352_pinnacle_pll_set(struct dvb_frontend* fe,
f.tuner = 0; f.tuner = 0;
f.type = V4L2_TUNER_DIGITAL_TV; f.type = V4L2_TUNER_DIGITAL_TV;
f.frequency = params->frequency / 1000 * 16 / 1000; f.frequency = params->frequency / 1000 * 16 / 1000;
saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG,&on); i2c_transfer(&dev->i2c_adap, &msg, 1);
saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f); saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f);
saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG,&off); msg.buf = on;
i2c_transfer(&dev->i2c_adap, &msg, 1);
pinnacle_antenna_pwr(dev, antenna_pwr); pinnacle_antenna_pwr(dev, antenna_pwr);
......
...@@ -580,9 +580,10 @@ int tda8290_init(struct i2c_client *c) ...@@ -580,9 +580,10 @@ int tda8290_init(struct i2c_client *c)
int tda8290_probe(struct i2c_client *c) int tda8290_probe(struct i2c_client *c)
{ {
unsigned char soft_reset[] = { 0x00, 0x00 }; unsigned char soft_reset[] = { 0x00, 0x00 };
unsigned char easy_mode_b[] = { 0x01, 0x02 }; unsigned char easy_mode_b[] = { 0x01, 0x02 };
unsigned char easy_mode_g[] = { 0x01, 0x04 }; unsigned char easy_mode_g[] = { 0x01, 0x04 };
unsigned char restore_9886[] = { 0x00, 0xd6, 0x30 };
unsigned char addr_dto_lsb = 0x07; unsigned char addr_dto_lsb = 0x07;
unsigned char data; unsigned char data;
...@@ -599,6 +600,7 @@ int tda8290_probe(struct i2c_client *c) ...@@ -599,6 +600,7 @@ int tda8290_probe(struct i2c_client *c)
return 0; return 0;
} }
} }
i2c_master_send(c, restore_9886, 3);
return -1; return -1;
} }
......
...@@ -713,8 +713,9 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg) ...@@ -713,8 +713,9 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
struct v4l2_frequency *f = arg; struct v4l2_frequency *f = arg;
switch_v4l2(); switch_v4l2();
if (V4L2_TUNER_RADIO == f->type && if ((V4L2_TUNER_RADIO == f->type && V4L2_TUNER_RADIO != t->mode)
V4L2_TUNER_RADIO != t->mode) { || (V4L2_TUNER_DIGITAL_TV == f->type
&& V4L2_TUNER_DIGITAL_TV != t->mode)) {
if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY") if (set_mode (client, t, f->type, "VIDIOC_S_FREQUENCY")
== EINVAL) == EINVAL)
return 0; return 0;
......
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