139a230aaSStefan Roese/* 239a230aaSStefan Roese * Device Tree file for Marvell Armada XP development board 339a230aaSStefan Roese * (DB-MV784MP-GP) 439a230aaSStefan Roese * 539a230aaSStefan Roese * Copyright (C) 2013-2014 Marvell 639a230aaSStefan Roese * 739a230aaSStefan Roese * Lior Amsalem <alior@marvell.com> 839a230aaSStefan Roese * Gregory CLEMENT <gregory.clement@free-electrons.com> 939a230aaSStefan Roese * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 1039a230aaSStefan Roese * 1139a230aaSStefan Roese * This file is dual-licensed: you can use it either under the terms 1239a230aaSStefan Roese * of the GPL or the X11 license, at your option. Note that this dual 1339a230aaSStefan Roese * licensing only applies to this file, and not this project as a 1439a230aaSStefan Roese * whole. 1539a230aaSStefan Roese * 1639a230aaSStefan Roese * a) This file is free software; you can redistribute it and/or 1739a230aaSStefan Roese * modify it under the terms of the GNU General Public License as 1839a230aaSStefan Roese * published by the Free Software Foundation; either version 2 of the 1939a230aaSStefan Roese * License, or (at your option) any later version. 2039a230aaSStefan Roese * 2139a230aaSStefan Roese * This file is distributed in the hope that it will be useful 2239a230aaSStefan Roese * but WITHOUT ANY WARRANTY; without even the implied warranty of 2339a230aaSStefan Roese * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2439a230aaSStefan Roese * GNU General Public License for more details. 2539a230aaSStefan Roese * 2639a230aaSStefan Roese * Or, alternatively 2739a230aaSStefan Roese * 2839a230aaSStefan Roese * b) Permission is hereby granted, free of charge, to any person 2939a230aaSStefan Roese * obtaining a copy of this software and associated documentation 3039a230aaSStefan Roese * files (the "Software"), to deal in the Software without 3139a230aaSStefan Roese * restriction, including without limitation the rights to use 3239a230aaSStefan Roese * copy, modify, merge, publish, distribute, sublicense, and/or 3339a230aaSStefan Roese * sell copies of the Software, and to permit persons to whom the 3439a230aaSStefan Roese * Software is furnished to do so, subject to the following 3539a230aaSStefan Roese * conditions: 3639a230aaSStefan Roese * 3739a230aaSStefan Roese * The above copyright notice and this permission notice shall be 3839a230aaSStefan Roese * included in all copies or substantial portions of the Software. 3939a230aaSStefan Roese * 4039a230aaSStefan Roese * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND 4139a230aaSStefan Roese * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 4239a230aaSStefan Roese * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 4339a230aaSStefan Roese * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 4439a230aaSStefan Roese * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY 4539a230aaSStefan Roese * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 4639a230aaSStefan Roese * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 4739a230aaSStefan Roese * OTHER DEALINGS IN THE SOFTWARE. 4839a230aaSStefan Roese * 4939a230aaSStefan Roese * Note: this Device Tree assumes that the bootloader has remapped the 5039a230aaSStefan Roese * internal registers to 0xf1000000 (instead of the default 5139a230aaSStefan Roese * 0xd0000000). The 0xf1000000 is the default used by the recent, 5239a230aaSStefan Roese * DT-capable, U-Boot bootloaders provided by Marvell. Some earlier 5339a230aaSStefan Roese * boards were delivered with an older version of the bootloader that 5439a230aaSStefan Roese * left internal registers mapped at 0xd0000000. If you are in this 5539a230aaSStefan Roese * situation, you should either update your bootloader (preferred 5639a230aaSStefan Roese * solution) or the below Device Tree should be adjusted. 5739a230aaSStefan Roese */ 5839a230aaSStefan Roese 5939a230aaSStefan Roese/dts-v1/; 6039a230aaSStefan Roese#include <dt-bindings/gpio/gpio.h> 6139a230aaSStefan Roese#include "armada-xp-mv78460.dtsi" 6239a230aaSStefan Roese 6339a230aaSStefan Roese/ { 6439a230aaSStefan Roese model = "Marvell Armada XP Development Board DB-MV784MP-GP"; 6539a230aaSStefan Roese compatible = "marvell,axp-gp", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp"; 6639a230aaSStefan Roese 6739a230aaSStefan Roese chosen { 6839a230aaSStefan Roese stdout-path = "serial0:115200n8"; 6939a230aaSStefan Roese }; 7039a230aaSStefan Roese 71*09a54c00SStefan Roese aliases { 72*09a54c00SStefan Roese spi0 = &spi0; 73*09a54c00SStefan Roese }; 74*09a54c00SStefan Roese 7539a230aaSStefan Roese memory { 7639a230aaSStefan Roese device_type = "memory"; 7739a230aaSStefan Roese /* 7839a230aaSStefan Roese * 8 GB of plug-in RAM modules by default.The amount 7939a230aaSStefan Roese * of memory available can be changed by the 8039a230aaSStefan Roese * bootloader according the size of the module 8139a230aaSStefan Roese * actually plugged. However, memory between 8239a230aaSStefan Roese * 0xF0000000 to 0xFFFFFFFF cannot be used, as it is 8339a230aaSStefan Roese * the address range used for I/O (internal registers, 8439a230aaSStefan Roese * MBus windows). 8539a230aaSStefan Roese */ 8639a230aaSStefan Roese reg = <0x00000000 0x00000000 0x00000000 0xf0000000>, 8739a230aaSStefan Roese <0x00000001 0x00000000 0x00000001 0x00000000>; 8839a230aaSStefan Roese }; 8939a230aaSStefan Roese 9039a230aaSStefan Roese cpus { 9139a230aaSStefan Roese pm_pic { 9239a230aaSStefan Roese ctrl-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>, 9339a230aaSStefan Roese <&gpio0 17 GPIO_ACTIVE_LOW>, 9439a230aaSStefan Roese <&gpio0 18 GPIO_ACTIVE_LOW>; 9539a230aaSStefan Roese }; 9639a230aaSStefan Roese }; 9739a230aaSStefan Roese 9839a230aaSStefan Roese soc { 9939a230aaSStefan Roese ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000 10039a230aaSStefan Roese MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 10139a230aaSStefan Roese MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000>; 10239a230aaSStefan Roese 10339a230aaSStefan Roese devbus-bootcs { 10439a230aaSStefan Roese status = "okay"; 10539a230aaSStefan Roese 10639a230aaSStefan Roese /* Device Bus parameters are required */ 10739a230aaSStefan Roese 10839a230aaSStefan Roese /* Read parameters */ 10939a230aaSStefan Roese devbus,bus-width = <16>; 11039a230aaSStefan Roese devbus,turn-off-ps = <60000>; 11139a230aaSStefan Roese devbus,badr-skew-ps = <0>; 11239a230aaSStefan Roese devbus,acc-first-ps = <124000>; 11339a230aaSStefan Roese devbus,acc-next-ps = <248000>; 11439a230aaSStefan Roese devbus,rd-setup-ps = <0>; 11539a230aaSStefan Roese devbus,rd-hold-ps = <0>; 11639a230aaSStefan Roese 11739a230aaSStefan Roese /* Write parameters */ 11839a230aaSStefan Roese devbus,sync-enable = <0>; 11939a230aaSStefan Roese devbus,wr-high-ps = <60000>; 12039a230aaSStefan Roese devbus,wr-low-ps = <60000>; 12139a230aaSStefan Roese devbus,ale-wr-ps = <60000>; 12239a230aaSStefan Roese 12339a230aaSStefan Roese /* NOR 16 MiB */ 12439a230aaSStefan Roese nor@0 { 12539a230aaSStefan Roese compatible = "cfi-flash"; 12639a230aaSStefan Roese reg = <0 0x1000000>; 12739a230aaSStefan Roese bank-width = <2>; 12839a230aaSStefan Roese }; 12939a230aaSStefan Roese }; 13039a230aaSStefan Roese 13139a230aaSStefan Roese pcie-controller { 13239a230aaSStefan Roese status = "okay"; 13339a230aaSStefan Roese 13439a230aaSStefan Roese /* 13539a230aaSStefan Roese * The 3 slots are physically present as 13639a230aaSStefan Roese * standard PCIe slots on the board. 13739a230aaSStefan Roese */ 13839a230aaSStefan Roese pcie@1,0 { 13939a230aaSStefan Roese /* Port 0, Lane 0 */ 14039a230aaSStefan Roese status = "okay"; 14139a230aaSStefan Roese }; 14239a230aaSStefan Roese pcie@9,0 { 14339a230aaSStefan Roese /* Port 2, Lane 0 */ 14439a230aaSStefan Roese status = "okay"; 14539a230aaSStefan Roese }; 14639a230aaSStefan Roese pcie@10,0 { 14739a230aaSStefan Roese /* Port 3, Lane 0 */ 14839a230aaSStefan Roese status = "okay"; 14939a230aaSStefan Roese }; 15039a230aaSStefan Roese }; 15139a230aaSStefan Roese 15239a230aaSStefan Roese internal-regs { 15339a230aaSStefan Roese serial@12000 { 15439a230aaSStefan Roese status = "okay"; 1556451223aSStefan Roese u-boot,dm-pre-reloc; 15639a230aaSStefan Roese }; 15739a230aaSStefan Roese serial@12100 { 15839a230aaSStefan Roese status = "okay"; 15939a230aaSStefan Roese }; 16039a230aaSStefan Roese serial@12200 { 16139a230aaSStefan Roese status = "okay"; 16239a230aaSStefan Roese }; 16339a230aaSStefan Roese serial@12300 { 16439a230aaSStefan Roese status = "okay"; 16539a230aaSStefan Roese }; 16639a230aaSStefan Roese pinctrl { 16739a230aaSStefan Roese pinctrl-0 = <&pic_pins>; 16839a230aaSStefan Roese pinctrl-names = "default"; 16939a230aaSStefan Roese pic_pins: pic-pins-0 { 17039a230aaSStefan Roese marvell,pins = "mpp16", "mpp17", 17139a230aaSStefan Roese "mpp18"; 17239a230aaSStefan Roese marvell,function = "gpio"; 17339a230aaSStefan Roese }; 17439a230aaSStefan Roese }; 17539a230aaSStefan Roese sata@a0000 { 17639a230aaSStefan Roese nr-ports = <2>; 17739a230aaSStefan Roese status = "okay"; 17839a230aaSStefan Roese }; 17939a230aaSStefan Roese 18039a230aaSStefan Roese mdio { 18139a230aaSStefan Roese phy0: ethernet-phy@0 { 18239a230aaSStefan Roese reg = <16>; 18339a230aaSStefan Roese }; 18439a230aaSStefan Roese 18539a230aaSStefan Roese phy1: ethernet-phy@1 { 18639a230aaSStefan Roese reg = <17>; 18739a230aaSStefan Roese }; 18839a230aaSStefan Roese 18939a230aaSStefan Roese phy2: ethernet-phy@2 { 19039a230aaSStefan Roese reg = <18>; 19139a230aaSStefan Roese }; 19239a230aaSStefan Roese 19339a230aaSStefan Roese phy3: ethernet-phy@3 { 19439a230aaSStefan Roese reg = <19>; 19539a230aaSStefan Roese }; 19639a230aaSStefan Roese }; 19739a230aaSStefan Roese 19839a230aaSStefan Roese ethernet@70000 { 19939a230aaSStefan Roese status = "okay"; 20039a230aaSStefan Roese phy = <&phy0>; 20139a230aaSStefan Roese phy-mode = "qsgmii"; 20239a230aaSStefan Roese }; 20339a230aaSStefan Roese ethernet@74000 { 20439a230aaSStefan Roese status = "okay"; 20539a230aaSStefan Roese phy = <&phy1>; 20639a230aaSStefan Roese phy-mode = "qsgmii"; 20739a230aaSStefan Roese }; 20839a230aaSStefan Roese ethernet@30000 { 20939a230aaSStefan Roese status = "okay"; 21039a230aaSStefan Roese phy = <&phy2>; 21139a230aaSStefan Roese phy-mode = "qsgmii"; 21239a230aaSStefan Roese }; 21339a230aaSStefan Roese ethernet@34000 { 21439a230aaSStefan Roese status = "okay"; 21539a230aaSStefan Roese phy = <&phy3>; 21639a230aaSStefan Roese phy-mode = "qsgmii"; 21739a230aaSStefan Roese }; 21839a230aaSStefan Roese 21939a230aaSStefan Roese /* Front-side USB slot */ 22039a230aaSStefan Roese usb@50000 { 22139a230aaSStefan Roese status = "okay"; 22239a230aaSStefan Roese }; 22339a230aaSStefan Roese 22439a230aaSStefan Roese /* Back-side USB slot */ 22539a230aaSStefan Roese usb@51000 { 22639a230aaSStefan Roese status = "okay"; 22739a230aaSStefan Roese }; 22839a230aaSStefan Roese 22939a230aaSStefan Roese spi0: spi@10600 { 23039a230aaSStefan Roese status = "okay"; 231*09a54c00SStefan Roese u-boot,dm-pre-reloc; 23239a230aaSStefan Roese 23339a230aaSStefan Roese spi-flash@0 { 234*09a54c00SStefan Roese u-boot,dm-pre-reloc; 23539a230aaSStefan Roese #address-cells = <1>; 23639a230aaSStefan Roese #size-cells = <1>; 23739a230aaSStefan Roese compatible = "n25q128a13", "jedec,spi-nor"; 23839a230aaSStefan Roese reg = <0>; /* Chip select 0 */ 23939a230aaSStefan Roese spi-max-frequency = <108000000>; 24039a230aaSStefan Roese }; 24139a230aaSStefan Roese }; 24239a230aaSStefan Roese 24339a230aaSStefan Roese nand@d0000 { 24439a230aaSStefan Roese status = "okay"; 24539a230aaSStefan Roese num-cs = <1>; 24639a230aaSStefan Roese marvell,nand-keep-config; 24739a230aaSStefan Roese marvell,nand-enable-arbiter; 24839a230aaSStefan Roese nand-on-flash-bbt; 24939a230aaSStefan Roese }; 25039a230aaSStefan Roese }; 25139a230aaSStefan Roese }; 25239a230aaSStefan Roese}; 253