Skip to content

Commit

Permalink
[media] rtl28xxu: add support for RTL2832U/RTL2832 PID filter
Browse files Browse the repository at this point in the history
RTL2832 demod integrated into RTL2832U has PID filter. PID filtering
is provided by rtl2832 demod driver. Add support for it.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  • Loading branch information
Antti Palosaari authored and Mauro Carvalho Chehab committed Feb 3, 2015
1 parent 4b01e01 commit e20b0cf
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions drivers/media/usb/dvb-usb-v2/rtl28xxu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1599,7 +1599,7 @@ static int rtl2832u_get_rc_config(struct dvb_usb_device *d,
#define rtl2832u_get_rc_config NULL
#endif

static int rtl28xxu_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff)
static int rtl2831u_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff)
{
struct dvb_usb_device *d = adap_to_d(adap);
struct rtl28xxu_priv *priv = d_to_priv(d);
Expand All @@ -1608,7 +1608,16 @@ static int rtl28xxu_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff)
return pdata->pid_filter_ctrl(adap->fe[0], onoff);
}

static int rtl28xxu_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid, int onoff)
static int rtl2832u_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff)
{
struct dvb_usb_device *d = adap_to_d(adap);
struct rtl28xxu_priv *priv = d_to_priv(d);
struct rtl2832_platform_data *pdata = &priv->rtl2832_platform_data;

return pdata->pid_filter_ctrl(adap->fe[0], onoff);
}

static int rtl2831u_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid, int onoff)
{
struct dvb_usb_device *d = adap_to_d(adap);
struct rtl28xxu_priv *priv = d_to_priv(d);
Expand All @@ -1617,6 +1626,15 @@ static int rtl28xxu_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid,
return pdata->pid_filter(adap->fe[0], index, pid, onoff);
}

static int rtl2832u_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid, int onoff)
{
struct dvb_usb_device *d = adap_to_d(adap);
struct rtl28xxu_priv *priv = d_to_priv(d);
struct rtl2832_platform_data *pdata = &priv->rtl2832_platform_data;

return pdata->pid_filter(adap->fe[0], index, pid, onoff);
}

static const struct dvb_usb_device_properties rtl2831u_props = {
.driver_name = KBUILD_MODNAME,
.owner = THIS_MODULE,
Expand All @@ -1639,8 +1657,8 @@ static const struct dvb_usb_device_properties rtl2831u_props = {
DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,

.pid_filter_count = 32,
.pid_filter_ctrl = rtl28xxu_pid_filter_ctrl,
.pid_filter = rtl28xxu_pid_filter,
.pid_filter_ctrl = rtl2831u_pid_filter_ctrl,
.pid_filter = rtl2831u_pid_filter,

.stream = DVB_USB_STREAM_BULK(0x81, 6, 8 * 512),
},
Expand All @@ -1667,6 +1685,13 @@ static const struct dvb_usb_device_properties rtl2832u_props = {
.num_adapters = 1,
.adapter = {
{
.caps = DVB_USB_ADAP_HAS_PID_FILTER |
DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,

.pid_filter_count = 32,
.pid_filter_ctrl = rtl2832u_pid_filter_ctrl,
.pid_filter = rtl2832u_pid_filter,

.stream = DVB_USB_STREAM_BULK(0x81, 6, 8 * 512),
},
},
Expand Down

0 comments on commit e20b0cf

Please sign in to comment.