posso dare un'occhiata al /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
e vedere il perno Sono interessato a:Come posso modificare un pinmux per BeagleBone Black sul kernel linux 3.17?
pin 38 (44e10898.0) 00000037 pinctrl-single
Ciò corrisponde a GPIO[2]4
, o P8.10
.
Sto utilizzando Fedora 21, con il kernel 3.17.7-300.fc21.armv7hl
.
Vorrei cambiare il mux a 0x27
. A parole, questo configurerebbe il pin per avere un resistore di pull-down interno (prima era pull-up).
L'output desiderato sarebbe:
pin 38 (44e10898.0) 00000027 pinctrl-single
Cosa si può fare?
Nota: non esiste lo /sys/devices/bone_capemgr.*
, poiché questo non è su Angstrom. Il tipico approccio DTO esporta le modifiche modificando il gestore del capo. Questa non è un'opzione.
Edit: Dopo l'esplorazione dalla linea di pensiero tad
s', ho fatto: dtc -I dtb -O dts -o ~/am335x-boneblack.dts /boot/dtb-3.17.7-300.fc21.armv7hl/am335x-boneblack.dtb
. Ho modificato questo file per avere:
...
[email protected] {
...
example {
pinctrl-single,pins = <0x898 0x27>;
};
};
...
Poi, ho compilato di nuovo con dtc
, bloccato nella /boot/dtb-3.17.7-300.fc21.armv7hl/
, ed ho ripartito. Tuttavia, nulla è cambiato. Cosa sta succedendo?
Edit:
come indicato da Charles Steinkuehler, il 0x800
deve essere sottratto dal offset, e "qualcosa" deve fare riferimento "esempio".
Se aggiungo 0x098 0x27
alla mia voce per user_leds_s0
, si osserva il comportamento desiderato:
...
user_leds_s0 {
pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7 0x60 0x170 0x098 0x27>;
linux,phandle = <0x3f>;
phandle = <0x3f>;
};
...
Ora, questo è tutto bene e mi fa dove ho bisogno di andare. Tuttavia, quel pin non è davvero un utente_lato. Dovrebbe essere in un campo separato di qualche tipo. Quindi, qual è il "qualcosa" che devo fare per ottenere il campo "esempio" o simile al lavoro?
per quanto ne so il concetto di sovrapposizioni sono stati rimossi . È necessario modificare il file .dts originale per fare le cose. Cordiali saluti, questo non è legato al sapore del file system di root (nel tuo caso, Angstrom). Questo dipende interamente dalla versione del kernel. – raghav3276
Perdonate la mia ignoranza; Puoi approfondire un po 'quello che sarebbe necessario, supponendo che ho trovato il file dts che usa Fedora? – ToBeReplaced
Hai modificato la definizione di pin "esempio" o la aggiungi? Se hai aggiunto questo, vedo due problemi. In primo luogo, qualcosa da qualche parte deve fare riferimento alla configurazione del pin "esempio" o non avrà alcun effetto. In secondo luogo, il tuo pinmux registra offset è 0x800 fuori da quello che mi aspetterei (cioè: 0x898 pinmux offset offset si trasforma in 0x098 nell'albero del dispositivo, poiché il driver pinmux AM335x aggiunge 0x800 per te). Se questa è una voce che hai modificato, non ho familiarità con le convenzioni di denominazione degli alberi del dispositivo per il tuo particolare kernel. –