Auf meiner Box arbeitet das LCD unzuverlässig. Manchmal funktioniert es normal, zeigt Debugmeldungen beim Start an und funktioniert auch später noch korrekt. Meist jedoch, bleibt es beim Start dunkel, zeigt evtl. das erste Neutrino Logo und danach nichts mehr.
Ein genauere Untersuchung zeigt, daß lcd_read_status() im LCD Treiber immer BUSY liefert und daher lcd.o nicht geladen wird. Ein auskommentieren aller BUSY checks hat das Problem für mich gelöst (siehe Patch).
Ich glaube nicht, daß die fehlenden BUSY tests ein Problem sind. Soweit ich das sehen kann, gibt es keine Fehlerbehandlung die EBUSY wirklich für irgendwas nützliches (z.b. retry) verwenden würde. Die lcd lib terminiert einfach nur wenn ein Fehler auftritt. Daher sollten das irgnorieren eines solchen Fehlers kaum zu Problemen führen.
Gruß
Andreas
Code: Alles auswählen
diff -u -r1.21 lcd-ks0713.c
--- lcd-ks0713.c 2002/05/06 02:18:19 1.21
+++ lcd-ks0713.c 2002/05/13 23:00:37
@@ -474,9 +474,11 @@
return -EFAULT;
}
+#if 0
if ( lcd_read_status() & LCD_STAT_BUSY ) {
return -EBUSY;
}
+#endif
if ( (obp = kmalloc( count, GFP_KERNEL)) == NULL ) {
return -ENOMEM;
@@ -529,9 +531,11 @@
return -EFAULT;
}
+#if 0
if ( lcd_read_status() & LCD_STAT_BUSY ) {
return -EBUSY;
}
+#endif
if ( (obp = kmalloc( count, GFP_KERNEL)) == NULL ) {
return -ENOMEM;
@@ -653,8 +657,10 @@
return 0;
}
+#if 0
if ( lcd_read_status() & LCD_STAT_BUSY )
return -EBUSY;
+#endif
if ( cmd & LCDSET ) {