mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-04 18:41:03 +00:00
5c1c6b7306
There is an Errata with the built-in I2C controller where various I2C hardware errors cause a complete lockup of the CPU (which eventually results in an watchdog reset). Put the I2C MPP pins into GPIO mode and use the i2c-gpio driver instead. This uses a bit-banged implementation of an I2C controller and avoids triggering the Errata. Signed-off-by: Chris Packham <judge.packham@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de>
228 lines
4.6 KiB
Text
228 lines
4.6 KiB
Text
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include "ac5-98dx35xx.dtsi"
|
|
|
|
/ {
|
|
model = "Allied Telesis x240";
|
|
compatible = "alliedtelesis,x240", "marvell,ac5x", "marvell,ac5";
|
|
|
|
aliases {
|
|
serial0 = &uart0;
|
|
spiflash0 = &spiflash0;
|
|
gpio0 = &gpio0;
|
|
gpio1 = &gpio1;
|
|
spi0 = &spi0;
|
|
i2c0 = &i2cgpio;
|
|
usb0 = &usb0;
|
|
pinctrl0 = &pinctrl0;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
boot-board {
|
|
compatible = "atl,boot-board";
|
|
present-gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
|
|
override-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
gpio-leds {
|
|
compatible = "gpio-leds";
|
|
|
|
fault {
|
|
label = "fault:red";
|
|
gpios = <&system_gpio 11 GPIO_ACTIVE_LOW>;
|
|
default-state = "on";
|
|
};
|
|
};
|
|
|
|
i2cgpio: i2c-gpio-0 {
|
|
compatible = "i2c-gpio";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&i2c0_gpio>;
|
|
scl-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
|
sda-gpios = <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
|
|
i2c-gpio,delay-us = <2>;
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
&nand {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&nand_pins>;
|
|
|
|
nand-ecc-strength = <4>;
|
|
nand-ecc-step-size = <512>;
|
|
status = "okay";
|
|
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@user {
|
|
reg = <0x00000000 0x10000000>;
|
|
label = "user";
|
|
};
|
|
};
|
|
};
|
|
|
|
&uart0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&i2cgpio {
|
|
mux@71 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "nxp,pca9546";
|
|
reg = <0x71>;
|
|
i2c-mux-idle-disconnect;
|
|
reset-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; /* MPP36 */
|
|
status = "okay";
|
|
|
|
i2c@1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <1>;
|
|
|
|
hwmon@2e {
|
|
compatible = "adi,adt7476";
|
|
reg = <0x2e>;
|
|
};
|
|
|
|
rtc@68 {
|
|
compatible = "adi,max31331";
|
|
reg = <0x68>;
|
|
};
|
|
|
|
system_gpio: gpio@27 {
|
|
compatible = "nxp,pca9555";
|
|
gpio-controller;
|
|
#gpio-cells= <2>;
|
|
reg = <0x27>;
|
|
interrupt-parent = <&gpio0>;
|
|
interrupts = <25 IRQ_TYPE_LEVEL_LOW>; /* MPP25 */
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&spi0 {
|
|
status = "okay";
|
|
spiflash0: flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
spi-max-frequency = <50000000>;
|
|
spi-tx-bus-width = <1>; /* 1-single, 2-dual, 4-quad */
|
|
spi-rx-bus-width = <1>; /* 1-single, 2-dual, 4-quad */
|
|
reg = <0>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
};
|
|
};
|
|
|
|
&gpio0 {
|
|
phy-reset {
|
|
gpio-hog;
|
|
gpios = <19 GPIO_ACTIVE_LOW>;
|
|
output-high;
|
|
line-name = "phy-reset";
|
|
};
|
|
|
|
usb-en {
|
|
gpio-hog;
|
|
gpios = <28 GPIO_ACTIVE_HIGH>;
|
|
output-high;
|
|
line-name = "usb-en";
|
|
};
|
|
|
|
led-oe-n {
|
|
gpio-hog;
|
|
gpios = <23 GPIO_ACTIVE_LOW>;
|
|
output-low;
|
|
line-name = "led-oe-n";
|
|
};
|
|
};
|
|
|
|
&gpio1 {
|
|
nand-protect {
|
|
gpio-hog;
|
|
gpios = <8 GPIO_ACTIVE_LOW>;
|
|
output-low;
|
|
line-name = "nand-protect";
|
|
};
|
|
};
|
|
|
|
&pinctrl0 {
|
|
/*
|
|
* MPP Bus: MPP#
|
|
* NF_IO [0-7]
|
|
* NF_Wen [8]
|
|
* NF_ALE [9]
|
|
* NF_CLE [10]
|
|
* NF_Cen [11]
|
|
* QSPI_SCK/SPI0_SCK [12]
|
|
* QSPI_CSn/SPI0_CSn [13]
|
|
* QSPI_DIO[0]/SPI0_MOSI [14]
|
|
* QSPI_DIO[1]/SPI0_MISO [15]
|
|
* NF_Ren [16]
|
|
* NF_RBn [17]
|
|
* WD_INTn [18]
|
|
* B_B_OVRIDE_N [19]
|
|
* GREEN_SW_N [20]
|
|
* PHY_INT_N[0] [21]
|
|
* SPI_WPn [22]
|
|
* LED_OE_N [23]
|
|
* USB_PWR_FLT_N [24]
|
|
* SFP_INT_N [25]
|
|
* I2C0_SCL [26] (GPIO)
|
|
* I2C0_SDA [27] (GPIO)
|
|
* USB_EN [28]
|
|
* MONITOR_INT_N [29]
|
|
* XM1_MDC [30]
|
|
* XM1_MDIO [31]
|
|
* UA0_RXD [32]
|
|
* UA0_TXD [33]
|
|
* PHY_RST0n [34]
|
|
* TPM_INT_N [35]
|
|
* I2CMUX_RESET_N [36]
|
|
* SPI_SRAM_SEL_N [37]
|
|
* B_B_PRESENT [38]
|
|
* SPI_FLASH_SEL_N [39]
|
|
* NF_WP_N [40]
|
|
* POE_INT_N [41]
|
|
* PoE_RST_N [42]
|
|
* LED0_CLK [43]
|
|
* LED0_STB [44]
|
|
* LED0_DATA [45]
|
|
*/
|
|
/* 0 1 2 3 4 5 6 7 8 9 */
|
|
pin-func = < 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
|
|
0xff 0xff 1 1 1 1 0xff 0xff 0 0
|
|
0 0 0 0 0 0 0xff 0xff 0 0
|
|
1 1 1 1 0 0 0 0 0 0
|
|
0 0 0 1 1 1 >;
|
|
|
|
nand_pins: nand-pins {
|
|
marvell,pins = <0 1 2 3 4 5 6 7 8 9 10 11 16 17>;
|
|
marvell,function = <2>;
|
|
};
|
|
|
|
i2c0_gpio: i2c0-gpio-pins {
|
|
marvell,pins = <26 27>;
|
|
marvell,function = <0>;
|
|
};
|
|
};
|