Tool for creating an universal device tree overlay (run-time pinmuxing) More...
Go to the source code of this file.
Macros | |
#define | FILE_NAME /* "libpruio" */ |
The file name. | |
#define | VERS_NAME /* "00A0" */ |
The version. | |
Variables | |
VAR | TARG_PATH = "/lib/firmware/" |
The folder where to place the compiled overlay binary. | |
VAR | COMPATIBL = "ti,beaglebone-black" |
The BB model. | |
Tool for creating an universal device tree overlay (run-time pinmuxing)
This file contains the FB source code for a helper tool creating an universal device tree overlay. Adapt this code for your needs, compile it and run the executable. This will create a device tree overlay source file in the current directory, and, if you execute the binary with root privileges, this overlay gets compiled and installed in the specified directory (usually /lib/firmware).
The created universal overlay provides pinmuxing capability at run-time. The user can choose from a set of reasonable predefined pin configurations (modes). Root privileges are required to change the mode.
In order to create predefined (standard) overlays, compile the code by executing
fbc -w all dts_universal.bas
and run the executable
./dts_universal
This will create an overlay for the BeagleboneBlack with the source file named libpruio-00A0.dts
in the current directory.
In order to create and install that overlay, execute with root privileges and add the destination path as parameter
sudo ./dts_universal /lib/firmware
Such an (complete) overlay wont load since there're conflicts with pins claimed for the board. In order to free those pins, specify your BeagleBone model as second parameter
sudo ./dts_universal /lib/firmware BBW
The available models are
If you want to free further pins (ie. to solve conflicts with a cape), you can adapt the source code before compiling and running the tool. In the code, first, the pin modes for all header pins get specified in files P8.bi
, P9.bi
and JTag.bi
(all header pins get declared). Then the code frees unwanted pins, either by deleting the configurations for a pin group (defined in pruio_pins.bi) by a line like
PIN_DEL(HDMI_Pins)
or you can free a single pin by deleting its declaration by a line like
M(P9_41) = ""
Once you adapted the code to your needs, compile and run it by
fbc -w all dts_universal.bas sudo ./dts_universal /lib/firmware
Then load the overlay by (kernel <= 3.8)
sudo su echo libpruio > /sys/devices/bone_capemgr.?/slots exit
or on kernel versions > 3.8
sudo su echo libpruio > /sys/devices/platform/bone_capemgr/slots exit
(Or execute this echo ...
command in your boot sequence. Or use capemgr to load the overlay. See Pinmuxing for further information.)
Licence: GPLv3, Copyright 2014-2023 by Thomas{ doT ]Freiherr[ At ]gmx[ DoT }net
Definition in file dts_universal.bas.