Hello,
I'm working on a product where we'll have a FPGA connected directly to one of the unused MAC interfaces. Since the product hardware isn't built yet, I'm trying to figure out as much as I can ahead of time. I have a LS1046A-FRWY board to experiment with and I'm trying to configure u-boot and Linux to enable MAC 9 which is associated with the unused SGMII.9 interface associated with SerDes 1. I supposed I could also work with the RGMII MAC as well. What I've got so far is u-boot sees the additional MAC that I configured but it throws an error because it can't find the PHY, which is expected since the PHY doesn't exist. I configured additional MAC addresses in the u-boot environment. Linux boots but doesn't initialize any additional interface when I configure it in the Linux ls1046afrwy DTS, but rather it will throw an error -22 for the new interface. I suspect this is because u-boot configures the MAC interfaces and Linux picks up on that during initialization.
My questions are:
1. how do I configure u-boot to enable the MAC in a PHY-less configuration, such as if I were connecting this interface directly to a switch chip or another MAC interface?
2. Should Linux initialize the MAC even if u-boot fails init of the new MAC or if it isn't configured properly?
Thanks in advance for any help.
Ryan Wilkins
Thanks for the reply. I'm finally getting back to this. I tried the solution you mentioned but I'm still unable to get the fixed-link interface to enumerate. Here are the changes that I made and the dmesg output.
fsl-ls1046a-frwy-sdk.dts
ryan@localhost:~$ dmesg |grep fsl
[ 0.000000] OF: reserved mem: initialized node qman-fqd, compatible id fsl,qm
an-fqd
[ 0.000000] OF: reserved mem: initialized node qman-pfdr, compatible id fsl,q
man-pfdr
[ 0.000000] OF: reserved mem: initialized node bman-fbpr, compatible id fsl,b
man-fbpr
[ 1.935833] No USDPAA memory, no 'fsl,usdpaa-mem' in device-tree
[ 1.942185] fsl-ifc 1530000.ifc: Freescale Integrated Flash Controller
[ 1.948765] fsl-ifc 1530000.ifc: IFC version 1.4, 8 banks
[ 2.708874] fsl,ifc-nand 7e800000.nand: IFC NAND device at 0x7e800000, bank 0
[ 2.820518] fsl_mac: fsl_mac: FSL FMan MAC API based driver
[ 2.826475] fsl_mac 1ae0000.ethernet: FMan MEMAC
[ 2.831098] fsl_mac 1ae0000.ethernet: FMan MAC address: 00:04:9f:06:46:38
[ 2.838197] fsl_mac 1ae8000.ethernet: FMan MEMAC
[ 2.842817] fsl_mac 1ae8000.ethernet: FMan MAC address: 00:04:9f:06:46:39
[ 2.849905] fsl_mac 1aea000.ethernet: FMan MEMAC
[ 2.854529] fsl_mac 1aea000.ethernet: FMan MAC address: 00:04:9f:06:46:3a
[ 2.861623] fsl_mac 1af2000.ethernet: FMan MEMAC
[ 2.866244] fsl_mac 1af2000.ethernet: FMan MAC address: 00:04:9f:06:46:3b
[ 2.873061] fsl_dpa: FSL DPAA Ethernet driver
[ 2.878918] fsl_dpa: fsl_dpa: Probed interface eth0
[ 2.883865] fsl_dpa soc:fsl,dpaa:ethernet@1: of_find_device_by_node(ethernet@
e2000) failed
[ 2.892142] fsl_dpa: probe of soc:fsl,dpaa:ethernet@1 failed with error -22
[ 2.899150] fsl_dpa soc:fsl,dpaa:ethernet@2: of_find_device_by_node(ethernet@
e4000) failed
[ 2.907423] fsl_dpa: probe of soc:fsl,dpaa:ethernet@2 failed with error -22
[ 2.914430] fsl_dpa soc:fsl,dpaa:ethernet@3: of_find_device_by_node(ethernet@
e6000) failed
[ 2.922704] fsl_dpa: probe of soc:fsl,dpaa:ethernet@3 failed with error -22
[ 2.930977] fsl_dpa: fsl_dpa: Probed interface eth1
[ 2.937279] fsl_dpa: fsl_dpa: Probed interface eth2
[ 2.942219] fsl_dpa soc:fsl,dpaa:ethernet@8: of_find_device_by_node(ethernet@
f0000) failed
[ 2.950493] fsl_dpa: probe of soc:fsl,dpaa:ethernet@8 failed with error -22
[ 2.958995] fsl_dpa: fsl_dpa: Probed interface eth3
[ 2.963899] fsl_advanced: FSL DPAA Advanced drivers:
[ 2.968863] fsl_proxy: FSL DPAA Proxy initialization driver
[ 2.974572] fsl_oh: FSL FMan Offline Parsing port driver
[ 3.608232] fsl-usdpaa: no region found
[ 6.905984] fsl_dpa soc:fsl,dpaa:ethernet@0 fm1-mac1: renamed from eth0
[ 6.932856] fsl_dpa soc:fsl,dpaa:ethernet@4 fm1-mac5: renamed from eth1
[ 6.980809] fsl_dpa soc:fsl,dpaa:ethernet@5 fm1-mac6: renamed from eth2
[ 7.016700] fsl_dpa soc:fsl,dpaa:ethernet@9 fm1-mac10: renamed from eth3
u-boot environment have the additional MAC addresses configured.
ethaddr=00:04:9F:06:46:38
eth1addr=00:04:9F:06:46:39
eth2addr=00:04:9F:06:46:3A
eth3addr=00:04:9F:06:46:3B
eth4addr=00:04:9F:06:46:3C
eth5addr=00:04:9F:06:46:3D
eth6addr=00:04:9F:06:46:3E
eth7addr=00:04:9F:06:46:3F
No matter what I do the interfaces still don't enumerate in Linux. See the error -22 sections in the dmesg output. I would expect to see the MAC addresses show up in the fsl_mac module but only the four qsgmii connected interfaces show up.
This is using lsdk2012 and kernel version 5.4.47.
Do you have any other suggestions of what to try to get this working?
Thanks,
Ryan Wilkins
For RCW configuration, please refer to serdes1_cfg_tbl definition in arch/arm/cpu/armv8/fsl-layerscape/ls1046a_serdes.c to choose a suitable serdes configuration. Please check whether FM1_DTSEC9 is available under u-boot first.
The RCW configuration for SERDES 1 is 0x3040. FM1_DTSEC9 shows available by u-boot. Here's the output from u-boot. This is the unmodified u-boot that came with LSDK 2012.
NOTICE: BL31: v1.5(release):LSDK-20.12: BL2: Booting BL31
NOTICE: BL31: Built : 19:49:58, Mar 31 2021
NOTICE: Welcome to LS1046 BL31 Phase
U-Boot 2020.04-dirty (Mar 31 2021 - 17:52:02 +0000)
SoC: LS1046AE Rev1.0 (0x87070010)
Clock Configuration:
CPU0(A72):1600 MHz CPU1(A72):1600 MHz CPU2(A72):1600 MHz
CPU3(A72):1600 MHz
Bus: 600 MHz DDR: 2100 MT/s FMAN: 700 MHz
Reset Configuration Word (RCW):
00000000: 0c150010 0e000000 00000000 00000000
00000010: 30400506 00800012 60040000 c1000000
00000020: 00000000 00000000 00000000 00038800
00000030: 20044100 24003101 00000096 00000001
Model: LS1046A FRWY Board
Board: LS1046AFRWY, Rev: B, boot from SD
SD1_CLK1 = 100.00MHZ, SD1_CLK2 = 100.00MHZ
DRAM: 3.9 GiB (DDR4, 64-bit, CL=15, ECC on)
SEC0: RNG instantiated
Using SERDES1 Protocol: 12352 (0x3040)
Using SERDES2 Protocol: 1286 (0x506)
NAND: 512 MiB
MMC: FSL_SDHC: 0
Loading Environment from MMC... OK
EEPROM: NXID v1
In: serial
Out: serial
Err: serial
Net:
MMC read: dev # 0, block # 18432, count 128 ...
Fman1: Uploading microcode version 106.4.18
Could not get PHY for FSL_MDIO0: addr 3
Failed to connect
PCIe1: pcie@3400000 disabled
PCIe2: pcie@3500000 Root Complex: x1 gen2
PCIe3: pcie@3600000 Root Complex: x1 gen1
FM1@DTSEC1, FM1@DTSEC5, FM1@DTSEC6, FM1@DTSEC9, FM1@DTSEC10
Actually the issue is that FRWY-LS1046A board does not have SGMII.9 , so we need to disable this interface in u-boot code based on board type.
I added the device node in fsl-ls1046a-frwy.dts and verified it on LS1046ARDB, this device node can be probed successfully.
ethernet@f0000 {
phy-connection-type = "sgmii";
fixed-link = <0 0 1000 0 0>;
};
1. Please refer to serdes1_cfg_tbl definition in arch/arm/cpu/armv8/fsl-layerscape/ls1046a_serdes.c to choose a suitable serdes configuration according to your target board.
I assume that you do modification based on ls1046afrwy u-boot source code.
In function board_eth_init in board/freescale/ls1046afrwy/eth.c, please comment the following line.
//fm_disable_port(FM1_DTSEC9);
2. Please define the following in Linux dts file
ethernet@f0000 {
fixed-link = <0 0 1000 0 0>;
phy-connection-type = "sgmii";
};
Linux initializes the MAC even if u-boot fails init of the new MAC .