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

308 views
Skip to first unread message

Phil Schmidt

unread,
Sep 1, 2016, 2:55:43 PM9/1/16
to BeagleBoard
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
            };
        };
    };
};

Phil

unread,
Sep 1, 2016, 4:53:28 PM9/1/16
to BeagleBoard
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"

Reply all
Reply to author
Forward
0 new messages