All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0
@ 2012-08-21 23:56 Antti Palosaari
  2012-08-21 23:56 ` [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug Antti Palosaari
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Antti Palosaari @ 2012-08-21 23:56 UTC (permalink / raw)
  To: linux-media; +Cc: Antti Palosaari

Stream did not start anymore after stream was stopped once.

Following error can be seen, xhci_hcd
WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.

usb_clear_halt for streaming endpoint helps.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index d2b1505..1ccb99b 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -834,6 +834,7 @@ static int rtl28xxu_streaming_ctrl(struct dvb_frontend *fe , int onoff)
 	if (onoff) {
 		buf[0] = 0x00;
 		buf[1] = 0x00;
+		usb_clear_halt(d->udev, usb_rcvbulkpipe(d->udev, 0x81));
 	} else {
 		buf[0] = 0x10; /* stall EPA */
 		buf[1] = 0x02; /* reset EPA */
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug
  2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
@ 2012-08-21 23:56 ` Antti Palosaari
  2012-09-01 13:54   ` poma
  2012-08-21 23:56 ` [PATCH 3/5] rtl2832: implement .get_frontend() Antti Palosaari
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Antti Palosaari @ 2012-08-21 23:56 UTC (permalink / raw)
  To: linux-media; +Cc: Antti Palosaari, Thomas Mair

This is workaround / partial fix.

rtl2832u_power_ctrl() and rtl2832u_frontend_attach() needs to
be go through carefully and fix properly. There is clearly
some logical errors when handling power-management ang GPIOs...

Signed-off-by: Antti Palosaari <crope@iki.fi>
Cc: Thomas Mair <thomas.mair86@googlemail.com>
---
 drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index 1ccb99b..c246c50 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -946,17 +946,6 @@ static int rtl2832u_power_ctrl(struct dvb_usb_device *d, int onoff)
 		if (ret)
 			goto err;
 
