Hallo,
ich hatte den Treiber ohne Probleme auf einem 2.6.32 im Einsatz. Nach einer etwas voreiligen Distributionsaktualisierung habe ich das Problem, dass der Treiber sich für aktuelle Kernel offenbar nicht mehr bauen lässt.
Zunächst wird eine fehlende Headerdatei bemängelt:
CC [M] /home/dm/Treiber/ngene_p11/ngene_core.o
/home/dm/Treiber/ngene_p11/ngene_core.c:39:28: schwerwiegender Fehler: linux/smp_lock.h: Datei oder Verzeichnis nicht gefunden
Kompilierung beendet.
Diesen Header gibt es im 3.2er nicht mehr. Ich habe es einmal testweise auf smp.h geändert, falls die Dateien fusioniert wurden. Immerhin gibt es jetzt keine Fehler im Zusammenhang mit SMP, dafür aber viel Neues:
CC [M] /home/dm/Treiber/ngene_p11/ngene_core.o
/home/dm/Treiber/ngene_p11/ngene_core.c: In Funktion »ngene_i2c_init«:
/home/dm/Treiber/ngene_p11/ngene_core.c:1095:14: Fehler: »I2C_CLASS_TV_ANALOG« nicht deklariert (erste Benutzung in dieser Funktion)
/home/dm/Treiber/ngene_p11/ngene_core.c:1095:14: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
/home/dm/Treiber/ngene_p11/ngene_core.c:1103:6: Fehler: »struct i2c_adapter« hat kein Element namens »id«
/home/dm/Treiber/ngene_p11/ngene_core.c:1103:11: Fehler: »I2C_HW_SAA7146« nicht deklariert (erste Benutzung in dieser Funktion)
/home/dm/Treiber/ngene_p11/ngene_core.c:1115:2: Warnung: Übergabe des Arguments 1 von »__mutex_init« von inkompatiblem Zeigertyp [standardmäßig aktiviert]
include/linux/mutex.h:115:13: Anmerkung: »struct mutex *« erwartet, aber Argument hat Typ »struct rt_mutex *«
/home/dm/Treiber/ngene_p11/ngene_core.c: Auf höchster Ebene:
/home/dm/Treiber/ngene_p11/ngene_core.c:1761:2: Fehler: unbekanntes Feld »ioctl« in Initialisierung angegeben
/home/dm/Treiber/ngene_p11/ngene_core.c:1761:2: Warnung: Initialisierung von inkompatiblem Zeigertyp [standardmäßig aktiviert]
/home/dm/Treiber/ngene_p11/ngene_core.c:1761:2: Warnung: (nahe der Initialisierung für »command_fops.aio_read«) [standardmäßig aktiviert]
/home/dm/Treiber/ngene_p11/ngene_core.c: In Funktion »ngene_pll_set_mt_3x0823«:
/home/dm/Treiber/ngene_p11/ngene_core.c:2163:2: Warnung: Aufzählungswert »BANDWIDTH_5_MHZ« wird nicht von switch behandelt [-Wswitch]
/home/dm/Treiber/ngene_p11/ngene_core.c:2163:2: Warnung: Aufzählungswert »BANDWIDTH_10_MHZ« wird nicht von switch behandelt [-Wswitch]
/home/dm/Treiber/ngene_p11/ngene_core.c:2163:2: Warnung: Aufzählungswert »BANDWIDTH_1_712_MHZ« wird nicht von switch behandelt [-Wswitch]
/home/dm/Treiber/ngene_p11/ngene_core.c: Auf höchster Ebene:
/home/dm/Treiber/ngene_p11/ngene_core.c:3303:2: Fehler: unbekanntes Feld »ioctl« in Initialisierung angegeben
/home/dm/Treiber/ngene_p11/ngene_core.c:3303:2: Warnung: Initialisierung von inkompatiblem Zeigertyp [standardmäßig aktiviert]
/home/dm/Treiber/ngene_p11/ngene_core.c:3303:2: Warnung: (nahe der Initialisierung für »video_fops.fsync«) [standardmäßig aktiviert]
make[2]: *** [/home/dm/Treiber/ngene_p11/ngene_core.o] Fehler 1
make[1]: *** [_module_/home/dm/Treiber/ngene_p11] Fehler 2
make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-3.2.0-26-generic'
make: *** [all] Fehler 2]
Alles anzeigen
Ich habe einmal gesucht, wo die fehlende Deklaration (1. Fehler) abgeblieben sein könnte - sie scheint ganz verschwunden.
Alter Kernel:
grep -R I2C_CLASS_TV_ANALOG /usr/src/linux-headers-2.6.32-23-generic/
grep: /usr/src/linux-headers-2.6.32-23-generic/source: Datei oder Verzeichnis nicht gefunden
/usr/src/linux-headers-2.6.32-23-generic/include/linux/i2c.h:#define I2C_CLASS_TV_ANALOG (1<<1) /* bttv + friends */
Neuer Kernel:
grep -R I2C_CLASS_TV_ANALOG /usr/src/linux-headers-3.2.0-26-generic/
grep: /usr/src/linux-headers-3.2.0-26-generic/source: Datei oder Verzeichnis nicht gefunden
Da scheint sich im I2C-Bereich einiges geändert zu haben - ich habe kurz gegoogelt, und folgenden Kommentar zu einem Patch gefunden:
ZitatDetection class I2C_CLASS_TV_ANALOG is set by a few adapters but no
I2C device driver is setting it anymore, which means it can be
dropped. I2C devices on analog TV adapters are instantiated
explicitly these days, which is much better.
Na toll - irgendeine Idee, wie ich den 3.2er zum Treiber oder den Treiber kompatibel zu 3.2 bekommen kann?
Gruß
David