mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-05-04 17:36:12 +02:00
microchipsw: lan969x: use upstreamed DTS
LAN969x DTS was finally merged upstream, so lets backport the backported DTS instead of keeping a local copy. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
This commit is contained in:
parent
593b448455
commit
c5455f60ab
@ -1,24 +0,0 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) */
|
||||
|
||||
#ifndef _DTS_CLK_LAN9691_H
|
||||
#define _DTS_CLK_LAN9691_H
|
||||
|
||||
#define GCK_ID_QSPI0 0
|
||||
#define GCK_ID_QSPI2 1
|
||||
#define GCK_ID_SDMMC0 2
|
||||
#define GCK_ID_SDMMC1 3
|
||||
#define GCK_ID_MCAN0 4
|
||||
#define GCK_ID_MCAN1 5
|
||||
#define GCK_ID_FLEXCOM0 6
|
||||
#define GCK_ID_FLEXCOM1 7
|
||||
#define GCK_ID_FLEXCOM2 8
|
||||
#define GCK_ID_FLEXCOM3 9
|
||||
#define GCK_ID_TIMER 10
|
||||
#define GCK_ID_USB_REFCLK 11
|
||||
|
||||
/* Gate clocks */
|
||||
#define GCK_GATE_USB_DRD 12
|
||||
#define GCK_GATE_MCRAMC 13
|
||||
#define GCK_GATE_HMATRIX 14
|
||||
|
||||
#endif
|
||||
@ -1,545 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
||||
/*
|
||||
* Copyright (c) 2025 Microchip Technology Inc. and its subsidiaries.
|
||||
*/
|
||||
|
||||
#include <dt-bindings/dma/at91.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/mfd/at91-usart.h>
|
||||
#include <dt-bindings/mfd/atmel-flexcom.h>
|
||||
|
||||
#include "clk-lan9691.h"
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
model = "Microchip LAN969x";
|
||||
compatible = "microchip,lan9691";
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
clocks {
|
||||
fx100_clk: fx100-clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <320000000>;
|
||||
};
|
||||
|
||||
cpu_clk: cpu-clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <1000000000>;
|
||||
};
|
||||
|
||||
ddr_clk: ddr-clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <600000000>;
|
||||
};
|
||||
|
||||
fabric_clk: fabric-clk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <250000000>;
|
||||
};
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu0: cpu@0 {
|
||||
compatible = "arm,cortex-a53";
|
||||
device_type = "cpu";
|
||||
reg = <0x0 0x0>;
|
||||
next-level-cache = <&l2_0>;
|
||||
};
|
||||
|
||||
l2_0: l2-cache {
|
||||
compatible = "cache";
|
||||
cache-level = <2>;
|
||||
cache-unified;
|
||||
};
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-1.0";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,cortex-a53-pmu";
|
||||
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Secure Phys IRQ */
|
||||
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Non-secure Phys IRQ */
|
||||
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virt IRQ */
|
||||
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hyp IRQ */
|
||||
};
|
||||
|
||||
axi: axi {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
usb: usb@300000 {
|
||||
compatible = "microchip,lan9691-dwc3", "snps,dwc3";
|
||||
reg = <0x300000 0x80000>;
|
||||
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks GCK_GATE_USB_DRD>,
|
||||
<&clks GCK_ID_USB_REFCLK>;
|
||||
clock-names = "bus_early", "ref";
|
||||
assigned-clocks = <&clks GCK_ID_USB_REFCLK>;
|
||||
assigned-clock-rates = <60000000>;
|
||||
maximum-speed = "high-speed";
|
||||
dr_mode = "host";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
otp: otp@e0021000 {
|
||||
compatible = "microchip,lan9691-otpc";
|
||||
reg = <0xe0021000 0x1000>;
|
||||
};
|
||||
|
||||
flx0: flexcom@e0040000 {
|
||||
compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
reg = <0xe0040000 0x100>;
|
||||
ranges = <0x0 0xe0040000 0x800>;
|
||||
clocks = <&clks GCK_ID_FLEXCOM0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
|
||||
usart0: serial@200 {
|
||||
compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
reg = <0x200 0x200>;
|
||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,fifo-size = <32>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi0: spi@400 {
|
||||
compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
reg = <0x400 0x200>;
|
||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "spi_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@600 {
|
||||
compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
reg = <0x600 0x200>;
|
||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
flx1: flexcom@e0044000 {
|
||||
compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
reg = <0xe0044000 0x100>;
|
||||
ranges = <0x0 0xe0044000 0x800>;
|
||||
clocks = <&clks GCK_ID_FLEXCOM1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
|
||||
usart1: serial@200 {
|
||||
compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
reg = <0x200 0x200>;
|
||||
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,fifo-size = <32>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi1: spi@400 {
|
||||
compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
reg = <0x400 0x200>;
|
||||
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "spi_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c1: i2c@600 {
|
||||
compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
reg = <0x600 0x200>;
|
||||
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
trng: rng@e0048000 {
|
||||
compatible = "microchip,lan9691-trng", "atmel,at91sam9g45-trng";
|
||||
reg = <0xe0048000 0x100>;
|
||||
clocks = <&fabric_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
aes: crypto@e004c000 {
|
||||
compatible = "microchip,lan9691-aes", "atmel,at91sam9g46-aes";
|
||||
reg = <0xe004c000 0x100>;
|
||||
interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(12)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(13)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "aes_clk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
flx2: flexcom@e0060000 {
|
||||
compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
reg = <0xe0060000 0x100>;
|
||||
ranges = <0x0 0xe0060000 0x800>;
|
||||
clocks = <&clks GCK_ID_FLEXCOM2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
|
||||
usart2: serial@200 {
|
||||
compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
reg = <0x200 0x200>;
|
||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,fifo-size = <32>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi2: spi@400 {
|
||||
compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
reg = <0x400 0x200>;
|
||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "spi_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@600 {
|
||||
compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
reg = <0x600 0x200>;
|
||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
flx3: flexcom@e0064000 {
|
||||
compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
reg = <0xe0064000 0x100>;
|
||||
ranges = <0x0 0xe0064000 0x800>;
|
||||
clocks = <&clks GCK_ID_FLEXCOM3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
|
||||
usart3: serial@200 {
|
||||
compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
reg = <0x200 0x200>;
|
||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "usart";
|
||||
atmel,fifo-size = <32>;
|
||||
atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi3: spi@400 {
|
||||
compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
reg = <0x400 0x200>;
|
||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "spi_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
atmel,fifo-size = <32>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c3: i2c@600 {
|
||||
compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
reg = <0x600 0x200>;
|
||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
<&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
dma-names = "tx", "rx";
|
||||
clocks = <&fabric_clk>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
dma: dma-controller@e0068000 {
|
||||
compatible = "microchip,lan9691-dma", "microchip,sama7g5-dma";
|
||||
reg = <0xe0068000 0x1000>;
|
||||
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dma-channels = <16>;
|
||||
#dma-cells = <1>;
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "dma_clk";
|
||||
};
|
||||
|
||||
sha: crypto@e006c000 {
|
||||
compatible = "microchip,lan9691-sha", "atmel,at91sam9g46-sha";
|
||||
reg = <0xe006c000 0xec>;
|
||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&dma AT91_XDMAC_DT_PERID(14)>;
|
||||
dma-names = "tx";
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "sha_clk";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer: timer@e008c000 {
|
||||
compatible = "snps,dw-apb-timer";
|
||||
reg = <0xe008c000 0x400>;
|
||||
clocks = <&fabric_clk>;
|
||||
clock-names = "timer";
|
||||
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
watchdog: watchdog@e0090000 {
|
||||
compatible = "snps,dw-wdt";
|
||||
reg = <0xe0090000 0x1000>;
|
||||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&fabric_clk>;
|
||||
};
|
||||
|
||||
cpu_ctrl: syscon@e00c0000 {
|
||||
compatible = "microchip,lan966x-cpu-syscon", "syscon";
|
||||
reg = <0xe00c0000 0x350>;
|
||||
};
|
||||
|
||||
switch: switch@e00c0000 {
|
||||
compatible = "microchip,lan9691-switch";
|
||||
reg = <0xe00c0000 0x0010000>,
|
||||
<0xe2010000 0x1410000>;
|
||||
reg-names = "cpu", "devices";
|
||||
interrupt-names = "xtr", "fdma", "ptp";
|
||||
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
resets = <&reset 0>;
|
||||
reset-names = "switch";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
clks: clock-controller@e00c00b4 {
|
||||
compatible = "microchip,lan9691-gck";
|
||||
reg = <0xe00c00b4 0x30>, <0xe00c0308 0x4>;
|
||||
#clock-cells = <1>;
|
||||
clocks = <&cpu_clk>, <&ddr_clk>, <&fx100_clk>;
|
||||
clock-names = "cpu", "ddr", "sys";
|
||||
};
|
||||
|
||||
qspi0: spi@e0804000 {
|
||||
compatible = "microchip,lan9691-qspi";
|
||||
reg = <0xe0804000 0x00000100>,
|
||||
<0x20000000 0x08000000>;
|
||||
reg-names = "qspi_base", "qspi_mmap";
|
||||
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&fabric_clk>, <&clks GCK_ID_QSPI0>;
|
||||
clock-names = "pclk", "gclk";
|
||||
assigned-clocks = <&clks GCK_ID_QSPI0>;
|
||||
assigned-clock-rates = <100000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdmmc0: mmc@e0830000 {
|
||||
compatible = "microchip,lan9691-sdhci";
|
||||
reg = <0xe0830000 0x00000300>;
|
||||
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks GCK_ID_SDMMC0>, <&clks GCK_ID_SDMMC0>;
|
||||
clock-names = "hclock", "multclk";
|
||||
assigned-clocks = <&clks GCK_ID_SDMMC0>;
|
||||
assigned-clock-rates = <100000000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdmmc1: mmc@e0838000 {
|
||||
compatible = "microchip,lan9691-sdhci";
|
||||
reg = <0xe0838000 0x00000300>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clks GCK_ID_SDMMC1>, <&clks GCK_ID_SDMMC1>;
|
||||
clock-names = "hclock", "multclk";
|
||||
assigned-clocks = <&clks GCK_ID_SDMMC1>;
|
||||
assigned-clock-rates = <45000000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
qspi2: spi@e0834000 {
|
||||
compatible = "microchip,lan9691-qspi";
|
||||
reg = <0xe0834000 0x00000100>,
|
||||
<0x30000000 0x04000000>;
|
||||
reg-names = "qspi_base", "qspi_mmap";
|
||||
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&fabric_clk>, <&clks GCK_ID_QSPI2>;
|
||||
clock-names = "pclk", "gclk";
|
||||
assigned-clocks = <&clks GCK_ID_QSPI2>;
|
||||
assigned-clock-rates = <100000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
reset: reset-controller@e201000c {
|
||||
compatible = "microchip,lan9691-switch-reset",
|
||||
"microchip,lan966x-switch-reset";
|
||||
reg = <0xe201000c 0x4>;
|
||||
reg-names = "gcb";
|
||||
#reset-cells = <1>;
|
||||
cpu-syscon = <&cpu_ctrl>;
|
||||
};
|
||||
|
||||
gpio: pinctrl@e20100d4 {
|
||||
compatible = "microchip,lan9691-pinctrl";
|
||||
reg = <0xe20100d4 0xd4>,
|
||||
<0xe2010370 0xa8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&gpio 0 0 66>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
mdio0: mdio@e20101a8 {
|
||||
compatible = "microchip,lan9691-miim", "mscc,ocelot-miim";
|
||||
reg = <0xe20101a8 0x24>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&fx100_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mdio1: mdio@e20101cc {
|
||||
compatible = "microchip,lan9691-miim", "mscc,ocelot-miim";
|
||||
reg = <0xe20101cc 0x24>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&fx100_clk>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sgpio: gpio@e2010230 {
|
||||
compatible = "microchip,lan9691-sgpio", "microchip,sparx5-sgpio";
|
||||
reg = <0xe2010230 0x118>;
|
||||
clocks = <&fx100_clk>;
|
||||
resets = <&reset 0>;
|
||||
reset-names = "switch";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
|
||||
sgpio_in: gpio@0 {
|
||||
compatible = "microchip,lan9691-sgpio-bank",
|
||||
"microchip,sparx5-sgpio-bank";
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>;
|
||||
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
};
|
||||
|
||||
sgpio_out: gpio@1 {
|
||||
compatible = "microchip,lan9691-sgpio-bank",
|
||||
"microchip,sparx5-sgpio-bank";
|
||||
reg = <1>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
tmon: hwmon@e2020100 {
|
||||
compatible = "microchip,lan9691-temp", "microchip,sparx5-temp";
|
||||
reg = <0xe2020100 0xc>;
|
||||
clocks = <&fx100_clk>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
serdes: serdes@e3410000 {
|
||||
compatible = "microchip,lan9691-serdes";
|
||||
reg = <0xe3410000 0x150000>;
|
||||
#phy-cells = <1>;
|
||||
clocks = <&fabric_clk>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@e8c11000 {
|
||||
compatible = "arm,gic-400";
|
||||
reg = <0xe8c11000 0x1000>, /* Distributor GICD_ */
|
||||
<0xe8c12000 0x2000>, /* CPU interface GICC_ */
|
||||
<0xe8c14000 0x2000>, /* Virt interface control */
|
||||
<0xe8c16000 0x2000>; /* Virt CPU interface */
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -1,795 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
||||
/*
|
||||
* Copyright (c) 2025 Microchip Technology Inc. and its subsidiaries.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "lan9691.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Microchip EV23X71A";
|
||||
compatible = "microchip,ev23x71a", "microchip,lan9696", "microchip,lan9691";
|
||||
|
||||
aliases {
|
||||
serial0 = &usart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio 60 GPIO_ACTIVE_LOW>;
|
||||
open-source;
|
||||
priority = <200>;
|
||||
};
|
||||
|
||||
i2c-mux {
|
||||
compatible = "i2c-mux-gpio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
i2c-parent = <&i2c3>;
|
||||
idle-state = <0x8>;
|
||||
mux-gpios = <&sgpio_out 0 1 GPIO_ACTIVE_HIGH>,
|
||||
<&sgpio_out 0 2 GPIO_ACTIVE_HIGH>,
|
||||
<&sgpio_out 0 3 GPIO_ACTIVE_HIGH>;
|
||||
settle-time-us = <100>;
|
||||
|
||||
i2c_sfp0: i2c@0 {
|
||||
reg = <0x0>;
|
||||
};
|
||||
|
||||
i2c_sfp1: i2c@1 {
|
||||
reg = <0x1>;
|
||||
};
|
||||
|
||||
i2c_sfp2: i2c@2 {
|
||||
reg = <0x2>;
|
||||
};
|
||||
|
||||
i2c_sfp3: i2c@3 {
|
||||
reg = <0x3>;
|
||||
};
|
||||
|
||||
i2c_poe: i2c@7 {
|
||||
reg = <0x7>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-status {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 61 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-sfp1-green {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&sgpio_out 6 0 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp1-yellow {
|
||||
color = <LED_COLOR_ID_YELLOW>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <0>;
|
||||
gpios = <&sgpio_out 6 1 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp2-green {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&sgpio_out 7 0 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp2-yellow {
|
||||
color = <LED_COLOR_ID_YELLOW>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <1>;
|
||||
gpios = <&sgpio_out 7 1 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp3-green {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&sgpio_out 8 0 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp3-yellow {
|
||||
color = <LED_COLOR_ID_YELLOW>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <2>;
|
||||
gpios = <&sgpio_out 8 1 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp4-green {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&sgpio_out 9 0 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-sfp4-yellow {
|
||||
color = <LED_COLOR_ID_YELLOW>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
function-enumerator = <3>;
|
||||
gpios = <&sgpio_out 9 1 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
mux-controller {
|
||||
compatible = "gpio-mux";
|
||||
#mux-control-cells = <0>;
|
||||
mux-gpios = <&sgpio_out 1 2 GPIO_ACTIVE_LOW>,
|
||||
<&sgpio_out 1 3 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
sfp0: sfp0 {
|
||||
compatible = "sff,sfp";
|
||||
i2c-bus = <&i2c_sfp0>;
|
||||
tx-disable-gpios = <&sgpio_out 6 2 GPIO_ACTIVE_HIGH>;
|
||||
los-gpios = <&sgpio_in 6 0 GPIO_ACTIVE_HIGH>;
|
||||
mod-def0-gpios = <&sgpio_in 6 1 GPIO_ACTIVE_LOW>;
|
||||
tx-fault-gpios = <&sgpio_in 6 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sfp1: sfp1 {
|
||||
compatible = "sff,sfp";
|
||||
i2c-bus = <&i2c_sfp1>;
|
||||
tx-disable-gpios = <&sgpio_out 7 2 GPIO_ACTIVE_HIGH>;
|
||||
los-gpios = <&sgpio_in 7 0 GPIO_ACTIVE_HIGH>;
|
||||
mod-def0-gpios = <&sgpio_in 7 1 GPIO_ACTIVE_LOW>;
|
||||
tx-fault-gpios = <&sgpio_in 7 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sfp2: sfp2 {
|
||||
compatible = "sff,sfp";
|
||||
i2c-bus = <&i2c_sfp2>;
|
||||
tx-disable-gpios = <&sgpio_out 8 2 GPIO_ACTIVE_HIGH>;
|
||||
los-gpios = <&sgpio_in 8 0 GPIO_ACTIVE_HIGH>;
|
||||
mod-def0-gpios = <&sgpio_in 8 1 GPIO_ACTIVE_LOW>;
|
||||
tx-fault-gpios = <&sgpio_in 8 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
sfp3: sfp3 {
|
||||
compatible = "sff,sfp";
|
||||
i2c-bus = <&i2c_sfp3>;
|
||||
tx-disable-gpios = <&sgpio_out 9 2 GPIO_ACTIVE_HIGH>;
|
||||
los-gpios = <&sgpio_in 9 0 GPIO_ACTIVE_HIGH>;
|
||||
mod-def0-gpios = <&sgpio_in 9 1 GPIO_ACTIVE_LOW>;
|
||||
tx-fault-gpios = <&sgpio_in 9 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpio {
|
||||
emmc_sd_pins: emmc-sd-pins {
|
||||
/* eMMC_SD - CMD, CLK, D0, D1, D2, D3, D4, D5, D6, D7, RSTN */
|
||||
pins = "GPIO_14", "GPIO_15", "GPIO_16", "GPIO_17",
|
||||
"GPIO_18", "GPIO_19", "GPIO_20", "GPIO_21",
|
||||
"GPIO_22", "GPIO_23", "GPIO_24";
|
||||
function = "emmc_sd";
|
||||
};
|
||||
|
||||
fan_pins: fan-pins {
|
||||
pins = "GPIO_25", "GPIO_26";
|
||||
function = "fan";
|
||||
};
|
||||
|
||||
fc0_pins: fc0-pins {
|
||||
pins = "GPIO_3", "GPIO_4";
|
||||
function = "fc";
|
||||
};
|
||||
|
||||
fc2_pins: fc2-pins {
|
||||
pins = "GPIO_64", "GPIO_65", "GPIO_66";
|
||||
function = "fc";
|
||||
};
|
||||
|
||||
fc3_pins: fc3-pins {
|
||||
pins = "GPIO_55", "GPIO_56";
|
||||
function = "fc";
|
||||
};
|
||||
|
||||
mdio_irq_pins: mdio-irq-pins {
|
||||
pins = "GPIO_11";
|
||||
function = "miim_irq";
|
||||
};
|
||||
|
||||
mdio_pins: mdio-pins {
|
||||
pins = "GPIO_9", "GPIO_10";
|
||||
function = "miim";
|
||||
};
|
||||
|
||||
ptp_ext_pins: ptp-ext-pins {
|
||||
pins = "GPIO_59";
|
||||
function = "ptpsync_5";
|
||||
};
|
||||
|
||||
ptp_out_pins: ptp-out-pins {
|
||||
pins = "GPIO_58";
|
||||
function = "ptpsync_4";
|
||||
};
|
||||
|
||||
sgpio_pins: sgpio-pins {
|
||||
/* SCK, D0, D1, LD */
|
||||
pins = "GPIO_5", "GPIO_6", "GPIO_7", "GPIO_8";
|
||||
function = "sgpio_a";
|
||||
};
|
||||
|
||||
usb_over_pins: usb-over-pins {
|
||||
pins = "GPIO_13";
|
||||
function = "usb_over_detect";
|
||||
};
|
||||
|
||||
usb_power_pins: usb-power-pins {
|
||||
pins = "GPIO_1";
|
||||
function = "usb_power";
|
||||
};
|
||||
|
||||
usb_rst_pins: usb-rst-pins {
|
||||
pins = "GPIO_12";
|
||||
function = "usb2phy_rst";
|
||||
};
|
||||
|
||||
usb_ulpi_pins: usb-ulpi-pins {
|
||||
pins = "GPIO_30", "GPIO_31", "GPIO_32", "GPIO_33",
|
||||
"GPIO_34", "GPIO_35", "GPIO_36", "GPIO_37",
|
||||
"GPIO_38", "GPIO_39", "GPIO_40", "GPIO_41";
|
||||
function = "usb_ulpi";
|
||||
};
|
||||
};
|
||||
|
||||
&flx0 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&flx2 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&flx3 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-0 = <&fc3_pins>;
|
||||
pinctrl-names = "default";
|
||||
i2c-analog-filter;
|
||||
i2c-digital-filter;
|
||||
i2c-digital-filter-width-ns = <35>;
|
||||
i2c-sda-hold-time-ns = <1500>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
pinctrl-0 = <&mdio_pins>, <&mdio_irq_pins>;
|
||||
pinctrl-names = "default";
|
||||
reset-gpios = <&gpio 62 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
phy3: phy@3 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <3>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy4: phy@4 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <4>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy5: phy@5 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <5>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy6: phy@6 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <6>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy7: phy@7 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <7>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy8: phy@8 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <8>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy9: phy@9 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <9>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy10: phy@10 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <10>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy11: phy@11 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <11>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy12: phy@12 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <12>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy13: phy@13 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <13>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy14: phy@14 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <14>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy15: phy@15 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <15>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy16: phy@16 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <16>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy17: phy@17 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <17>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy18: phy@18 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <18>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy19: phy@19 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <19>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy20: phy@20 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <20>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy21: phy@21 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <21>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy22: phy@22 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <22>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy23: phy@23 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <23>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy24: phy@24 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <24>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy25: phy@25 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <25>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy26: phy@26 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <26>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
|
||||
phy27: phy@27 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <27>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio>;
|
||||
};
|
||||
};
|
||||
|
||||
&otp {
|
||||
nvmem-layout {
|
||||
compatible = "microchip,otp-layout";
|
||||
|
||||
base_mac_address: base-mac-address {
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&qspi0 {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <100000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
spi-tx-bus-width = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
m25p,fast-read;
|
||||
};
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
pinctrl-0 = <&emmc_sd_pins>;
|
||||
pinctrl-names = "default";
|
||||
max-frequency = <100000000>;
|
||||
bus-width = <8>;
|
||||
mmc-ddr-1_8v;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
disable-wp;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&serdes {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sgpio {
|
||||
pinctrl-0 = <&sgpio_pins>;
|
||||
pinctrl-names = "default";
|
||||
microchip,sgpio-port-ranges = <0 1>, <6 9>;
|
||||
status = "okay";
|
||||
|
||||
gpio@0 {
|
||||
ngpios = <128>;
|
||||
};
|
||||
gpio@1 {
|
||||
ngpios = <128>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
pinctrl-0 = <&fc2_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-gpios = <&gpio 63 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&switch {
|
||||
pinctrl-0 = <&ptp_out_pins>, <&ptp_ext_pins>;
|
||||
pinctrl-names = "default";
|
||||
nvmem-cells = <&base_mac_address 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
status = "okay";
|
||||
|
||||
ethernet-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port0: port@0 {
|
||||
reg = <0>;
|
||||
phy-handle = <&phy4>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 0>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port1: port@1 {
|
||||
reg = <1>;
|
||||
phy-handle = <&phy5>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 0>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port2: port@2 {
|
||||
reg = <2>;
|
||||
phy-handle = <&phy6>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 0>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port3: port@3 {
|
||||
reg = <3>;
|
||||
phy-handle = <&phy7>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 0>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port4: port@4 {
|
||||
reg = <4>;
|
||||
phy-handle = <&phy8>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 1>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port5: port@5 {
|
||||
reg = <5>;
|
||||
phy-handle = <&phy9>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 1>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port6: port@6 {
|
||||
reg = <6>;
|
||||
phy-handle = <&phy10>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 1>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port7: port@7 {
|
||||
reg = <7>;
|
||||
phy-handle = <&phy11>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 1>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port8: port@8 {
|
||||
reg = <8>;
|
||||
phy-handle = <&phy12>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 2>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port9: port@9 {
|
||||
reg = <9>;
|
||||
phy-handle = <&phy13>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 2>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port10: port@10 {
|
||||
reg = <10>;
|
||||
phy-handle = <&phy14>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 2>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port11: port@11 {
|
||||
reg = <11>;
|
||||
phy-handle = <&phy15>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 2>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port12: port@12 {
|
||||
reg = <12>;
|
||||
phy-handle = <&phy16>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 3>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port13: port@13 {
|
||||
reg = <13>;
|
||||
phy-handle = <&phy17>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 3>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port14: port@14 {
|
||||
reg = <14>;
|
||||
phy-handle = <&phy18>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 3>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port15: port@15 {
|
||||
reg = <15>;
|
||||
phy-handle = <&phy19>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 3>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port16: port@16 {
|
||||
reg = <16>;
|
||||
phy-handle = <&phy20>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 4>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port17: port@17 {
|
||||
reg = <17>;
|
||||
phy-handle = <&phy21>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 4>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port18: port@18 {
|
||||
reg = <18>;
|
||||
phy-handle = <&phy22>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 4>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port19: port@19 {
|
||||
reg = <19>;
|
||||
phy-handle = <&phy23>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 4>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port20: port@20 {
|
||||
reg = <20>;
|
||||
phy-handle = <&phy24>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 5>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port21: port@21 {
|
||||
reg = <21>;
|
||||
phy-handle = <&phy25>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 5>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port22: port@22 {
|
||||
reg = <22>;
|
||||
phy-handle = <&phy26>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 5>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port23: port@23 {
|
||||
reg = <23>;
|
||||
phy-handle = <&phy27>;
|
||||
phy-mode = "qsgmii";
|
||||
phys = <&serdes 5>;
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
|
||||
port24: port@24 {
|
||||
reg = <24>;
|
||||
phys = <&serdes 6>;
|
||||
phy-mode = "10gbase-r";
|
||||
sfp = <&sfp0>;
|
||||
managed = "in-band-status";
|
||||
microchip,bandwidth = <10000>;
|
||||
microchip,sd-sgpio = <24>;
|
||||
};
|
||||
|
||||
port25: port@25 {
|
||||
reg = <25>;
|
||||
phys = <&serdes 7>;
|
||||
phy-mode = "10gbase-r";
|
||||
sfp = <&sfp1>;
|
||||
managed = "in-band-status";
|
||||
microchip,bandwidth = <10000>;
|
||||
microchip,sd-sgpio = <28>;
|
||||
};
|
||||
|
||||
port26: port@26 {
|
||||
reg = <26>;
|
||||
phys = <&serdes 8>;
|
||||
phy-mode = "10gbase-r";
|
||||
sfp = <&sfp2>;
|
||||
managed = "in-band-status";
|
||||
microchip,bandwidth = <10000>;
|
||||
microchip,sd-sgpio = <32>;
|
||||
};
|
||||
|
||||
port27: port@27 {
|
||||
reg = <27>;
|
||||
phys = <&serdes 9>;
|
||||
phy-mode = "10gbase-r";
|
||||
sfp = <&sfp3>;
|
||||
managed = "in-band-status";
|
||||
microchip,bandwidth = <10000>;
|
||||
microchip,sd-sgpio = <36>;
|
||||
};
|
||||
|
||||
port29: port@29 {
|
||||
reg = <29>;
|
||||
phy-handle = <&phy3>;
|
||||
phy-mode = "rgmii-id";
|
||||
microchip,bandwidth = <1000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&tmon {
|
||||
pinctrl-0 = <&fan_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&usart0 {
|
||||
pinctrl-0 = <&fc0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb {
|
||||
pinctrl-0 = <&usb_ulpi_pins>, <&usb_rst_pins>, <&usb_over_pins>, <&usb_power_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
@ -1,3 +1,5 @@
|
||||
DTS_DIR := $(DTS_DIR)/microchip
|
||||
|
||||
define Build/lan969x-fip
|
||||
cat $(STAGING_DIR_IMAGE)/$1-fip.bin >> $@
|
||||
endef
|
||||
@ -25,6 +27,7 @@ define Device/microchip_ev23x71a
|
||||
DEVICE_VENDOR := Microchip
|
||||
DEVICE_MODEL := EV23X71A
|
||||
SOC := lan9696
|
||||
DEVICE_DTS_DIR := $(DTS_DIR)
|
||||
DEVICE_PACKAGES := kmod-i2c-mux-gpio
|
||||
IMAGES += emmc-atf-gpt.gz emmc-gpt.img.gz
|
||||
IMAGE/emmc-atf-gpt.gz := lan969x-gpt-emmc |\
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
From 229eeb0ad913c1bb2dd6027e5983d1e4c409abd0 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 2 Mar 2026 12:20:11 +0100
|
||||
Subject: [PATCH] arm64: dts: microchip: add LAN969x clock header file
|
||||
|
||||
LAN969x uses hardware clock indexes, so document theses in a header to make
|
||||
them humanly readable.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
Link: https://lore.kernel.org/r/20260302112153.464422-4-robert.marko@sartura.hr
|
||||
Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/clk-lan9691.h | 24 +++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/microchip/clk-lan9691.h
|
||||
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/microchip/clk-lan9691.h
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) */
|
||||
+
|
||||
+#ifndef _DTS_CLK_LAN9691_H
|
||||
+#define _DTS_CLK_LAN9691_H
|
||||
+
|
||||
+#define GCK_ID_QSPI0 0
|
||||
+#define GCK_ID_QSPI2 1
|
||||
+#define GCK_ID_SDMMC0 2
|
||||
+#define GCK_ID_SDMMC1 3
|
||||
+#define GCK_ID_MCAN0 4
|
||||
+#define GCK_ID_MCAN1 5
|
||||
+#define GCK_ID_FLEXCOM0 6
|
||||
+#define GCK_ID_FLEXCOM1 7
|
||||
+#define GCK_ID_FLEXCOM2 8
|
||||
+#define GCK_ID_FLEXCOM3 9
|
||||
+#define GCK_ID_TIMER 10
|
||||
+#define GCK_ID_USB_REFCLK 11
|
||||
+
|
||||
+/* Gate clocks */
|
||||
+#define GCK_GATE_USB_DRD 12
|
||||
+#define GCK_GATE_MCRAMC 13
|
||||
+#define GCK_GATE_HMATRIX 14
|
||||
+
|
||||
+#endif
|
||||
@ -0,0 +1,508 @@
|
||||
From 1effec9834710ec417861634c32208edcd2fcb2a Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 2 Mar 2026 12:20:12 +0100
|
||||
Subject: [PATCH] arm64: dts: microchip: add LAN969x support
|
||||
|
||||
Add support for Microchip LAN969x switch SoC series by adding the SoC DTSI.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
Acked-by: Daniel Machon <daniel.machon@microchip.com>
|
||||
Link: https://lore.kernel.org/r/20260302112153.464422-5-robert.marko@sartura.hr
|
||||
Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/lan9691.dtsi | 488 +++++++++++++++++++++
|
||||
1 file changed, 488 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
@@ -0,0 +1,488 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2025 Microchip Technology Inc. and its subsidiaries.
|
||||
+ */
|
||||
+
|
||||
+#include <dt-bindings/dma/at91.h>
|
||||
+#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
+#include <dt-bindings/mfd/at91-usart.h>
|
||||
+#include <dt-bindings/mfd/atmel-flexcom.h>
|
||||
+
|
||||
+#include "clk-lan9691.h"
|
||||
+
|
||||
+/ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ model = "Microchip LAN969x";
|
||||
+ compatible = "microchip,lan9691";
|
||||
+ interrupt-parent = <&gic>;
|
||||
+
|
||||
+ clocks {
|
||||
+ fx100_clk: fx100-clk {
|
||||
+ compatible = "fixed-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <320000000>;
|
||||
+ };
|
||||
+
|
||||
+ cpu_clk: cpu-clk {
|
||||
+ compatible = "fixed-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <1000000000>;
|
||||
+ };
|
||||
+
|
||||
+ ddr_clk: ddr-clk {
|
||||
+ compatible = "fixed-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <600000000>;
|
||||
+ };
|
||||
+
|
||||
+ fabric_clk: fabric-clk {
|
||||
+ compatible = "fixed-clock";
|
||||
+ #clock-cells = <0>;
|
||||
+ clock-frequency = <250000000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ cpus {
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ cpu0: cpu@0 {
|
||||
+ compatible = "arm,cortex-a53";
|
||||
+ device_type = "cpu";
|
||||
+ reg = <0x0 0x0>;
|
||||
+ next-level-cache = <&l2_0>;
|
||||
+ };
|
||||
+
|
||||
+ l2_0: l2-cache {
|
||||
+ compatible = "cache";
|
||||
+ cache-level = <2>;
|
||||
+ cache-unified;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ psci {
|
||||
+ compatible = "arm,psci-1.0";
|
||||
+ method = "smc";
|
||||
+ };
|
||||
+
|
||||
+ pmu {
|
||||
+ compatible = "arm,cortex-a53-pmu";
|
||||
+ interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ timer {
|
||||
+ compatible = "arm,armv8-timer";
|
||||
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>, /* Secure Phys IRQ */
|
||||
+ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>, /* Non-secure Phys IRQ */
|
||||
+ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>, /* Virt IRQ */
|
||||
+ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>; /* Hyp IRQ */
|
||||
+ };
|
||||
+
|
||||
+ axi: axi {
|
||||
+ compatible = "simple-bus";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges;
|
||||
+
|
||||
+ usb: usb@300000 {
|
||||
+ compatible = "microchip,lan9691-dwc3", "snps,dwc3";
|
||||
+ reg = <0x300000 0x80000>;
|
||||
+ interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&clks GCK_GATE_USB_DRD>,
|
||||
+ <&clks GCK_ID_USB_REFCLK>;
|
||||
+ clock-names = "bus_early", "ref";
|
||||
+ assigned-clocks = <&clks GCK_ID_USB_REFCLK>;
|
||||
+ assigned-clock-rates = <60000000>;
|
||||
+ maximum-speed = "high-speed";
|
||||
+ dr_mode = "host";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ flx0: flexcom@e0040000 {
|
||||
+ compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
+ reg = <0xe0040000 0x100>;
|
||||
+ ranges = <0x0 0xe0040000 0x800>;
|
||||
+ clocks = <&clks GCK_ID_FLEXCOM0>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ usart0: serial@200 {
|
||||
+ compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
+ reg = <0x200 0x200>;
|
||||
+ interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "usart";
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spi0: spi@400 {
|
||||
+ compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
+ reg = <0x400 0x200>;
|
||||
+ interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "spi_clk";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c0: i2c@600 {
|
||||
+ compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
+ reg = <0x600 0x200>;
|
||||
+ interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ flx1: flexcom@e0044000 {
|
||||
+ compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
+ reg = <0xe0044000 0x100>;
|
||||
+ ranges = <0x0 0xe0044000 0x800>;
|
||||
+ clocks = <&clks GCK_ID_FLEXCOM1>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ usart1: serial@200 {
|
||||
+ compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
+ reg = <0x200 0x200>;
|
||||
+ interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "usart";
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spi1: spi@400 {
|
||||
+ compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
+ reg = <0x400 0x200>;
|
||||
+ interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "spi_clk";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c1: i2c@600 {
|
||||
+ compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
+ reg = <0x600 0x200>;
|
||||
+ interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(3)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(2)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ trng: rng@e0048000 {
|
||||
+ compatible = "microchip,lan9691-trng", "atmel,at91sam9g45-trng";
|
||||
+ reg = <0xe0048000 0x100>;
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ aes: crypto@e004c000 {
|
||||
+ compatible = "microchip,lan9691-aes", "atmel,at91sam9g46-aes";
|
||||
+ reg = <0xe004c000 0x100>;
|
||||
+ interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(12)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(13)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "aes_clk";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ flx2: flexcom@e0060000 {
|
||||
+ compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
+ reg = <0xe0060000 0x100>;
|
||||
+ ranges = <0x0 0xe0060000 0x800>;
|
||||
+ clocks = <&clks GCK_ID_FLEXCOM2>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ usart2: serial@200 {
|
||||
+ compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
+ reg = <0x200 0x200>;
|
||||
+ interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "usart";
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spi2: spi@400 {
|
||||
+ compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
+ reg = <0x400 0x200>;
|
||||
+ interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "spi_clk";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c2: i2c@600 {
|
||||
+ compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
+ reg = <0x600 0x200>;
|
||||
+ interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(7)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(6)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ flx3: flexcom@e0064000 {
|
||||
+ compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
+ reg = <0xe0064000 0x100>;
|
||||
+ ranges = <0x0 0xe0064000 0x800>;
|
||||
+ clocks = <&clks GCK_ID_FLEXCOM3>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ usart3: serial@200 {
|
||||
+ compatible = "microchip,lan9691-usart", "atmel,at91sam9260-usart";
|
||||
+ reg = <0x200 0x200>;
|
||||
+ interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "usart";
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ spi3: spi@400 {
|
||||
+ compatible = "microchip,lan9691-spi", "atmel,at91rm9200-spi";
|
||||
+ reg = <0x400 0x200>;
|
||||
+ interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "spi_clk";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ atmel,fifo-size = <32>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ i2c3: i2c@600 {
|
||||
+ compatible = "microchip,lan9691-i2c", "microchip,sam9x60-i2c";
|
||||
+ reg = <0x600 0x200>;
|
||||
+ interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(9)>,
|
||||
+ <&dma AT91_XDMAC_DT_PERID(8)>;
|
||||
+ dma-names = "tx", "rx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ dma: dma-controller@e0068000 {
|
||||
+ compatible = "microchip,lan9691-dma", "microchip,sama7g5-dma";
|
||||
+ reg = <0xe0068000 0x1000>;
|
||||
+ interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dma-channels = <16>;
|
||||
+ #dma-cells = <1>;
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "dma_clk";
|
||||
+ };
|
||||
+
|
||||
+ sha: crypto@e006c000 {
|
||||
+ compatible = "microchip,lan9691-sha", "atmel,at91sam9g46-sha";
|
||||
+ reg = <0xe006c000 0xec>;
|
||||
+ interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ dmas = <&dma AT91_XDMAC_DT_PERID(14)>;
|
||||
+ dma-names = "tx";
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "sha_clk";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ timer: timer@e008c000 {
|
||||
+ compatible = "snps,dw-apb-timer";
|
||||
+ reg = <0xe008c000 0x400>;
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ clock-names = "timer";
|
||||
+ interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ watchdog: watchdog@e0090000 {
|
||||
+ compatible = "snps,dw-wdt";
|
||||
+ reg = <0xe0090000 0x1000>;
|
||||
+ interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ };
|
||||
+
|
||||
+ cpu_ctrl: syscon@e00c0000 {
|
||||
+ compatible = "microchip,lan966x-cpu-syscon", "syscon";
|
||||
+ reg = <0xe00c0000 0x350>;
|
||||
+ };
|
||||
+
|
||||
+ switch: switch@e00c0000 {
|
||||
+ compatible = "microchip,lan9691-switch";
|
||||
+ reg = <0xe00c0000 0x0010000>,
|
||||
+ <0xe2010000 0x1410000>;
|
||||
+ reg-names = "cpu", "devices";
|
||||
+ interrupt-names = "xtr", "fdma", "ptp";
|
||||
+ interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ resets = <&reset 0>;
|
||||
+ reset-names = "switch";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ clks: clock-controller@e00c00b4 {
|
||||
+ compatible = "microchip,lan9691-gck";
|
||||
+ reg = <0xe00c00b4 0x30>, <0xe00c0308 0x4>;
|
||||
+ #clock-cells = <1>;
|
||||
+ clocks = <&cpu_clk>, <&ddr_clk>, <&fx100_clk>;
|
||||
+ clock-names = "cpu", "ddr", "sys";
|
||||
+ };
|
||||
+
|
||||
+ reset: reset-controller@e201000c {
|
||||
+ compatible = "microchip,lan9691-switch-reset",
|
||||
+ "microchip,lan966x-switch-reset";
|
||||
+ reg = <0xe201000c 0x4>;
|
||||
+ reg-names = "gcb";
|
||||
+ #reset-cells = <1>;
|
||||
+ cpu-syscon = <&cpu_ctrl>;
|
||||
+ };
|
||||
+
|
||||
+ gpio: pinctrl@e20100d4 {
|
||||
+ compatible = "microchip,lan9691-pinctrl";
|
||||
+ reg = <0xe20100d4 0xd4>,
|
||||
+ <0xe2010370 0xa8>;
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <2>;
|
||||
+ gpio-ranges = <&gpio 0 0 66>;
|
||||
+ interrupt-controller;
|
||||
+ interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ #interrupt-cells = <2>;
|
||||
+ };
|
||||
+
|
||||
+ mdio0: mdio@e20101a8 {
|
||||
+ compatible = "microchip,lan9691-miim", "mscc,ocelot-miim";
|
||||
+ reg = <0xe20101a8 0x24>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ clocks = <&fx100_clk>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ mdio1: mdio@e20101cc {
|
||||
+ compatible = "microchip,lan9691-miim", "mscc,ocelot-miim";
|
||||
+ reg = <0xe20101cc 0x24>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ clocks = <&fx100_clk>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ sgpio: gpio@e2010230 {
|
||||
+ compatible = "microchip,lan9691-sgpio", "microchip,sparx5-sgpio";
|
||||
+ reg = <0xe2010230 0x118>;
|
||||
+ clocks = <&fx100_clk>;
|
||||
+ resets = <&reset 0>;
|
||||
+ reset-names = "switch";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ sgpio_in: gpio@0 {
|
||||
+ compatible = "microchip,lan9691-sgpio-bank",
|
||||
+ "microchip,sparx5-sgpio-bank";
|
||||
+ reg = <0>;
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <3>;
|
||||
+ interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <3>;
|
||||
+ };
|
||||
+
|
||||
+ sgpio_out: gpio@1 {
|
||||
+ compatible = "microchip,lan9691-sgpio-bank",
|
||||
+ "microchip,sparx5-sgpio-bank";
|
||||
+ reg = <1>;
|
||||
+ gpio-controller;
|
||||
+ #gpio-cells = <3>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ tmon: hwmon@e2020100 {
|
||||
+ compatible = "microchip,lan9691-temp", "microchip,sparx5-temp";
|
||||
+ reg = <0xe2020100 0xc>;
|
||||
+ clocks = <&fx100_clk>;
|
||||
+ #thermal-sensor-cells = <0>;
|
||||
+ };
|
||||
+
|
||||
+ serdes: serdes@e3410000 {
|
||||
+ compatible = "microchip,lan9691-serdes";
|
||||
+ reg = <0xe3410000 0x150000>;
|
||||
+ #phy-cells = <1>;
|
||||
+ clocks = <&fabric_clk>;
|
||||
+ };
|
||||
+
|
||||
+ gic: interrupt-controller@e8c11000 {
|
||||
+ compatible = "arm,gic-400";
|
||||
+ reg = <0xe8c11000 0x1000>, /* Distributor GICD_ */
|
||||
+ <0xe8c12000 0x2000>, /* CPU interface GICC_ */
|
||||
+ <0xe8c14000 0x2000>, /* Virt interface control */
|
||||
+ <0xe8c16000 0x2000>; /* Virt CPU interface */
|
||||
+ #interrupt-cells = <3>;
|
||||
+ interrupt-controller;
|
||||
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
@ -0,0 +1,786 @@
|
||||
From 711cca0f1cfef57018654b969da4041c2bab68d3 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Mon, 2 Mar 2026 12:20:14 +0100
|
||||
Subject: [PATCH] arm64: dts: microchip: add EV23X71A board
|
||||
|
||||
Microchip EV23X71A is an LAN9696 based evaluation board.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
Acked-by: Daniel Machon <daniel.machon@microchip.com>
|
||||
Tested-by: Daniel Machon <daniel.machon@microchip.com>
|
||||
Link: https://lore.kernel.org/r/20260302112153.464422-7-robert.marko@sartura.hr
|
||||
Signed-off-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/Makefile | 1 +
|
||||
.../boot/dts/microchip/lan9696-ev23x71a.dts | 756 ++++++++++++++++++
|
||||
2 files changed, 757 insertions(+)
|
||||
create mode 100644 arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
|
||||
|
||||
--- a/arch/arm64/boot/dts/microchip/Makefile
|
||||
+++ b/arch/arm64/boot/dts/microchip/Makefile
|
||||
@@ -1,4 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
+dtb-$(CONFIG_ARCH_LAN969X) += lan9696-ev23x71a.dtb
|
||||
dtb-$(CONFIG_ARCH_SPARX5) += sparx5_pcb125.dtb
|
||||
dtb-$(CONFIG_ARCH_SPARX5) += sparx5_pcb134.dtb sparx5_pcb134_emmc.dtb
|
||||
dtb-$(CONFIG_ARCH_SPARX5) += sparx5_pcb135.dtb sparx5_pcb135_emmc.dtb
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
|
||||
@@ -0,0 +1,756 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2025 Microchip Technology Inc. and its subsidiaries.
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/leds/common.h>
|
||||
+#include "lan9691.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "Microchip EV23X71A";
|
||||
+ compatible = "microchip,ev23x71a", "microchip,lan9696", "microchip,lan9691";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &usart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ gpio-restart {
|
||||
+ compatible = "gpio-restart";
|
||||
+ gpios = <&gpio 60 GPIO_ACTIVE_LOW>;
|
||||
+ open-source;
|
||||
+ priority = <200>;
|
||||
+ };
|
||||
+
|
||||
+ i2c-mux {
|
||||
+ compatible = "i2c-mux-gpio";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ i2c-parent = <&i2c3>;
|
||||
+ idle-state = <0x8>;
|
||||
+ mux-gpios = <&sgpio_out 0 1 GPIO_ACTIVE_HIGH>,
|
||||
+ <&sgpio_out 0 2 GPIO_ACTIVE_HIGH>,
|
||||
+ <&sgpio_out 0 3 GPIO_ACTIVE_HIGH>;
|
||||
+ settle-time-us = <100>;
|
||||
+
|
||||
+ i2c_sfp0: i2c@0 {
|
||||
+ reg = <0x0>;
|
||||
+ };
|
||||
+
|
||||
+ i2c_sfp1: i2c@1 {
|
||||
+ reg = <0x1>;
|
||||
+ };
|
||||
+
|
||||
+ i2c_sfp2: i2c@2 {
|
||||
+ reg = <0x2>;
|
||||
+ };
|
||||
+
|
||||
+ i2c_sfp3: i2c@3 {
|
||||
+ reg = <0x3>;
|
||||
+ };
|
||||
+
|
||||
+ i2c_poe: i2c@7 {
|
||||
+ reg = <0x7>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-status {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_STATUS;
|
||||
+ gpios = <&gpio 61 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ led-sfp1-green {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <0>;
|
||||
+ gpios = <&sgpio_out 6 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp1-yellow {
|
||||
+ color = <LED_COLOR_ID_YELLOW>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <0>;
|
||||
+ gpios = <&sgpio_out 6 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp2-green {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <1>;
|
||||
+ gpios = <&sgpio_out 7 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp2-yellow {
|
||||
+ color = <LED_COLOR_ID_YELLOW>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <1>;
|
||||
+ gpios = <&sgpio_out 7 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp3-green {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <2>;
|
||||
+ gpios = <&sgpio_out 8 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp3-yellow {
|
||||
+ color = <LED_COLOR_ID_YELLOW>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <2>;
|
||||
+ gpios = <&sgpio_out 8 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp4-green {
|
||||
+ color = <LED_COLOR_ID_GREEN>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <3>;
|
||||
+ gpios = <&sgpio_out 9 0 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-sfp4-yellow {
|
||||
+ color = <LED_COLOR_ID_YELLOW>;
|
||||
+ function = LED_FUNCTION_LAN;
|
||||
+ function-enumerator = <3>;
|
||||
+ gpios = <&sgpio_out 9 1 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ mux-controller {
|
||||
+ compatible = "gpio-mux";
|
||||
+ #mux-control-cells = <0>;
|
||||
+ mux-gpios = <&sgpio_out 1 2 GPIO_ACTIVE_LOW>,
|
||||
+ <&sgpio_out 1 3 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ sfp0: sfp0 {
|
||||
+ compatible = "sff,sfp";
|
||||
+ i2c-bus = <&i2c_sfp0>;
|
||||
+ tx-disable-gpios = <&sgpio_out 6 2 GPIO_ACTIVE_HIGH>;
|
||||
+ los-gpios = <&sgpio_in 6 0 GPIO_ACTIVE_HIGH>;
|
||||
+ mod-def0-gpios = <&sgpio_in 6 1 GPIO_ACTIVE_LOW>;
|
||||
+ tx-fault-gpios = <&sgpio_in 6 2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ sfp1: sfp1 {
|
||||
+ compatible = "sff,sfp";
|
||||
+ i2c-bus = <&i2c_sfp1>;
|
||||
+ tx-disable-gpios = <&sgpio_out 7 2 GPIO_ACTIVE_HIGH>;
|
||||
+ los-gpios = <&sgpio_in 7 0 GPIO_ACTIVE_HIGH>;
|
||||
+ mod-def0-gpios = <&sgpio_in 7 1 GPIO_ACTIVE_LOW>;
|
||||
+ tx-fault-gpios = <&sgpio_in 7 2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ sfp2: sfp2 {
|
||||
+ compatible = "sff,sfp";
|
||||
+ i2c-bus = <&i2c_sfp2>;
|
||||
+ tx-disable-gpios = <&sgpio_out 8 2 GPIO_ACTIVE_HIGH>;
|
||||
+ los-gpios = <&sgpio_in 8 0 GPIO_ACTIVE_HIGH>;
|
||||
+ mod-def0-gpios = <&sgpio_in 8 1 GPIO_ACTIVE_LOW>;
|
||||
+ tx-fault-gpios = <&sgpio_in 8 2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ sfp3: sfp3 {
|
||||
+ compatible = "sff,sfp";
|
||||
+ i2c-bus = <&i2c_sfp3>;
|
||||
+ tx-disable-gpios = <&sgpio_out 9 2 GPIO_ACTIVE_HIGH>;
|
||||
+ los-gpios = <&sgpio_in 9 0 GPIO_ACTIVE_HIGH>;
|
||||
+ mod-def0-gpios = <&sgpio_in 9 1 GPIO_ACTIVE_LOW>;
|
||||
+ tx-fault-gpios = <&sgpio_in 9 2 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&gpio {
|
||||
+ emmc_sd_pins: emmc-sd-pins {
|
||||
+ /* eMMC_SD - CMD, CLK, D0, D1, D2, D3, D4, D5, D6, D7, RSTN */
|
||||
+ pins = "GPIO_14", "GPIO_15", "GPIO_16", "GPIO_17",
|
||||
+ "GPIO_18", "GPIO_19", "GPIO_20", "GPIO_21",
|
||||
+ "GPIO_22", "GPIO_23", "GPIO_24";
|
||||
+ function = "emmc_sd";
|
||||
+ };
|
||||
+
|
||||
+ fan_pins: fan-pins {
|
||||
+ pins = "GPIO_25", "GPIO_26";
|
||||
+ function = "fan";
|
||||
+ };
|
||||
+
|
||||
+ fc0_pins: fc0-pins {
|
||||
+ pins = "GPIO_3", "GPIO_4";
|
||||
+ function = "fc";
|
||||
+ };
|
||||
+
|
||||
+ fc2_pins: fc2-pins {
|
||||
+ pins = "GPIO_64", "GPIO_65", "GPIO_66";
|
||||
+ function = "fc";
|
||||
+ };
|
||||
+
|
||||
+ fc3_pins: fc3-pins {
|
||||
+ pins = "GPIO_55", "GPIO_56";
|
||||
+ function = "fc";
|
||||
+ };
|
||||
+
|
||||
+ mdio_irq_pins: mdio-irq-pins {
|
||||
+ pins = "GPIO_11";
|
||||
+ function = "miim_irq";
|
||||
+ };
|
||||
+
|
||||
+ mdio_pins: mdio-pins {
|
||||
+ pins = "GPIO_9", "GPIO_10";
|
||||
+ function = "miim";
|
||||
+ };
|
||||
+
|
||||
+ ptp_ext_pins: ptp-ext-pins {
|
||||
+ pins = "GPIO_59";
|
||||
+ function = "ptpsync_5";
|
||||
+ };
|
||||
+
|
||||
+ ptp_out_pins: ptp-out-pins {
|
||||
+ pins = "GPIO_58";
|
||||
+ function = "ptpsync_4";
|
||||
+ };
|
||||
+
|
||||
+ sgpio_pins: sgpio-pins {
|
||||
+ /* SCK, D0, D1, LD */
|
||||
+ pins = "GPIO_5", "GPIO_6", "GPIO_7", "GPIO_8";
|
||||
+ function = "sgpio_a";
|
||||
+ };
|
||||
+
|
||||
+ usb_over_pins: usb-over-pins {
|
||||
+ pins = "GPIO_13";
|
||||
+ function = "usb_over_detect";
|
||||
+ };
|
||||
+
|
||||
+ usb_power_pins: usb-power-pins {
|
||||
+ pins = "GPIO_1";
|
||||
+ function = "usb_power";
|
||||
+ };
|
||||
+
|
||||
+ usb_rst_pins: usb-rst-pins {
|
||||
+ pins = "GPIO_12";
|
||||
+ function = "usb2phy_rst";
|
||||
+ };
|
||||
+
|
||||
+ usb_ulpi_pins: usb-ulpi-pins {
|
||||
+ pins = "GPIO_30", "GPIO_31", "GPIO_32", "GPIO_33",
|
||||
+ "GPIO_34", "GPIO_35", "GPIO_36", "GPIO_37",
|
||||
+ "GPIO_38", "GPIO_39", "GPIO_40", "GPIO_41";
|
||||
+ function = "usb_ulpi";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&flx0 {
|
||||
+ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&flx2 {
|
||||
+ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&flx3 {
|
||||
+ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&i2c3 {
|
||||
+ pinctrl-0 = <&fc3_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ i2c-analog-filter;
|
||||
+ i2c-digital-filter;
|
||||
+ i2c-digital-filter-width-ns = <35>;
|
||||
+ i2c-sda-hold-time-ns = <1500>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mdio0 {
|
||||
+ pinctrl-0 = <&mdio_pins>, <&mdio_irq_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ reset-gpios = <&gpio 62 GPIO_ACTIVE_LOW>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ phy3: phy@3 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <3>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy4: phy@4 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <4>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy5: phy@5 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <5>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy6: phy@6 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <6>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy7: phy@7 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <7>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy8: phy@8 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <8>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy9: phy@9 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <9>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy10: phy@10 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <10>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy11: phy@11 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <11>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy12: phy@12 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <12>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy13: phy@13 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <13>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy14: phy@14 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <14>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy15: phy@15 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <15>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy16: phy@16 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <16>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy17: phy@17 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <17>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy18: phy@18 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <18>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy19: phy@19 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <19>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy20: phy@20 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <20>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy21: phy@21 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <21>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy22: phy@22 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <22>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy23: phy@23 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <23>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy24: phy@24 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <24>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy25: phy@25 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <25>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy26: phy@26 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <26>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+
|
||||
+ phy27: phy@27 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <27>;
|
||||
+ interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-parent = <&gpio>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&serdes {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&sgpio {
|
||||
+ pinctrl-0 = <&sgpio_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ microchip,sgpio-port-ranges = <0 1>, <6 9>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ gpio@0 {
|
||||
+ ngpios = <128>;
|
||||
+ };
|
||||
+ gpio@1 {
|
||||
+ ngpios = <128>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&spi2 {
|
||||
+ pinctrl-0 = <&fc2_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ cs-gpios = <&gpio 63 GPIO_ACTIVE_LOW>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&switch {
|
||||
+ pinctrl-0 = <&ptp_out_pins>, <&ptp_ext_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+
|
||||
+ ethernet-ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ port0: port@0 {
|
||||
+ reg = <0>;
|
||||
+ phy-handle = <&phy4>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 0>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port1: port@1 {
|
||||
+ reg = <1>;
|
||||
+ phy-handle = <&phy5>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 0>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port2: port@2 {
|
||||
+ reg = <2>;
|
||||
+ phy-handle = <&phy6>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 0>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port3: port@3 {
|
||||
+ reg = <3>;
|
||||
+ phy-handle = <&phy7>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 0>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port4: port@4 {
|
||||
+ reg = <4>;
|
||||
+ phy-handle = <&phy8>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 1>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port5: port@5 {
|
||||
+ reg = <5>;
|
||||
+ phy-handle = <&phy9>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 1>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port6: port@6 {
|
||||
+ reg = <6>;
|
||||
+ phy-handle = <&phy10>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 1>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port7: port@7 {
|
||||
+ reg = <7>;
|
||||
+ phy-handle = <&phy11>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 1>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port8: port@8 {
|
||||
+ reg = <8>;
|
||||
+ phy-handle = <&phy12>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 2>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port9: port@9 {
|
||||
+ reg = <9>;
|
||||
+ phy-handle = <&phy13>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 2>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port10: port@10 {
|
||||
+ reg = <10>;
|
||||
+ phy-handle = <&phy14>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 2>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port11: port@11 {
|
||||
+ reg = <11>;
|
||||
+ phy-handle = <&phy15>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 2>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port12: port@12 {
|
||||
+ reg = <12>;
|
||||
+ phy-handle = <&phy16>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 3>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port13: port@13 {
|
||||
+ reg = <13>;
|
||||
+ phy-handle = <&phy17>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 3>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port14: port@14 {
|
||||
+ reg = <14>;
|
||||
+ phy-handle = <&phy18>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 3>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port15: port@15 {
|
||||
+ reg = <15>;
|
||||
+ phy-handle = <&phy19>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 3>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port16: port@16 {
|
||||
+ reg = <16>;
|
||||
+ phy-handle = <&phy20>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 4>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port17: port@17 {
|
||||
+ reg = <17>;
|
||||
+ phy-handle = <&phy21>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 4>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port18: port@18 {
|
||||
+ reg = <18>;
|
||||
+ phy-handle = <&phy22>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 4>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port19: port@19 {
|
||||
+ reg = <19>;
|
||||
+ phy-handle = <&phy23>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 4>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port20: port@20 {
|
||||
+ reg = <20>;
|
||||
+ phy-handle = <&phy24>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 5>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port21: port@21 {
|
||||
+ reg = <21>;
|
||||
+ phy-handle = <&phy25>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 5>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port22: port@22 {
|
||||
+ reg = <22>;
|
||||
+ phy-handle = <&phy26>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 5>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port23: port@23 {
|
||||
+ reg = <23>;
|
||||
+ phy-handle = <&phy27>;
|
||||
+ phy-mode = "qsgmii";
|
||||
+ phys = <&serdes 5>;
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+
|
||||
+ port24: port@24 {
|
||||
+ reg = <24>;
|
||||
+ phys = <&serdes 6>;
|
||||
+ phy-mode = "10gbase-r";
|
||||
+ sfp = <&sfp0>;
|
||||
+ managed = "in-band-status";
|
||||
+ microchip,bandwidth = <10000>;
|
||||
+ microchip,sd-sgpio = <24>;
|
||||
+ };
|
||||
+
|
||||
+ port25: port@25 {
|
||||
+ reg = <25>;
|
||||
+ phys = <&serdes 7>;
|
||||
+ phy-mode = "10gbase-r";
|
||||
+ sfp = <&sfp1>;
|
||||
+ managed = "in-band-status";
|
||||
+ microchip,bandwidth = <10000>;
|
||||
+ microchip,sd-sgpio = <28>;
|
||||
+ };
|
||||
+
|
||||
+ port26: port@26 {
|
||||
+ reg = <26>;
|
||||
+ phys = <&serdes 8>;
|
||||
+ phy-mode = "10gbase-r";
|
||||
+ sfp = <&sfp2>;
|
||||
+ managed = "in-band-status";
|
||||
+ microchip,bandwidth = <10000>;
|
||||
+ microchip,sd-sgpio = <32>;
|
||||
+ };
|
||||
+
|
||||
+ port27: port@27 {
|
||||
+ reg = <27>;
|
||||
+ phys = <&serdes 9>;
|
||||
+ phy-mode = "10gbase-r";
|
||||
+ sfp = <&sfp3>;
|
||||
+ managed = "in-band-status";
|
||||
+ microchip,bandwidth = <10000>;
|
||||
+ microchip,sd-sgpio = <36>;
|
||||
+ };
|
||||
+
|
||||
+ port29: port@29 {
|
||||
+ reg = <29>;
|
||||
+ phy-handle = <&phy3>;
|
||||
+ phy-mode = "rgmii-id";
|
||||
+ microchip,bandwidth = <1000>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&tmon {
|
||||
+ pinctrl-0 = <&fan_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+};
|
||||
+
|
||||
+&usart0 {
|
||||
+ pinctrl-0 = <&fc0_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb {
|
||||
+ pinctrl-0 = <&usb_ulpi_pins>, <&usb_rst_pins>, <&usb_over_pins>, <&usb_power_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ status = "okay";
|
||||
+};
|
||||
@ -0,0 +1,51 @@
|
||||
From a03ebe904b22e0c3f80498fe0dbfc66090552f67 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Thu, 25 Sep 2025 22:26:13 +0200
|
||||
Subject: [PATCH 122/124] arm64: dts: microchip: lan969x: add QSPI nodes
|
||||
|
||||
Add the required DT nodes for both QSPI controllers.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/lan9691.dtsi | 30 ++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
@@ -391,6 +391,36 @@
|
||||
clock-names = "cpu", "ddr", "sys";
|
||||
};
|
||||
|
||||
+ qspi0: spi@e0804000 {
|
||||
+ compatible = "microchip,lan9691-qspi";
|
||||
+ reg = <0xe0804000 0x00000100>,
|
||||
+ <0x20000000 0x08000000>;
|
||||
+ reg-names = "qspi_base", "qspi_mmap";
|
||||
+ interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&fabric_clk>, <&clks GCK_ID_QSPI0>;
|
||||
+ clock-names = "pclk", "gclk";
|
||||
+ assigned-clocks = <&clks GCK_ID_QSPI0>;
|
||||
+ assigned-clock-rates = <100000000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ qspi2: spi@e0834000 {
|
||||
+ compatible = "microchip,lan9691-qspi";
|
||||
+ reg = <0xe0834000 0x00000100>,
|
||||
+ <0x30000000 0x04000000>;
|
||||
+ reg-names = "qspi_base", "qspi_mmap";
|
||||
+ interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&fabric_clk>, <&clks GCK_ID_QSPI2>;
|
||||
+ clock-names = "pclk", "gclk";
|
||||
+ assigned-clocks = <&clks GCK_ID_QSPI2>;
|
||||
+ assigned-clock-rates = <100000000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
reset: reset-controller@e201000c {
|
||||
compatible = "microchip,lan9691-switch-reset",
|
||||
"microchip,lan966x-switch-reset";
|
||||
@ -0,0 +1,43 @@
|
||||
From 6751906070b6708ede20d896be7d62e19be6ef63 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Thu, 25 Sep 2025 22:26:58 +0200
|
||||
Subject: [PATCH 123/124] arm64: dts: microchip: lan969x: add SDMMC nodes
|
||||
|
||||
Add nodes for both SDMMC controllers.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/lan9691.dtsi | 22 ++++++++++++++++++++++
|
||||
1 file changed, 22 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
@@ -406,6 +406,28 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ sdmmc0: mmc@e0830000 {
|
||||
+ compatible = "microchip,lan9691-sdhci";
|
||||
+ reg = <0xe0830000 0x00000300>;
|
||||
+ interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&clks GCK_ID_SDMMC0>, <&clks GCK_ID_SDMMC0>;
|
||||
+ clock-names = "hclock", "multclk";
|
||||
+ assigned-clocks = <&clks GCK_ID_SDMMC0>;
|
||||
+ assigned-clock-rates = <100000000>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ sdmmc1: mmc@e0838000 {
|
||||
+ compatible = "microchip,lan9691-sdhci";
|
||||
+ reg = <0xe0838000 0x00000300>;
|
||||
+ interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&clks GCK_ID_SDMMC1>, <&clks GCK_ID_SDMMC1>;
|
||||
+ clock-names = "hclock", "multclk";
|
||||
+ assigned-clocks = <&clks GCK_ID_SDMMC1>;
|
||||
+ assigned-clock-rates = <45000000>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
qspi2: spi@e0834000 {
|
||||
compatible = "microchip,lan9691-qspi";
|
||||
reg = <0xe0834000 0x00000100>,
|
||||
@ -0,0 +1,26 @@
|
||||
From 477b5c9af4bb7c68bd4ec4807c94dac5a90dcd2f Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Fri, 24 Oct 2025 18:46:46 +0200
|
||||
Subject: [PATCH 124/124] arm64: dts: microchip: lan969x: add OTP node
|
||||
|
||||
Add the required OTP on LAN969x.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
arch/arm64/boot/dts/microchip/lan9691.dtsi | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
|
||||
@@ -100,6 +100,11 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
+ otp: otp@e0021000 {
|
||||
+ compatible = "microchip,lan9691-otpc";
|
||||
+ reg = <0xe0021000 0x1000>;
|
||||
+ };
|
||||
+
|
||||
flx0: flexcom@e0040000 {
|
||||
compatible = "microchip,lan9691-flexcom", "atmel,sama5d2-flexcom";
|
||||
reg = <0xe0040000 0x100>;
|
||||
@ -0,0 +1,48 @@
|
||||
From 78c8a6b2d6e98dbd384e93c68779582df04fc32a Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Thu, 25 Sep 2025 22:27:58 +0200
|
||||
Subject: [PATCH] arm64: dts: microchip: ev23x71a: enable QSPI and eMMC
|
||||
|
||||
Add the required nodes for QSPI and eMMC support.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
.../boot/dts/microchip/lan9696-ev23x71a.dts | 27 +++++++++++++++++++
|
||||
1 file changed, 27 insertions(+)
|
||||
|
||||
--- a/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
|
||||
+++ b/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
|
||||
@@ -463,6 +463,33 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&qspi0 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ flash@0 {
|
||||
+ compatible = "jedec,spi-nor";
|
||||
+ reg = <0>;
|
||||
+ spi-max-frequency = <100000000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ spi-tx-bus-width = <1>;
|
||||
+ spi-rx-bus-width = <4>;
|
||||
+ m25p,fast-read;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&sdmmc0 {
|
||||
+ pinctrl-0 = <&emmc_sd_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+ max-frequency = <100000000>;
|
||||
+ bus-width = <8>;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ mmc-hs200-1_8v;
|
||||
+ non-removable;
|
||||
+ disable-wp;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&serdes {
|
||||
status = "okay";
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user