Changeset View
Changeset View
Standalone View
Standalone View
sys/boot/fdt/dts/arm/armada-388-clearfog.dts
- This file was added.
/* | |||||
* Device Tree file for SolidRun Clearfog revision A1 rev 2.0 (88F6828) | |||||
* | |||||
* Copyright (C) 2015 Russell King | |||||
* | |||||
* This board is in development; the contents of this file work with | |||||
* the A1 rev 2.0 of the board, which does not represent final | |||||
* production board. Things will change, don't expect this file to | |||||
* remain compatible info the future. | |||||
* | |||||
* This file is dual-licensed: you can use it either under the terms | |||||
* of the GPL or the X11 license, at your option. Note that this dual | |||||
* licensing only applies to this file, and not this project as a | |||||
* whole. | |||||
* | |||||
* a) This file is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU General Public License | |||||
* version 2 as published by the Free Software Foundation. | |||||
* | |||||
* This file is distributed in the hope that it will be useful | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* Or, alternatively | |||||
* | |||||
* b) Permission is hereby granted, free of charge, to any person | |||||
* obtaining a copy of this software and associated documentation | |||||
* files (the "Software"), to deal in the Software without | |||||
* restriction, including without limitation the rights to use | |||||
* copy, modify, merge, publish, distribute, sublicense, and/or | |||||
* sell copies of the Software, and to permit persons to whom the | |||||
* Software is furnished to do so, subject to the following | |||||
* conditions: | |||||
* | |||||
* The above copyright notice and this permission notice shall be | |||||
* included in all copies or substantial portions of the Software. | |||||
* | |||||
* THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | |||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | |||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |||||
* OTHER DEALINGS IN THE SOFTWARE. | |||||
*/ | |||||
/dts-v1/; | |||||
#include "armada-388.dtsi" | |||||
#include "armada-38x-solidrun-microsom.dtsi" | |||||
/ { | |||||
model = "SolidRun Clearfog A1"; | |||||
compatible = "solidrun,clearfog-a1", "marvell,armada388", | |||||
"marvell,armada385", "marvell,armada380"; | |||||
aliases { | |||||
/* So that mvebu u-boot can update the MAC addresses */ | |||||
ethernet1 = ð0; | |||||
ethernet2 = ð1; | |||||
ethernet3 = ð2; | |||||
}; | |||||
chosen { | |||||
stdout-path = "serial0:115200n8"; | |||||
}; | |||||
reg_3p3v: regulator-3p3v { | |||||
compatible = "regulator-fixed"; | |||||
regulator-name = "3P3V"; | |||||
regulator-min-microvolt = <3300000>; | |||||
regulator-max-microvolt = <3300000>; | |||||
regulator-always-on; | |||||
}; | |||||
soc { | |||||
internal-regs { | |||||
ethernet@30000 { | |||||
phy-mode = "sgmii"; | |||||
buffer-manager = <&bm>; | |||||
bm,pool-long = <2>; | |||||
bm,pool-short = <1>; | |||||
status = "okay"; | |||||
fixed-link { | |||||
speed = <1000>; | |||||
full-duplex; | |||||
}; | |||||
}; | |||||
ethernet@34000 { | |||||
phy-mode = "sgmii"; | |||||
buffer-manager = <&bm>; | |||||
bm,pool-long = <3>; | |||||
bm,pool-short = <1>; | |||||
status = "okay"; | |||||
fixed-link { | |||||
speed = <1000>; | |||||
full-duplex; | |||||
}; | |||||
}; | |||||
i2c@11000 { | |||||
/* Is there anything on this? */ | |||||
clock-frequency = <100000>; | |||||
pinctrl-0 = <&i2c0_pins>; | |||||
pinctrl-names = "default"; | |||||
status = "okay"; | |||||
/* | |||||
* PCA9655 GPIO expander, up to 1MHz clock. | |||||
* 0-CON3 CLKREQ# | |||||
* 1-CON3 PERST# | |||||
* 2-CON2 PERST# | |||||
* 3-CON3 W_DISABLE | |||||
* 4-CON2 CLKREQ# | |||||
* 5-USB3 overcurrent | |||||
* 6-USB3 power | |||||
* 7-CON2 W_DISABLE | |||||
* 8-JP4 P1 | |||||
* 9-JP4 P4 | |||||
* 10-JP4 P5 | |||||
* 11-m.2 DEVSLP | |||||
* 12-SFP_LOS | |||||
* 13-SFP_TX_FAULT | |||||
* 14-SFP_TX_DISABLE | |||||
* 15-SFP_MOD_DEF0 | |||||
*/ | |||||
expander0: gpio-expander@20 { | |||||
/* | |||||
* This is how it should be: | |||||
* compatible = "onnn,pca9655", | |||||
* "nxp,pca9555"; | |||||
* but you can't do this because of | |||||
* the way I2C works. | |||||
*/ | |||||
compatible = "nxp,pca9555"; | |||||
gpio-controller; | |||||
#gpio-cells = <2>; | |||||
reg = <0x20>; | |||||
pcie1_0_clkreq { | |||||
gpio-hog; | |||||
gpios = <0 GPIO_ACTIVE_LOW>; | |||||
input; | |||||
line-name = "pcie1.0-clkreq"; | |||||
}; | |||||
pcie1_0_w_disable { | |||||
gpio-hog; | |||||
gpios = <3 GPIO_ACTIVE_LOW>; | |||||
output-low; | |||||
line-name = "pcie1.0-w-disable"; | |||||
}; | |||||
pcie2_0_clkreq { | |||||
gpio-hog; | |||||
gpios = <4 GPIO_ACTIVE_LOW>; | |||||
input; | |||||
line-name = "pcie2.0-clkreq"; | |||||
}; | |||||
pcie2_0_w_disable { | |||||
gpio-hog; | |||||
gpios = <7 GPIO_ACTIVE_LOW>; | |||||
output-low; | |||||
line-name = "pcie2.0-w-disable"; | |||||
}; | |||||
usb3_ilimit { | |||||
gpio-hog; | |||||
gpios = <5 GPIO_ACTIVE_LOW>; | |||||
input; | |||||
line-name = "usb3-current-limit"; | |||||
}; | |||||
usb3_power { | |||||
gpio-hog; | |||||
gpios = <6 GPIO_ACTIVE_HIGH>; | |||||
output-high; | |||||
line-name = "usb3-power"; | |||||
}; | |||||
m2_devslp { | |||||
gpio-hog; | |||||
gpios = <11 GPIO_ACTIVE_HIGH>; | |||||
output-low; | |||||
line-name = "m.2 devslp"; | |||||
}; | |||||
sfp_los { | |||||
/* SFP loss of signal */ | |||||
gpio-hog; | |||||
gpios = <12 GPIO_ACTIVE_HIGH>; | |||||
input; | |||||
line-name = "sfp-los"; | |||||
}; | |||||
sfp_tx_fault { | |||||
/* SFP laser fault */ | |||||
gpio-hog; | |||||
gpios = <13 GPIO_ACTIVE_HIGH>; | |||||
input; | |||||
line-name = "sfp-tx-fault"; | |||||
}; | |||||
sfp_tx_disable { | |||||
/* SFP transmit disable */ | |||||
gpio-hog; | |||||
gpios = <14 GPIO_ACTIVE_HIGH>; | |||||
output-low; | |||||
line-name = "sfp-tx-disable"; | |||||
}; | |||||
sfp_mod_def0 { | |||||
/* SFP module present */ | |||||
gpio-hog; | |||||
gpios = <15 GPIO_ACTIVE_LOW>; | |||||
input; | |||||
line-name = "sfp-mod-def0"; | |||||
}; | |||||
}; | |||||
/* The MCP3021 is 100kHz clock only */ | |||||
mikrobus_adc: mcp3021@4c { | |||||
compatible = "microchip,mcp3021"; | |||||
reg = <0x4c>; | |||||
}; | |||||
/* Also something at 0x64 */ | |||||
}; | |||||
i2c@11100 { | |||||
/* | |||||
* Routed to SFP, mikrobus, and PCIe. | |||||
* SFP limits this to 100kHz, and requires | |||||
* an AT24C01A/02/04 with address pins tied | |||||
* low, which takes addresses 0x50 and 0x51. | |||||
* Mikrobus doesn't specify beyond an I2C | |||||
* bus being present. | |||||
* PCIe uses ARP to assign addresses, or | |||||
* 0x63-0x64. | |||||
*/ | |||||
clock-frequency = <100000>; | |||||
pinctrl-0 = <&clearfog_i2c1_pins>; | |||||
pinctrl-names = "default"; | |||||
status = "okay"; | |||||
}; | |||||
pinctrl@18000 { | |||||
clearfog_dsa0_clk_pins: clearfog-dsa0-clk-pins { | |||||
marvell,pins = "mpp46"; | |||||
marvell,function = "ref"; | |||||
}; | |||||
clearfog_dsa0_pins: clearfog-dsa0-pins { | |||||
marvell,pins = "mpp23", "mpp41"; | |||||
marvell,function = "gpio"; | |||||
}; | |||||
clearfog_i2c1_pins: i2c1-pins { | |||||
/* SFP, PCIe, mSATA, mikrobus */ | |||||
marvell,pins = "mpp26", "mpp27"; | |||||
marvell,function = "i2c1"; | |||||
}; | |||||
clearfog_sdhci_cd_pins: clearfog-sdhci-cd-pins { | |||||
marvell,pins = "mpp20"; | |||||
marvell,function = "gpio"; | |||||
}; | |||||
clearfog_sdhci_pins: clearfog-sdhci-pins { | |||||
marvell,pins = "mpp21", "mpp28", | |||||
"mpp37", "mpp38", | |||||
"mpp39", "mpp40"; | |||||
marvell,function = "sd0"; | |||||
}; | |||||
clearfog_spi1_cs_pins: spi1-cs-pins { | |||||
marvell,pins = "mpp55"; | |||||
marvell,function = "spi1"; | |||||
}; | |||||
mikro_pins: mikro-pins { | |||||
/* int: mpp22 rst: mpp29 */ | |||||
marvell,pins = "mpp22", "mpp29"; | |||||
marvell,function = "gpio"; | |||||
}; | |||||
mikro_spi_pins: mikro-spi-pins { | |||||
marvell,pins = "mpp43"; | |||||
marvell,function = "spi1"; | |||||
}; | |||||
mikro_uart_pins: mikro-uart-pins { | |||||
marvell,pins = "mpp24", "mpp25"; | |||||
marvell,function = "ua1"; | |||||
}; | |||||
rear_button_pins: rear-button-pins { | |||||
marvell,pins = "mpp34"; | |||||
marvell,function = "gpio"; | |||||
}; | |||||
}; | |||||
sata@a8000 { | |||||
/* pinctrl? */ | |||||
status = "okay"; | |||||
}; | |||||
sata@e0000 { | |||||
/* pinctrl? */ | |||||
status = "okay"; | |||||
}; | |||||
sdhci@d8000 { | |||||
bus-width = <4>; | |||||
cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; | |||||
no-1-8-v; | |||||
pinctrl-0 = <&clearfog_sdhci_pins | |||||
&clearfog_sdhci_cd_pins>; | |||||
pinctrl-names = "default"; | |||||
status = "okay"; | |||||
vmmc = <®_3p3v>; | |||||
wp-inverted; | |||||
}; | |||||
serial@12100 { | |||||
/* mikrobus uart */ | |||||
pinctrl-0 = <&mikro_uart_pins>; | |||||
pinctrl-names = "default"; | |||||
status = "okay"; | |||||
}; | |||||
usb@58000 { | |||||
/* CON3, nearest power. */ | |||||
status = "okay"; | |||||
}; | |||||
crypto@90000 { | |||||
status = "okay"; | |||||
}; | |||||
crypto@92000 { | |||||
status = "okay"; | |||||
}; | |||||
usb3@f0000 { | |||||
/* CON2, nearest CPU, USB2 only. */ | |||||
status = "okay"; | |||||
}; | |||||
usb3@f8000 { | |||||
/* CON7 */ | |||||
status = "okay"; | |||||
}; | |||||
}; | |||||
pcie-controller { | |||||
status = "okay"; | |||||
/* | |||||
* The two PCIe units are accessible through | |||||
* the mini-PCIe connectors on the board. | |||||
*/ | |||||
pcie@2,0 { | |||||
/* Port 1, Lane 0. CON3, nearest power. */ | |||||
reset-gpios = <&expander0 1 GPIO_ACTIVE_LOW>; | |||||
status = "okay"; | |||||
}; | |||||
pcie@3,0 { | |||||
/* Port 2, Lane 0. CON2, nearest CPU. */ | |||||
reset-gpios = <&expander0 2 GPIO_ACTIVE_LOW>; | |||||
status = "okay"; | |||||
}; | |||||
}; | |||||
}; | |||||
dsa@0 { | |||||
compatible = "marvell,dsa"; | |||||
dsa,ethernet = <ð1>; | |||||
dsa,mii-bus = <&mdio>; | |||||
pinctrl-0 = <&clearfog_dsa0_clk_pins &clearfog_dsa0_pins>; | |||||
pinctrl-names = "default"; | |||||
#address-cells = <2>; | |||||
#size-cells = <0>; | |||||
switch@0 { | |||||
#address-cells = <1>; | |||||
#size-cells = <0>; | |||||
reg = <4 0>; | |||||
port@0 { | |||||
reg = <0>; | |||||
label = "lan5"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@1 { | |||||
reg = <1>; | |||||
label = "lan4"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@2 { | |||||
reg = <2>; | |||||
label = "lan3"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@3 { | |||||
reg = <3>; | |||||
label = "lan2"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@4 { | |||||
reg = <4>; | |||||
label = "lan1"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@5 { | |||||
reg = <5>; | |||||
label = "cpu"; | |||||
vlangroup = <0>; | |||||
}; | |||||
port@6 { | |||||
/* 88E1512 external phy */ | |||||
reg = <6>; | |||||
label = "lan6"; | |||||
vlangroup = <0>; | |||||
fixed-link { | |||||
speed = <1000>; | |||||
full-duplex; | |||||
}; | |||||
}; | |||||
}; | |||||
}; | |||||
gpio-keys { | |||||
compatible = "gpio-keys"; | |||||
pinctrl-0 = <&rear_button_pins>; | |||||
pinctrl-names = "default"; | |||||
button_0 { | |||||
/* The rear SW3 button */ | |||||
label = "Rear Button"; | |||||
gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; | |||||
linux,can-disable; | |||||
linux,code = <BTN_0>; | |||||
}; | |||||
}; | |||||
}; | |||||
&spi1 { | |||||
/* | |||||
* We don't seem to have the W25Q32 on the | |||||
* A1 Rev 2.0 boards, so disable SPI. | |||||
* CS0: W25Q32 (doesn't appear to be present) | |||||
* CS1: | |||||
* CS2: mikrobus | |||||
*/ | |||||
pinctrl-0 = <&spi1_pins | |||||
&clearfog_spi1_cs_pins | |||||
&mikro_spi_pins>; | |||||
pinctrl-names = "default"; | |||||
status = "okay"; | |||||
spi-flash@0 { | |||||
#address-cells = <1>; | |||||
#size-cells = <0>; | |||||
compatible = "w25q32", "jedec,spi-nor"; | |||||
reg = <0>; /* Chip select 0 */ | |||||
spi-max-frequency = <3000000>; | |||||
status = "disabled"; | |||||
}; | |||||
}; |