Enable common interface.
Change-Id: I0931d79f066b444125c83f322fcf459d8cdb7166
diff --git a/drivers/media/dvb/dvb-usb/sc100.c b/drivers/media/dvb/dvb-usb/sc100.c
index 2905f27..4d15869 100644
--- a/drivers/media/dvb/dvb-usb/sc100.c
+++ b/drivers/media/dvb/dvb-usb/sc100.c
@@ -70,7 +70,8 @@
<< (LNB_CONTROL_REGISTER_1_ ## field ## _ ## SHIFT); \
}
-struct i2c_adapter *i2c_adap;
+struct i2c_adapter *sc100_i2c_adap;
+struct usb_device *sc100_udev;
static int sc100_read_mac_address(struct dvb_usb_device *d, u8 mac[6])
{
@@ -86,7 +87,7 @@
deb_info("%s: [W] R:0x%02x, V:0x%02x", __func__, reg, data);
- ret = i2c_transfer(i2c_adap, &msg, 1);
+ ret = i2c_transfer(sc100_i2c_adap, &msg, 1);
if (ret != 1) {
err("%s: [W] R:0x%02x, V:0x02x, E:%d", __func__, reg, data, ret);
return -EREMOTEIO;
@@ -104,7 +105,7 @@
{ .addr = LNB_I2C_ADDRESS, .flags = 0, .buf = b0, .len = 1 },
{ .addr = LNB_I2C_ADDRESS, .flags = I2C_M_RD, .buf = b1, .len = 1 }
};
- ret = i2c_transfer(i2c_adap, msg, 2);
+ ret = i2c_transfer(sc100_i2c_adap, msg, 2);
if (ret != 2) {
err("%s: [R] R:0x%x, E:%d", __func__, reg, ret);
@@ -161,12 +162,19 @@
return sc100_writereg(LNB_CONTROL_REGISTER_1, lnb_reg);
}
+static int sc100_set_ts_params(struct dvb_frontend* fe, int is_punctured)
+{
+ return usb_control_msg(sc100_udev, usb_sndctrlpipe(sc100_udev,0),
+ 0xa4, USB_TYPE_VENDOR, 0, 0, 0, 0, 5000);
+}
+
static struct dvbsky_m88rs6000_config sc100_config = {
.demod_address = 0x69,
- .ci_mode = 0,
+ .ci_mode = 2,
.pin_ctrl = 0x80,
.ts_mode = 0,
.tuner_readstops = 1,
+ .set_ts_params = sc100_set_ts_params,
};
static struct dvb_usb_device_properties sc100_properties;
@@ -174,9 +182,9 @@
static int sc100_frontend_attach(struct dvb_usb_adapter *d)
{
/* Initializes i2c adapter when the frontend is attached. */
- i2c_adap = i2c_get_adapter(0);
+ sc100_i2c_adap = i2c_get_adapter(0);
d->fe_adap[0].fe = dvb_attach(dvbsky_m88rs6000_attach, &sc100_config,
- i2c_adap);
+ sc100_i2c_adap);
if (d->fe_adap[0].fe != NULL) {
d->fe_adap[0].fe->ops.set_tone = sc100_set_tone;
d->fe_adap[0].fe->ops.set_voltage = sc100_set_voltage;
@@ -231,6 +239,7 @@
static int sc100_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
+ sc100_udev = interface_to_usbdev(intf);
if (0 == dvb_usb_device_init(intf, &sc100_properties,
THIS_MODULE, NULL, adapter_nr))
return 0;
diff --git a/drivers/media/dvb/frontends/dvbsky_m88rs6000.c b/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
index 73f64fd..b23bca9 100644
--- a/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
+++ b/drivers/media/dvb/frontends/dvbsky_m88rs6000.c
@@ -1279,6 +1279,8 @@
/* set ts clock */
if(state->config->ci_mode == 0)
ts_clk = 7000;
+ else if(state->config->ci_mode == 2)
+ ts_clk = 16000;
else
ts_clk = 8000;