Embedded PC - SMBus problem -I2C

Witam,

Mam emebedded PC z normalnym x86_64 + normalne ubuntu 22.04 z kernelem

5.15.0.

Dodatkowo mam tam dwa scalaki na SMBus. TCA6804 i LTC2945. Do obu jak się okazało Ubuntu ma wkompilowane drivery. PCA953x, obsługujący również ten mój TCA i ltc2945 do tego drugiego.

Drivery nie ładują się na początku bo prawdopodobnie nie ma gdzieś właściwych definicji.

Moduły same w sobie mogę załadować, ale to nie jest pnp. Normalnie szukałbym DTS gdzieś w tym ubuntu, ale nie ma. Z acpi nie bardzo mam doświadczenie.

Z dts wiem jak to zrobić. Załadować definicje przy pomocy dtoverlay , potem moduł i używać.

Trochę utknąłem. Co do jakiejś formy definicji ich obecności - jestem pewien ,że musi być. W każdym razie driver do ltc2945 zdaje się pobierać parametry w poniższy sposób:

if (device_property_read_u32(dev, "shunt-resistor-micro-ohms", &data->shunt_resistor))

Ma ktoś jakiś pomysł ?

Pozdrawiam

Adam Górski

Reply to
Adam Górski
Loading thread data ...

W dniu 15.06.2023 o 19:57, Adam Górski pisze: \

No, ja mam. Kombinuję jakby tu zrobić taki turecki chlebek, który dają do kebaba w Berilner Doner Kebap. Przyznam, że jest świetny. Chrupiący na zewnątrz i mięciutki w środku. Planuję spróbować jak z ciastem drożdżowym, tyle, że dam dużo mniej cukru i tłuszczu. Konkretnie ile... tego jeszcze nie wiem, ale taki mam pomysł.

Reply to
Kaczin0

W dniu 15.06.2023 o 20:12, Kaczin0 pisze:

No dziękuję.

pozdrawiam

Adam Górski

Reply to
Adam Górski

Masz je w postaci modułów? No to:

formatting link

Reply to
heby

No tak łatwo to nie ma. Moduly to ja sobie mogę ładować.

SMBus nie jest niestety PNP i trzeba gdzieś podać co na niej jest ( i na której ).

O ile adresy to sobie system przeskanuje , ale co to za układy to już się nie dowie , bo rzadko który mam chip ID.

Zatem trzeba jakoś podać. Tylko jak.

Pozdrawiam

Adam Górski

Reply to
Adam Górski

Właśnie tam się podaje:

formatting link

Reply to
heby

Adam Górski wrote on 15.06.2023 20:51:

W jakimś skrypcie odpalanym jednorazowo przez systemd na starcie kompa załaduj driver i wykonaj konfigurację:

modprobe ltc2945 echo ltc2945 0x10 > /sys/bus/i2c/devices/i2c-1/new_device

Może da się to zrobić bardziej elegancko przez wywołanie drivera w /etc/modules oraz przekazanie do niego parametrów w /etc/modprobe.d/ltc2945.conf (options ltc2945 .....), ale google na ten temat milczy.

Reply to
Zbych

W dniu 15.06.2023 o 21:44, Zbych pisze:

Sprawdzę i dam znać.

Dzięki.

Pozdrawiam

Adam Górski

Reply to
Adam Górski

Dzięki. O to chodziło.

Adam

Reply to
Adam Górski

W dniu 16.06.2023 o 13:13, Adam Górski pisze:

Już się wyjaśniło.

Wystarczyło : echo ltc2945 0x10 > /sys/bus/i2c/devices/i2c-1/new_device

Ale zapomnialem , że sudo to nie su. I powyższe jest ok z poziomu roota.

Z poziomu usera trzeba nieco inaczej :

echo "ltc2945 0x10" | sudo tee /sys/bus/i2c/devices/i2c-1/new_device

Cały problem był spowodowany tym , że gdzieś wyczytałem , że Ubuntu ma zablokowanego roota.

No i faktycznie su mi nie dawało roota.

Zapomniałem , że można jeszcze sudo su bo wtedy setui jest ustawiony i można nadać sobie prawa roota.

Nie jestem tutaj specjalistą , ale tak chyba mniej więcej jest.

Tak czy siak pojawiły mi się oba urządzenia. ltc245 i tca6408. I mogę z nimi gadać.

Dzięki bardzo za pomoc.

pozdrawiam

Adam Górski

Reply to
Adam Górski

W dniu 15.06.2023 o 21:44, Zbych pisze:

Pozostał jeden problem.

W module parametry pobierane są przez device_property_read_u32().

I nijak nie mogę przekazać tych parametrów do modułu.

- próbowałem insmod xxxx.ko parameter=1

- próbowałem /etc/modprobe.d/xxxx.conf

Niestety modprobe nie ma opcji żeby załadować moduł z dowolnej lokalizacji. Używam zatem insmod/rmmod.

Przeszukując net mam niejasne przeczucie , że takie parametry powinny być przekazywane poprzez acpi a nie przez /etc/.... bo mogą być różne dla kilku instancji.

Jakiś pomysł ( w temacie )?

Pozdrawiam

Adam Górski

Reply to
Adam Górski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.