|
@@ -136,7 +136,7 @@ static int dvb_usb_init(struct dvb_usb_device *d)
|
|
|
if (d->priv == NULL) {
|
|
|
err("no memory for priv in 'struct dvb_usb_device'");
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* check the capabilities and set appropriate variables */
|
|
@@ -197,8 +197,13 @@ static struct dvb_usb_device_description * dvb_usb_find_device(struct usb_device
|
|
|
|
|
|
int dvb_usb_device_power_ctrl(struct dvb_usb_device *d, int onoff)
|
|
|
{
|
|
|
- if (d->powered == !onoff) {
|
|
|
- d->powered = onoff;
|
|
|
+ if (onoff)
|
|
|
+ d->powered++;
|
|
|
+ else
|
|
|
+ d->powered--;
|
|
|
+
|
|
|
+ if (d->powered == 0 || (onoff && d->powered == 1)) { // when switching from 1 to 0 or from 0 to 1
|
|
|
+ deb_info("power control: %d\n", onoff);
|
|
|
if (d->props.power_ctrl)
|
|
|
return d->props.power_ctrl(d, onoff);
|
|
|
}
|