-		/* demod HW reset */
-		ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val);
-		if (ret)
-			goto err;
-		/* bit 5 to 0 */
-		val &= 0xdf;
-
-		ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val);
-		if (ret)
-			goto err;
-
 		ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val);
 		if (ret)
 			goto err;
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/5] rtl2832: implement .get_frontend()
  2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
  2012-08-21 23:56 ` [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug Antti Palosaari
@ 2012-08-21 23:56 ` Antti Palosaari
  2012-08-21 23:56 ` [PATCH 4/5] rtl2832: implement .read_snr() Antti Palosaari
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Antti Palosaari @ 2012-08-21 23:56 UTC (permalink / raw)
  To: linux-media; +Cc: Antti Palosaari, Thomas Mair

Copied from rtl2830.

Cc: Thomas Mair <thomas.mair86@googlemail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/rtl2832.c | 113 ++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c
index 18e1ae3..6e28444 100644
--- a/drivers/media/dvb-frontends/rtl2832.c
+++ b/drivers/media/dvb-frontends/rtl2832.c
@@ -636,6 +636,118 @@ err:
 	return ret;
 }
 
+static int rtl2832_get_frontend(struct dvb_frontend *fe)
+{
+	struct rtl2832_priv *priv = fe->demodulator_priv;
+	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
+	int ret;
+	u8 buf[3];
+
+	if (priv->sleeping)
+		return 0;
+
+	ret = rtl2832_rd_regs(priv, 0x3c, 3, buf, 2);
+	if (ret)
+		goto err;
+
+	ret = rtl2832_rd_reg(priv, 0x51, 3, &buf[2]);
+	if (ret)
+		goto err;
+
+	dbg("%s: TPS=%*ph", __func__, 3, buf);
+
+	switch ((buf[0] >> 2) & 3) {
+	case 0:
+		c->modulation = QPSK;
+		break;
+	case 1:
+		c->modulation = QAM_16;
+		break;
+	case 2:
+		c->modulation = QAM_64;
+		break;
+	}
+
+	switch ((buf[2] >> 2) & 1) {
+	case 0:
+		c->transmission_mode = TRANSMISSION_MODE_2K;
+		break;
+	case 1:
+		c->transmission_mode = TRANSMISSION_MODE_8K;
+	}
+
+	switch ((buf[2] >> 0) & 3) {
+	case 0:
+		c->guard_interval = GUARD_INTERVAL_1_32;
+		break;
+	case 1:
+		c->guard_interval = GUARD_INTERVAL_1_16;
+		break;
+	case 2:
+		c->guard_interval = GUARD_INTERVAL_1_8;
+		break;
+	case 3:
+		c->guard_interval = GUARD_INTERVAL_1_4;
+		break;
+	}
+
+	switch ((buf[0] >> 4) & 7) {
+	case 0:
+		c->hierarchy = HIERARCHY_NONE;
+		break;
+	case 1:
+		c->hierarchy = HIERARCHY_1;
+		break;
+	case 2:
+		c->hierarchy = HIERARCHY_2;
+		break;
+	case 3:
+		c->hierarchy = HIERARCHY_4;
+		break;
+	}
+
+	switch ((buf[1] >> 3) & 7) {
+	case 0:
+		c->code_rate_HP = FEC_1_2;
+		break;
+	case 1:
+		c->code_rate_HP = FEC_2_3;
+		break;
+	case 2:
+		c->code_rate_HP = FEC_3_4;
+		break;
+	case 3:
+		c->code_rate_HP = FEC_5_6;
+		break;
+	case 4:
+		c->code_rate_HP = FEC_7_8;
+		break;
+	}
+
+	switch ((buf[1] >> 0) & 7) {
+	case 0:
+		c->code_rate_LP = FEC_1_2;
+		break;
+	case 1:
+		c->code_rate_LP = FEC_2_3;
+		break;
+	case 2:
+		c->code_rate_LP = FEC_3_4;
+		break;
+	case 3:
+		c->code_rate_LP = FEC_5_6;
+		break;
+	case 4:
+		c->code_rate_LP = FEC_7_8;
+		break;
+	}
+
+	return 0;
+err:
+	dbg("%s: failed=%d", __func__, ret);
+	return ret;
+}
+
 static int rtl2832_read_status(struct dvb_frontend *fe, fe_status_t *status)
 {
 	struct rtl2832_priv *priv = fe->demodulator_priv;
@@ -749,6 +861,7 @@ static struct dvb_frontend_ops rtl2832_ops = {
 	.get_tune_settings = rtl2832_get_tune_settings,
 
 	.set_frontend = rtl2832_set_frontend,
+	.get_frontend = rtl2832_get_frontend,
 
 	.read_status = rtl2832_read_status,
 	.i2c_gate_ctrl = rtl2832_i2c_gate_ctrl,
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/5] rtl2832: implement .read_snr()
  2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
  2012-08-21 23:56 ` [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug Antti Palosaari
  2012-08-21 23:56 ` [PATCH 3/5] rtl2832: implement .get_frontend() Antti Palosaari
@ 2012-08-21 23:56 ` Antti Palosaari
  2012-08-21 23:56 ` [PATCH 5/5] rtl2832: implement .read_ber() Antti Palosaari
  2012-09-01 13:33 ` [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 poma
  4 siblings, 0 replies; 8+ messages in thread
From: Antti Palosaari @ 2012-08-21 23:56 UTC (permalink / raw)
  To: linux-media; +Cc: Antti Palosaari, Thomas Mair

Based rtl2830 implementation.

Cc: Thomas Mair <thomas.mair86@googlemail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/rtl2832.c | 52 +++++++++++++++++++++++++++++++++--
 1 file changed, 49 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c
index 6e28444..dad8ab5 100644
--- a/drivers/media/dvb-frontends/rtl2832.c
+++ b/drivers/media/dvb-frontends/rtl2832.c
@@ -19,6 +19,7 @@
  */
 
 #include "rtl2832_priv.h"
+#include "dvb_math.h"
 #include <linux/bitops.h>
 
 int rtl2832_debug;
@@ -355,7 +356,6 @@ err:
 
 }
 
-
 static int rtl2832_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
 {
 	int ret;
@@ -379,8 +379,6 @@ err:
 	return ret;
 }
 
-
-
 static int rtl2832_init(struct dvb_frontend *fe)
 {
 	struct rtl2832_priv *priv = fe->demodulator_priv;
@@ -780,6 +778,52 @@ err:
 	return ret;
 }
 
+static int rtl2832_read_snr(struct dvb_frontend *fe, u16 *snr)
+{
+	struct rtl2832_priv *priv = fe->demodulator_priv;
+	int ret, hierarchy, constellation;
+	u8 buf[2], tmp;
+	u16 tmp16;
+#define CONSTELLATION_NUM 3
+#define HIERARCHY_NUM 4
+	static const u32 snr_constant[CONSTELLATION_NUM][HIERARCHY_NUM] = {
+		{ 85387325, 85387325, 85387325, 85387325 },
+		{ 86676178, 86676178, 87167949, 87795660 },
+		{ 87659938, 87659938, 87885178, 88241743 },
+	};
+
+	/* reports SNR in resolution of 0.1 dB */
+
+	ret = rtl2832_rd_reg(priv, 0x3c, 3, &tmp);
+	if (ret)
+		goto err;
+
+	constellation = (tmp >> 2) & 0x03; /* [3:2] */
+	if (constellation > CONSTELLATION_NUM - 1)
+		goto err;
+
+	hierarchy = (tmp >> 4) & 0x07; /* [6:4] */
+	if (hierarchy > HIERARCHY_NUM - 1)
+		goto err;
+
+	ret = rtl2832_rd_regs(priv, 0x0c, 4, buf, 2);
+	if (ret)
+		goto err;
+
+	tmp16 = buf[0] << 8 | buf[1];
+
+	if (tmp16)
+		*snr = (snr_constant[constellation][hierarchy] -
+				intlog10(tmp16)) / ((1 << 24) / 100);
+	else
+		*snr = 0;
+
+	return 0;
+err:
+	dbg("%s: failed=%d", __func__, ret);
+	return ret;
+}
+
 static struct dvb_frontend_ops rtl2832_ops;
 
 static void rtl2832_release(struct dvb_frontend *fe)
@@ -864,6 +908,8 @@ static struct dvb_frontend_ops rtl2832_ops = {
 	.get_frontend = rtl2832_get_frontend,
 
 	.read_status = rtl2832_read_status,
+	.read_snr = rtl2832_read_snr,
+
 	.i2c_gate_ctrl = rtl2832_i2c_gate_ctrl,
 };
 
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/5] rtl2832: implement .read_ber()
  2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
                   ` (2 preceding siblings ...)
  2012-08-21 23:56 ` [PATCH 4/5] rtl2832: implement .read_snr() Antti Palosaari
