// SPDX-License-Identifier: GPL-2.0
/*
 * 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";
	};

	aliases {
		serial0 = &uart0;
		serial1 = &uart1;
	};

	gpio3: gpio@101e7000 {
		/* This hog will bias the MMC/SD card detect line */
		mmcsd-gpio {
			gpio-hog;
			gpios = <16 0x0>;
			output-low;
			line-name = "card detect bias";
		};
	};

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

		uart0 {
			/* Only use RX/TX pins */
			uart0_s8815_mode: uart0_mux {
				u0_default_mux {
					function = "u0";
					groups = "u0txrx_a_1";
				};
			};
		};
		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>;
		};
	};

	i2c1 {
		lis3lv02dl@1d {
			/* Accelerometer */
			compatible = "st,lis3lv02dl-accel";
			reg = <0x1d>;
		};
	};

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


	amba {
		/* Activate RXTX on UART 0 */
		uart0: uart@101fd000 {
			pinctrl-names = "default";
			pinctrl-0 = <&uart0_s8815_mode>;
			status = "okay";
		};
		/* Configure card detect for the uSD slot */
		mmcsd: sdi@101f6000 {
			cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
		};
	};

	/* 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 */
			wakeup-source;
			pinctrl-names = "default";
			pinctrl-0 = <&user_button_default_mode>;
		};
	};
};
