Hello,
I have an issue with my custom board, based on BeagleBone and Sitara AM3357.
The problem concerns the PRU which is configured as a dual EMAC mode (2 additional Ethernet interfaces).
Til now, my board was working perfectly with this Linux Kernel 5.4:
branch: 5.4
The device tree, for the kernel 5.4, looks as follow:
#include "am33xx.dtsi"
/* Dual mac ethernet application node on icss */
pruss_eth {
compatible = "ti,am3359-prueth";
prus = <&pru0>, <&pru1>;
firmware-name = "ti-pruss/am335x-pru0-prueth-fw.elf",
"ti-pruss/am335x-pru1-prueth-fw.elf";
sram = <&ocmcram>;
interrupt-parent = <&pruss_intc>;
syscon = <&scm_conf>;
mii-rt = <&pruss_mii_rt>;
iep = <&pruss_iep>;
pinctrl-names = "default";
pinctrl-0 = <&pruss_eth_default>;
pruss_emac0: mii0 {
phy-handle = <&pruss_eth0_phy>;
phy-mode = "mii";
interrupts = <20>, <22>;
interrupt-names = "rx", "tx";
// Filled in by cm macid
local-mac-address = [00 00 00 00 00 00];
};
pruss_emac1: mii1 {
phy-handle = <&pruss_eth1_phy>;
phy-mode = "mii";
interrupts = <21>, <23>;
interrupt-names = "rx", "tx";
// Filled in by cm macid
local-mac-address = [00 00 00 00 00 00];
};
};
I have to upgrade the Linux kernel to the branch 5.10
So, I simply upgraded the kernel with the branch 5.10 instead of 5.4.
I also adapted the device tree as follow:
#include "am33xx.dtsi"
/* Dual mac ethernet application node on icss */
pruss_eth {
compatible = "ti,am3359-prueth";
ti,prus = <&pru0>, <&pru1>;
sram = <&ocmcram>;
interrupt-parent = <&pruss_intc>;
syscon = <&scm_conf>;
mii-rt = <&pruss_mii_rt>;
iep = <&pruss_iep>;
pinctrl-names = "default";
pinctrl-0 = <&pruss_eth_default>;
pruss_emac0: mii0 {
phy-handle = <&pruss_eth0_phy>;
phy-mode = "mii";
interrupts = <20 2 2>;
interrupt-names = "rx";
// Filled in by cm macid
local-mac-address = [00 00 00 00 00 00];
};
pruss_emac1: mii1 {
phy-handle = <&pruss_eth1_phy>;
phy-mode = "mii";
interrupts = <21 3 3>;
interrupt-names = "rx";
// Filled in by cm macid
local-mac-address = [00 00 00 00 00 00];
};
};
The board is now booting with this kernel 5.10 (5.10.109-ti-r45). The PRU seems to be loaded properly:
[ 5.423003] remoteproc remoteproc0: 4a334000.pru is available
[ 5.430454] remoteproc remoteproc1: 4a338000.pru is available
[ 5.495547] davinci_mdio 4a332400.mdio: phy[1]: device 4a332400.mdio:01, driver TI DP83822
[ 5.503927] davinci_mdio 4a332400.mdio: phy[3]: device 4a332400.mdio:03, driver TI DP83822
[ 5.515831] prueth pruss_eth: could not get ptp tx irq. Skipping PTP support
[ 5.522987] prueth pruss_eth: could not get hsr ptp tx irq. Skipping PTP support
[ 5.530595] prueth pruss_eth: port 1: CM MAC addr: 0c:1c:57:f6:24:c1
[ 5.571619] prueth pruss_eth: could not get ptp tx irq. Skipping PTP support
[ 5.578758] prueth pruss_eth: could not get hsr ptp tx irq. Skipping PTP support
[ 5.586404] prueth pruss_eth: port 2: CM MAC addr: 0c:1c:57:f6:24:c2
[ 5.622686] prueth pruss_eth: TI PRU ethernet driver initialized: dual EMAC mode
[ 8.365810] remoteproc remoteproc0: powering up 4a334000.pru
[ 8.410743] remoteproc remoteproc0: Booting fw image ti-pruss/am335x-pru0-prueth-fw.elf, size 7432
[ 8.480460] remoteproc remoteproc0: unsupported resource 5
[ 8.535570] remoteproc remoteproc0: remote processor 4a334000.pru is now up
[ 8.624477] net ethernet-mii0: started
[ 9.051609] remoteproc remoteproc1: powering up 4a338000.pru
[ 9.156561] remoteproc remoteproc1: Booting fw image ti-pruss/am335x-pru1-prueth-fw.elf, size 7344
[ 9.221244] remoteproc remoteproc1: unsupported resource 5
[ 9.285041] remoteproc remoteproc1: remote processor 4a338000.pru is now up
[ 9.381515] net ethernet-mii1: started
When starting a dhcp client on one of these 2 ethernet interfaces, my dhcp server receives a DHCP discover request and send back a DHCP offer. It means that the sending is working as expected.
But I didn’t receive any interrupt from the PRU:
myname@myhost:~$ cat /proc/interrupts
CPU0
63: 0 pruss-intc 20 Level mii0
64: 0 pruss-intc 21 Level mii1
It means the IP traffic is not catched by the PRU.
The question is:
Does anybody already successfully configured the PRU in ethernet mode with a kernel 5.10 from the beaglebone
repository ?
Many thanks in advance