xref: /openbmc/u-boot/arch/arm/dts/armada-xp-gp.dts (revision f46c25583a73042edf432b209ee4b93bc3f7e762)
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