Pagina 1 di 1

Integrazione driver Touchscreen nei kernel source [RISOLTO]

Inviato: mer 9 set 2009, 10:33
da tobeFrank
Salve a tutti, sono un nuovo utente slackware e sono tornato a Linux dopo qualche anno. Attualmente utilizzo Slackware 12.2 su un Samsung NC10 e ho la necessità di integrare i driver di un touchscreen all'interno dei sorgenti kernel (per l'operazione sto usando i sorgenti 2.6.27.31 e 2.6.15).

Ho a disposizione i driver della casa costruttrice che, a quanto scritto nel README sono stati compilati per il kernel 2.6.15. Insieme ai driver c'è anche una guida per eseguire l'installazione ma non è molto accurata...(voglio essere gentile).

Comunque i problemi che ho sono questi:

1) il kernel 2.6.15 una volta compilato, ancora prima di integrare i driver di cui ho bisogno, mi va in freeze durante il boot quando rileva il mouse, che dovrebbe essere un touchpad Synaptics, riconosciuto da altri kernel come un semplice mouse PS/2.

2) sul kernel 2.6.27.31 invece, visto che la prima compilazione non ha dato problemi, sono passato già all'integrazione vera e propria dei driver agendo nel seguente modo:

Ho copiato i driver del touchscreen nella directory linux-2.6.27.31/drivers/input/touchscreen e poi ho modificato i file Kconfig e Makefile presenti sempre nella stessa directory in modo da creare la corrispondente voce nel menu di xconfig (le modifiche da fare le avevo scritte sulla guida d'installazione dei driver).

Questa operazione sembra essere andata a buon fine perchè ho riconfigurato il kernel selezionando il supporto per il Touchscreen nel menu di xconfig senza problemi, ma quando vado a compilare l'immagine del kernel e arrivo ai miei driver,cosa che accade quasi subito, mi da errore ed esce dalla compilazione.


Qualcuno ha qualche idea su come risolvere la cosa? o una soluzione alternativa?

Immagino che se la casa costruttrice ha specificato che i driver sono per il 2.6.15 un motivo ci sarà, ma capita davvero così frequentemente che i driver compilati su un kernel non girino più su kernel successivi o precedenti? e se volessi riscriverli io quanto è complicato?

Offtopic: Ho anche un quesito più banale, giusto una curiosità per risparmiare tempo, se riconfiguro il kernel non cambiando i moduli, quando passo alla compilazione devo comunque ricompilare anche i moduli o posso ricompilare solo l'immagine del kernel?

Grazie mille per l'aiuto.

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mer 9 set 2009, 10:54
da Vic Steele
Prima di compilare un kernel di anni fa (con le sue conseguenze), hai controllato il menu di configurazione dei kernel più recenti?
Credo proprio che abbiano interrotto il rilascio sul sito ufficiale perché oggi non è più necessario (i moduli sono già integrati nei kernel maggiori del 2.6.15).

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mer 9 set 2009, 11:15
da tobeFrank
Si ho controllato i menu di configurazione e una piccola sezione touchscreen era già presente nella 2.6.15, ma il problema rimane, ho a disposizione solo quei driver e in qualche modo devo far funzionare questo touchscreen, in più sono obbligato a modificare i source perchè dovrò utilizzare il kernel da me compilato per realizzare una live che parta da smartcard, quindi non posso neanche caricarli come modulo (almeno credo).

I source li ho scaricati tutti tramite kernel.org (se è al rilascio dei source che ti riferivi).

L'unica soluzione alternativa che mi viene in mente è di cambiare touchscreen e di usarne uno già supportato di default dagli ultimi kernel...ma è da valutare come soluzione.

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mer 9 set 2009, 15:54
da 414N
Probabilmente alcune interfacce dei driver di periferica dal 2.6.15 agli attuali kernel sono cambiati.
Non ho capito se disponi dei sorgenti dei driver o meno. Nel caso tu li abbia, posta gli errori di compilazione con il kernel più recente che intendi usare. Magari con due smartellate li convinciamo ad andare.
Altrimenti la vedo dura...
tobeFrank ha scritto: Offtopic: Ho anche un quesito più banale, giusto una curiosità per risparmiare tempo, se riconfiguro il kernel non cambiando i moduli, quando passo alla compilazione devo comunque ricompilare anche i moduli o posso ricompilare solo l'immagine del kernel?
make è abbastanza intelligente da capire autonomamente cosa deve essere ricompilato o meno, percui, se disponi ancora di tutti i file oggetto creati durante la compilazione del kernel, make ricompilerà solo le parti che lo necessitano in base al cambio di configurazione che hai fatto.

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mer 9 set 2009, 21:35
da tobeFrank
Guarda io ho due file per il touchscreen, un .o e un .h, penso che siano i source ma non ne sono sicuro perchè è la prima volta che mi cimento in cose del genere (prima d'ora usavo linux al massimo come sitema operativo per i server e comunque in maniera abbastanza superficiale).

Questo è l'output della compilazione:

bash-3.1# cd /usr/src/linux-2.6.27.31
bash-3.1# make -j5 bzImage
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
CC drivers/input/touchscreen/tsusbhid.o
drivers/input/touchscreen/tsusbhid.c:19:35: error: linux/devfs_fs_kernel.h: No such file or directory
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_irq':
drivers/input/touchscreen/tsusbhid.c:111: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:111: error: (Each undeclared identifier is reported only once
drivers/input/touchscreen/tsusbhid.c:111: error: for each function it appears in.)
drivers/input/touchscreen/tsusbhid.c: In function 'touch_open':
drivers/input/touchscreen/tsusbhid.c:454: warning: assignment discards qualifiers from pointer target type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_register_chrdev':
drivers/input/touchscreen/tsusbhid.c:729: error: implicit declaration of function 'devfs_mk_cdev'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_unregister_chrdev':
drivers/input/touchscreen/tsusbhid.c:754: error: implicit declaration of function 'devfs_remove'
drivers/input/touchscreen/tsusbhid.c:738: warning: unused variable 'minor'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_probe':
drivers/input/touchscreen/tsusbhid.c:862: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:896: warning: passing argument 6 of 'usb_fill_int_urb' from incompatible pointer type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_init':
drivers/input/touchscreen/tsusbhid.c:1027: error: implicit declaration of function 'devfs_mk_dir'
make[3]: *** [drivers/input/touchscreen/tsusbhid.o] Error 1
make[2]: *** [drivers/input/touchscreen] Error 2
make[1]: *** [drivers/input] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [drivers] Error 2
bash-3.1#

Re: Integrazione driver Touchscreen nei kernel source

Inviato: gio 10 set 2009, 8:50
da 414N
tobeFrank ha scritto:Guarda io ho due file per il touchscreen, un .o e un .h, penso che siano i source ma non ne sono sicuro perchè è la prima volta che mi cimento in cose del genere (prima d'ora usavo linux al massimo come sitema operativo per i server e comunque in maniera abbastanza superficiale).
Allora hai un header ed un file oggetto. Non disponi di tutti i sorgenti.
Forse, intervenendo sull'header, si riesce a farlo andare a braccetto con il 2.6.27.
tobeFrank ha scritto:

Codice: Seleziona tutto

bash-3.1# cd /usr/src/linux-2.6.27.31
bash-3.1# make -j5 bzImage
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/linux/compile.h
  CC      drivers/input/touchscreen/tsusbhid.o
drivers/input/touchscreen/tsusbhid.c:19:35: error: linux/devfs_fs_kernel.h: No such file or directory
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_irq':
drivers/input/touchscreen/tsusbhid.c:111: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:111: error: (Each undeclared identifier is reported only once
drivers/input/touchscreen/tsusbhid.c:111: error: for each function it appears in.)
drivers/input/touchscreen/tsusbhid.c: In function 'touch_open':
drivers/input/touchscreen/tsusbhid.c:454: warning: assignment discards qualifiers from pointer target type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_register_chrdev':
drivers/input/touchscreen/tsusbhid.c:729: error: implicit declaration of function 'devfs_mk_cdev'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_unregister_chrdev':
drivers/input/touchscreen/tsusbhid.c:754: error: implicit declaration of function 'devfs_remove'
drivers/input/touchscreen/tsusbhid.c:738: warning: unused variable 'minor'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_probe':
drivers/input/touchscreen/tsusbhid.c:862: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:896: warning: passing argument 6 of 'usb_fill_int_urb' from incompatible pointer type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_init':
drivers/input/touchscreen/tsusbhid.c:1027: error: implicit declaration of function 'devfs_mk_dir'
make[3]: *** [drivers/input/touchscreen/tsusbhid.o] Error 1
make[2]: *** [drivers/input/touchscreen] Error 2
make[1]: *** [drivers/input] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [drivers] Error 2
bash-3.1# 
Tutti questi errori potrebbero essere scatenati dal fattto che nell'header di cui disponi si faccia riferimento all'header "linux/devfs_fs_kernel.h" che non sembra esistere più. Se nell'header di cui disponi c'è una riga

Codice: Seleziona tutto

#include <linux/devfs_fs_kernel.h>
prova a commentarla (// all'inizio della riga) e a rilanciare la compilazione.

Re: Integrazione driver Touchscreen nei kernel source

Inviato: gio 10 set 2009, 16:33
da tobeFrank
Ho trovato la riga che dicevi ma era contenuta nel file oggetto (che tra l'altro non era un file oggetto ma un .c). L'errore relativo all'header "linux/devfs_fs_kernel.h" è scomparsa ma gli altri errori sono rimasti tutti.

bash-3.1# cd /usr/src/linux-2.6.27.31
bash-3.1# make -j5 bzImage
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
CC drivers/input/touchscreen/tsusbhid.o
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_irq':
drivers/input/touchscreen/tsusbhid.c:111: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:111: error: (Each undeclared identifier is reported only once
drivers/input/touchscreen/tsusbhid.c:111: error: for each function it appears in.)
drivers/input/touchscreen/tsusbhid.c: In function 'touch_open':
drivers/input/touchscreen/tsusbhid.c:454: warning: assignment discards qualifiers from pointer target type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_register_chrdev':
drivers/input/touchscreen/tsusbhid.c:729: error: implicit declaration of function 'devfs_mk_cdev'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_unregister_chrdev':
drivers/input/touchscreen/tsusbhid.c:754: error: implicit declaration of function 'devfs_remove'
drivers/input/touchscreen/tsusbhid.c:738: warning: unused variable 'minor'
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_probe':
drivers/input/touchscreen/tsusbhid.c:862: error: 'SLAB_ATOMIC' undeclared (first use in this function)
drivers/input/touchscreen/tsusbhid.c:896: warning: passing argument 6 of 'usb_fill_int_urb' from incompatible pointer type
drivers/input/touchscreen/tsusbhid.c: In function 'tsusbhid_init':
drivers/input/touchscreen/tsusbhid.c:1027: error: implicit declaration of function 'devfs_mk_dir'
make[3]: *** [drivers/input/touchscreen/tsusbhid.o] Error 1
make[2]: *** [drivers/input/touchscreen] Error 2
make[1]: *** [drivers/input] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [drivers] Error 2
bash-3.1#


Gli errori 729, 754 e 1027 hanno a che fare con devfs... a occhio direi che si riferiscono a qualcosa contenuto nell'header che ho escluso, magari esiste un equivalente nelle nuove versioni di kernel che ha un altro nome, ma dove cercare?

Re: Integrazione driver Touchscreen nei kernel source

Inviato: gio 10 set 2009, 16:52
da conraid
devfs non esiste più, adesso viene tutto gestito da udev
per il touchscreen guarda questo progetto
http://tslib.berlios.de/
se cerchi nella loro ml vedi anche l'uso con il tuo
https://lists.berlios.de/pipermail/tsli ... 00068.html
al limite chiedi a loro

altri link
http://pengutronix.de/software/xf86-inp ... ex_en.html
http://www.conan.de/touchscreen/evtouch.html

Re: Integrazione driver Touchscreen nei kernel source

Inviato: gio 10 set 2009, 17:17
da tobeFrank
Grazie mille, do un'occhiata subito e vi faccio sapere, comunque se vi venisse qualche altra idea sono sempre qui!

Re: Integrazione driver Touchscreen nei kernel source

Inviato: lun 14 set 2009, 12:41
da tobeFrank
Dopo un pò di ricerche sono riuscito a trovare dei driver un pò più aggiornati tramite il sito del controller del touchscreen (che è l'HT580), questi vanno integrati sul kernel 2.6.24, mi sto concentrando su questo ora. Vi faccio sapere come va...

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mar 15 set 2009, 9:26
da tobeFrank
Allora pare che i driver ora funzionino, sono riuscito ad integrarli nei source e a compilare kernel e moduli...solo che...

il problema adesso mi si presenta all'avvio visto che durante il boot, subito dopo aver montato il file system, si blocca tutto durante il check del fs e appare:

/sbin/e2fsck: No such file or directory.... /dev/sda3

Mi dice che il fs potrebbe essere corrotto (è un ext2) e poi una tiritera sui superblock e che dovrei lanciare il comando e2fsck -v -y [device] oppure lanciare sempre e2fsck con un superblock alternativo...

mi da la possibilità di entrare in single user ma se faccio control-d si riavvia e se inserisco la pwd di root mi da addiruttura login incorrect.

Ovviamente /dev/sda3 è proprio la mia parizione di root, che sto usando ora mentre scrivo avendo caricato il vecchio kernel, e non da nessun problema, tanto meno commetto errori inserendo la pwd di root...

Che cavolo mi invento? Sto provando a cercare in giro su internet ma dei pochi episodi simili che ho trovato nessuno ha avuto problemi con la pwd di root... :-k

Re: Integrazione driver Touchscreen nei kernel source

Inviato: mer 16 set 2009, 10:34
da tobeFrank
Ragazzi ho risolto riconfigurando il kernel, ora funziona tutto...edito il titolo e ci metto [risolto].

Grazie a tutti!