@ 2012-08-21 23:56 ` Antti Palosaari
  2012-09-01 13:33 ` [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 poma
  4 siblings, 0 replies; 8+ messages in thread
From: Antti Palosaari @ 2012-08-21 23:56 UTC (permalink / raw)
  To: linux-media; +Cc: Antti Palosaari, Thomas Mair

Implementation taken from rtl2830.

Cc: Thomas Mair <thomas.mair86@googlemail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/rtl2832.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/media/dvb-frontends/rtl2832.c b/drivers/media/dvb-frontends/rtl2832.c
index dad8ab5..4d40b4f 100644
--- a/drivers/media/dvb-frontends/rtl2832.c
+++ b/drivers/media/dvb-frontends/rtl2832.c
@@ -824,6 +824,24 @@ err:
 	return ret;
 }
 
+static int rtl2832_read_ber(struct dvb_frontend *fe, u32 *ber)
+{
+	struct rtl2832_priv *priv = fe->demodulator_priv;
+	int ret;
+	u8 buf[2];
+
+	ret = rtl2832_rd_regs(priv, 0x4e, 3, buf, 2);
+	if (ret)
+		goto err;
+
+	*ber = buf[0] << 8 | buf[1];
+
+	return 0;
+err:
+	dbg("%s: failed=%d", __func__, ret);
+	return ret;
+}
+
 static struct dvb_frontend_ops rtl2832_ops;
 
 static void rtl2832_release(struct dvb_frontend *fe)
@@ -909,6 +927,7 @@ static struct dvb_frontend_ops rtl2832_ops = {
 
 	.read_status = rtl2832_read_status,
 	.read_snr = rtl2832_read_snr,
+	.read_ber = rtl2832_read_ber,
 
 	.i2c_gate_ctrl = rtl2832_i2c_gate_ctrl,
 };
-- 
1.7.11.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0
  2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
                   ` (3 preceding siblings ...)
  2012-08-21 23:56 ` [PATCH 5/5] rtl2832: implement .read_ber() Antti Palosaari
@ 2012-09-01 13:33 ` poma
  2012-09-01 13:50   ` Antti Palosaari
  4 siblings, 1 reply; 8+ messages in thread
From: poma @ 2012-09-01 13:33 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media

