mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 09:43:59 +08:00
V4L/DVB (4465): Attach the dib3000mc correctly
Flynn Marquardt found out that there is problem with the new dib3000mc-driver when using with the real dib3000mc. It resulted in a segfault. Fixed two things: use the correct I2C address and do not attach a tuner, when the demod was previously failing. Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
42afd06170
commit
5a19f31216
@ -230,15 +230,19 @@ static struct dib3000mc_config mod3000p_dib3000p_config = {
|
||||
|
||||
int dibusb_dib3000mc_frontend_attach(struct dvb_usb_device *d)
|
||||
{
|
||||
if (dib3000mc_attach(&d->i2c_adap, 1, DEFAULT_DIB3000P_I2C_ADDRESS, 0, &mod3000p_dib3000p_config, &d->fe) == 0) {
|
||||
if (d->priv != NULL) {
|
||||
struct dibusb_state *st = d->priv;
|
||||
st->ops.pid_parse = dib3000mc_pid_parse;
|
||||
st->ops.pid_ctrl = dib3000mc_pid_control;
|
||||
}
|
||||
return 0;
|
||||
int ret;
|
||||
if ((ret = dib3000mc_attach(&d->i2c_adap, 1, DEFAULT_DIB3000P_I2C_ADDRESS, 0, &mod3000p_dib3000p_config, &d->fe)) != 0)
|
||||
return ret;
|
||||
|
||||
if ((ret = dib3000mc_attach(&d->i2c_adap, 1, DEFAULT_DIB3000MC_I2C_ADDRESS, 0, &mod3000p_dib3000p_config, &d->fe)) != 0)
|
||||
return ret;
|
||||
|
||||
if (d->priv != NULL) {
|
||||
struct dibusb_state *st = d->priv;
|
||||
st->ops.pid_parse = dib3000mc_pid_parse;
|
||||
st->ops.pid_ctrl = dib3000mc_pid_control;
|
||||
}
|
||||
return -ENODEV;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(dibusb_dib3000mc_frontend_attach);
|
||||
|
||||
|
@ -191,12 +191,13 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
|
||||
d->fe = NULL;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* only attach the tuner if the demod is there */
|
||||
if (d->props.tuner_attach != NULL)
|
||||
d->props.tuner_attach(d);
|
||||
} else
|
||||
err("no frontend was attached by '%s'",d->desc->name);
|
||||
|
||||
if (d->props.tuner_attach != NULL)
|
||||
d->props.tuner_attach(d);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user