I also get prussdrv_open() failure.... :(

As others have been reporting, I am getting a failure of prussdrv_open(). I have been poring and muddling over what others have posted, and still yet can’t find the problem. Can anyone suggest anything?

Thanks!
Phil

Relevant information:

me@beaglebone:~/isp/sensor$ dmesg | grep -i pru
[ 7816.181772] bone_capemgr bone_capemgr: part_number ‘pru_enable’, version ‘N/A’
[ 7816.181868] bone_capemgr bone_capemgr: slot #5: ‘Override Board Name,00A0,Override Manuf,pru_enable’
[ 7816.196949] bone_capemgr bone_capemgr: slot #5: dtbo ‘pru_enable-00A0.dtbo’ loaded; overlay id #0
[ 7816.225712] pruss_uio 4a300000.pruss: No children

me@beaglebone:~/isp/sensor$ lsb_release -irc
Distributor ID: Debian
Release: 8.3
Codename: jessie

me@beaglebone:~/isp/sensor$ uname -or
4.4.19-bone-rt-r13 GNU/Linux

me@beaglebone:~/isp/sensor$ lsmod | grep pru
uio_pruss 4928 0
uio 8632 2 uio_pruss,uio_pdrv_genirq

me@beaglebone:~/isp/sensor$ cat $SLOTS
0: PF---- -1
1: PF---- -1
2: PF---- -1
3: PF---- -1
5: P-O-L- 0 Override Board Name,00A0,Override Manuf,pru_enable

me@beaglebone:~/isp/sensor$ dtc -v
Version: DTC 1.4.1-g1e75ebc9

My device tree overlay:

/dts-v1/;
/plugin/;

/{
compatible = “ti,beaglebone”, “ti,beaglebone-black”;
part-number = “pruss_enable”;
version = “00A0”;

/* This overlay uses the following resources */
exclusive-use =
“pru0”,
“pru1”,
“P9.29”, // fet_off
“P9.30”, // fet_on
“P9.31”; // triac

fragment@0 {
target = <&am33xx_pinmux>;

overlay {
pru_pins: pinmux_pru_pins {
pinctrl-single,pins = <
0x190 0x05 // P9_31 $PINS=100 pr1_pru0_pru_r30_0 mode 5 output pulldown
0x194 0x05 // P9_29 $PINS=101 pr1_pru0_pru_r30_1 mode 5 output pulldown
0x198 0x05 // P9_30 $PINS=102 pr1_pru0_pru_r30_2 mode 5 output pulldown

;
};
};
};

fragment@1 { // Enable the PRUSS
target = <&pruss>;
overlay {
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <&pru_pins>;

dig_pru_pins {
pin-names = “FET_OFF”,“FET_ON”,“TRIAC” ;
gpios = <&gpio3 14 0 // P9.31
&gpio3 15 0 // P9.29
&gpio3 16 0>; // P9.30
};
};
};
};

I was so close! I found the problem! I forgot to do this:

sudo cp pru_enable-00A0.dtbo /lib/firmware

So, to summarize and wrap this up:

  1. Use the device tree I posted previously, and name it pru_enable-00A0.dts
  2. Build the dts file: dtc -O dtb -o pru_enable-00A0.dtbo -b 0 -@ pru_enable-00A0.dts
  3. Copy the result: sudo cp pru_enable-00A0.dtbo /lib/firmware
  4. Enable the overlay: sudo sh -c “echo pru_enable > $SLOTS”