Re: mb86a20s and cx23885

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Mon, 04 Mar 2013 21:00:17 -0300
Alfredo Jesús Delaiti <alfredodelaiti@xxxxxxxxxxxx> escreveu:

> Hi all
> 
> El 04/03/13 16:42, Mauro Carvalho Chehab escribió:
> > Em Sun, 3 Mar 2013 13:40:51 -0300
> > Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> escreveu:
> >
> >> Em Sun, 03 Mar 2013 11:50:25 -0300
> >> Alfredo Jesús Delaiti <alfredodelaiti@xxxxxxxxxxxx> escreveu:
> >>
> >>
> >>> The new data replacement in mb86a20s
> >>>
> >>> /*
> >>>    * Initialization sequence: Use whatevere default values that PV SBTVD
> >>>    * does on its initialisation, obtained via USB snoop
> >>>    */
> >>> static struct regdata mb86a20s_init[] = {
> >> Please test first my mb86a20s patchset. If it doesn't work, we'll need
> >> to dig into the differences.
> >>
> >> The better is to group these and reorder them to look like what's there
> >> at the driver, and send it like a diff. That would make a way easier to
> >> see what's different there.
> >>
> >> Anyway, it follows my comments about a few things that came into my eyes.
> >>
> >>>       { 0x09, 0x3a },
> >> No idea what's here, but it seems a worth trial to change it.
> > It controls inversion. I just pushed a patch that will let it handle
> > both normal and inverted spectrum. The DVB core will automatically
> > switch inversion during device tuning.
> 
> I test, but not work.
> 
> Before the latest patches, obtained as follows, for example:
> 
> dmesg
> [  397.076641] mb86a20s: mb86a20s_read_status:
> [  397.077129] mb86a20s: mb86a20s_read_status: val = X, status = 0xXX

I did a cleanup at the printk messages. Also, the debug ones now use
dynamic_printk. That means that they're disabled by default. They can
be enabled in runtime (and per-line). If you want to enable all messages,
you can do:

To enable all debug messages on mb86a20s:
	echo "file drivers/media/dvb-frontends/mb86a20s.c +p" > /sys/kernel/debug/dynamic_debug/control

To clean all debug messages
	echo "-p" > /sys/kernel/debug/dynamic_debug/control

To enable just the *ber* or *BER* ones:
	
	for i in $(cat /sys/kernel/debug/dynamic_debug/control|grep mb86a20s.c|grep -i ber|cut -d' ' -f 1|cut -d: -f2); do
		echo "file drivers/media/dvb-frontends/mb86a20s.c line $i +p" > /sys/kernel/debug/dynamic_debug/control
	done


> and now, I don't get anything. But if I use VLC I get this:
> 
> 
> dtvdebug: frontend status: 0x00
> 
> dtvdebug: frontend status: 0x03
> 
> dtvdebug: frontend status: 0x07
> 
> dtvdebug: frontend status: 0x01

Ok, that means that it is trying to sync Viterbi. You're better served if you
use dvbv5-scan[1], instead, as it will provide you more information (eventually
CNR - if it can keep status = 0x07 for a while, or if you have a zap file:

$ dvbv5-zap -I zap  -c ~/isdb_channel.conf "globo 1seg"
using demux '/dev/dvb/adapter0/demux0'
reading channels from file '/home/mchehab/isdb_channel.conf'
tuning to 485142857 Hz
video pid 529
  dvb_set_pesfilter 529
audio pid 530
  dvb_set_pesfilter 530
RF     (0x01) Signal= 0.00%
RF     (0x01) Signal= 0.00%
RF     (0x01) Signal= 0.00%
Carrier(0x03) Signal= 0.00%
RF     (0x01) Signal= 0.00%
RF     (0x01) Signal= 0.00%
Lock   (0x1f) Quality= Poor Signal= 6.25% C/N= 15.57dB UCB= 96965 postBER= 0 preBER= 3.08x10^-3 PER= 1.00
	  Layer A: Quality= Poor C/N= 15.52dB UCB= 4064 postBER= 0 preBER= 3.08x10^-3 PER= 1.00
	  Layer B: C/N= 30.00dB

I think I asked it already, but eventually, it is just antenna. 

[1] http://git.linuxtv.org/v4l-utils.git/blob/192d27e53f09924e9ec3150ae146df86da178f02:/utils/dvb/dvbv5-scan.c

> >>>       { 0x28, 0x2a },
> >>>       { 0x29, 0x00 },
> >>>       { 0x2a, 0xfd },
> >>>       { 0x2b, 0xc8 },
> >> Hmm... the above may explain why it is not working. This is calculated
> >> from the XTAL frequency, and IF (if different than 4MHz).
> >>
> >> Just changing it could fix the issue.
> > I also added a patch that allows using a different XTAL frequency.
> >
> > You can use the calculus there to convert from 0x00fdc8 into the XTAL
> > frequency, if you have the IF set by xc5000.
> I don't have the IF. How I can know the intermediate frequency?
> 
> Xtal near of xc5000 is 32.000MHz. Perhaps 32/8=4 -->IF

The easiest way to discover is to enable the mb86a20s debug:

[ 1443.564782] i2c i2c-3: mb86a20s_initfe: fclk=32571428, IF=4000000, clock reg=0x00ff80
[ 1443.566781] i2c i2c-3: mb86a20s_initfe: IF=4000000, IF reg=0x3ee08f

The IF here come from the tuner, via ops.get_if_frequency().

> There are other 2 xtal of 16.000MHz and other of 28.636MHz.

> Xtal of mb86a20s is 32.571MHz.

That seems to be the standard xtal. 

> In total there are 4 xtal.
> 
> With mb86a20s changes made, the logs (i2c traffic) obtained are 
> different from those obtained with Windows
> 
> I have yet to thoroughly analyze 24 samples I took with the logic 
> analyzer and try to see your logic. This is going to take some time.
> 
> 
> Again thank you very much,
> 
> Alfredo


-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux