/*
 * Device Tree for the ST-Ericsson Nomadik S8815 board
 * Produced by Calao Systems
 */

/dts-v1/;
#include <dt-bindings/interrupt-controller/irq.h>
#include "ste-nomadik-stn8815.dtsi"

/ {
	model = "Calao Systems USB-S8815";
	compatible = "calaosystems,usb-s8815";

	chosen {
		bootargs = "root=/dev/ram0 console=ttyAMA1,115200n8 earlyprintk";
	};

	src@101e0000 {
		/* These chrystal drivers are not used on this board */
		disable-sxtalo;
		disable-mxtalo;
	};

	pinctrl {
		/* Hog CD pins */
		pinctrl-names = "default";
		pinctrl-0 = <&cd_default_mode>;

		mmcsd-cd {
			cd_default_mode: cd_default {
				cd_default_cfg1 {
					/* CD input GPIO */
					pins = "GPIO111_H21";
					ste,input = <0>;
				};
				cd_default_cfg2 {
					/* CD GPIO biasing */
					pins = "GPIO112_J21";
					ste,output = <0>;
				};
			};
		};
		gpioi2c {
			gpioi2c_default_mode: gpioi2c_default {
				gpioi2c_default_cfg {
					pins = "GPIO73_C21", "GPIO74_C20";
					ste,input = <0>;
				};
			};
		};
		user-led {
			user_led_default_mode: user_led_default {
				user_led_default_cfg {
					pins = "GPIO2_C5";
					ste,output = <1>;
				};
			};
		};
		user-button {
			user_button_default_mode: user_button_default {
				user_button_default_cfg {
					pins = "GPIO3_A4";
					ste,input = <0>;
				};
			};
		};
	};

	/* Ethernet */
	external-bus@34000000 {
		compatible = "simple-bus";
		reg = <0x34000000 0x1000000>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0 0x34000000 0x1000000>;
		ethernet@300 {
			compatible = "smsc,lan91c111";
			reg = <0x300 0x0fd00>;
			interrupt-parent = <&gpio3>;
			interrupts = <8 IRQ_TYPE_EDGE_RISING>;
		};
	};

	/* GPIO I2C connected to the USB portions of the STw4811 only */
	gpio-i2c {
		compatible = "i2c-gpio";
		gpios = <&gpio2 10 0>, /* sda */
			<&gpio2 9 0>; /* scl */
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&gpioi2c_default_mode>;

		stw4811@2d {
			   compatible = "st,stw4811-usb";
			   reg = <0x2d>;
		};
	};


	/* Configure card detect for the uSD slot */
	amba {
		mmcsd: sdi@101f6000 {
			cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
		};
	};

	/* Custom board node with GPIO pins to active etc */
	usb-s8815 {
		/* This will bias the MMC/SD card detect line */
		mmcsd-gpio {
			gpios = <&gpio3 16 0x1>;
		};
	};

	/* The user LED on the board is set up to be used for heartbeat */
	leds {
		compatible = "gpio-leds";
		user-led {
			label = "user_led";
			gpios = <&gpio0 2 0x1>;
			default-state = "off";
			linux,default-trigger = "heartbeat";
			pinctrl-names = "default";
			pinctrl-0 = <&user_led_default_mode>;
		};
	};

	/* User key mapped in as "escape" */
	gpio-keys {
		compatible = "gpio-keys";
		user-button {
			label = "user_button";
			gpios = <&gpio0 3 0x1>;
			linux,code = <1>; /* KEY_ESC */
			gpio-key,wakeup;
			pinctrl-names = "default";
			pinctrl-0 = <&user_button_default_mode>;
		};
	};
};
