0
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-11-24 22:16:14 +00:00
openwrt/target/linux/bmips/dts/bcm6328-inteno-xg6846.dts
Linus Walleij 2ce206f27d bmips: inteno-xg6846: Add DSA LED definitions
This adds the LED definitons for the XG6846 DSA port LEDs.
These are standard properties compatible with the existing
Marvell 88e6xxx DT bindings and fully standardized so this
is fine to add. They will be used by the in-flight Marvell
88e6xxx LEDs support patch.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
[add empty lines between leds, remove default-state="off"]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-08-14 19:25:42 +02:00

439 lines
7.7 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0
/*
* Devicetree for the Inteno XG6846 router, mostly used as a
* media converter from fiber to twisted pair ethernet
* "fiber modem" in many households in Sweden. The Marvell
* switch has one of its ports connected to an SFP (Small Form
* Factor pluggable) optical fiber receiver, which is bridged
* to the twisted pair connector LAN1.
*
* This device tree is inspired by research from the OpenWrt
* and Sweclockers forums, including contributions from
* NPeca75, mrhaav and csom.
*
* Some devices have a USB type A host receptacle mounted,
* some do not.
*/
#include "bcm6328.dtsi"
/ {
model = "Inteno XG6846";
compatible = "inteno,xg6846", "brcm,bcm6328";
aliases {
led-boot = &led_power_red;
led-failsafe = &led_power_red;
led-running = &led_power_green;
led-upgrade = &led_power_red;
};
/*
* This I2C port is connected to the SFP and reflects the EEPROM etc
* inside the SFP module. If the module is not plugged in, consequently
* nothing will be found on the bus.
*/
i2c0: i2c-sfp {
compatible = "i2c-gpio";
sda-gpios = <&gpio 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
#address-cells = <1>;
#size-cells = <0>;
sfp_eeprom: eeprom@50 {
compatible = "atmel,24c02";
reg = <0x50>;
read-only;
};
};
/* This I2C bus is used for the external CATV connector (usually unused) */
i2c1: i2c-catv {
compatible = "i2c-gpio";
sda-gpios = <&gpio 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
#address-cells = <1>;
#size-cells = <0>;
};
keys {
compatible = "gpio-keys-polled";
poll-interval = <100>;
reset {
label = "reset";
gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
debounce-interval = <60>;
};
};
sfp0: sfp0 {
compatible = "sff,sfp";
i2c-bus = <&i2c0>;
los-gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
};
};
&hsspi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
/*
* HW 1.0-1.1: Spansion S25FL128S1
* HW 1.3: Winbond W25Q128
*
* Fast Read Data max speed is 50MHz, see the Winbond W25Q128
* datasheet table 9.5 "AC Electrical Characteristics", we can
* use this speed because the chip supports fast reads. Older
* HW has different NOR chips, I assume they can all do fast
* reads.
*/
spi-max-frequency = <104000000>;
spi-tx-bus-width = <2>;
spi-rx-bus-width = <2>;
m25p,fast-read;
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "cfe";
reg = <0x0000000 0x0010000>;
read-only;
nvmem-layout {
compatible = "fixed-layout";
#address-cells = <1>;
#size-cells = <1>;
macaddr_cfe_6a0: macaddr@6a0 {
reg = <0x6a0 0x6>;
};
};
};
partition@10000 {
compatible = "openwrt,uimage", "denx,uimage";
reg = <0x010000 0xfe0000>;
label = "firmware";
openwrt,offset = <0x30000>;
};
partition@ff0000 {
reg = <0xff0000 0x010000>;
label = "nvram";
};
};
};
};
&ehci {
status = "okay";
};
&ethernet {
status = "okay";
nvmem-cells = <&macaddr_cfe_6a0>;
nvmem-cell-names = "mac-address";
};
&leds {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_leds>,
<&pinctrl_ephy1_spd_led>,
<&pinctrl_ephy3_spd_led>;
led@16 {
reg = <16>;
active-low;
function = LED_FUNCTION_USB;
color = <LED_COLOR_ID_GREEN>;
};
led_power_red: led@18 {
reg = <18>;
active-low;
function = LED_FUNCTION_POWER;
color = <LED_COLOR_ID_RED>;
panic-indicator;
};
led_power_green: led@20 {
reg = <20>;
active-low;
function = LED_FUNCTION_POWER;
color = <LED_COLOR_ID_GREEN>;
};
};
&mdio_ext {
switch1: switch@0 {
/* The switch is not using any external IRQ, sadly */
compatible = "marvell,mv88e6085";
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
interrupt-controller;
#interrupt-cells = <2>;
dsa,member = <1 0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "lan1";
phy-handle = <&lan1phy>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
};
};
};
port@1 {
reg = <1>;
label = "lan2";
phy-handle = <&lan2phy>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
};
};
};
port@2 {
reg = <2>;
label = "lan3";
phy-handle = <&lan3phy>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
};
};
};
port@3 {
reg = <3>;
label = "lan4";
phy-handle = <&lan4phy>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_LAN;
};
};
};
port@4 {
reg = <4>;
label = "ext1";
phy-handle = <&ext1phy>;
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_WAN;
};
};
};
port@5 {
reg = <5>;
label = "wan";
phy-mode = "rgmii-id";
sfp = <&sfp0>;
fixed-link {
speed = <1000>;
full-duplex;
};
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
default-state = "keep";
};
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
function = LED_FUNCTION_WAN;
};
};
};
port@6 {
reg = <6>;
phy-mode = "rgmii-id";
ethernet = <&switch0port4>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
mdio {
#address-cells = <1>;
#size-cells = <0>;
lan1phy: ethernet-phy@0 {
reg = <0>;
interrupt-parent = <&switch1>;
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
};
lan2phy: ethernet-phy@1 {
reg = <1>;
interrupt-parent = <&switch1>;
interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
};
lan3phy: ethernet-phy@2 {
reg = <2>;
interrupt-parent = <&switch1>;
interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
};
lan4phy: ethernet-phy@3 {
reg = <3>;
interrupt-parent = <&switch1>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
};
ext1phy: ethernet-phy@4 {
reg = <4>;
interrupt-parent = <&switch1>;
interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
};
};
};
};
&ohci {
status = "okay";
};
&pinctrl {
pinctrl_leds: leds {
function = "led";
pins = "gpio16", "gpio18", "gpio20";
};
};
&switch0 {
dsa,member = <0 0>;
ports {
switch0port4: port@4 {
reg = <4>;
label = "extsw";
phy-mode = "rgmii";
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
&uart0 {
status = "okay";
};
&usbh {
status = "okay";
};