Skip to contentSkip to conversation

commit 9344:aa3a67b658e8 (DVB-Core update) breaks tuning of cx24123

linux-dvb Matthias Schwarzott 2 participants 4 messages Oct 27, 2008 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

Hi Manu, hi Steven!

It seems an update of dvb-core breaks tuning of cx24123.
After updating to latest v4l-dvb the nova-s plus card just did no longer lock to any channel. So I bisected it, and found this commit:

changeset:   9344:aa3a67b658e8
parent:      9296:e2a8b9b9c294
user:        Manu Abraham <[email protected]>
date:        Tue Oct 14 23:34:07 2008 +0400
summary:     DVB-Core update

http://linuxtv.org/hg/v4l-dvb/rev/aa3a67b658e8

It basically did update the dvb-kernel-thread and enhanced the code using get_frontend_algo.

The codepath when get_frontend_algo returns *_ALGO_HW stayed the same, only one line got removed: params = &fepriv->parameter

Just re-adding that line made my card working again. Either this was lost, or the last two lines using "params" should also be converted to directly use "&fepriv->parameters".

Regards
Matthias

linux/drivers/media/dvb/dvb-core/dvb_frontend.c +1 -0
@@ -584,6 +584,7 @@ restart:
 
 				if (fepriv->state & FESTATE_RETUNE) {
 					dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__);
+					params = &fepriv->parameters;
 					fepriv->state = FESTATE_TUNED;
 				}
 

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

Reviewed-by
#1 lore raw

Hi Mathias,

Quoted 17 lines · Matthias Schwarzott

Hi Manu, hi Steven!

It seems an update of dvb-core breaks tuning of cx24123.
After updating to latest v4l-dvb the nova-s plus card just did no longer lock to any channel. So I bisected it, and found this commit:

changeset:   9344:aa3a67b658e8
parent:      9296:e2a8b9b9c294
user:        Manu Abraham <[email protected]>
date:        Tue Oct 14 23:34:07 2008 +0400
summary:     DVB-Core update

http://linuxtv.org/hg/v4l-dvb/rev/aa3a67b658e8

It basically did update the dvb-kernel-thread and enhanced the code using get_frontend_algo.

Quoted 6 lines

The codepath when get_frontend_algo returns *_ALGO_HW stayed the same, only one line got removed: params = &fepriv->parameter

Just re-adding that line made my card working again. Either this was lost, or the last two lines using "params" should also be converted to directly use "&fepriv->parameters".

True. In the port, the one line got missed out. Thanks for taking the time to look at it.

BTW, i don't see any reason why cx24123 should be using HW_ALGO as it is a standard demodulator. When we have a dedicated microcontroller employed to do that check, we might like to use HW_ALGO, since it would simply handle it. Not in the case of standard demodulators. As an example i could say cinergyT2, dst etc would be candidates for HW_ALGO, where tuning is offloaded to a onboard microcontroller.

But overall, the fix looks fine though, for the devices that make use of HW_ALGO

Please do have a Signed-off-by line so that it can be applied.

Thanks,
Manu

linux/drivers/media/dvb/dvb-core/dvb_frontend.c restart: · line 590

Quoted 12 lines

------------------------------------------------------------------------

linux/drivers/media/dvb/dvb-core/dvb_frontend.c +1 -0
@@ -584,6 +584,7 @@ restart:
 
 				if (fepriv->state & FESTATE_RETUNE) {
 					dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__);
+					params = &fepriv->parameters;
 					fepriv->state = FESTATE_TUNED;
 				}
 

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#2 lore raw
Quoted 2 lines · Manu Abraham

Hi Mathias,

Hi Manu!

Quoted 28 lines
Quoted 17 lines · Matthias Schwarzott

Hi Manu, hi Steven!

It seems an update of dvb-core breaks tuning of cx24123. After updating to latest v4l-dvb the nova-s plus card just did no longer lock to any channel. So I bisected it, and found this commit:

changeset:   9344:aa3a67b658e8
parent:      9296:e2a8b9b9c294
user:        Manu Abraham <[email protected]>
date:        Tue Oct 14 23:34:07 2008 +0400
summary:     DVB-Core update

http://linuxtv.org/hg/v4l-dvb/rev/aa3a67b658e8

It basically did update the dvb-kernel-thread and enhanced the code using get_frontend_algo.

Quoted 6 lines

The codepath when get_frontend_algo returns *_ALGO_HW stayed the same, only one line got removed: params = &fepriv->parameter

