I have the first version of my universal device tree available:

https://github.com/cdsteinkuehler/beaglebone-universal-io

The general idea is to enable virtually all generally useful hardware
via a single device tree, and use the pinmux helper to allow run-time
setup of the pin multiplexing from user-space (no writing custom kernel
drivers or editing and compiling device trees needed!).

This is still a work in progress, but it's stable enough to begin
testing.  I would appreciate review by anyone familiar with device tree
files, and particularly anyone using the various special purpose
hardware (I've mostly just used the PRU and GPIO pins so far).

When the device tree is loaded, all I/O pins currently default to GPIO
inputs, with pull up/down resistors enabled matching the hardware reset
defaults.  If you would like to use UART4 to transmit some data, the
device is already created (/dev/ttyO4), but it's pins are not connected
to the outside world.  Simply use the pinmux nodes in sysfs to set P9
pin 13 to the uart function (uart4_txd):

  echo uart > /sys/devices/ocp.*/P9_13_pinmux.*/state

...and you've got UART data coming out P9_13!  The individual control
over I/O pin multiplexing with all devices already loaded will hopefully
avoid some of the problems people have been having with trying to load
multiple overlays.  This way you don't have to craft a custom device
tree if you want to use the rts/cts lines for a UART, or perhaps don't
need the data in pin of an SPI bus and would like to use it as an output.

GPIO is controlled in the usual way via /sys/class/gpio, which currently
requires you know the kernel gpio number of the BeagleBone pin you want
to manipulate.  I hope to code up an application to make this easier,
but it may take some time.

More details and a list of all the valid pinmux values you can use for
the various pins is listed in the README on github.

Comments welcome!

But please stick to the merits or shortcomings of this device tree
overlay.  Philosophical musings on kernel internals should go in a new
thread!  ;-)

-- 
Charles Steinkuehler
[email protected]

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to