/*
 * CIAA NXP LPC4337 (http://www.proyecto-ciaa.com.ar)
 *
 * Copyright (C) 2015 VanguardiaSur - www.vanguardiasur.com.ar
 *
 * This code is released using a dual license strategy: BSD/GPL
 * You can choose the licence that better fits your requirements.
 *
 * Released under the terms of 3-clause BSD License
 * Released under the terms of GNU General Public License Version 2.0
 */
/dts-v1/;

#include "lpc18xx.dtsi"
#include "lpc4357.dtsi"

#include "dt-bindings/gpio/gpio.h"

/ {
	model = "CIAA NXP LPC4337";
	compatible = "ciaa,lpc4337", "nxp,lpc4337", "nxp,lpc4350";

	aliases {
		serial0 = &uart2;
		serial1 = &uart3;
	};

	chosen {
		bootargs = "console=ttyS0,115200 earlyprintk";
		stdout-path = &uart2;
	};

	memory {
		device_type = "memory";
		reg = <0x28000000 0x0800000>; /* 8 MB */
	};
};

&pinctrl {
	enet_rmii_pins: enet-rmii-pins {
		enet_rmii_rxd_cfg {
			pins = "p1_15", "p0_0";
			function = "enet";
			slew-rate = <1>;
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_rmii_txd_cfg {
			pins = "p1_18", "p1_20";
			function = "enet";
			slew-rate = <1>;
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_rmii_rx_dv_cfg {
			pins = "p1_16";
			function = "enet";
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_rmii_tx_en_cfg {
			pins = "p0_1";
			function = "enet";
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_ref_clk_cfg {
			pins = "p1_19";
			function = "enet";
			slew-rate = <1>;
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_mdio_cfg {
			pins = "p1_17";
			function = "enet";
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};

		enet_mdc_cfg {
			pins = "p7_7";
			function = "enet";
			slew-rate = <1>;
			bias-disable;
			input-enable;
			input-schmitt-disable;
		};
	};

	ssp_pins: ssp-pins {
		ssp1_cs {
			pins = "p6_7";
			function = "gpio";
			bias-pull-up;
			bias-disable;
		};

		ssp1_miso_mosi {
			pins = "p1_3", "p1_4";
			function = "ssp1";
			slew-rate = <1>;
			bias-pull-down;
			input-enable;
			input-schmitt-disable;
		};

		ssp1_sck {
			pins = "pf_4";
			function = "ssp1";
			slew-rate = <1>;
			bias-disable;
		};
	};

	uart2_pins: uart2-pins {
		uart2_rx_cfg {
			pins = "p7_2";
			function = "uart2";
			bias-disable;
			input-enable;
		};

		uart2_tx_cfg {
			pins = "p7_1";
			function = "uart2";
			bias-disable;
		};
	};

	uart3_pins: uart3-pins {
		uart3_rx_cfg {
			pins = "p2_4";
			function = "uart3";
			bias-disable;
			input-enable;
		};

		uart3_tx_cfg {
			pins = "p2_3";
			function = "uart3";
			bias-disable;
		};
	};
};

&enet_tx_clk {
	clock-frequency = <50000000>;
};

&mac {
	status = "okay";
	phy-mode = "rmii";
	pinctrl-names = "default";
	pinctrl-0 = <&enet_rmii_pins>;
};

&ssp1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&ssp_pins>;
	cs-gpios = <&gpio LPC_GPIO(5,15) GPIO_ACTIVE_HIGH>;
	num-cs = <1>;
};

&uart2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&uart2_pins>;
};

&uart3 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
};
