Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 330589
b: refs/heads/master
c: e48b2a6
h: refs/heads/master
i:
  330587: 6b7006c
v: v3
  • Loading branch information
Antti Palosaari authored and Mauro Carvalho Chehab committed Aug 4, 2012
1 parent 42e8b56 commit f910af9
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 33 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e80e9af3086674bdd2d65c09557c7d0df8f30f99
refs/heads/master: e48b2a68617cfb7881e1c5e420e1a992b1e60e89
78 changes: 46 additions & 32 deletions trunk/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,9 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff)
struct dvb_usb_adapter *adap = dvbdmxfeed->demux->priv;
int newfeedcount, ret;

if (adap == NULL)
return -ENODEV;

if ((adap->active_fe < 0) ||
(adap->active_fe >= adap->num_frontends_initialized)) {
return -EINVAL;
if (adap == NULL || adap->active_fe < 0) {
ret = -ENODEV;
goto err;
}

newfeedcount = adap->feedcount + (onoff ? 1 : -1);
Expand Down Expand Up @@ -168,6 +165,9 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff)

}
return 0;
err:
pr_debug("%s: failed=%d\n", __func__, ret);
return ret;
}

static int dvb_usb_start_feed(struct dvb_demux_feed *dvbdmxfeed)
Expand Down Expand Up @@ -264,56 +264,70 @@ int dvb_usb_adapter_dvb_exit(struct dvb_usb_adapter *adap)
return 0;
}

static int dvb_usb_set_active_fe(struct dvb_frontend *fe, int onoff)
static int dvb_usb_fe_wakeup(struct dvb_frontend *fe)
{
int ret;
struct dvb_usb_adapter *adap = fe->dvb->priv;

int ret = (adap->props.frontend_ctrl) ?
adap->props.frontend_ctrl(fe, onoff) : 0;
ret = dvb_usb_device_power_ctrl(adap->dev, 1);
if (ret < 0)
goto err;

if (ret < 0) {
err("frontend_ctrl request failed");
return ret;
if (adap->props.frontend_ctrl) {
ret = adap->props.frontend_ctrl(fe, 1);
if (ret < 0)
goto err;
}
if (onoff)
adap->active_fe = fe->id;

return 0;
}

static int dvb_usb_fe_wakeup(struct dvb_frontend *fe)
{
struct dvb_usb_adapter *adap = fe->dvb->priv;

dvb_usb_device_power_ctrl(adap->dev, 1);

dvb_usb_set_active_fe(fe, 1);
if (adap->fe_init[fe->id]) {
ret = adap->fe_init[fe->id](fe);
if (ret < 0)
goto err;
}

if (adap->fe_init[fe->id])
adap->fe_init[fe->id](fe);
adap->active_fe = fe->id;

return 0;
err:
pr_debug("%s: failed=%d\n", __func__, ret);
return ret;
}

static int dvb_usb_fe_sleep(struct dvb_frontend *fe)
{
int ret;
struct dvb_usb_adapter *adap = fe->dvb->priv;

if (adap->fe_sleep[fe->id])
adap->fe_sleep[fe->id](fe);
if (adap->fe_sleep[fe->id]) {
ret = adap->fe_sleep[fe->id](fe);
if (ret < 0)
goto err;
}

dvb_usb_set_active_fe(fe, 0);
if (adap->props.frontend_ctrl) {
ret = adap->props.frontend_ctrl(fe, 0);
if (ret < 0)
goto err;
}

return dvb_usb_device_power_ctrl(adap->dev, 0);
ret = dvb_usb_device_power_ctrl(adap->dev, 0);
if (ret < 0)
goto err;

adap->active_fe = -1;

return 0;
err:
pr_debug("%s: failed=%d\n", __func__, ret);
return ret;
}

int dvb_usb_adapter_frontend_init(struct dvb_usb_adapter *adap)
{
int ret, i;

memset(adap->fe, 0, sizeof(adap->fe));

adap->active_fe = 0;
adap->active_fe = -1;

if (adap->props.frontend_attach == NULL) {
err("strange: '%s' doesn't want to attach a frontend.",
Expand Down

0 comments on commit f910af9

Please sign in to comment.