cat /proc/bus/i2c-0

Boxenweitwurf
DoppelD
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Dienstag 30. Juli 2002, 11:24

cat /proc/bus/i2c-0

Beitrag von DoppelD »

Hallo,

ich wusste nich so richtig wohin damit, denke aber Hardwareforum ist gut, da es sich schliesslich um den I2C dreht.

Ich wollte ein wenig mit dem I2C-Bus der Box arbeiten, habe aber schon das erste Problem
cat /prob/bus/i2c-0 bringt read: Invalid argument.
(Beim PC bringt er mir z.B. TV-Karte etc. funkt also.)
Kann mir jemand helfen.

Danke im Voraus.
obi
Senior Member
Beiträge: 1282
Registriert: Montag 12. November 2001, 00:00

Beitrag von obi »

aus irgendeinem grund darf man nicht mehr als 4096 byte gleichzeitig davon lesen. ein kernel bug, den zu fixen sich nicht wirklich gelohnt hat bisher. was moechtest du denn machen?
DoppelD
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Dienstag 30. Juli 2002, 11:24

Beitrag von DoppelD »

Danke fuer deine Antwort.

Ja, den Bug in i2c-core hab ich schon korrigieren koennen. Habs beim googlen gefunden. Jetzt zeigt er mir eine Ausgabe.

Zum Projekt.
Ich habe vor etwas Modding zu betreiben. Also ein PCF8574 (LCD/Anzeigetreiber) und LM78 an den I2C-Bus.
Ich habe dazu auch schon etwas gefunden bei lm-sensors und i2c-Librarys.
Leider ist bei lm-sensors der i2c-Patch des kernels fuer eine neue Struktur, und die im tuxbox-Projekt sind noch auf der Alten. Der gepatchte Kernel laesst sich aber sowieso nich compilieren fuer PPC. Die Treiber scheinen nur fuer i386 zu sein, da laeuft alles durch.
Bei i2c-librarys ist alles auf die serielle/parallel Schnittstelle gemuenzt, kann man also auch nicht so einfach benutzten.
Ich habe mir jetzt die tda und ves Treiber angesehen, und eine einfache erfolgreiche Kontaktaufnahme mit dem pcf8574 zustande gebracht.
Momentan ist leider Adresse und Sendebyte nur fest definiert. Ich wollte das irgendwie ueber ein autodetect machen, weiss aber noch nicht wie. Im lm-sensor source ist so ein autodetect drin. Konnte ich aber alles nicht mit einbauen, da wie gesagt der Kernel-Patch nicht funktioniert und damit alt und neu von den Funktionsaufrufen nicht passt.
Vllt kann man die Adresse ja auch ueber ein conf-Datei definieren. Wuerde ja fuer den Anfang ausreichen. Ich wollte am tuxbox-Source nicht zuviel aendern.
obi
Senior Member
Beiträge: 1282
Registriert: Montag 12. November 2001, 00:00

Beitrag von obi »

bei den meisten i2c chips ist es ueblich, dass sie ueber ein oder zwei pins ihre niedrigsten adressbits konfigurieren lassen, der rest ist in der regel fest verdrahtet. in den treibern gibt man dann einen bereich an, der ausprobiert wird, also 1 bis 4 adressen meist.
DoppelD
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Dienstag 30. Juli 2002, 11:24

Beitrag von DoppelD »

Ja, das hab ich der Spec. schon entnommen.
Beim PCF8574 wird aber auch noch unterschieden zwischen Version A und nonA, welche einen unterschiedlichen Adressbereich haben. 0100 xxx0 fuer PCF8574 und 0111 xxx0 fuer PCF8574A. Hier also 3Bits zur Adressbestimmung.
DoppelD
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Dienstag 30. Juli 2002, 11:24

Beitrag von DoppelD »

Frage:
zur Adressebestimmung ist i2c_probe(adapter, &addr_data, xxx_detect_routine); gedacht.
Und den zu scannenden Bereich lege ich mit normal_i2c_range + normal_i2c fest.
Sehe ich das richtig?
Dann brauch ich sicher noch struct i2c_client_adress_data addr_data ={ xxx}, worin dann normal_i2c etc. sitzt.
obi
Senior Member
Beiträge: 1282
Registriert: Montag 12. November 2001, 00:00

Beitrag von obi »

schau als beispiel am besten in driver/saa7126/saa7126_core.c. die variablen sind global und i2C_INSMOD muss darunter. mit der struct weiss ich nicht was du meinst, aber der obere teil klingt korrekt
DoppelD
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Dienstag 30. Juli 2002, 11:24

Beitrag von DoppelD »

o.k. werd ich mal tun.

Danke fuer den Tipp.