diff --git a/drivers/media/dvb/dvb-usb/af9035.c b/drivers/media/dvb/dvb-usb/af9035.c index 9503b2d440e6030d89477287f2926b2a7e92cbfc..e822706629db114ffad42f3c6bab647f1a442571 100644 --- a/drivers/media/dvb/dvb-usb/af9035.c +++ b/drivers/media/dvb/dvb-usb/af9035.c @@ -663,52 +663,68 @@ static int af9035_read_mac_address_it9135(struct dvb_usb_device *d, u8 mac[6]) } static int af9035_fc0011_tuner_callback(struct dvb_usb_device *d, - int cmd, int arg) + int cmd, int arg) { - int err; + int ret; switch (cmd) { case FC0011_FE_CALLBACK_POWER: /* Tuner enable */ - err = af9035_wr_reg_mask(d, 0xd8eb, 1, 1); - if (err) - return err; - err = af9035_wr_reg_mask(d, 0xd8ec, 1, 1); - if (err) - return err; - err = af9035_wr_reg_mask(d, 0xd8ed, 1, 1); - if (err) - return err; + ret = af9035_wr_reg_mask(d, 0xd8eb, 1, 1); + if (ret < 0) + goto err; + + ret = af9035_wr_reg_mask(d, 0xd8ec, 1, 1); + if (ret < 0) + goto err; + + ret = af9035_wr_reg_mask(d, 0xd8ed, 1, 1); + if (ret < 0) + goto err; + /* LED */ - err = af9035_wr_reg_mask(d, 0xd8d0, 1, 1); - if (err) - return err; - err = af9035_wr_reg_mask(d, 0xd8d1, 1, 1); - if (err) - return err; + ret = af9035_wr_reg_mask(d, 0xd8d0, 1, 1); + if (ret < 0) + goto err; + + ret = af9035_wr_reg_mask(d, 0xd8d1, 1, 1); + if (ret < 0) + goto err; + usleep_range(10000, 50000); break; case FC0011_FE_CALLBACK_RESET: - err = af9035_wr_reg(d, 0xd8e9, 1); - if (err) - return err; - err = af9035_wr_reg(d, 0xd8e8, 1); - if (err) - return err; - err = af9035_wr_reg(d, 0xd8e7, 1); - if (err) - return err; + ret = af9035_wr_reg(d, 0xd8e9, 1); + if (ret < 0) + goto err; + + ret = af9035_wr_reg(d, 0xd8e8, 1); + if (ret < 0) + goto err; + + ret = af9035_wr_reg(d, 0xd8e7, 1); + if (ret < 0) + goto err; + usleep_range(10000, 20000); - err = af9035_wr_reg(d, 0xd8e7, 0); - if (err) - return err; + + ret = af9035_wr_reg(d, 0xd8e7, 0); + if (ret < 0) + goto err; + usleep_range(10000, 20000); break; default: - return -EINVAL; + ret = -EINVAL; + goto err; } return 0; + +err: + pr_debug("%s: failed=%d\n", __func__, ret); + + return ret; } static int af9035_tuner_callback(struct dvb_usb_device *d, int cmd, int arg)