/*
 *  BSD LICENSE
 *
 *  Copyright(c) 2016 Broadcom.  All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions
 *  are met:
 *
 *    * Redistributions of source code must retain the above copyright
 *      notice, this list of conditions and the following disclaimer.
 *    * Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in
 *      the documentation and/or other materials provided with the
 *      distribution.
 *    * Neither the name of Broadcom Corporation nor the names of its
 *      contributors may be used to endorse or promote products derived
 *      from this software without specific prior written permission.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/dts-v1/;

#include "ns2.dtsi"

/ {
	model = "Broadcom NS2 XMC";
	compatible = "brcm,ns2-xmc", "brcm,ns2";

	aliases {
		serial0 = &uart3;
	};

	chosen {
		stdout-path = "serial0:115200n8";
		bootargs = "earlycon=uart8250,mmio32,0x66130000";
	};

	memory {
		device_type = "memory";
		reg = <0x000000000 0x80000000 0x00000001 0x00000000>;
	};
};

&enet {
	status = "okay";
};

&i2c0 {
	status = "okay";
};

&i2c1 {
	status = "okay";
};

&mdio_mux_iproc {
	mdio@10 {
		gphy0: eth-phy@10 {
			reg = <0x10>;
		};
	};
};

&nand {
	nandcs@0 {
		compatible = "brcm,nandcs";
		reg = <0>;
		nand-ecc-mode = "hw";
		nand-ecc-strength = <8>;
		nand-ecc-step-size = <512>;
		nand-bus-width = <16>;
		brcm,nand-oob-sector-size = <16>;
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "nboot";
			reg = <0x00000000 0x00280000>; /*  2.5MB */
			read-only;
		};

		partition@280000 {
			label = "nenv";
			reg = <0x00280000 0x00040000>; /* 0.25MB */
			read-only;
		};

		partition@2c0000 {
			label = "ndtb";
			reg = <0x002c0000 0x00040000>; /* 0.25MB */
			read-only;
		};

		partition@300000 {
			label = "nsystem";
			reg = <0x00300000 0x03d00000>; /*   61MB */
			read-only;
		};

		partition@4000000 {
			label = "nrootfs";
			reg = <0x04000000 0x06400000>; /*  100MB */
		};

		partition@a400000{
			label = "ncustfs";
			reg = <0x0a400000 0x35c00000>; /*  860MB */
		};
	};
};

&pci_phy0 {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&pcie8 {
	status = "okay";
};

&sata_phy0 {
	status = "okay";
};

&sata_phy1 {
	status = "okay";
};

&sata {
	status = "okay";
};

&qspi {
	flash: m25p80@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "m25p80";
		spi-max-frequency = <62500000>;
		m25p,default-addr-width = <3>;
		reg = <0x0 0x0>;

		partition@0 {
			label = "bl0";
			reg = <0x00000000 0x00080000>; /*  512KB */
		};

		partition@80000 {
			label = "fip";
			reg = <0x00080000 0x00150000>; /* 1344KB */
		};

		partition@1e0000 {
			label = "env";
			reg = <0x001e0000 0x00010000>;/*    64KB */
		};

		partition@1f0000 {
			label = "dtb";
			reg = <0x001f0000 0x00010000>; /*   64KB */
		};

		partition@200000 {
			label = "kernel";
			reg = <0x00200000 0x00e00000>; /*   14MB */
		};

		partition@1000000 {
			label = "rootfs";
			reg = <0x01000000 0x01000000>; /*   16MB */
		};
	};
};

&uart3 {
	status = "okay";
};
