[3/3] rtl28xxu: change Astrometa DVB-T2 to always use hardware pid filters
Commit Message
Signed-off-by: Benjamin Larsson <benjamin@southpole.se>
---
drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 35 ++++++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
Comments
Moikka!
I did some testing and I cannot see reason to force hw pid filter for
that device. I assume you somehow think it does not work without
filtering, but I think it does.
I tested streaming with mn88472 demod DVB-C and DVB-T2 modes without
stream errors. DVB-T2 (live) datarate 45Mbps and DVB-C (modulator)
datarate 50Mbps. Maximum DVB-T2 (8MHz) datarate is 50Mbps - in a real
life it is bit less.
DVB-C
1fff 19870.47 p/s 29184.8 Kbps 207966 KB
TOT 34313.26 p/s 50397.6 Kbps 359127 KB
DVB-T2
1fff 2589.99 p/s 3804.0 Kbps 21400 KB
TOT 30346.18 p/s 44570.9 Kbps 250745 KB
So point me the reason hw PID filters need to be forced.
regards
Antti
On 11/29/2015 04:10 AM, Benjamin Larsson wrote:
> Signed-off-by: Benjamin Larsson <benjamin@southpole.se>
> ---
> drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 35 ++++++++++++++++++++++++++++++++-
> 1 file changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> index 5a503a6..74201ec 100644
> --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> @@ -1848,6 +1848,39 @@ static const struct dvb_usb_device_properties rtl28xxu_props = {
> },
> };
>
> +static const struct dvb_usb_device_properties rtl28xxp_props = {
> + .driver_name = KBUILD_MODNAME,
> + .owner = THIS_MODULE,
> + .adapter_nr = adapter_nr,
> + .size_of_priv = sizeof(struct rtl28xxu_dev),
> +
> + .identify_state = rtl28xxu_identify_state,
> + .power_ctrl = rtl28xxu_power_ctrl,
> + .frontend_ctrl = rtl28xxu_frontend_ctrl,
> + .i2c_algo = &rtl28xxu_i2c_algo,
> + .read_config = rtl28xxu_read_config,
> + .frontend_attach = rtl28xxu_frontend_attach,
> + .frontend_detach = rtl28xxu_frontend_detach,
> + .tuner_attach = rtl28xxu_tuner_attach,
> + .tuner_detach = rtl28xxu_tuner_detach,
> + .init = rtl28xxu_init,
> +
> + .get_rc_config = rtl28xxu_get_rc_config,
> + .num_adapters = 1,
> + .adapter = {
> + {
> + .caps = DVB_USB_ADAP_NEED_PID_FILTERING |
> + 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,
> +
> + .stream = DVB_USB_STREAM_BULK(0x81, 6, 8 * 512),
> + },
> + },
> +};
> +
> static const struct usb_device_id rtl28xxu_id_table[] = {
> /* RTL2831U devices: */
> { DVB_USB_DEVICE(USB_VID_REALTEK, USB_PID_REALTEK_RTL2831U,
> @@ -1919,7 +1952,7 @@ static const struct usb_device_id rtl28xxu_id_table[] = {
>
> /* RTL2832P devices: */
> { DVB_USB_DEVICE(USB_VID_HANFTEK, 0x0131,
> - &rtl28xxu_props, "Astrometa DVB-T2", NULL) },
> + &rtl28xxp_props, "Astrometa DVB-T2", NULL) },
> { DVB_USB_DEVICE(0x5654, 0xca42,
> &rtl28xxu_props, "GoTView MasterHD 3", NULL) },
> { }
>
On 12/20/2015 04:36 AM, Antti Palosaari wrote:
> Moikka!
> I did some testing and I cannot see reason to force hw pid filter for
> that device. I assume you somehow think it does not work without
> filtering, but I think it does.
>
[... proof that I was wrong ...]
>
> So point me the reason hw PID filters need to be forced.
The only reason would be that I suspected that high rates would not be
possible over the bridge and that this was the default mode for the
binary driver but as you proved that the bridge is able to support the
rate this patch can be nacked.
>
> regards
> Antti
MvH
Benjamin Larsson
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
@@ -1848,6 +1848,39 @@ static const struct dvb_usb_device_properties rtl28xxu_props = {
},
};
+static const struct dvb_usb_device_properties rtl28xxp_props = {
+ .driver_name = KBUILD_MODNAME,
+ .owner = THIS_MODULE,
+ .adapter_nr = adapter_nr,
+ .size_of_priv = sizeof(struct rtl28xxu_dev),
+
+ .identify_state = rtl28xxu_identify_state,
+ .power_ctrl = rtl28xxu_power_ctrl,
+ .frontend_ctrl = rtl28xxu_frontend_ctrl,
+ .i2c_algo = &rtl28xxu_i2c_algo,
+ .read_config = rtl28xxu_read_config,
+ .frontend_attach = rtl28xxu_frontend_attach,
+ .frontend_detach = rtl28xxu_frontend_detach,
+ .tuner_attach = rtl28xxu_tuner_attach,
+ .tuner_detach = rtl28xxu_tuner_detach,
+ .init = rtl28xxu_init,
+
+ .get_rc_config = rtl28xxu_get_rc_config,
+ .num_adapters = 1,
+ .adapter = {
+ {
+ .caps = DVB_USB_ADAP_NEED_PID_FILTERING |
+ 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,
+
+ .stream = DVB_USB_STREAM_BULK(0x81, 6, 8 * 512),
+ },
+ },
+};
+
static const struct usb_device_id rtl28xxu_id_table[] = {
/* RTL2831U devices: */
{ DVB_USB_DEVICE(USB_VID_REALTEK, USB_PID_REALTEK_RTL2831U,
@@ -1919,7 +1952,7 @@ static const struct usb_device_id rtl28xxu_id_table[] = {
/* RTL2832P devices: */
{ DVB_USB_DEVICE(USB_VID_HANFTEK, 0x0131,
- &rtl28xxu_props, "Astrometa DVB-T2", NULL) },
+ &rtl28xxp_props, "Astrometa DVB-T2", NULL) },
{ DVB_USB_DEVICE(0x5654, 0xca42,
&rtl28xxu_props, "GoTView MasterHD 3", NULL) },
{ }