mirror of https://gitee.com/openkylin/linux.git
[media] rtl28xxu: generalize streaming control
Move rtl2831u LED from streaming control to power control. It changes LED behavior slightly but who cares :) After that same streaming control can be used for both rtl2831u and rtl2832u. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
c01a35955f
commit
991452a21b
|
@ -823,43 +823,7 @@ static int rtl28xxu_init(struct dvb_usb_device *d)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl2831u_streaming_ctrl(struct dvb_frontend *fe , int onoff)
|
static int rtl28xxu_streaming_ctrl(struct dvb_frontend *fe , int onoff)
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
u8 buf[2], gpio;
|
|
||||||
struct dvb_usb_device *d = fe_to_d(fe);
|
|
||||||
|
|
||||||
dev_dbg(&d->udev->dev, "%s: onoff=%d\n", __func__, onoff);
|
|
||||||
|
|
||||||
ret = rtl28xx_rd_reg(d, SYS_GPIO_OUT_VAL, &gpio);
|
|
||||||
if (ret)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
if (onoff) {
|
|
||||||
buf[0] = 0x00;
|
|
||||||
buf[1] = 0x00;
|
|
||||||
gpio |= 0x04; /* LED on */
|
|
||||||
} else {
|
|
||||||
buf[0] = 0x10; /* stall EPA */
|
|
||||||
buf[1] = 0x02; /* reset EPA */
|
|
||||||
gpio &= (~0x04); /* LED off */
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = rtl28xx_wr_reg(d, SYS_GPIO_OUT_VAL, gpio);
|
|
||||||
if (ret)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
ret = rtl28xx_wr_regs(d, USB_EPA_CTL, buf, 2);
|
|
||||||
if (ret)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
err:
|
|
||||||
dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int rtl2832u_streaming_ctrl(struct dvb_frontend *fe , int onoff)
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
u8 buf[2];
|
u8 buf[2];
|
||||||
|
@ -908,11 +872,13 @@ static int rtl2831u_power_ctrl(struct dvb_usb_device *d, int onoff)
|
||||||
if (onoff) {
|
if (onoff) {
|
||||||
gpio |= 0x01; /* GPIO0 = 1 */
|
gpio |= 0x01; /* GPIO0 = 1 */
|
||||||
gpio &= (~0x10); /* GPIO4 = 0 */
|
gpio &= (~0x10); /* GPIO4 = 0 */
|
||||||
|
gpio |= 0x04; /* GPIO2 = 1, LED on */
|
||||||
sys0 = sys0 & 0x0f;
|
sys0 = sys0 & 0x0f;
|
||||||
sys0 |= 0xe0;
|
sys0 |= 0xe0;
|
||||||
} else {
|
} else {
|
||||||
gpio &= (~0x01); /* GPIO0 = 0 */
|
gpio &= (~0x01); /* GPIO0 = 0 */
|
||||||
gpio |= 0x10; /* GPIO4 = 1 */
|
gpio |= 0x10; /* GPIO4 = 1 */
|
||||||
|
gpio &= (~0x04); /* GPIO2 = 1, LED off */
|
||||||
sys0 = sys0 & (~0xc0);
|
sys0 = sys0 & (~0xc0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1224,7 +1190,7 @@ static const struct dvb_usb_device_properties rtl2831u_props = {
|
||||||
.tuner_attach = rtl2831u_tuner_attach,
|
.tuner_attach = rtl2831u_tuner_attach,
|
||||||
.init = rtl28xxu_init,
|
.init = rtl28xxu_init,
|
||||||
.get_rc_config = rtl2831u_get_rc_config,
|
.get_rc_config = rtl2831u_get_rc_config,
|
||||||
.streaming_ctrl = rtl2831u_streaming_ctrl,
|
.streaming_ctrl = rtl28xxu_streaming_ctrl,
|
||||||
|
|
||||||
.num_adapters = 1,
|
.num_adapters = 1,
|
||||||
.adapter = {
|
.adapter = {
|
||||||
|
@ -1246,7 +1212,7 @@ static const struct dvb_usb_device_properties rtl2832u_props = {
|
||||||
.tuner_attach = rtl2832u_tuner_attach,
|
.tuner_attach = rtl2832u_tuner_attach,
|
||||||
.init = rtl28xxu_init,
|
.init = rtl28xxu_init,
|
||||||
.get_rc_config = rtl2832u_get_rc_config,
|
.get_rc_config = rtl2832u_get_rc_config,
|
||||||
.streaming_ctrl = rtl2832u_streaming_ctrl,
|
.streaming_ctrl = rtl28xxu_streaming_ctrl,
|
||||||
|
|
||||||
.num_adapters = 1,
|
.num_adapters = 1,
|
||||||
.adapter = {
|
.adapter = {
|
||||||
|
|
Loading…
Reference in New Issue