Just re-adding that line made my card working again. Either this was lost, or the last two lines using "params" should also be converted to directly use "&fepriv->parameters".

True. In the port, the one line got missed out. Thanks for taking the time to look at it.

Quoted 7 lines

BTW, i don't see any reason why cx24123 should be using HW_ALGO as it is a standard demodulator. When we have a dedicated microcontroller employed to do that check, we might like to use HW_ALGO, since it would simply handle it. Not in the case of standard demodulators. As an example i could say cinergyT2, dst etc would be candidates for HW_ALGO, where tuning is offloaded to a onboard microcontroller.

I dont have much insight in what these algo settings do. Only idea I have about this is: cx24123 may not need software zigzag.
If that gives a larger gain in lock-speed, then mt312 may also be a candidate for ALGO_HW as it can lock to signals not exactly centered to the IF. But I doubt, as that hw then should lock at the first try and not even trigger zigzag steps.

Quoted 6 lines

But overall, the fix looks fine though, for the devices that make use of HW_ALGO

Please do have a Signed-off-by line so that it can be applied.

Quoted 11 lines

Thanks,
Manu

Quoted 6 lines

------------------------------------------------------------------------

linux/drivers/media/dvb/dvb-core/dvb_frontend.c +0 -0
@@ -584,6 +584,7 @@ restart:
 
Quoted 5 lines

linux/drivers/media/dvb/dvb-core/dvb_frontend.c restart: · line 589

Quoted 5 lines
linux/drivers/media/dvb/dvb-core/dvb_frontend.c +1 -0
 				if (fepriv->state & FESTATE_RETUNE) {
 					dprintk("%s: Retune requested, FESTATE_RETUNE\n", __func__);
+					params = &fepriv->parameters;
 					fepriv->state = FESTATE_TUNED;
 				}

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#3 lore raw
Quoted 39 lines · Matthias Schwarzott
Quoted 2 lines · Manu Abraham

Hi Mathias,

Hi Manu!

Quoted 27 lines
Quoted 17 lines · Matthias Schwarzott

Hi Manu, hi Steven!

It seems an update of dvb-core breaks tuning of cx24123. After updating to latest v4l-dvb the nova-s plus card just did no longer lock to any channel. So I bisected it, and found this commit:

changeset:   9344:aa3a67b658e8
parent:      9296:e2a8b9b9c294
user:        Manu Abraham <[email protected]>
date:        Tue Oct 14 23:34:07 2008 +0400
summary:     DVB-Core update

http://linuxtv.org/hg/v4l-dvb/rev/aa3a67b658e8

It basically did update the dvb-kernel-thread and enhanced the code using get_frontend_algo.

Quoted 6 lines

The codepath when get_frontend_algo returns *_ALGO_HW stayed the same, only one line got removed: params = &fepriv->parameter

Just re-adding that line made my card working again. Either this was lost, or the last two lines using "params" should also be converted to directly use "&fepriv->parameters".

True. In the port, the one line got missed out. Thanks for taking the time to look at it.

Quoted 7 lines

BTW, i don't see any reason why cx24123 should be using HW_ALGO as it is a standard demodulator. When we have a dedicated microcontroller employed to do that check, we might like to use HW_ALGO, since it would simply handle it. Not in the case of standard demodulators. As an example i could say cinergyT2, dst etc would be candidates for HW_ALGO, where tuning is offloaded to a onboard microcontroller.

Quoted 2 lines

I dont have much insight in what these algo settings do. Only idea I have about this is: cx24123 may not need software zigzag.

Ok, should be fine, if that's the case. software zigzag is one thing, another is lock monitoring, ie: if LOCK fails, it should autotune by itself; similar to FE_CAN_RECOVER.

Though it brings the disadvantge to the cx24123 driver that it will not try to reacquire a LOCK when LOCK fails for some unreason such as a signal dropuot etc, when using HW_ALGO: might cause not to regain a LOCK, would be a side effect, if it is incapable of doing a hardware based LOCK monitor.

Quoted 4 lines

If that gives a larger gain in lock-speed, then mt312 may also be a candidate for ALGO_HW as it can lock to signals not exactly centered to the IF. But I doubt, as that hw then should lock at the first try and not even trigger zigzag steps.

I don't think the MT312 does support either of the mentioned. Or does it ? Didn't take the time to look at the datasheet.

Regards,
Manu

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb