hdtv usb dvb-t

Riconoscimento, installazione e configurazione delle periferiche.

Re: hdtv usb dvb-t

Messaggioda Xgaz » mercoledì 20 ottobre 2010, 10:17

Riproviamo con questo:

Codice: Seleziona tutto
hg clone http://linuxtv.org/hg/~anttip/tda18218


Codice: Seleziona tutto
cd tda18218


Codice: Seleziona tutto
make


...solito stop ed editing del .config dopo 10"

Codice: Seleziona tutto
make


Codice: Seleziona tutto
make install


Codice: Seleziona tutto
sudo reboot
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda Defonta » mercoledì 20 ottobre 2010, 15:16

niente.

Codice: Seleziona tutto
enrico@enrico-laptop:~/tda18218$ make
make -C /home/enrico/tda18218/v4l
make[1]: ingresso nella directory «/home/enrico/tda18218/v4l»
Updating/Creating .config
./scripts/make_myconfig.pl
make[1]: uscita dalla directory «/home/enrico/tda18218/v4l»
make[1]: ingresso nella directory «/home/enrico/tda18218/v4l»
perl scripts/make_config_compat.pl /lib/modules/2.6.35-22-generic/build ./.myconfig ./config-compat.h
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/home/enrico/tda18218/v4l/firmware'
make[2]: Leaving directory `/home/enrico/tda18218/v4l/firmware'
make -C firmware
make[2]: Entering directory `/home/enrico/tda18218/v4l/firmware'
make[2]: Nothing to be done for `default'.
make[2]: Leaving directory `/home/enrico/tda18218/v4l/firmware'
Kernel build directory is /lib/modules/2.6.35-22-generic/build
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/home/enrico/tda18218/v4l  modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /home/enrico/tda18218/v4l/tuner-simple.o
  CC [M]  /home/enrico/tda18218/v4l/tuner-types.o
  CC [M]  /home/enrico/tda18218/v4l/tda9887.o
  CC [M]  /home/enrico/tda18218/v4l/au8522_dig.o
  CC [M]  /home/enrico/tda18218/v4l/au8522_decoder.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-pci.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-usb.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-fe-tuner.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-i2c.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-sram.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-eeprom.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-misc.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-hw-filter.o
  CC [M]  /home/enrico/tda18218/v4l/flexcop-dma.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-driver.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-cards.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-if.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-risc.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-i2c.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-gpio.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-input.o
  CC [M]  /home/enrico/tda18218/v4l/bttv-audio-hook.o
  CC [M]  /home/enrico/tda18218/v4l/cpia2_v4l.o
  CC [M]  /home/enrico/tda18218/v4l/cpia2_usb.o
  CC [M]  /home/enrico/tda18218/v4l/cpia2_core.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-alsa-main.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-alsa-pcm.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-driver.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-cards.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-i2c.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-firmware.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-gpio.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-queue.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-streams.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-fileops.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-ioctl.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-controls.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-mailbox.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-audio.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-video.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-irq.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-av-core.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-av-audio.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-av-firmware.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-av-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-scb.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-dvb.o
  CC [M]  /home/enrico/tda18218/v4l/cx18-io.o
  CC [M]  /home/enrico/tda18218/v4l/cx231xx-audio.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-cards.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-video.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-core.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-i2c.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-dvb.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-417.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-ioctl.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-ir.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-input.o
  CC [M]  /home/enrico/tda18218/v4l/cx23888-ir.o
  CC [M]  /home/enrico/tda18218/v4l/netup-init.o
  CC [M]  /home/enrico/tda18218/v4l/cimax2.o
  CC [M]  /home/enrico/tda18218/v4l/netup-eeprom.o
  CC [M]  /home/enrico/tda18218/v4l/cx23885-f300.o
  CC [M]  /home/enrico/tda18218/v4l/cx25840-core.o
  CC [M]  /home/enrico/tda18218/v4l/cx25840-audio.o
  CC [M]  /home/enrico/tda18218/v4l/cx25840-firmware.o
  CC [M]  /home/enrico/tda18218/v4l/cx25840-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-video.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-vbi.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-mpeg.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-cards.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-core.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-i2c.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-tvaudio.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-dsp.o
  CC [M]  /home/enrico/tda18218/v4l/cx88-input.o
  CC [M]  /home/enrico/tda18218/v4l/dvbdev.o
  CC [M]  /home/enrico/tda18218/v4l/dmxdev.o
  CC [M]  /home/enrico/tda18218/v4l/dvb_demux.o
  CC [M]  /home/enrico/tda18218/v4l/dvb_filter.o
  CC [M]  /home/enrico/tda18218/v4l/dvb_ca_en50221.o
  CC [M]  /home/enrico/tda18218/v4l/dvb_frontend.o
  CC [M]  /home/enrico/tda18218/v4l/dvb_net.o
/home/enrico/tda18218/v4l/dvb_net.c:1178: warning: 'struct dev_mc_list' declared inside parameter list
/home/enrico/tda18218/v4l/dvb_net.c:1178: warning: its scope is only this definition or declaration, which is probably not what you want
/home/enrico/tda18218/v4l/dvb_net.c: In function 'dvb_set_mc_filter':
/home/enrico/tda18218/v4l/dvb_net.c:1185: error: dereferencing pointer to incomplete type
/home/enrico/tda18218/v4l/dvb_net.c: In function 'wq_set_multicast_list':
/home/enrico/tda18218/v4l/dvb_net.c:1225: error: 'struct net_device' has no member named 'mc_count'
/home/enrico/tda18218/v4l/dvb_net.c:1229: error: 'struct net_device' has no member named 'mc_count'
/home/enrico/tda18218/v4l/dvb_net.c:1235: error: 'struct net_device' has no member named 'mc_list'
/home/enrico/tda18218/v4l/dvb_net.c:1236: error: 'struct net_device' has no member named 'mc_count'
/home/enrico/tda18218/v4l/dvb_net.c:1237: error: dereferencing pointer to incomplete type
/home/enrico/tda18218/v4l/dvb_net.c:1237: warning: left-hand operand of comma expression has no effect
/home/enrico/tda18218/v4l/dvb_net.c:1237: warning: value computed is not used
/home/enrico/tda18218/v4l/dvb_net.c:1238: warning: passing argument 2 of 'dvb_set_mc_filter' from incompatible pointer type
/home/enrico/tda18218/v4l/dvb_net.c:1178: note: expected 'struct dev_mc_list *' but argument is of type 'struct dev_mc_list *'
/home/enrico/tda18218/v4l/dvb_net.c: In function 'dvb_net_setup':
/home/enrico/tda18218/v4l/dvb_net.c:1362: error: 'struct net_device' has no member named 'mc_count'
make[3]: *** [/home/enrico/tda18218/v4l/dvb_net.o] Errore 1
make[2]: *** [_module_/home/enrico/tda18218/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
make[1]: *** [default] Errore 2
make[1]: uscita dalla directory «/home/enrico/tda18218/v4l»
make: *** [all] Errore 2
enrico@enrico-laptop:~/tda18218$


andiamo avanti
Defonta
Prode Principiante
 
Messaggi: 59
Iscrizione: febbraio 2005

Re: hdtv usb dvb-t

Messaggioda Xgaz » mercoledì 20 ottobre 2010, 17:41

Stasera provo e ti dico...
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda Xgaz » giovedì 21 ottobre 2010, 1:48

Ma solo quell'errore la hai trovato!?

Io ne ho una tonnellata...sono due ore che sistemo file e non riesco a venirne fuori  :(

Per stasera mi fermo  (z)

Comunque per sistemare l'errore su dvb_net.c ->

Apri il file per editarlo:
Codice: Seleziona tutto
gedit /home/enrico/tda18218/v4l/dvb_net.c


Sulla riga 1225 circa, sostituisci:
Codice: Seleziona tutto
} else if (dev->mc_count) {
  con
Codice: Seleziona tutto
} else if (!netdev_mc_empty(dev)) {

più sotto:
Codice: Seleziona tutto
dev->name, dev->mc_count);
con 
Codice: Seleziona tutto
dev->name, netdev_mc_count(dev));

più sotto:
Codice: Seleziona tutto
mci < dev->mc_count;
con
Codice: Seleziona tutto
mci < netdev_mc_count(dev);

dalla riga 1362 circa, cancella la riga:
Codice: Seleziona tutto
dev->mc_count           = 0;


Salva e ->
Codice: Seleziona tutto
cd /home/enrico/tda18218/

Codice: Seleziona tutto
make

Codice: Seleziona tutto
make install


Fammi sapere se funziona che eventualmente domani preparo una patch...
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda Defonta » giovedì 21 ottobre 2010, 10:01

gli altri errori sui moduli li ho bypassati, ricercandoli nel config e mettendoli a n, così non li carica, ma questo non so come risolverlo.

anche dopo le modifiche che mi hai dato si bloccasempre li.

Codice: Seleziona tutto
enrico@enrico-laptop:~/tda18218$ make
make -C /home/enrico/tda18218/v4l
make[1]: ingresso nella directory «/home/enrico/tda18218/v4l»
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/home/enrico/tda18218/v4l/firmware'
make[2]: Leaving directory `/home/enrico/tda18218/v4l/firmware'
make -C firmware
make[2]: Entering directory `/home/enrico/tda18218/v4l/firmware'
make[2]: Nothing to be done for `default'.
make[2]: Leaving directory `/home/enrico/tda18218/v4l/firmware'
Kernel build directory is /lib/modules/2.6.35-22-generic/build
make -C /lib/modules/2.6.35-22-generic/build SUBDIRS=/home/enrico/tda18218/v4l  modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
  CC [M]  /home/enrico/tda18218/v4l/dvb_net.o
/home/enrico/tda18218/v4l/dvb_net.c:1178: warning: 'struct dev_mc_list' declared inside parameter list
/home/enrico/tda18218/v4l/dvb_net.c:1178: warning: its scope is only this definition or declaration, which is probably not what you want
/home/enrico/tda18218/v4l/dvb_net.c: In function 'dvb_set_mc_filter':
/home/enrico/tda18218/v4l/dvb_net.c:1185: error: dereferencing pointer to incomplete type
/home/enrico/tda18218/v4l/dvb_net.c: In function 'wq_set_multicast_list':
/home/enrico/tda18218/v4l/dvb_net.c:1235: error: 'struct net_device' has no member named 'mc_list'
/home/enrico/tda18218/v4l/dvb_net.c:1237: error: dereferencing pointer to incomplete type
/home/enrico/tda18218/v4l/dvb_net.c:1237: warning: left-hand operand of comma expression has no effect
/home/enrico/tda18218/v4l/dvb_net.c:1237: warning: value computed is not used
/home/enrico/tda18218/v4l/dvb_net.c:1238: warning: passing argument 2 of 'dvb_set_mc_filter' from incompatible pointer type
/home/enrico/tda18218/v4l/dvb_net.c:1178: note: expected 'struct dev_mc_list *' but argument is of type 'struct dev_mc_list *'
make[3]: *** [/home/enrico/tda18218/v4l/dvb_net.o] Errore 1
make[2]: *** [_module_/home/enrico/tda18218/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
make[1]: *** [default] Errore 2
make[1]: uscita dalla directory «/home/enrico/tda18218/v4l»
make: *** [all] Errore 2
enrico@enrico-laptop:~/tda18218$
Defonta
Prode Principiante
 
Messaggi: 59
Iscrizione: febbraio 2005

Re: hdtv usb dvb-t

Messaggioda Xgaz » giovedì 21 ottobre 2010, 10:32

Probabilmente hai bypassato troppe cose...

Io per non sbagliare punterei a compilare tutti i moduli del repository (tranne il firedtv che, si sa, è bacato)...

Con il kernel 2.6.35 ci sono però parecchie incongruenze nei drivers...

Pian pianino sto però risolvendo tutti gli errori...è un lavoraccio: devo modificare quasi ogni file dei sorgenti, ma penso che sia fattibile!

Quando ho finito (spero stasera), posto la patch e poi...ho bisogno di una cavia!  ;)
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda Defonta » giovedì 21 ottobre 2010, 14:19

Io ci sono
Defonta
Prode Principiante
 
Messaggi: 59
Iscrizione: febbraio 2005

Re: hdtv usb dvb-t

Messaggioda Xgaz » giovedì 21 ottobre 2010, 23:45

Ecco la nuova procedura...

Codice: Seleziona tutto
hg clone http://linuxtv.org/hg/~anttip/tda18218

Codice: Seleziona tutto
cd tda18218

Codice: Seleziona tutto
wget http://xgazza.altervista.org/Linux/DVB/Drivers/tda18218_2_6_35_22.diff

Codice: Seleziona tutto
patch -p1 < tda18218_2_6_35_22.diff

Codice: Seleziona tutto
make


dopo 10" fermare con CTRL+C

Codice: Seleziona tutto
sed -i 's/CONFIG_DVB_FIREDTV=m/CONFIG_DVB_FIREDTV=n/' ./v4l/.config

Codice: Seleziona tutto
make

Codice: Seleziona tutto
sudo make install


Da me si compila tutto... OT:e funziona anche il driver tm6000 per la mia Hauppauge 900H!
Ultima modifica di Xgaz il giovedì 13 gennaio 2011, 12:55, modificato 1 volta in totale.
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda Defonta » venerdì 22 ottobre 2010, 10:47

ho avuto sei warning, ma però tutto funziona, anche la scansione non è male, la sensibilità è decente, per ora l'ho provata solo con la sua antennina. funziona meglio con metv che con caffeine.

Sei un grande.
Defonta
Prode Principiante
 
Messaggi: 59
Iscrizione: febbraio 2005

Re: hdtv usb dvb-t

Messaggioda voltron81 » martedì 26 ottobre 2010, 0:41

Si è vero, così funziona la pennetta, ma sia con kaffeine (1.1) che con metv non trova alcun canale... fortuna che kaffeine ha mantenuto i canali dalla vecchia sintonizzazione...
Grazie 1000
MiK
voltron81
Prode Principiante
 
Messaggi: 61
Iscrizione: ottobre 2007

Re: hdtv usb dvb-t

Messaggioda Xgaz » martedì 26 ottobre 2010, 18:09

voltron81 ha scritto:Si è vero, così funziona la pennetta, ma sia con kaffeine (1.1) che con metv non trova alcun canale... fortuna che kaffeine ha mantenuto i canali dalla vecchia sintonizzazione...
Grazie 1000
MiK


Uhm... grave che non trovino i canali  ???

Hai provato con il nuovo firmware:

Codice: Seleziona tutto
sudo rm /lib/firmware/dvb-usb-af9015.fw

Codice: Seleziona tutto
cd /lib/firmware

Codice: Seleziona tutto
sudo wget http://palosaari.fi/linux/v4l-dvb/firmware/af9015/5.1.0.0/dvb-usb-af9015.fw

Codice: Seleziona tutto
sudo reboot
Ultima modifica di Xgaz il martedì 26 ottobre 2010, 20:58, modificato 1 volta in totale.
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda luiginux » giovedì 28 ottobre 2010, 17:18

nulla da fare anch'io ho la stessa pennetta, le ho provate tutte, ma continuo con dmesg continuo a ricevere:
Codice: Seleziona tutto
[ 1533.838043] usbcore: deregistering interface driver dvb_usb_af9015
[ 1934.238774] af9015: tuner id:179 not supported, please report!
[ 1934.238893] usbcore: registered new interface driver dvb_usb_af9015
[ 7561.000091] usbcore: deregistering interface driver dvb_usb_af9015
[ 7561.082454] af9015: tuner id:179 not supported, please report!
[ 7561.082517] usbcore: registered new interface driver dvb_usb_af9015

ubuntu 10.04 amd64 kernel 2.6.32-25-generic
pennetta technaxx stick s4
il mio lsusb dà:
Codice: Seleziona tutto
luigi@luigi-laptop:~$ lsusb
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0 stick
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 064e:a101 Suyin Corp. Acer CrystalEye Webcam
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
luigi@luigi-laptop:~$

grazie a tutti.
luiginux
Prode Principiante
 
Messaggi: 57
Iscrizione: gennaio 2007
Località: pisa

Re: hdtv usb dvb-t

Messaggioda luiginux » venerdì 29 ottobre 2010, 17:35

finalmente dopo innumerevoli tentativi ho risolto....
la mia procedura è stata la seguente:
ho scaricato l'ultimo driver disponibile ovvero "af9015-57e489f6538f"
mi sono spostato nella cartella "af9015-57e489f6538f" e pacciarla con la patch creata da valerio (che ringrazio), poi la consueta procedura del sudo make, stop dopo circa 10 secondi, modifica del file v4l/.confing, e poi ancora sudo make e poi sudo make install. Ho caricato l'ultimo firmware 5.1.0
poi riavvio e la pennetta è riconosciuta.
Codice: Seleziona tutto
luigi@luigi-laptop:~$ dmesg | tail -n 30
[   19.351735] HDA Intel 0000:00:07.0: PCI INT A -> Link[LAZA] -> GSI 21 (level, low) -> IRQ 21
[   19.351739] hda_intel: Disable MSI for Nvidia chipset
[   19.351793] HDA Intel 0000:00:07.0: setting latency timer to 64
[   19.617701] kvm: Nested Virtualization enabled
[   19.643084] dvb-usb: found a 'Afatech AF9015 DVB-T USB2.0 stick' in cold state, will try to load a firmware
[   19.643092] usb 2-1: firmware: requesting dvb-usb-af9015.fw
[   19.711393] svc: failed to register lockdv1 RPC service (errno 97).
[   19.712384] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[   19.721841] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[   19.749285] NFSD: starting 90-second grace period
[   19.792849] dvb-usb: found a 'Afatech AF9015 DVB-T USB2.0 stick' in warm state.
[   19.792921] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[   19.794021] DVB: registering new adapter (Afatech AF9015 DVB-T USB2.0 stick)
[   19.891591] af9013: firmware version:5.1.0
[   19.896096] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[   19.931342] NXP TDA18218 successfully identified.
[   19.931349] dvb-usb: Afatech AF9015 DVB-T USB2.0 stick successfully initialized and connected.
[   19.939129] usbcore: registered new interface driver dvb_usb_af9015
[   20.719399] ppdev: user-space parallel port driver
[   20.942098] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:07.0/input/input11
[   25.600960]   alloc irq_desc for 28 on node 0
[   25.600964]   alloc kstat_irqs on node 0
[   25.600974] forcedeth 0000:00:0a.0: irq 28 for MSI/MSI-X
[   28.126476] forcedeth 0000:00:0a.0: irq 28 for MSI/MSI-X
[   28.269015] forcedeth 0000:00:0a.0: irq 28 for MSI/MSI-X
[   30.322956] __ratelimit: 12 callbacks suppressed
[   30.322960] type=1503 audit(1288363344.735:16):  operation="open" pid=1771 parent=1755 profile="/sbin/dhclient3" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/var/lib/wicd/dhclient.conf"
[   38.570023] eth0: no IPv6 routers present
[   38.750020] eth1: no IPv6 routers present
[   81.510039] Clocksource tsc unstable (delta = -202365343 ns)
luigi@luigi-laptop:~$

questa è la patch:
Codice: Seleziona tutto
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/Kconfig
--- a/linux/drivers/media/common/tuners/Kconfig   Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/common/tuners/Kconfig   Thu Feb 25 17:21:11 2010 +0100
@@ -179,4 +179,11 @@ config MEDIA_TUNER_MAX2165
    help
      A driver for the silicon tuner MAX2165 from Maxim.
 
+config MEDIA_TUNER_TDA18218
+   tristate "NXP TDA18218 silicon tuner"
+   depends on VIDEO_MEDIA && I2C
+   default m if MEDIA_TUNER_CUSTOMISE
+   help
+     A driver for the silicon tuner TDA18218 from NXP.
+
 endif # MEDIA_TUNER_CUSTOMISE
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/Makefile
--- a/linux/drivers/media/common/tuners/Makefile   Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/common/tuners/Makefile   Thu Feb 25 17:21:11 2010 +0100
@@ -24,6 +24,7 @@ obj-$(CONFIG_MEDIA_TUNER_MXL5005S) += mxl5005s.o
 obj-$(CONFIG_MEDIA_TUNER_MXL5007T) += mxl5007t.o
 obj-$(CONFIG_MEDIA_TUNER_MC44S803) += mc44s803.o
 obj-$(CONFIG_MEDIA_TUNER_MAX2165) += max2165.o
+obj-$(CONFIG_MEDIA_TUNER_TDA18218) += tda18218.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218.c   Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,432 @@
+/*
+ *  Driver for NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "tda18218.h"
+#include "tda18218_priv.h"
+
+static int tda18218_write_reg(struct dvb_frontend *fe, u8 reg, u8 val)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   u8 buf[2] = { reg, val };
+   struct i2c_msg msg = { .addr = priv->cfg->i2c_address, .flags = 0,
+                .buf = buf, .len = 2 };
+   int ret;
+
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 1);
+   /* write register */
+   ret = i2c_transfer(priv->i2c, &msg, 1);
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 0);
+
+   if (ret != 1)
+      printk(KERN_WARNING "I2C write failed ret: %d reg: %02x\n", ret, reg);
+
+   return (ret == 1 ? 0 : ret);
+}
+
+static int tda18218_write_regs(struct dvb_frontend *fe, u8 reg,
+   u8 *val, u8 len)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   u8 buf[1+len];
+   struct i2c_msg msg = {
+      .addr = priv->cfg->i2c_address,
+      .flags = 0,
+      .len = sizeof(buf),
+      .buf = buf };
+
+   int ret;
+
+   buf[0] = reg;
+   memcpy(&buf[1], val, len);
+
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 1);
+   ret = i2c_transfer(priv->i2c, &msg, 1);
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 1);
+
+   if (ret != 1)
+      printk(KERN_WARNING "I2C write failed ret: %d reg: %02x len: %d\n", ret, reg, len);
+
+   return (ret == 1 ? 0 : ret);
+}
+
+static int tda18218_read_regs(struct dvb_frontend *fe)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   u8 *regs = priv->tda18218_regs;
+   u8 buf = 0x00;
+   int ret;
+   struct i2c_msg msg[] = {
+      { .addr = 0xc0, .flags = 0,
+        .buf = &buf, .len = 1 },
+      { .addr = 0xc0, .flags = I2C_M_RD,
+        .buf = regs, .len = 59 }
+   };
+
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 1);
+
+   /* read all registers */
+   ret = i2c_transfer(priv->i2c, msg, 2);
+
+   if (fe->ops.i2c_gate_ctrl)
+      fe->ops.i2c_gate_ctrl(fe, 0);
+
+   if (ret != 2)
+      printk(KERN_WARNING "I2C read failed ret: %d\n", ret);
+
+   return (ret == 2 ? 0 : ret);
+}
+
+static int tda18218_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   u8 *regs = priv->tda18218_regs;
+   u8 Fc, BP;
+   int i, ret;
+   u16 if1, bw;
+   u32 freq;
+
+   u8 paramsbuf[4][6] = {
+      { 0x03, 0x1a },
+      { 0x04, 0x0a },
+      { 0x01, 0x0f },
+      { 0x01, 0x0f },
+   };
+
+   u8 agcbuf[][2] = {
+      { 0x1a, 0x0e },
+      { 0x20, 0x60 },
+      { 0x23, 0x02 },
+      { 0x20, 0xa0 },
+      { 0x23, 0x09 },
+      { 0x20, 0xe0 },
+      { 0x23, 0x0c },
+      { 0x20, 0x40 },
+      { 0x23, 0x01 },
+      { 0x20, 0x80 },
+      { 0x23, 0x08 },
+      { 0x20, 0xc0 },
+      { 0x23, 0x0b },
+      { 0x24, 0x1c },
+      { 0x24, 0x0c },
+   };
+
+   switch (params->u.ofdm.bandwidth) {
+   case BANDWIDTH_6_MHZ:
+      bw = 6000;
+      Fc = 0;
+      break;
+   case BANDWIDTH_7_MHZ:
+      bw = 7000;
+      Fc = 1;
+      break;
+   case BANDWIDTH_8_MHZ:
+      bw = 8000;
+      Fc = 2;
+      break;
+   default:
+      printk(KERN_WARNING "Invalid bandwidth");
+      return -EINVAL;
+   }
+
+   if1 = bw / 2;
+
+   if((params->frequency >= 174000000) && (params->frequency < 188000000)) {
+      BP = 3;
+   }
+   else if((params->frequency >= 188000000) && (params->frequency < 253000000)) {
+      BP = 4;
+   }
+   else if((params->frequency >= 253000000) && (params->frequency < 343000000)) {
+      BP = 5;
+   }
+   else if((params->frequency >= 343000000) && (params->frequency <= 870000000)) {
+      BP = 6;
+   }
+   else {
+      printk(KERN_WARNING "Frequency out of range");
+      return -EINVAL;
+   }
+
+   freq = params->frequency;
+   freq /= 1000;
+   freq +=if1;
+   freq *= 16;
+
+   tda18218_read_regs(fe);
+
+   paramsbuf[0][2] = regs[0x1a] | BP;
+   paramsbuf[0][3] = regs[0x1b] & ~3;
+   paramsbuf[0][3] = regs[0x1b] | Fc;
+   paramsbuf[0][4] = regs[0x1c] | 0x0a;
+
+   paramsbuf[1][2] = freq >> 16;
+   paramsbuf[1][3] = freq >> 8;
+   paramsbuf[1][4] = (freq & 0xf0) | (regs[0x0c] & 0x0f);
+   paramsbuf[1][5] = 0xff;
+   paramsbuf[2][2] = regs[0x0f] | 0x40;
+   paramsbuf[3][2] = 0x09;
+
+   tda18218_write_reg(fe, 0x04, 0x03);
+
+   for(i = 0; i < ARRAY_SIZE(paramsbuf); i++) {
+
+      /* write registers */
+      ret = tda18218_write_regs(fe, paramsbuf[i][1], ¶msbuf[i][2], paramsbuf[i][0]);
+
+      if (ret)
+         goto error;
+   }
+   for(i = 0; i < ARRAY_SIZE(agcbuf); i++) {
+      tda18218_write_reg(fe, agcbuf[i][0], agcbuf[i][1]);
+   }
+
+   msleep(60);
+   i = 0;
+   while(i < 10) {
+      tda18218_read_regs(fe);
+      if((regs[0x01] & 0x60) == 0x60)
+         printk(KERN_INFO "We've got a lock!"); break;
+      msleep(20);
+      i++;
+   }
+
+   priv->bandwidth = params->u.ofdm.bandwidth;
+   priv->frequency = params->frequency;
+   return 0;
+error:
+   return ret;
+}
+
+static int tda18218_get_frequency(struct dvb_frontend *fe, u32 *frequency)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   *frequency = priv->frequency;
+   return 0;
+}
+
+static int tda18218_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
+{
+   struct tda18218_priv *priv = fe->tuner_priv;
+   *bandwidth = priv->bandwidth;
+   return 0;
+}
+
+static int tda18218_init(struct dvb_frontend *fe)
+{
+   int i;
+   int ret;
+
+   u8 initbuf[][18] = {
+      { 0x10, 0x05, 0x00, 0x00, 0xd0, 0x00, 0x40, 0x00, 0x00, 0x07, 0xff, 0x84, 0x09, 0x00, 0x13, 0x00, 0x00, 0x01 },
+      { 0x0b, 0x15, 0x84, 0x09, 0xf0, 0x19, 0x0a, 0x0e, 0x29, 0x98, 0x00, 0x00, 0x58 },
+      { 0x10, 0x24, 0x0c, 0x48, 0x85, 0xc9, 0xa7, 0x00, 0x00, 0x00, 0x30, 0x81, 0x80, 0x00, 0x39, 0x00, 0x8a, 0x00 },
+      { 0x07, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf6 },
+   };
+
+   u8 initbuf2[4];
+
+   for(i = 0; i < ARRAY_SIZE(initbuf); i++) {
+      /* write registers */
+      ret = tda18218_write_regs(fe, initbuf[i][1], &initbuf[i][2], initbuf[i][0]);
+
+      if (ret != 0) {
+         printk(KERN_ERR "init: ERROR: i2c_transfer returned: %d\n", ret);
+         return -EREMOTEIO;
+      }
+      if(i == 1) {
+         tda18218_write_reg(fe, 0x22, 0x8c);
+      }
+   }
+
+   tda18218_write_reg(fe, 0x05, 0x80);
+   tda18218_write_reg(fe, 0x05, 0x00);
+   tda18218_write_reg(fe, 0x05, 0x20);
+   tda18218_write_reg(fe, 0x05, 0x00);
+   tda18218_write_reg(fe, 0x27, 0xde);
+   tda18218_write_reg(fe, 0x17, 0xf8);
+   tda18218_write_reg(fe, 0x18, 0x0f);
+   tda18218_write_reg(fe, 0x1c, 0x8b);
+   tda18218_write_reg(fe, 0x29, 0x02);
+   tda18218_write_reg(fe, 0x19, 0x1a);
+   tda18218_write_reg(fe, 0x11, 0x13);
+
+   initbuf2[0] = 0x0a;
+   initbuf2[1] = 0x5c;
+   initbuf2[2] = 0xc6;
+   initbuf2[3] = 0x07;
+   tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+   tda18218_write_reg(fe, 0x0f, 0x49);
+   tda18218_write_reg(fe, 0x05, 0x40);
+   tda18218_write_reg(fe, 0x05, 0x00);
+   tda18218_write_reg(fe, 0x05, 0x20);
+   tda18218_write_reg(fe, 0x11, 0xed);
+   tda18218_write_reg(fe, 0x0f, 0x49);
+   tda18218_write_reg(fe, 0x19, 0x2a);
+   tda18218_write_reg(fe, 0x05, 0x58);
+   tda18218_write_reg(fe, 0x05, 0x18);
+   tda18218_write_reg(fe, 0x05, 0x38);
+   tda18218_write_reg(fe, 0x29, 0x03);
+   tda18218_write_reg(fe, 0x19, 0x1a);
+   tda18218_write_reg(fe, 0x11, 0x13);
+   initbuf2[0] = 0x0a;
+   initbuf2[1] = 0xbe;
+   initbuf2[2] = 0x6e;
+   initbuf2[3] = 0x07;
+   tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+   tda18218_write_reg(fe, 0x0f, 0x49);
+   tda18218_write_reg(fe, 0x05, 0x58);
+   tda18218_write_reg(fe, 0x05, 0x18);
+   tda18218_write_reg(fe, 0x05, 0x38);
+   tda18218_write_reg(fe, 0x11, 0xed);
+   tda18218_write_reg(fe, 0x0f, 0x49);
+   tda18218_write_reg(fe, 0x19, 0x2a);
+   tda18218_write_reg(fe, 0x05, 0x58);
+   tda18218_write_reg(fe, 0x05, 0x18);
+   tda18218_write_reg(fe, 0x05, 0x38);
+   tda18218_write_reg(fe, 0x19, 0x0a);
+   tda18218_write_reg(fe, 0x27, 0xc9);
+   tda18218_write_reg(fe, 0x11, 0x13);
+   initbuf2[0] = 0x17;
+   initbuf2[1] = 0xf0;
+   initbuf2[2] = 0x19;
+   initbuf2[3] = 0x00;
+   tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 2);
+   tda18218_write_reg(fe, 0x1c, 0x98);
+   tda18218_write_reg(fe, 0x29, 0x03);
+   tda18218_write_reg(fe, 0x2a, 0x00);
+   tda18218_write_reg(fe, 0x2a, 0x01);
+   tda18218_write_reg(fe, 0x2a, 0x02);
+   tda18218_write_reg(fe, 0x2a, 0x03);
+   tda18218_write_reg(fe, 0x1c, 0x98);
+   tda18218_write_reg(fe, 0x18, 0x19);
+   tda18218_write_reg(fe, 0x22, 0x9c);
+   tda18218_write_reg(fe, 0x1f, 0x58);
+   tda18218_write_reg(fe, 0x24, 0x0c);
+   tda18218_write_reg(fe, 0x1c, 0x88);
+   tda18218_write_reg(fe, 0x20, 0x10);
+   tda18218_write_reg(fe, 0x21, 0x4c);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x21, 0x48);
+   tda18218_write_reg(fe, 0x1f, 0x5b);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x1f, 0x59);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x1f, 0x5a);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x1f, 0x5f);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x1f, 0x5d);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x1f, 0x5e);
+   tda18218_write_reg(fe, 0x20, 0x00);
+   tda18218_write_reg(fe, 0x20, 0x60);
+   tda18218_write_reg(fe, 0x23, 0x02);
+   tda18218_write_reg(fe, 0x20, 0xa0);
+   tda18218_write_reg(fe, 0x23, 0x09);
+   tda18218_write_reg(fe, 0x20, 0xe0);
+   tda18218_write_reg(fe, 0x23, 0x0c);
+   tda18218_write_reg(fe, 0x20, 0x40);
+   tda18218_write_reg(fe, 0x23, 0x01);
+   tda18218_write_reg(fe, 0x20, 0x80);
+   tda18218_write_reg(fe, 0x23, 0x08);
+   tda18218_write_reg(fe, 0x20, 0xc0);
+   tda18218_write_reg(fe, 0x23, 0x0b);
+   tda18218_write_reg(fe, 0x1c, 0x98);
+   tda18218_write_reg(fe, 0x22, 0x8c);
+   initbuf2[0] = 0x17;
+   initbuf2[1] = 0xb0;
+   initbuf2[2] = 0x59;
+   initbuf2[3] = 0x00;
+   initbuf2[0] = 0x1a;
+   initbuf2[1] = 0x0e;
+   initbuf2[2] = 0x2a;
+   initbuf2[3] = 0x98;
+   tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+   initbuf2[0] = 0x17;
+   initbuf2[1] = 0xb0;
+   initbuf2[2] = 0x59;
+   initbuf2[3] = 0x00;
+   tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 2);
+   tda18218_write_reg(fe, 0x2d, 0x81);
+   tda18218_write_reg(fe, 0x29, 0x02);
+
+   return 0;
+}
+
+static int tda18218_release(struct dvb_frontend *fe)
+{
+   kfree(fe->tuner_priv);
+   fe->tuner_priv = NULL;
+   return 0;
+}
+
+static const struct dvb_tuner_ops tda18218_tuner_ops = {
+   .info = {
+      .name           = "NXP TDA18218",
+      .frequency_min  = TDA18218_MIN_FREQ,
+      .frequency_max  = TDA18218_MAX_FREQ,
+      .frequency_step = TDA18218_STEP,
+   },
+
+   .release       = tda18218_release,
+   .init          = tda18218_init,
+
+   .set_params = tda18218_set_params,
+   .get_frequency = tda18218_get_frequency,
+   .get_bandwidth = tda18218_get_bandwidth,
+};
+
+struct dvb_frontend * tda18218_attach(struct dvb_frontend *fe,
+                struct i2c_adapter *i2c,
+                struct tda18218_config *cfg)
+{
+   struct tda18218_priv *priv = NULL;
+
+   priv = kzalloc(sizeof(struct tda18218_priv), GFP_KERNEL);
+   if (priv == NULL)
+      return NULL;
+
+   priv->cfg = cfg;
+   priv->i2c = i2c;
+
+   fe->tuner_priv = priv;
+
+   tda18218_read_regs(fe);
+   if (priv->tda18218_regs[0x00] != 0xc0) {
+      printk(KERN_WARNING "Device is not a TDA18218!\n");
+      kfree(priv);
+      return NULL;
+   }
+
+   printk(KERN_INFO "NXP TDA18218 successfully identified.\n");
+   memcpy(&fe->ops.tuner_ops, &tda18218_tuner_ops,
+          sizeof(struct dvb_tuner_ops));
+
+   return fe;
+}
+EXPORT_SYMBOL(tda18218_attach);
+
+MODULE_DESCRIPTION("NXP TDA18218 silicon tuner driver");
+MODULE_AUTHOR("Lauris Ding <lding@gmx.de>");
+MODULE_VERSION("0.1");
+MODULE_LICENSE("GPL");
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218.h   Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,44 @@
+/*
+ *  Driver for  NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef TDA18218_H
+#define TDA18218_H
+
+#include "dvb_frontend.h"
+
+struct tda18218_config {
+   u8 i2c_address;
+};
+
+#if defined(CONFIG_MEDIA_TUNER_TDA18218) || (defined(CONFIG_MEDIA_TUNER_TDA18218_MODULE) && defined(MODULE))
+extern struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
+                 struct i2c_adapter *i2c,
+                 struct tda18218_config *cfg);
+#else
+static inline struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
+                   struct i2c_adapter *i2c,
+                   struct tda18218_config *cfg)
+{
+   printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+   return NULL;
+}
+#endif // CONFIG_MEDIA_TUNER_TDA18218
+
+#endif
\ No newline at end of file
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218_priv.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218_priv.h   Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,36 @@
+/*
+ *  Driver for NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef TDA18218_PRIV_H
+#define TDA18218_PRIV_H
+
+#define TDA18218_STEP         1000 /* 1 kHz */
+#define TDA18218_MIN_FREQ   174000000 /*   174 MHz */
+#define TDA18218_MAX_FREQ  864000000 /*  864 MHz */
+
+struct tda18218_priv {
+   u8 tda18218_regs[0x3b];
+   struct tda18218_config *cfg;
+   struct i2c_adapter *i2c;
+
+   u32 frequency;
+   u32 bandwidth;
+};
+
+#endif
diff -r 0f41fd7df85d linux/drivers/media/dvb/dvb-usb/af9015.c
--- a/linux/drivers/media/dvb/dvb-usb/af9015.c   Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/dvb-usb/af9015.c   Thu Feb 25 17:21:11 2010 +0100
@@ -30,6 +30,7 @@
 #include "tda18271.h"
 #include "mxl5005s.h"
 #include "mc44s803.h"
+#include "tda18218.h"
 
 static int dvb_usb_af9015_debug;
 module_param_named(debug, dvb_usb_af9015_debug, int, 0644);
@@ -991,6 +992,7 @@ static int af9015_read_config(struct usb_device *udev)
       case AF9013_TUNER_MT2060_2:
       case AF9013_TUNER_TDA18271:
       case AF9013_TUNER_QT1010A:
+      case AF9013_TUNER_TDA18218:
          af9015_af9013_config[i].rf_spec_inv = 1;
          break;
       case AF9013_TUNER_MXL5003D:
@@ -1002,9 +1004,6 @@ static int af9015_read_config(struct usb_device *udev)
          af9015_af9013_config[i].gpio[1] = AF9013_GPIO_LO;
          af9015_af9013_config[i].rf_spec_inv = 1;
          break;
-      case AF9013_TUNER_TDA18218:
-         warn("tuner NXP TDA18218 not supported yet");
-         return -ENODEV;
       default:
          warn("tuner id:%d not supported, please report!", val);
          return -ENODEV;
@@ -1207,6 +1206,10 @@ static struct mc44s803_config af9015_mc44s803_config = {
    .dig_out = 1,
 };
 
+static struct tda18218_config af9015_tda18218_config = {
+        .i2c_address = 0xc0,
+};
+
 static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
 {
    struct af9015_state *state = adap->dev->priv;
@@ -1237,6 +1240,10 @@ static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
       ret = dvb_attach(tda18271_attach, adap->fe, 0xc0, i2c_adap,
          &af9015_tda18271_config) == NULL ? -ENODEV : 0;
       break;
+   case AF9013_TUNER_TDA18218:
+      ret = dvb_attach(tda18218_attach, adap->fe, i2c_adap,
+         &af9015_tda18218_config) == NULL ? -ENODEV : 0;
+      break;
    case AF9013_TUNER_MXL5003D:
       ret = dvb_attach(mxl5005s_attach, adap->fe, i2c_adap,
          &af9015_mxl5003_config) == NULL ? -ENODEV : 0;
diff -r 0f41fd7df85d linux/drivers/media/dvb/frontends/af9013.c
--- a/linux/drivers/media/dvb/frontends/af9013.c   Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/frontends/af9013.c   Thu Feb 25 17:21:11 2010 +0100
@@ -487,6 +487,20 @@ static int af9013_set_freq_ctrl(struct af9013_state *state, fe_bandwidth_t bw)
             break;
          }
       }
+      else if(state->config.tuner == AF9013_TUNER_TDA18218) {
+         switch (bw) {
+         case BANDWIDTH_6_MHZ:
+            if_sample_freq = 3000000; /* 3 MHz */
+            break;
+         case BANDWIDTH_7_MHZ:
+            if_sample_freq = 3500000; /* 3.5 MHz */
+            break;
+         case BANDWIDTH_8_MHZ:
+         default:
+            if_sample_freq = 4000000; /* 4 MHz */
+            break;
+         }
+      }
 
       while (if_sample_freq > (adc_freq / 2))
          if_sample_freq = if_sample_freq - adc_freq;
@@ -1389,6 +1403,7 @@ static int af9013_init(struct dvb_frontend *fe)
       init = tuner_init_mt2060_2;
       break;
    case AF9013_TUNER_TDA18271:
+   case AF9013_TUNER_TDA18218:
       len = ARRAY_SIZE(tuner_init_tda18271);
       init = tuner_init_tda18271;
       break;
diff -r 0f41fd7df85d linux/drivers/media/dvb/frontends/af9013_priv.h
--- a/linux/drivers/media/dvb/frontends/af9013_priv.h   Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/frontends/af9013_priv.h   Thu Feb 25 17:21:11 2010 +0100
@@ -789,8 +789,9 @@ static struct regdesc tuner_init_unknown[] = {
    { 0x9bd9, 0, 8, 0x08 },
 };
 
