Commit 79025a9e authored by Devin Heitmueller's avatar Devin Heitmueller Committed by Mauro Carvalho Chehab

V4L/DVB (9114): dib0700: fix bad assignment of dib0700_xc5000_tuner_callback after return call

Put callback definition before function return and cleanup callback:

Fix a bug where the xc5000 callback was being set *after* the
return call (essentially resulting in dead code).

Also cleanup the callback function to detect unknown commands.
Signed-off-by: default avatarDevin Heitmueller <devin.heitmueller@gmail.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent da703d62
...@@ -1181,11 +1181,16 @@ static int dib0700_xc5000_tuner_callback(void *priv, int component, ...@@ -1181,11 +1181,16 @@ static int dib0700_xc5000_tuner_callback(void *priv, int component,
{ {
struct dvb_usb_adapter *adap = priv; struct dvb_usb_adapter *adap = priv;
/* Reset the tuner */ if (command == XC5000_TUNER_RESET) {
dib0700_set_gpio(adap->dev, GPIO1, GPIO_OUT, 0); /* Reset the tuner */
msleep(330); /* from Windows USB trace */ dib0700_set_gpio(adap->dev, GPIO1, GPIO_OUT, 0);
dib0700_set_gpio(adap->dev, GPIO1, GPIO_OUT, 1); msleep(330); /* from Windows USB trace */
msleep(330); /* from Windows USB trace */ dib0700_set_gpio(adap->dev, GPIO1, GPIO_OUT, 1);
msleep(330); /* from Windows USB trace */
} else {
err("xc5000: unknown tuner callback command: %d\n", command);
return -EINVAL;
}
return 0; return 0;
} }
...@@ -1197,12 +1202,12 @@ static struct xc5000_config s5h1411_xc5000_tunerconfig = { ...@@ -1197,12 +1202,12 @@ static struct xc5000_config s5h1411_xc5000_tunerconfig = {
static int xc5000_tuner_attach(struct dvb_usb_adapter *adap) static int xc5000_tuner_attach(struct dvb_usb_adapter *adap)
{ {
/* FIXME: generalize & move to common area */
adap->fe->callback = dib0700_xc5000_tuner_callback;
return dvb_attach(xc5000_attach, adap->fe, &adap->dev->i2c_adap, return dvb_attach(xc5000_attach, adap->fe, &adap->dev->i2c_adap,
&s5h1411_xc5000_tunerconfig) &s5h1411_xc5000_tunerconfig)
== NULL ? -ENODEV : 0; == NULL ? -ENODEV : 0;
/* FIXME: generalize & move to common area */
adap->fe->callback = dib0700_xc5000_tuner_callback;
} }
/* DVB-USB and USB stuff follows */ /* DVB-USB and USB stuff follows */
......
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