Ten64
It's a networking-focused board based on eight-core NXP’s LS1088A SoC with individual network controllers per 8 Ethernet gigabit ports and 2 SFP+ cages. Traverse Technologies (and Mathew McBride personally) donated the board itself to support DPAA2 drivers development and consulted me extensively. Thank you :) There's a great documentation prepared for Ten64 as well.
Status
# date && uname -apKU Mon Nov 7 10:41:42 CET 2022 FreeBSD guardian 14.0-CURRENT FreeBSD 14.0-CURRENT #5 main-n258621-204a5f5800a0: Sun Oct 16 12:15:04 CEST 2022 root@guardian:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64 aarch64 1400072 1400068
# dmesg | grep "no driver" | grep -v "disabled" simplebus0: <crypto@8000000> mem 0x8000000-0x80fffff irq 24 compat fsl,sec-v5.0 (no driver attached) simplebus0: <iommu@5000000> mem 0x5000000-0x57fffff irq 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103 compat arm,mmu-500 (no driver attached) simplebus0: <console@8340020> mem 0x8340020-0x8340021 compat fsl,dpaa2-console (no driver attached) simplebus0: <ptp-timer@8b95000> mem 0x8b95000-0x8b950ff compat fsl,dpaa2-ptp (no driver attached) simplebus0: <wdt@c000000> mem 0xc000000-0xc000fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c010000> mem 0xc010000-0xc010fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c020000> mem 0xc020000-0xc020fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c030000> mem 0xc030000-0xc030fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c100000> mem 0xc100000-0xc100fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c110000> mem 0xc110000-0xc110fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c120000> mem 0xc120000-0xc120fff compat arm,sp805-wdt (no driver attached) simplebus0: <wdt@c130000> mem 0xc130000-0xc130fff compat arm,sp805-wdt (no driver attached) simplebus0: <power-controller@1e34040> mem 0x1e34040-0x1e34057 compat fsl,ls1088a-rcpm (no driver attached) simplebus0: <timer@2800000> mem 0x2800000-0x280ffff irq 104 compat fsl,ls1088a-ftm-alarm (no driver attached) ofwbus0: <buttons> compat gpio-keys (no driver attached) ofwbus0: <dpmac2_sfp> compat sff,sfp (no driver attached) ofwbus0: <dpmac1_sfp> compat sff,sfp (no driver attached)
SFP+ support
I might need to program a simple driver (see drivers/net/phy/sfp.c from Linux for details) for “sff,sfp” node to setup state polling, perform an initialization of the connected module, gather I2C/GPIO handles before implementing SIOCGI2C ioctl for dpaa2_ni. This is how one of the DPMACs connected to the SFP+ modules is described in the device tree of fsl-ls1088a-ten64.dts:
dpmac1: ethernet@1 {
compatible = "fsl,qoriq-mc-dpmac";
reg = <1>;
};
/* XG1 - Upper SFP */
&dpmac1 {
sfp = <&sfp_xg1>;
pcs-handle = <&pcs1>;
phy-connection-type = "10gbase-r";
managed = "in-band-status";
};
SFP and GPIO nodes look like:
sfp_xg1: dpmac1-sfp {
compatible = "sff,sfp";
i2c-bus = <&sfpupper_i2c>;
tx-fault-gpios = <&sfpgpio 4 GPIO_ACTIVE_HIGH>;
tx-disable-gpios = <&sfpgpio 5 GPIO_ACTIVE_HIGH>;
mod-def0-gpios = <&sfpgpio 6 GPIO_ACTIVE_LOW>;
los-gpios = <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <2000>;
};
&i2c3 {
i2c-switch@70 {
compatible = "nxp,pca9540";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x70>;
sfpupper_i2c: i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
};
};
};
&i2c0 {
sfpgpio: gpio@76 {
compatible = "ti,tca9539";
reg = <0x76>;
#gpio-cells = <2>;
gpio-controller;
admin_led_lower {
gpio-hog;
gpios = <13 GPIO_ACTIVE_HIGH>;
output-low;
};
};
};