Wpis z mikrobloga

Hej jak to jest z sherowaniem tego samego SPI busa pomiędzy urządzeniami w Linuxie?
Załóżmy, że mam SPI bus i na nim podpięte dwa urządzenia:
- pierwszy to nor-flash, obsługuje QSPI
- drugi to moje customowe urządzenie, obsługuje SPI

Do NOR flash mam driver w kernelu, do mojego urzadzenia nie.
Czy mogę generalnie użyć tego samego SPI do kontroli tych dwóch urządzeń? Co w związku z tym, że jeden obsługuje QSPI a drugi SPI?
Jak serializowany jest dostęp do bus driver controllera dla tego konkretnego SPI? Czy muszę sam zrobić tą serializację?

#linux #embedded
  • 4
Nigdy nie robiłem tego praktycznie wiec traktuj to jako teoria.
Generalnie na SPI arbitraż robisz przez linie "chip enable". Do każdego slave musisz miec osobna linie ~EN. SPI jest multidrop ponieważ slave na liniach ma wysoką impedancję jeśli dany EN nie jest aktywny (otwarty kolektor).
Niemniej nie wiem jak to w Linuxie jest rozwiązane na warstwie drivera do hosta SPI ze na czas transakcji podnosi EN. Tym bardziej nie wiem czy sa
@Rosly: Dzięki wielkie za odpowiedzi. Trochę się przekopałem też przez ten kod i z tego co rozumiem, przynajmniej według tego co jest w mojej platformie (NXP LS1028ardb - eval board).

- spi-nxp-fspi.c - kontroler FlexSPI, który rejestruje siebie jako kontroler SPI poprzez devmspiregistercontroller(spi.c). Doadtkowo ten kontroler w modebits ustawia obłsugiwane tryby - jest tam np. dual spi, quad, ocal.
- spi.c w funkcji spiregistercontroller (wywolanej