On 08/22/2012 01:56 AM, Antti Palosaari wrote:
> Stream did not start anymore after stream was stopped once.
> 
> Following error can be seen, xhci_hcd
> WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.
> 
> usb_clear_halt for streaming endpoint helps.
> 
> Signed-off-by: Antti Palosaari <crope@iki.fi>
> ---
>  drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> index d2b1505..1ccb99b 100644
> --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> @@ -834,6 +834,7 @@ static int rtl28xxu_streaming_ctrl(struct dvb_frontend *fe , int onoff)
>  	if (onoff) {
>  		buf[0] = 0x00;
>  		buf[1] = 0x00;
> +		usb_clear_halt(d->udev, usb_rcvbulkpipe(d->udev, 0x81));
>  	} else {
>  		buf[0] = 0x10; /* stall EPA */
>  		buf[1] = 0x02; /* reset EPA */
> 

After every soft/warm [re]boot only after first scandvb:
------------[ cut here ]------------
WARNING: at drivers/usb/host/ehci-hcd.c:1226
ehci_endpoint_reset+0x111/0x120()
Hardware name: M720-US3
clear_halt for a busy endpoint
Modules linked in: fc0012(O) rtl2832(O) dvb_usb_rtl28xxu(O) rtl2830(O)
dvb_usbv2(O) dvb_core(O) nvidia(PO) tvaudio(O) tda7432(O) msp3400(O)
tuner_simple(O) tuner_types(O) wm8775(O) snd_hda_codec_realtek
tda9887(O) tda8290(O) tuner(O) cx25840(O) snd_hda_intel snd_bt87x
bttv(O) ivtv(O) snd_hda_codec snd_hwdep tveeprom(O) cx2341x(O)
btcx_risc(O) snd_pcm snd_page_alloc snd_timer snd soundcore ppdev
videobuf_dma_sg(O) videobuf_core(O) v4l2_common(O) parport_serial
parport_pc parport videodev(O) edac_core media(O) i2c_nforce2 rc_core(O)
i2c_algo_bit microcode i2c_core edac_mce_amd vhost_net tun macvtap
macvlan kvm_amd kvm uinput binfmt_misc raid1 r8169 ata_generic pata_acpi
mii usb_storage skge pata_amd wmi sunrpc be2iscsi bnx2i cnic uio cxgb4i
cxgb4 cxgb3i cxgb3 mdio libcxgbi libiscsi_tcp qla4xxx iscsi_boot_sysfs
libiscsi scsi_transport_iscsi [last unloaded: scsi_wait_scan]
Pid: 1170, comm: scandvb Tainted: P           O 3.5.2-3.fc17.x86_64 #1
Call Trace:
 [<ffffffff810584bf>] warn_slowpath_common+0x7f/0xc0
 [<ffffffff810585b6>] warn_slowpath_fmt+0x46/0x50
 [<ffffffff81444a31>] ehci_endpoint_reset+0x111/0x120
 [<ffffffff8142c135>] usb_hcd_reset_endpoint+0x25/0x70
 [<ffffffff8142d468>] usb_reset_endpoint+0x28/0x40
 [<ffffffff8142e06e>] usb_clear_halt+0x6e/0x80
 [<ffffffffa0f2baed>] rtl28xxu_streaming_ctrl+0xad/0x110 [dvb_usb_rtl28xxu]
 [<ffffffffa0f50375>] dvb_usb_start_feed+0x235/0x440 [dvb_usbv2]
 [<ffffffff8115ca5d>] ? __vmalloc_node_range+0x17d/0x240
 [<ffffffffa0f111b9>] ? dvb_dmxdev_filter_start+0x2c9/0x3e0 [dvb_core]
 [<ffffffffa0f12b00>] dmx_section_feed_start_filtering+0xe0/0x180 [dvb_core]
 [<ffffffffa0f110fe>] dvb_dmxdev_filter_start+0x20e/0x3e0 [dvb_core]
 [<ffffffffa0f11945>] dvb_demux_do_ioctl+0x405/0x640 [dvb_core]
 [<ffffffffa0f11540>] ? dvb_dvr_do_ioctl+0x130/0x130 [dvb_core]
 [<ffffffffa0f0fa36>] dvb_usercopy+0x86/0x1d0 [dvb_core]
 [<ffffffff811976d1>] ? do_filp_open+0x41/0xa0
 [<ffffffffa0f0ffa5>] dvb_demux_ioctl+0x15/0x20 [dvb_core]
 [<ffffffff811996c9>] do_vfs_ioctl+0x99/0x580
 [<ffffffff812793da>] ? inode_has_perm.isra.31.constprop.61+0x2a/0x30
 [<ffffffff8127a9b7>] ? file_has_perm+0x97/0xb0
 [<ffffffff81199c49>] sys_ioctl+0x99/0xa0
 [<ffffffff81614969>] system_call_fastpath+0x16/0x1b
---[ end trace cce2913a24da6585 ]---

media_build
commit 420335f564c32517a791ecea3909af233925634d

Cheers,
poma


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0
  2012-09-01 13:33 ` [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 poma
@ 2012-09-01 13:50   ` Antti Palosaari
  0 siblings, 0 replies; 8+ messages in thread
From: Antti Palosaari @ 2012-09-01 13:50 UTC (permalink / raw)
  To: poma; +Cc: linux-media

On 09/01/2012 04:33 PM, poma wrote:
> On 08/22/2012 01:56 AM, Antti Palosaari wrote:
>> Stream did not start anymore after stream was stopped once.
>>
>> Following error can be seen, xhci_hcd
>> WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.
>>
>> usb_clear_halt for streaming endpoint helps.
>>
>> Signed-off-by: Antti Palosaari <crope@iki.fi>
>> ---
>>   drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
>> index d2b1505..1ccb99b 100644
>> --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
>> +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
>> @@ -834,6 +834,7 @@ static int rtl28xxu_streaming_ctrl(struct dvb_frontend *fe , int onoff)
>>   	if (onoff) {
>>   		buf[0] = 0x00;
>>   		buf[1] = 0x00;
>> +		usb_clear_halt(d->udev, usb_rcvbulkpipe(d->udev, 0x81));
>>   	} else {
>>   		buf[0] = 0x10; /* stall EPA */
>>   		buf[1] = 0x02; /* reset EPA */
>>
>
> After every soft/warm [re]boot only after first scandvb:
> ------------[ cut here ]------------
> WARNING: at drivers/usb/host/ehci-hcd.c:1226
> ehci_endpoint_reset+0x111/0x120()
> Hardware name: M720-US3
> clear_halt for a busy endpoint
> Modules linked in: fc0012(O) rtl2832(O) dvb_usb_rtl28xxu(O) rtl2830(O)
> dvb_usbv2(O) dvb_core(O) nvidia(PO) tvaudio(O) tda7432(O) msp3400(O)
> tuner_simple(O) tuner_types(O) wm8775(O) snd_hda_codec_realtek
> tda9887(O) tda8290(O) tuner(O) cx25840(O) snd_hda_intel snd_bt87x
> bttv(O) ivtv(O) snd_hda_codec snd_hwdep tveeprom(O) cx2341x(O)
> btcx_risc(O) snd_pcm snd_page_alloc snd_timer snd soundcore ppdev
> videobuf_dma_sg(O) videobuf_core(O) v4l2_common(O) parport_serial
> parport_pc parport videodev(O) edac_core media(O) i2c_nforce2 rc_core(O)
> i2c_algo_bit microcode i2c_core edac_mce_amd vhost_net tun macvtap
> macvlan kvm_amd kvm uinput binfmt_misc raid1 r8169 ata_generic pata_acpi
> mii usb_storage skge pata_amd wmi sunrpc be2iscsi bnx2i cnic uio cxgb4i
> cxgb4 cxgb3i cxgb3 mdio libcxgbi libiscsi_tcp qla4xxx iscsi_boot_sysfs
> libiscsi scsi_transport_iscsi [last unloaded: scsi_wait_scan]
> Pid: 1170, comm: scandvb Tainted: P           O 3.5.2-3.fc17.x86_64 #1
> Call Trace:
>   [<ffffffff810584bf>] warn_slowpath_common+0x7f/0xc0
>   [<ffffffff810585b6>] warn_slowpath_fmt+0x46/0x50
>   [<ffffffff81444a31>] ehci_endpoint_reset+0x111/0x120
>   [<ffffffff8142c135>] usb_hcd_reset_endpoint+0x25/0x70
>   [<ffffffff8142d468>] usb_reset_endpoint+0x28/0x40
>   [<ffffffff8142e06e>] usb_clear_halt+0x6e/0x80
>   [<ffffffffa0f2baed>] rtl28xxu_streaming_ctrl+0xad/0x110 [dvb_usb_rtl28xxu]
>   [<ffffffffa0f50375>] dvb_usb_start_feed+0x235/0x440 [dvb_usbv2]
>   [<ffffffff8115ca5d>] ? __vmalloc_node_range+0x17d/0x240
>   [<ffffffffa0f111b9>] ? dvb_dmxdev_filter_start+0x2c9/0x3e0 [dvb_core]
>   [<ffffffffa0f12b00>] dmx_section_feed_start_filtering+0xe0/0x180 [dvb_core]
>   [<ffffffffa0f110fe>] dvb_dmxdev_filter_start+0x20e/0x3e0 [dvb_core]
>   [<ffffffffa0f11945>] dvb_demux_do_ioctl+0x405/0x640 [dvb_core]
>   [<ffffffffa0f11540>] ? dvb_dvr_do_ioctl+0x130/0x130 [dvb_core]
>   [<ffffffffa0f0fa36>] dvb_usercopy+0x86/0x1d0 [dvb_core]
>   [<ffffffff811976d1>] ? do_filp_open+0x41/0xa0
>   [<ffffffffa0f0ffa5>] dvb_demux_ioctl+0x15/0x20 [dvb_core]
>   [<ffffffff811996c9>] do_vfs_ioctl+0x99/0x580
>   [<ffffffff812793da>] ? inode_has_perm.isra.31.constprop.61+0x2a/0x30
>   [<ffffffff8127a9b7>] ? file_has_perm+0x97/0xb0
>   [<ffffffff81199c49>] sys_ioctl+0x99/0xa0
>   [<ffffffff81614969>] system_call_fastpath+0x16/0x1b
> ---[ end trace cce2913a24da6585 ]---
>
> media_build
> commit 420335f564c32517a791ecea3909af233925634d

That is already fixed, but I haven't sent patch yet. Currently last patch:
http://git.linuxtv.org/anttip/media_tree.git/shortlog/refs/heads/for_v3.7-10

Mabbe I will sent that fix out to mailing list right now.

regards
Antti

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug
  2012-08-21 23:56 ` [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug Antti Palosaari
@ 2012-09-01 13:54   ` poma
  0 siblings, 0 replies; 8+ messages in thread
From: poma @ 2012-09-01 13:54 UTC (permalink / raw)
  To: Antti Palosaari
  Cc: linux-media, Thomas Mair, David Basden, Zdenek Styblik,
	Mauro Carvalho Chehab

On 08/22/2012 01:56 AM, Antti Palosaari wrote:
> This is workaround / partial fix.
> 
> rtl2832u_power_ctrl() and rtl2832u_frontend_attach() needs to
> be go through carefully and fix properly. There is clearly
> some logical errors when handling power-management ang GPIOs...
> 
> Signed-off-by: Antti Palosaari <crope@iki.fi>
> Cc: Thomas Mair <thomas.mair86@googlemail.com>
> ---
>  drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 11 -----------
>  1 file changed, 11 deletions(-)
> 
> diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> index 1ccb99b..c246c50 100644
> --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
> @@ -946,17 +946,6 @@ static int rtl2832u_power_ctrl(struct dvb_usb_device *d, int onoff)
>  		if (ret)
>  			goto err;
>  
> -		/* demod HW reset */
> -		ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val);
> -		if (ret)
> -			goto err;
> -		/* bit 5 to 0 */
> -		val &= 0xdf;
> -
> -		ret = rtl28xx_wr_reg(d, SYS_DEMOD_CTL, val);
> -		if (ret)
> -			goto err;
> -
>  		ret = rtl28xx_rd_reg(d, SYS_DEMOD_CTL, &val);
>  		if (ret)
>  			goto err;
> 

Test: PASSED!
Working zapping on every hard/cold boot, soft/warm [re]boot and every
module(dvb_usb_rtl28xxu) [re]load.
Outside the box thinking!
Antti, thank you very much!

media_build
commit 420335f564c32517a791ecea3909af233925634d
1f4d:b803 G-Tek Electronics Group Lifeview LV5TDLX DVB-T [RTL2832U]

Cheers,
poma



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-09-01 13:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-08-21 23:56 [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 Antti Palosaari
2012-08-21 23:56 ` [PATCH 2/5] rtl28xxu: fix rtl2832u module reload fails bug Antti Palosaari
2012-09-01 13:54   ` poma
2012-08-21 23:56 ` [PATCH 3/5] rtl2832: implement .get_frontend() Antti Palosaari
2012-08-21 23:56 ` [PATCH 4/5] rtl2832: implement .read_snr() Antti Palosaari
2012-08-21 23:56 ` [PATCH 5/5] rtl2832: implement .read_ber() Antti Palosaari
2012-09-01 13:33 ` [PATCH 1/5] rtl28xxu: stream did not start after stop on USB3.0 poma
2012-09-01 13:50   ` Antti Palosaari

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.