-/* NXP TDA18271 tuner init
-   AF9013_TUNER_TDA18271   = 156 */
+/* NXP TDA18271 & TDA18218 tuner init
+   AF9013_TUNER_TDA18271   = 156
+   AF9013_TUNER_TDA18218   = 179 */
 static struct regdesc tuner_init_tda18271[] = {
    { 0x9bd5, 0, 8, 0x01 },
    { 0x9bd6, 0, 8, 0x04 },
luiginux
Prode Principiante
 
Messaggi: 57
Iscrizione: gennaio 2007
Località: pisa

Re: hdtv usb dvb-t

Messaggioda Xgaz » venerdì 29 ottobre 2010, 22:42

Scusa ma non ho seguito il forum in questi giorni e ho visto adesso la tua richiesta...

Con la tua versione di ubuntu ti avrei indicato infatti questa guida: http://forum.ubuntu-it.org/viewtopic.ph ... 8#p3029378

...che è la stessa che hai usato te e che avresti trovato anche leggendo qualche post precedente di questa stessa discussione: http://forum.ubuntu-it.org/viewtopic.ph ... 2#p3004642


Quindi, ricapitolando, per tutti i distratti e per chi non ha voglia di rileggersi 8 pagine di discussione:

Per UBUNTU 10.04 e PRECEDENTI (kernel <2.6.35)-> usate questa guida: http://forum.ubuntu-it.org/viewtopic.ph ... 8#p3029378

Per UBUNTU 10.10 (kernel >=2.6.35)-> usate questa guida: http://forum.ubuntu-it.org/viewtopic.ph ... 7#p3271707
+ installazione firmware: http://forum.ubuntu-it.org/viewtopic.ph ... 3#p3281283
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda atman » giovedì 4 novembre 2010, 16:22

Io ho seguito questa guida:
Ubuntu 10.10 and TerraTec Cinergy T Stick RC

e non ho incontrato alcun ostacolo (rimaneva solo da disattivare il modulo della firedtv nel .config).

Quando inserisco la Cinergy sembra che la riconosca, però né Kaffeine né me-tv la vedono  ???

Questo è il /var/log/messages relativo all'inserimento della chiavetta:

Codice: Seleziona tutto
Nov  4 15:06:10 luca kernel: [  280.440054] usb 1-4: new high speed USB device using ehci_hcd and address 2
Nov  4 15:06:10 luca kernel: [  280.577575] af9015_usb_probe: interface:0
Nov  4 15:06:10 luca kernel: [  280.577580] >>> 22 00 a1 00 18 00 01 01
Nov  4 15:06:10 luca kernel: [  280.579001] <<< 00 00 01
Nov  4 15:06:10 luca kernel: [  280.579010] >>> 22 01 a1 00 00 00 01 01
Nov  4 15:06:10 luca kernel: [  280.580468] <<< 01 00 2f
Nov  4 15:06:10 luca kernel: [  280.580476] >>> 22 02 a1 00 01 00 01 01
Nov  4 15:06:10 luca kernel: [  280.582661] <<< 02 00 34
Nov  4 15:06:10 luca kernel: [  280.582670] >>> 22 03 a1 00 02 00 01 01
Nov  4 15:06:10 luca kernel: [  280.584019] <<< 03 00 b3
Nov  4 15:06:10 luca kernel: [  280.584031] >>> 22 04 a1 00 03 00 01 01
Nov  4 15:06:10 luca kernel: [  280.585377] <<< 04 00 0b
Nov  4 15:06:10 luca kernel: [  280.585387] >>> 22 05 a1 00 04 00 01 01
Nov  4 15:06:10 luca kernel: [  280.587040] <<< 05 00 00
Nov  4 15:06:10 luca kernel: [  280.587050] >>> 22 06 a1 00 05 00 01 01
Nov  4 15:06:10 luca kernel: [  280.588636] <<< 06 00 00
Nov  4 15:06:10 luca kernel: [  280.588646] >>> 22 07 a1 00 06 00 01 01
Nov  4 15:06:10 luca kernel: [  280.590003] <<< 07 00 00
Nov  4 15:06:10 luca kernel: [  280.590013] >>> 22 08 a1 00 07 00 01 01
Nov  4 15:06:10 luca kernel: [  280.592241] <<< 08 00 00
Nov  4 15:06:10 luca kernel: [  280.592246] >>> 22 09 a1 00 08 00 01 01
Nov  4 15:06:10 luca kernel: [  280.593620] <<< 09 00 cd
Nov  4 15:06:10 luca kernel: [  280.948629] >>> 22 00 a1 00 ff 00 01 01
Nov  4 15:06:10 luca kernel: [  280.950000] <<< 00 00 ff
Nov  4 15:06:10 luca kernel: [  280.950085] af9015_eeprom_hash: eeprom sum=11f6768f
Nov  4 15:06:10 luca kernel: [  280.950089] af9015_read_config: IR mode:1
Nov  4 15:06:10 luca kernel: [  280.950093] >>> 22 01 a1 00 31 00 01 01
Nov  4 15:06:10 luca kernel: [  280.951497] <<< 01 00 00
Nov  4 15:06:10 luca kernel: [  280.951505] af9015_read_config: TS mode:0
Nov  4 15:06:10 luca kernel: [  280.951509] >>> 22 02 a1 00 36 00 01 01
Nov  4 15:06:10 luca kernel: [  280.952895] <<< 02 00 02
Nov  4 15:06:10 luca kernel: [  280.952905] af9015_read_config: [0] xtal:2 set adc_clock:28000
Nov  4 15:06:10 luca kernel: [  280.952909] >>> 22 03 a1 00 39 00 01 01
Nov  4 15:06:10 luca kernel: [  280.954244] <<< 03 00 0f
Nov  4 15:06:10 luca kernel: [  280.954252] >>> 22 04 a1 00 38 00 01 01
Nov  4 15:06:10 luca kernel: [  280.955620] <<< 04 00 a0
Nov  4 15:06:10 luca kernel: [  280.955631] af9015_read_config: [0] IF1:4000
Nov  4 15:06:10 luca kernel: [  280.955635] >>> 22 05 a1 00 3b 00 01 01
Nov  4 15:06:10 luca kernel: [  280.956995] <<< 05 00 00
Nov  4 15:06:10 luca kernel: [  280.957003] >>> 22 06 a1 00 3a 00 01 01
Nov  4 15:06:10 luca kernel: [  280.958370] <<< 06 00 00
Nov  4 15:06:10 luca kernel: [  280.958379] af9015_read_config: [0] MT2060 IF1:0
Nov  4 15:06:10 luca kernel: [  280.958382] >>> 22 07 a1 00 3c 00 01 01
Nov  4 15:06:10 luca kernel: [  280.959741] <<< 07 00 b3
Nov  4 15:06:10 luca kernel: [  280.959750] af9015_read_config: [0] tuner id:179
Nov  4 15:06:10 luca kernel: [  280.959929] af9015_usb_probe: interface:1
Ultima modifica di atman il venerdì 5 novembre 2010, 13:39, modificato 1 volta in totale.
Avatar utente
atman
Prode Principiante
 
Messaggi: 42
Iscrizione: novembre 2006

Re: hdtv usb dvb-t

Messaggioda atman » venerdì 5 novembre 2010, 11:31

Stamattina ho seguito la stessa guida sul mio pc portatile con kubuntu 10.10 (kernel 2.6.35-22 a 64bit).

Quì funziona tutto alla perfezione!  ;D

Questa cosa mi porta a pensare che nel pc desktop (sempre kubuntu 10.10 e stesso kernel ma a 32bit) c'è qualche casino pregresso.
Come posso fare per ripulire il sistema per poter ripartire la zero con l'installazione? (ovviamente senza formattare  :P )

EDIT

Ho rifatto tutto daccapo di nuovo. Ma questa volta... BINGO! funziona! :D

Il dmesg:
Codice: Seleziona tutto
[  797.284540] usb 1-4: new high speed USB device using ehci_hcd and address 2
[  797.788981] dvb-usb: found a 'TerraTec Cinergy T Stick RC' in cold state, will try to load a firmware
[  797.873609] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[  797.943616] dvb-usb: found a 'TerraTec Cinergy T Stick RC' in warm state.
[  797.943693] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[  797.944108] DVB: registering new adapter (TerraTec Cinergy T Stick RC)
[  797.996849] af9013: firmware version:5.1.0
[  798.000604] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[  798.011664] NXP TDA18218 successfully identified.
[  798.011669] af9015: Unknown tuner id:179
[  798.011674] dvb-usb: TerraTec Cinergy T Stick RC successfully initialized and connected.
atman@luca:~$
Ultima modifica di atman il venerdì 5 novembre 2010, 13:36, modificato 1 volta in totale.
Avatar utente
atman
Prode Principiante
 
Messaggi: 42
Iscrizione: novembre 2006

Re: hdtv usb dvb-t

Messaggioda Xgaz » sabato 6 novembre 2010, 0:27

atman ha scritto:Stamattina ho seguito la stessa guida sul mio pc portatile con kubuntu 10.10 (kernel 2.6.35-22 a 64bit).

Quì funziona tutto alla perfezione!  ;D

Questa cosa mi porta a pensare che nel pc desktop (sempre kubuntu 10.10 e stesso kernel ma a 32bit) c'è qualche casino pregresso.
Come posso fare per ripulire il sistema per poter ripartire la zero con l'installazione? (ovviamente senza formattare  :P )

EDIT

Ho rifatto tutto daccapo di nuovo. Ma questa volta... BINGO! funziona! :D

Il dmesg:
Codice: Seleziona tutto
[  797.284540] usb 1-4: new high speed USB device using ehci_hcd and address 2
[  797.788981] dvb-usb: found a 'TerraTec Cinergy T Stick RC' in cold state, will try to load a firmware
[  797.873609] dvb-usb: downloading firmware from file 'dvb-usb-af9015.fw'
[  797.943616] dvb-usb: found a 'TerraTec Cinergy T Stick RC' in warm state.
[  797.943693] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[  797.944108] DVB: registering new adapter (TerraTec Cinergy T Stick RC)
[  797.996849] af9013: firmware version:5.1.0
[  798.000604] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)...
[  798.011664] NXP TDA18218 successfully identified.
[  798.011669] af9015: Unknown tuner id:179
[  798.011674] dvb-usb: TerraTec Cinergy T Stick RC successfully initialized and connected.
atman@luca:~$



