diff --git a/README.md b/README.md index 45de454..2e07218 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,20 @@ # monok8s -Kubernetes image for Mono Gateway Development Kit +Kubernetes image for Mono Gateway Development Kit + https://docs.mono.si/gateway-development-kit/getting-started +### The device's dts files are located at here +https://github.com/we-are-mono/OpenWRT-ASK/tree/mono-25.12.0-rc3/target/linux/layerscape/files/arch/arm64/boot/dts/freescale +* We need both `mono-gateway-dk-sdk.dts` and `mono-gateway-dk.dts` since the sdk one includes the non-sdk one. +* The actual dts being used is the `mono-gateway-dk-sdk.dts` + + ## Build + +To avoid frequent downloading on rebuild. Find and download the latest [kernel](https://github.com/nxp-qoriq/linux/archive/refs/tags/) and [busybox](https://github.com/mirror/busybox/archive/refs/tags/). +Put them into `dev/nxplinux.tar.gz` and `dev/busybox.tar.gz` respectively. + ```bash make itb # for out/board.itb make release # WORK IN PROGRESS diff --git a/board.its b/board.its index 6994516..77bb2d3 100644 --- a/board.its +++ b/board.its @@ -17,7 +17,7 @@ }; fdt { description = "DTB"; - data = /incbin/("fsl-ls1046a-rdb-sdk.dtb"); + data = /incbin/("${DEVICE_TREE_TARGET}.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; diff --git a/build.env b/build.env index 6c6f118..d810f01 100644 --- a/build.env +++ b/build.env @@ -8,7 +8,7 @@ NXP_VERSION=lf-6.18.2-1.0.0 # Mono's tutorial said fsl-ls1046a-rdb.dtb but our shipped board is not that one # We need fsl-ls1046a-rdb-sdk.dtb here -DTB_TARGET=fsl-ls1046a-rdb-sdk.dtb +DEVICE_TREE_TARGET=mono-gateway-dk-sdk # Arch, should always be arm64 for our board. This is here in case branching off to other devices diff --git a/docker/build-base.Dockerfile b/docker/build-base.Dockerfile index e9d1fb9..ee30b66 100644 --- a/docker/build-base.Dockerfile +++ b/docker/build-base.Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=linux/amd64 debian:bookworm AS kernel-build +FROM --platform=linux/amd64 debian:bookworm-slim AS kernel-build ENV DEBIAN_FRONTEND=noninteractive @@ -14,6 +14,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ file \ flex \ git \ + gettext-base \ kmod \ libelf-dev \ libssl-dev \ diff --git a/docker/itb.Dockerfile b/docker/itb.Dockerfile index f518948..912f6bc 100644 --- a/docker/itb.Dockerfile +++ b/docker/itb.Dockerfile @@ -5,7 +5,7 @@ FROM ${DOCKER_IMAGE_ROOT}/fit-build:${TAG} AS fit FROM --platform=linux/amd64 ${DOCKER_IMAGE_ROOT}/build-base:${TAG} AS build -ARG DTB_TARGET +ARG DEVICE_TREE_TARGET RUN mkdir /image WORKDIR /image @@ -14,10 +14,11 @@ COPY --from=kernel /out/kernel/Image.gz ./Image.gz COPY --from=kernel /out/kernel/System.map ./ COPY --from=kernel /out/kernel/.config ./ COPY --from=fit /out/initramfs.cpio.gz ./ -COPY --from=kernel /out/${DTB_TARGET} ./ +COPY --from=kernel /out/${DEVICE_TREE_TARGET}.dtb ./ -COPY ./board.its ./ +COPY ./board.its ./_board.its +RUN envsubst < _board.its > board.its RUN mkimage -f board.its board.itb FROM scratch diff --git a/docker/kernel-build.Dockerfile b/docker/kernel-build.Dockerfile index 8119c4b..dc05f1c 100644 --- a/docker/kernel-build.Dockerfile +++ b/docker/kernel-build.Dockerfile @@ -5,12 +5,14 @@ FROM --platform=linux/amd64 ${DOCKER_IMAGE_ROOT}/build-base:${TAG} ARG NXP_VERSION ARG ARCH ARG CROSS_COMPILE +ARG DEVICE_TREE_TARGET WORKDIR /build RUN test -n "${NXP_VERSION}" || (echo "Please specify NXP_VERSION" >&2; exit 1); \ test -n "${ARCH}" || (echo "Please specify ARCH" >&2; exit 1); \ - test -n "${CROSS_COMPILE}" || (echo "Please specify CROSS_COMPILE" >&2; exit 1) + test -n "${CROSS_COMPILE}" || (echo "Please specify CROSS_COMPILE" >&2; exit 1); \ + test -n "${DEVICE_TREE_TARGET}" || (echo "Please specify DEVICE_TREE_TARGET" >&2; exit 1) # Dev-only shortcut COPY dev/nxplinux.tar.gz ./ @@ -27,6 +29,12 @@ RUN tar -xf nxplinux.tar.gz \ WORKDIR /build/nxplinux COPY kernel-extra.config /tmp/kernel-extra.config +COPY kernel-build/dts/*.dts ./arch/arm64/boot/dts/freescale/ + +RUN grep -q "^dtb-\\\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb$" \ + arch/arm64/boot/dts/freescale/Makefile \ + || echo "dtb-\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb" \ + >> arch/arm64/boot/dts/freescale/Makefile # NXP tree: use the LSDK defconfig target RUN make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" defconfig lsdk.config \ @@ -43,7 +51,5 @@ RUN mkdir -p /out/kernel /out/rootfs \ RUN depmod -b /out/rootfs $(ls /out/rootfs/lib/modules/) -ARG DTB_TARGET - -RUN find /out/kernel -name "${DTB_TARGET}" -exec cp {} /out/ \; -RUN test -f "/out/${DTB_TARGET}" +RUN find /out/kernel -name "${DEVICE_TREE_TARGET}.dtb" -exec cp {} /out/ \; +RUN test -f "/out/${DEVICE_TREE_TARGET}.dtb" diff --git a/kernel-build/dts/mono-gateway-dk-sdk.dts b/kernel-build/dts/mono-gateway-dk-sdk.dts new file mode 100644 index 0000000..e74bfc5 --- /dev/null +++ b/kernel-build/dts/mono-gateway-dk-sdk.dts @@ -0,0 +1,531 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Device Tree file for Freescale Layerscape-1046A family SoC. + * + * Copyright 2025 Mono Technologies Inc. + * + * Author: Tomaz Zaman + */ + +#include "mono-gateway-dk.dts" +#include "qoriq-qman-portals-sdk.dtsi" +#include "qoriq-bman-portals-sdk.dtsi" + +/ { + /* Boot memory regions for SDK DPAA driver */ + bootmem0@a0000000 { + reg = <0x00 0xa0000000 0x00 0x4000000 0x00 0xa4000000 0x00 0x6000000>; + }; + + bootmem1@aa000000 { + reg = <0x00 0xaa000000 0x00 0x4000000 0x00 0xae000000 0x00 0x6000000>; + }; + + cpus { + fman0-extended-args { + cell-index = <0x00>; + compatible = "fsl,fman-extended-args"; + total-fifo-size = <0x3e500>; + + /* Offline ports for CDX - cell-index overridden for SDK compatibility: + * fman0_oh_0x3 (port@83000) = cell-index 1 (SDK style) + * fman0_oh_0x4 (port@84000) = cell-index 2 (SDK style) + */ + fman0_oh_0x3-extended-args { + cell-index = <0x01>; /* matches port@83000 SDK cell-index */ + compatible = "fsl,fman-port-op-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + fman0_oh_0x4-extended-args { + cell-index = <0x02>; /* matches port@84000 SDK cell-index */ + compatible = "fsl,fman-port-op-extended-args"; + fifo-size = <0x900 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* All 1G ports need extended-args (SDK driver requirement) */ + + /* MAC1 (ethernet@e0000) - cell-index 0 - disabled but needed */ + fman0_rx0-extended-args { + cell-index = <0x00>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx0-extended-args { + cell-index = <0x00>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC2 (ethernet@e2000) - cell-index 1 */ + fman0_rx1-extended-args { + cell-index = <0x01>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx1-extended-args { + cell-index = <0x01>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC3 (ethernet@e4000) - cell-index 2 - disabled but needed */ + fman0_rx2-extended-args { + cell-index = <0x02>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx2-extended-args { + cell-index = <0x02>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC4 (ethernet@e6000) - cell-index 3 - disabled but needed */ + fman0_rx3-extended-args { + cell-index = <0x03>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx3-extended-args { + cell-index = <0x03>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC5 (ethernet@e8000) - cell-index 4 */ + fman0_rx4-extended-args { + cell-index = <0x04>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx4-extended-args { + cell-index = <0x04>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC6 (ethernet@ea000) - cell-index 5 */ + fman0_rx5-extended-args { + cell-index = <0x05>; + compatible = "fsl,fman-port-1g-rx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx5-extended-args { + cell-index = <0x05>; + compatible = "fsl,fman-port-1g-tx-extended-args"; + fifo-size = <0x3200 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC9 (ethernet@f0000) - 10G cell-index 0 */ + fman0_rx6-extended-args { + cell-index = <0x00>; + compatible = "fsl,fman-port-10g-rx-extended-args"; + fifo-size = <0x6000 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx6-extended-args { + cell-index = <0x00>; + compatible = "fsl,fman-port-10g-tx-extended-args"; + fifo-size = <0x4000 0x00>; + buffer-layout = <0x60 0x40>; + }; + + /* MAC10 (ethernet@f2000) - 10G cell-index 1 */ + fman0_rx7-extended-args { + cell-index = <0x01>; + compatible = "fsl,fman-port-10g-rx-extended-args"; + fifo-size = <0x6000 0x00>; + buffer-layout = <0x60 0x40>; + vsp-window = <0x02 0x00>; + }; + + fman0_tx7-extended-args { + cell-index = <0x01>; + compatible = "fsl,fman-port-10g-tx-extended-args"; + fifo-size = <0x4000 0x00>; + buffer-layout = <0x60 0x40>; + }; + }; + }; +}; + +&bman_fbpr { + compatible = "fsl,bman-fbpr"; + alloc-ranges = <0 0 0x10000 0>; +}; +&qman_fqd { + compatible = "fsl,qman-fqd"; + alloc-ranges = <0 0 0x10000 0>; +}; +&qman_pfdr { + compatible = "fsl,qman-pfdr"; + alloc-ranges = <0 0 0x10000 0>; +}; + +&soc { + /delete-property/ dma-coherent; + + #include "qoriq-dpaa-eth.dtsi" + /* Note: We override cell-index values in &fman0 section to match + * SDK driver expectations (0-5 instead of mainline 2-7). + * Port@82000 with cell-index=0 becomes the HC port for PCD. + */ + + pcie@3400000 { + /delete-property/ iommu-map; + }; + + pcie@3500000 { + /delete-property/ iommu-map; + }; + + pcie@3600000 { + /delete-property/ iommu-map; + }; + + /delete-node/ iommu@9000000; +}; + +&fsldpaa { + ethernet@0 { + status = "disabled"; /* MAC1 - not on Mono Gateway DK */ + }; + ethernet@2 { + status = "disabled"; /* MAC3 - not on Mono Gateway DK */ + }; + ethernet@3 { + status = "disabled"; /* MAC4 - not on Mono Gateway DK */ + }; + + /* Enabled from qoriq-dpaa-eth.dtsi: + * ethernet@1 = enet1 = MAC2 + * ethernet@4 = enet4 = MAC5 + * ethernet@5 = enet5 = MAC6 + * ethernet@8 = enet6 = MAC9 (10G) + */ + + /* Add MAC10 - not in qoriq-dpaa-eth.dtsi */ + ethernet@9 { + compatible = "fsl,dpa-ethernet"; + fsl,fman-mac = <&enet7>; + dma-coherent; + }; +}; + +&fman0 { + compatible = "fsl,fman", "simple-bus"; + + /* Core FMan sub-modules */ + muram@0 { + compatible = "fsl,fman-muram"; + reg = <0x0 0x60000>; + }; + + bmi@80000 { + compatible = "fsl,fman-bmi"; + reg = <0x80000 0x400>; + }; + + qmi@80400 { + compatible = "fsl,fman-qmi"; + reg = <0x80400 0x400>; + }; + + /* PCD sub-modules required for FMC/CDX */ + cc { + compatible = "fsl,fman-cc"; + }; + + policer@c0000 { + compatible = "fsl,fman-policer"; + reg = <0xc0000 0x1000>; + }; + + keygen@c1000 { + compatible = "fsl,fman-keygen"; + reg = <0xc1000 0x1000>; + }; + + dma@c2000 { + compatible = "fsl,fman-dma"; + reg = <0xc2000 0x1000>; + }; + + fpm@c3000 { + compatible = "fsl,fman-fpm"; + reg = <0xc3000 0x1000>; + }; + + parser@c7000 { + compatible = "fsl,fman-parser"; + reg = <0xc7000 0x1000>; + }; + + vsps@dc000 { + compatible = "fsl,fman-vsps"; + reg = <0xdc000 0x1000>; + }; + + ethernet@f0000 { + /delete-property/ managed; + fixed-link = <0 1 10000 0 0>; + phy-connection-type = "xgmii"; + }; + + ethernet@f2000 { + /delete-property/ managed; + fixed-link = <0 1 10000 0 0>; + phy-connection-type = "xgmii"; + }; + + /* DPA Offline port bindings - required for CDX. + * Use phandles fman0_oh_0x3 (port@83000) and fman0_oh_0x4 (port@84000). + * Cell-index overridden to SDK-style (1 and 2) in port nodes above. + */ + dpa-fman0-oh@2 { + compatible = "fsl,dpa-oh"; + fsl,qman-frame-queues-oh = <0x60 0x01 0x61 0x01>; + fsl,fman-oh-port = <&fman0_oh_0x3>; + }; + + dpa-fman0-oh@3 { + compatible = "fsl,dpa-oh"; + fsl,qman-frame-queues-oh = <0x62 0x01 0x63 0x01>; + fsl,fman-oh-port = <&fman0_oh_0x4>; + }; + + /* Override OH port cell-index values for SDK driver compatibility. + * SDK driver expects cell-index 0 for HC (Host Command/PCD) port. + * Mainline qoriq-fman3-0.dtsi uses cell-index 2-7, but SDK needs 0-5. + */ + port@82000 { + cell-index = <0>; /* HC port - required for PCD initialization */ + compatible = "fsl,fman-port-oh"; + }; + + port@83000 { + cell-index = <1>; + compatible = "fsl,fman-port-oh"; + }; + + port@84000 { + cell-index = <2>; + compatible = "fsl,fman-port-oh"; + }; + + port@85000 { + cell-index = <3>; + compatible = "fsl,fman-port-oh"; + }; + + port@86000 { + cell-index = <4>; + compatible = "fsl,fman-port-oh"; + }; + + port@87000 { + cell-index = <5>; + compatible = "fsl,fman-port-oh"; + }; +}; + +&clockgen { + dma-coherent; +}; + +&scfg { + dma-coherent; +}; + +&crypto { + dma-coherent; +}; + +&dcfg { + dma-coherent; +}; + +&ifc { + dma-coherent; +}; + +&qspi { + dma-coherent; +}; + +&esdhc { + dma-coherent; +}; + +&ddr { + dma-coherent; +}; + +&tmu { + dma-coherent; +}; + +&qman { + dma-coherent; +}; + +&bman { + dma-coherent; +}; + +&bportals { + dma-coherent; +}; + +&qportals { + dma-coherent; +}; + +&dspi { + dma-coherent; +}; + +&i2c0 { + dma-coherent; +}; + +&i2c1 { + dma-coherent; +}; + +&i2c2 { + dma-coherent; +}; + +&i2c3 { + dma-coherent; +}; + +&duart0 { + dma-coherent; +}; + +&duart1 { + dma-coherent; +}; + +&duart2 { + dma-coherent; +}; + +&duart3 { + dma-coherent; +}; + +&gpio0 { + dma-coherent; +}; + +&gpio1 { + dma-coherent; +}; + +&gpio2 { + dma-coherent; +}; + +&gpio3 { + dma-coherent; +}; + +&lpuart0 { + dma-coherent; +}; + +&lpuart1 { + dma-coherent; +}; + +&lpuart2 { + dma-coherent; +}; + +&lpuart3 { + dma-coherent; +}; + +&lpuart4 { + dma-coherent; +}; + +&lpuart5 { + dma-coherent; +}; + +&ftm_alarm0 { + dma-coherent; +}; + +&wdog0 { + dma-coherent; +}; + +&edma0 { + dma-coherent; +}; + +&sata { + dma-coherent; +}; + +&qdma { + dma-coherent; +}; + +&msi1 { + dma-coherent; +}; + +&msi2 { + dma-coherent; +}; + +&msi3 { + dma-coherent; +}; + +&fman0 { + dma-coherent; +}; + +&ptp_timer0 { + dma-coherent; +}; + +&fsldpaa { + dma-coherent; +}; diff --git a/kernel-build/dts/mono-gateway-dk.dts b/kernel-build/dts/mono-gateway-dk.dts new file mode 100644 index 0000000..eaafe8e --- /dev/null +++ b/kernel-build/dts/mono-gateway-dk.dts @@ -0,0 +1,531 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Device Tree file for Freescale Layerscape-1046A family SoC. + * + * Copyright 2025 Mono Technologies Inc. + * + * Author: Tomaz Zaman + */ + +/dts-v1/; + +#include +#include +#include +#include "fsl-ls1046a.dtsi" + +/ { + model = "Mono Gateway Development Kit"; + compatible = "mono,gateway-dk", "fsl,ls1046a"; + + aliases { + serial0 = &duart0; + serial1 = &duart1; + + /* Physical port order: left to right */ + ethernet0 = &enet4; /* MAC5 - 1G leftmost */ + ethernet1 = &enet5; /* MAC6 - 1G middle */ + ethernet2 = &enet1; /* MAC2 - 1G rightmost */ + ethernet3 = &enet6; /* MAC9 - 10G left */ + ethernet4 = &enet7; /* MAC10 - 10G right */ + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + leds { + compatible = "gpio-leds"; + + /* SFP+ Port 0 LEDs - Activity/Link */ + led_sfp0_link: sfp0_link { + label = "sfp0:link"; + gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + + led_sfp0_activity: sfp0_activity { + label = "sfp0:activity"; + gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + + /* SFP+ Port 1 LEDs - Activity/Link */ + led_sfp1_link: sfp1_link { + label = "sfp1:link"; + gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + + led_sfp1_activity: sfp1_activity { + label = "sfp1:activity"; + gpios = <&gpio2 16 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + }; + + /* SFP 1 */ + sfp_xfi0: sfp-xfi0 { + compatible = "sff,sfp"; + i2c-bus = <&sfp0_i2c>; + tx-disable-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; + los-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + leds = <&led_sfp0_link>, <&led_sfp0_activity>; + }; + + /* SFP 2 */ + sfp_xfi1: sfp-xfi1 { + compatible = "sff,sfp"; + i2c-bus = <&sfp1_i2c>; + tx-disable-gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>; + mod-def0-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; + los-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <3000>; + leds = <&led_sfp1_link>, <&led_sfp1_activity>; + }; + + /* SFP LED Controller */ + sfp_led_controller: sfp-led-controller { + compatible = "mono,sfp-led"; + sfp-ports = <&sfp_xfi0>, <&sfp_xfi1>; + }; + +}; + +&pcie3 { + status = "okay"; +}; + +&gpio2 { + 2R-enable { + gpio-hog; + gpios = <6 GPIO_ACTIVE_LOW>; + output-high; + line-name = "2r-enable"; + }; + + 3R-enable { + gpio-hog; + gpios = <2 GPIO_ACTIVE_LOW>; + output-low; + line-name = "3r-enable"; + }; + + uart-mux { + gpio-hog; + gpios = <26 GPIO_ACTIVE_HIGH>; + output-high; /* "output-high" for 2R, "output-low" for 3R */ + line-name = "uart-mux"; + }; +}; + +&duart0 { + status = "okay"; +}; + +&duart1 { + status = "okay"; + uart-has-rtscts; + + bluetooth { + compatible = "nxp,88w8987-bt"; + fw-init-baudrate = <3000000>; + }; +}; + +&usb0 { + status = "okay"; + dr_mode = "host"; +}; + +&usb1 { + status = "disabled"; + disable-over-current; +}; + +&usb2 { + status = "disabled"; + disable-over-current; +}; + +&dspi { + status = "okay"; +}; + +&esdhc { + status = "okay"; + mmc-hs200-1_8v; + bus-width = <4>; +}; + +&i2c0 { + status = "okay"; + + /* Thermal sensors, retimer, clock genenerator, PWM fan */ + i2c-mux@70 { + compatible = "nxp,pca9545"; + reg = <0x70>; + #address-cells = <1>; + #size-cells = <0>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + retimer: retimer@18 { + compatible = "ti,ds100df410"; + reg = <0x18>; + status = "okay"; + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + temp-sensor@4c { + compatible = "ti,tmp431"; + reg = <0x4c>; + }; + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + + temp-sensor@4c { + compatible = "ti,tmp431"; + reg = <0x4c>; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + + fan_controller: fan-controller@2e { + compatible = "microchip,emc2305"; + reg = <0x2e>; + #address-cells = <1>; + #size-cells = <0>; + #pwm-cells = <3>; + + fan0: fan@0 { + reg = <0>; + label = "System Fan 1"; + pwms = <&fan_controller 26000 1 1>; + #cooling-cells = <2>; + }; + + fan1: fan@1 { + reg = <1>; + label = "System Fan 2"; + pwms = <&fan_controller 26000 1 1>; + #cooling-cells = <2>; + }; + }; + }; + }; +}; + +&i2c1 { + status = "okay"; + + /* SFP+ modules */ + sfpmux: i2c-mux@70 { + compatible = "nxp,pca9545"; + reg = <0x70>; + #address-cells = <1>; + #size-cells = <0>; + + sfp0_i2c: i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + }; + + sfp1_i2c: i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + }; + }; +}; + +&i2c2 { + status = "okay"; + + i2c-mux@70 { + compatible = "nxp,pca9545"; + reg = <0x70>; + #address-cells = <1>; + #size-cells = <0>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + + power_sensor@40 { + compatible = "ti,ina234"; + reg = <0x40>; + label = "USB Power Delivery"; + #io-channel-cells = <1>; + shunt-resistor = <1000>; + }; + power_sensor@41 { + compatible = "ti,ina234"; + reg = <0x41>; + label = "5V PSU"; + #io-channel-cells = <1>; + shunt-resistor = <1000>; + }; + power_sensor@42 { + compatible = "ti,ina234"; + reg = <0x42>; + label = "1V Core PSU"; + #io-channel-cells = <1>; + shunt-resistor = <1000>; + }; + power_sensor@43 { + compatible = "ti,ina234"; + reg = <0x43>; + label = "1.2V DDR PSU"; + #io-channel-cells = <1>; + shunt-resistor = <5000>; + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + power_sensor@40 { + compatible = "ti,ina234"; + reg = <0x40>; + label = "1.35V SerDes PSU"; + #io-channel-cells = <1>; + shunt-resistor = <5000>; + }; + power_sensor@41 { + compatible = "ti,ina234"; + reg = <0x41>; + label = "1.8V PSU"; + #io-channel-cells = <1>; + shunt-resistor = <5000>; + }; + power_sensor@42 { + compatible = "ti,ina234"; + reg = <0x42>; + label = "2.5V DDR PSU"; + #io-channel-cells = <1>; + shunt-resistor = <5000>; + }; + power_sensor@43 { + compatible = "ti,ina234"; + reg = <0x43>; + label = "3.3V PSU"; + #io-channel-cells = <1>; + shunt-resistor = <1000>; + }; + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + + rtc@53 { + compatible = "nxp,pcf2131"; + reg = <0x53>; + status = "okay"; + }; + + typec: hd3ss3220@47 { + compatible = "ti,hd3ss3220"; + reg = <0x47>; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + + lp5810@6c { + compatible = "ti,lp5812"; + reg = <0x6c>; + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + label = "status:white"; + led-max-microamp = <25500>; + }; + + led@1 { + reg = <1>; + color = ; + label = "status:blue"; + led-max-microamp = <25500>; + }; + + led@2 { + reg = <2>; + color = ; + label = "status:green"; + led-max-microamp = <25500>; + }; + + led@3 { + reg = <3>; + color = ; + label = "status:red"; + led-max-microamp = <25500>; + }; + }; + }; + }; +}; + +&i2c3 { + status = "okay"; +}; + +&qspi { + status = "okay"; + + mt25qu512a0: flash@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "jedec,spi-nor"; + spi-max-frequency = <50000000>; + reg = <0>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@flash { + label = "flash"; + reg = <0x0 0x4000000>; + }; + + partition@0 { + label = "rcw-bl2"; + reg = <0x0 0x100000>; + }; + + partition@100000 { + label = "uboot"; + reg = <0x100000 0x200000>; + }; + + partition@300000 { + label = "uboot-env"; + reg = <0x300000 0x100000>; + }; + + partition@400000 { + label = "fman-ucode"; + reg = <0x400000 0x100000>; + }; + + partition@500000 { + label = "recovery-dtb"; + reg = <0x500000 0x100000>; + }; + + partition@600000 { + label = "backup"; + reg = <0x600000 0x400000>; + }; + + partition@a00000 { + label = "kernel-initramfs"; + reg = <0xa00000 0x1600000>; + }; + + partition@2000000 { + label = "unallocated"; + reg = <0x2000000 0x2000000>; + }; + }; + }; +}; + +#include "fsl-ls1046-post.dtsi" + +&fman0 { + ethernet@e0000 { + status = "disabled"; + }; + + ethernet@e4000 { + status = "disabled"; + }; + + ethernet@e6000 { + status = "disabled"; + }; + + ethernet@e8000 { + phy-handle = <&sgmii_phy0>; + phy-connection-type = "sgmii"; + status = "okay"; + }; + + ethernet@ea000 { + phy-handle = <&sgmii_phy1>; + phy-connection-type = "sgmii"; + status = "okay"; + }; + + ethernet@e2000 { + phy-handle = <&sgmii_phy2>; + phy-connection-type = "sgmii"; + status = "okay"; + }; + + fm1_mac9: ethernet@f0000 { /* 10GEC1 */ + sfp = <&sfp_xfi0>; + phy-connection-type = "10gbase-r"; + managed = "in-band-status"; + pcs-handle-names = "xfi"; /* Match enet7 for consistency */ + }; + + fm1_mac10: ethernet@f2000 { /* 10GEC2 */ + sfp = <&sfp_xfi1>; + phy-connection-type = "10gbase-r"; + managed = "in-band-status"; + }; + + mdio@fc000 { + status = "disabled"; + }; + + mdio@fd000 { + sgmii_phy0: ethernet-phy@0 { + reg = <0x0>; + }; + + sgmii_phy1: ethernet-phy@1 { + reg = <0x1>; + }; + + sgmii_phy2: ethernet-phy@2 { + reg = <0x2>; + }; + }; +}; + diff --git a/makefile b/makefile index 912a880..5105286 100644 --- a/makefile +++ b/makefile @@ -17,7 +17,7 @@ kernel-build: build-base --build-arg ARCH=$(ARCH) \ --build-arg CROSS_COMPILE=$(CROSS_COMPILE) \ --build-arg NXP_VERSION=$(NXP_VERSION) \ - --build-arg DTB_TARGET=$(DTB_TARGET) \ + --build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \ -t $(DOCKER_IMAGE_ROOT)/kernel-build:$(TAG) . fit-build: kernel-build @@ -36,6 +36,6 @@ itb: fit-build --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ --build-arg TAG=$(TAG) \ --build-arg ARCH=$(ARCH) \ - --build-arg DTB_TARGET=$(DTB_TARGET) \ + --build-arg DEVICE_TREE_TARGET=$(DEVICE_TREE_TARGET) \ --output type=local,dest=./out \ -t $(DOCKER_IMAGE_ROOT)/itb:$(TAG) .