diff options
Diffstat (limited to 'linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c')
-rw-r--r-- | linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c index 2a05108e2..1b75b7af0 100644 --- a/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c +++ b/linux/drivers/media/dvb/ttusb-dec/ttusb_dec.c @@ -105,6 +105,7 @@ struct ttusb_dec { u16 pid[DMX_PES_OTHER]; int hi_band; + int voltage; /* USB bits */ struct usb_device *udev; @@ -1354,6 +1355,7 @@ static int ttusb_dec_init_stb(struct ttusb_dec *dec) give the box */ switch (model) { case 0x00070008: + case 0x0007000c: ttusb_dec_set_model(dec, TTUSB_DEC3000S); break; case 0x00070009: @@ -1656,12 +1658,13 @@ static int ttusb_dec_3000s_frontend_ioctl(struct dvb_frontend *fe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; u32 freq; u32 sym_rate; u32 band; + u32 lnb_voltage; dprintk("%s: FE_SET_FRONTEND\n", __FUNCTION__); @@ -1677,6 +1680,8 @@ static int ttusb_dec_3000s_frontend_ioctl(struct dvb_frontend *fe, memcpy(&b[12], &sym_rate, sizeof(u32)); band = htonl(dec->hi_band ? LOF_HI : LOF_LO); memcpy(&b[24], &band, sizeof(u32)); + lnb_voltage = htonl(dec->voltage); + memcpy(&b[28], &lnb_voltage, sizeof(u32)); ttusb_dec_send_command(dec, 0x71, sizeof(b), b, NULL, NULL); @@ -1717,6 +1722,17 @@ static int ttusb_dec_3000s_frontend_ioctl(struct dvb_frontend *fe, case FE_SET_VOLTAGE: dprintk("%s: FE_SET_VOLTAGE\n", __FUNCTION__); + switch ((fe_sec_voltage_t) arg) { + case SEC_VOLTAGE_13: + dec->voltage = 13; + break; + case SEC_VOLTAGE_18: + dec->voltage = 18; + break; + default: + return -EINVAL; + break; + } break; default: |