Sono contento per te...solo che in questa discussione stiamo parlando delle pennette HDTV USB DVB-T che si trovano nelle fiere , e non della Terratec T Stick...

Questa:
Immagine
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda luiginux » domenica 7 novembre 2010, 19:18

Ci risiamo.... oggi dopo l'aggiornamento del kernell alla versione 2.6.32-26, non viene riconosciuto il tuner DVB-T
premetto che dopo l'aggiornamento ho ricompilato il modulo con i comandi make e make install, e dopo aver verificato che il tutto non era andato a buon fine ho ripetuto l'intera procedura ma senza risultato.....
Come posso risolvere???
Grazie
Ultima modifica di luiginux il domenica 7 novembre 2010, 20:17, modificato 1 volta in totale.
luiginux
Prode Principiante
 
Messaggi: 57
Iscrizione: gennaio 2007
Località: pisa

Re: hdtv usb dvb-t

Messaggioda Xgaz » lunedì 8 novembre 2010, 0:51

luiginux ha scritto:Ci risiamo.... oggi dopo l'aggiornamento del kernell alla versione 2.6.32-26, non viene riconosciuto il tuner DVB-T
premetto che dopo l'aggiornamento ho ricompilato il modulo con i comandi make e make install, e dopo aver verificato che il tutto non era andato a buon fine ho ripetuto l'intera procedura ma senza risultato.....
Come posso risolvere???
Grazie


Procedura per kernel < 2.6.35 spero !? Vedi post #153 : http://forum.ubuntu-it.org/viewtopic.ph ... 6#p3287946

Atrimenti con kernel 2.6.32 dovrebbe funzionare anche questa: http://forum.ubuntu-it.org/viewtopic.ph ... 9#p3267509

Se escono errori alla fine del make -> postali...
Avatar utente
Xgaz
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 2568
Iscrizione: marzo 2009

Re: hdtv usb dvb-t

Messaggioda atman » lunedì 8 novembre 2010, 11:33

Xgaz ha scritto:Sono contento per te...solo che in questa discussione stiamo parlando delle pennette HDTV USB DVB-T che si trovano nelle fiere , e non della Terratec T Stick...


Ops.... scusate  ;)

Comunque la discussione mi ha dato spunti utili. Grazie  (good)
Avatar utente
atman
Prode Principiante
 
Messaggi: 42
Iscrizione: novembre 2006

PrecedenteSuccessiva

Torna a Driver e periferiche

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 7 ospiti