Message ID | 1406027388-10336-1-git-send-email-ljalvs@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 22.07.2014 13:09, Luis Alves wrote: > This patch fixes DVB-C reception. > Without setting the bandwidth to 8MHz the received stream gets corrupted. Hi Luis, I also wonder if some code should default to bandwidth of 8MHz if none is set. But then I grepped for it and found code in drivers/media/dvb-core/dvb_frontend.c to calculate the bandwidth depending on delivery system and symbol rate. So if this works, the bandwidth should already be correct. Regards Matthias -- 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
Em Tue, 22 Jul 2014 12:09:48 +0100 Luis Alves <ljalvs@gmail.com> escreveu: > This patch fixes DVB-C reception. > Without setting the bandwidth to 8MHz the received stream gets corrupted. > > Regards, > Luis > > Signed-off-by: Luis Alves <ljalvs@gmail.com> > --- > drivers/media/tuners/si2157.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c > index 6c53edb..e2de428 100644 > --- a/drivers/media/tuners/si2157.c > +++ b/drivers/media/tuners/si2157.c > @@ -245,6 +245,7 @@ static int si2157_set_params(struct dvb_frontend *fe) > break; > case SYS_DVBC_ANNEX_A: > delivery_system = 0x30; > + bandwidth = 0x08; Hmm... this patch looks wrong, as it will break DVB-C support where the bandwidth is lower than 6MHz. The DVB core sets c->bandwidth_hz for DVB-C based on the rolloff and the symbol rate. If this is not working for you, then something else is likely wrong. I suggest you to add a printk() there to show what's the value set at c->bandwidth_hz and what's the symbol rate that you're using. On DVB-C, the rolloff is fixed (1.15 for annex A and 1.13 for Annex C). Not sure if DVB-C2 allows selecting a different rolloff factor, nor if si2157 works with DVB-C2. > break; > default: > ret = -EINVAL; -- 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
That's right, A few days ago I also checked that with Antti. I've also had made some debugging and DVB core is in fact passing the correct bandwidth to the driver. But the true is that it doesn't work... The sample I have is a dvb-c mux using QAM128 @ 6 Mbaud (which results in 7MHz bw) using 7MHz filter value will make the TS stream unwatchable (lots of continuity errors). Can this be a hardware fault? All closed source drivers I've seen are hardcoding this value to 8MHz when working in dvb-c (easily seen on i2c sniffs). On Tue, Jul 22, 2014 at 5:10 PM, Mauro Carvalho Chehab <m.chehab@samsung.com> wrote: > Em Tue, 22 Jul 2014 12:09:48 +0100 > Luis Alves <ljalvs@gmail.com> escreveu: > >> This patch fixes DVB-C reception. >> Without setting the bandwidth to 8MHz the received stream gets corrupted. >> >> Regards, >> Luis >> >> Signed-off-by: Luis Alves <ljalvs@gmail.com> >> --- >> drivers/media/tuners/si2157.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c >> index 6c53edb..e2de428 100644 >> --- a/drivers/media/tuners/si2157.c >> +++ b/drivers/media/tuners/si2157.c >> @@ -245,6 +245,7 @@ static int si2157_set_params(struct dvb_frontend *fe) >> break; >> case SYS_DVBC_ANNEX_A: >> delivery_system = 0x30; >> + bandwidth = 0x08; > > Hmm... this patch looks wrong, as it will break DVB-C support where > the bandwidth is lower than 6MHz. > > The DVB core sets c->bandwidth_hz for DVB-C based on the rolloff and > the symbol rate. If this is not working for you, then something else > is likely wrong. > > I suggest you to add a printk() there to show what's the value set > at c->bandwidth_hz and what's the symbol rate that you're using. > > On DVB-C, the rolloff is fixed (1.15 for annex A and 1.13 for Annex C). > Not sure if DVB-C2 allows selecting a different rolloff factor, nor > if si2157 works with DVB-C2. > >> break; >> default: >> ret = -EINVAL; -- 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
Em Tue, 22 Jul 2014 17:28:07 +0100 Luis Alves <ljalvs@gmail.com> escreveu: > That's right, > A few days ago I also checked that with Antti. I've also had made some > debugging and DVB core is in fact passing the correct bandwidth to the > driver. > > But the true is that it doesn't work... > The sample I have is a dvb-c mux using QAM128 @ 6 Mbaud (which results > in 7MHz bw) using 7MHz filter value will make the TS stream > unwatchable (lots of continuity errors). > > Can this be a hardware fault? > All closed source drivers I've seen are hardcoding this value to 8MHz > when working in dvb-c (easily seen on i2c sniffs). Could be. Well, here, the DVB-C channel operators use 6MHz-spaced channels, with symbol rate equal to 5,217 Kbaud. I'll see if I can test it latter this week with a PCTV 292e. Regards, Mauro > > > On Tue, Jul 22, 2014 at 5:10 PM, Mauro Carvalho Chehab > <m.chehab@samsung.com> wrote: > > Em Tue, 22 Jul 2014 12:09:48 +0100 > > Luis Alves <ljalvs@gmail.com> escreveu: > > > >> This patch fixes DVB-C reception. > >> Without setting the bandwidth to 8MHz the received stream gets corrupted. > >> > >> Regards, > >> Luis > >> > >> Signed-off-by: Luis Alves <ljalvs@gmail.com> > >> --- > >> drivers/media/tuners/si2157.c | 1 + > >> 1 file changed, 1 insertion(+) > >> > >> diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c > >> index 6c53edb..e2de428 100644 > >> --- a/drivers/media/tuners/si2157.c > >> +++ b/drivers/media/tuners/si2157.c > >> @@ -245,6 +245,7 @@ static int si2157_set_params(struct dvb_frontend *fe) > >> break; > >> case SYS_DVBC_ANNEX_A: > >> delivery_system = 0x30; > >> + bandwidth = 0x08; > > > > Hmm... this patch looks wrong, as it will break DVB-C support where > > the bandwidth is lower than 6MHz. > > > > The DVB core sets c->bandwidth_hz for DVB-C based on the rolloff and > > the symbol rate. If this is not working for you, then something else > > is likely wrong. > > > > I suggest you to add a printk() there to show what's the value set > > at c->bandwidth_hz and what's the symbol rate that you're using. > > > > On DVB-C, the rolloff is fixed (1.15 for annex A and 1.13 for Annex C). > > Not sure if DVB-C2 allows selecting a different rolloff factor, nor > > if si2157 works with DVB-C2. > > > >> break; > >> default: > >> ret = -EINVAL; -- 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
On 07/22/2014 08:03 PM, Mauro Carvalho Chehab wrote: > Em Tue, 22 Jul 2014 17:28:07 +0100 > Luis Alves <ljalvs@gmail.com> escreveu: > >> That's right, >> A few days ago I also checked that with Antti. I've also had made some >> debugging and DVB core is in fact passing the correct bandwidth to the >> driver. >> >> But the true is that it doesn't work... >> The sample I have is a dvb-c mux using QAM128 @ 6 Mbaud (which results >> in 7MHz bw) using 7MHz filter value will make the TS stream >> unwatchable (lots of continuity errors). >> >> Can this be a hardware fault? >> All closed source drivers I've seen are hardcoding this value to 8MHz >> when working in dvb-c (easily seen on i2c sniffs). > > Could be. Well, here, the DVB-C channel operators use 6MHz-spaced channels, > with symbol rate equal to 5,217 Kbaud. I'll see if I can test it latter > this week with a PCTV 292e. I could also test it against modulator. However, that patch seems to be wrong for my eyes too. Generally speaking RF tuner needs to know bandwidth to adjust filters on signal path. For narrow suitable is filter, the better will be signal. If you have 7MHz filter then you definitely want use it in a case your carrier fits that space. Larger filter will work, but CNR is worse. If filter is too narrow and cuts your carrier, you are not able to receive mux or at lest performance drop notably. What is you channel raster? Could you tell center frequencies of all your DVB-C muxes? Could you test with 7MHz bw, but adjust center frequency off from nominal ~0-500kHz to see if it helps. regards Antti
diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c index 6c53edb..e2de428 100644 --- a/drivers/media/tuners/si2157.c +++ b/drivers/media/tuners/si2157.c @@ -245,6 +245,7 @@ static int si2157_set_params(struct dvb_frontend *fe) break; case SYS_DVBC_ANNEX_A: delivery_system = 0x30; + bandwidth = 0x08; break; default: ret = -EINVAL;
This patch fixes DVB-C reception. Without setting the bandwidth to 8MHz the received stream gets corrupted. Regards, Luis Signed-off-by: Luis Alves <ljalvs@gmail.com> --- drivers/media/tuners/si2157.c | 1 + 1 file changed, 1 insertion(+)