/*
 * 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@28000000 {
		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;
		};
	};

	i2c0_pins: i2c0-pins {
		i2c0_pins_cfg {
			pins = "i2c0_scl", "i2c0_sda";
			function = "i2c0";
			input-enable;
		};
	};

	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>;
};

&i2c0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	clock-frequency = <400000>;

	eeprom@50 {
		compatible = "microchip,24c512";
		reg = <0x50>;
	};

	eeprom@51 {
		compatible = "microchip,24c02";
		reg = <0x51>;
	};

	eeprom@54 {
		compatible = "microchip,24c512";
		reg = <0x54>;
	};
};

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

&sct_pwm {
	status = "okay";
};

&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>;
};
