/*
 * Copyright (C) 2016 STMicroelectronics (R&D) Limited.
 * Author: Patrice Chotard <patrice.chotard@st.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;
#include "stih410.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "STiH410 B2260";
	compatible = "st,stih410-b2260", "st,stih410";

	chosen {
		bootargs = "console=ttyAS1,115200 clk_ignore_unused";
		linux,stdout-path = &uart1;
	};

	memory {
		device_type = "memory";
		reg = <0x40000000 0x40000000>;
	};

	aliases {
		ttyAS1 = &uart1;
		ethernet0 = &ethernet0;
	};

	soc {

		leds {
			compatible = "gpio-leds";
			user_green_1 {
				label = "User_green_1";
				gpios = <&pio1 3 GPIO_ACTIVE_LOW>;
				linux,default-trigger = "heartbeat";
				default-state = "off";
			};

			user_green_2 {
				label = "User_green_2";
				gpios = <&pio4 1 GPIO_ACTIVE_LOW>;
				default-state = "off";
			};

			user_green_3 {
				label = "User_green_3";
				gpios = <&pio2 1 GPIO_ACTIVE_LOW>;
				default-state = "off";
			};

			user_green_4 {
				label = "User_green_4";
				gpios = <&pio2 5 GPIO_ACTIVE_LOW>;
				default-state = "off";
			};
		};

		/* Low speed expansion connector */
		uart0: serial@9830000 {
			label = "LS-UART0";
			status = "okay";
		};

		/* Low speed expansion connector */
		uart1: serial@9831000 {
			label = "LS-UART1";
			status = "okay";
		};

		/* Low speed expansion connector */
		spi0: spi@9844000 {
			label = "LS-SPI0";
			cs-gpios = <&pio30 3 0>;
			status = "okay";
		};

		/* Low speed expansion connector */
		i2c0: i2c@9840000 {
			label = "LS-I2C0";
			status = "okay";
		};

		/* Low speed expansion connector */
		i2c1: i2c@9841000 {
			label = "LS-I2C1";
			status = "okay";
		};

		/* high speed expansion connector */
		i2c2: i2c@9842000 {
			label = "HS-I2C2";
			pinctrl-0 = <&pinctrl_i2c2_alt2_1>;
			status = "okay";
		};

		/* high speed expansion connector */
		i2c3: i2c@9843000 {
			label = "HS-I2C3";
			pinctrl-0 = <&pinctrl_i2c3_alt3_0>;
			status = "okay";
		};

		mmc0: sdhci@09060000 {
			pinctrl-0 = <&pinctrl_sd0>;
			bus-width = <4>;
			status = "okay";
		};

		/* high speed expansion connector */
		mmc1: sdhci@09080000 {
			status = "okay";
		};

		pwm0: pwm@9810000 {
			status = "okay";
		};

		pwm1: pwm@9510000 {
			status = "okay";
		};

		usb2_picophy1: phy2 {
			status = "okay";
		};

		usb2_picophy2: phy3 {
			status = "okay";
		};

		ohci0: usb@9a03c00 {
			status = "okay";
		};

		ehci0: usb@9a03e00 {
			status = "okay";
		};

		ohci1: usb@9a83c00 {
			status = "okay";
		};

		ehci1: usb@9a83e00 {
			status = "okay";
		};

		st_dwc3: dwc3@8f94000 {
			status = "okay";
		};

		ethernet0: dwmac@9630000 {
			phy-mode = "rgmii";
			pinctrl-0 = <&pinctrl_rgmii1 &pinctrl_rgmii1_mdio_1>;

			snps,phy-bus-name = "stmmac";
			snps,phy-bus-id = <0>;
			snps,phy-addr = <0>;
			snps,reset-gpio = <&pio0 7 0>;
			snps,reset-active-low;
			snps,reset-delays-us = <0 10000 1000000>;

			status = "okay";
		};

		/* SSC11 to HDMI */
		hdmiddc: i2c@9541000 {
			/* HDMI V1.3a supports Standard mode only */
			clock-frequency = <100000>;
			st,i2c-min-scl-pulse-width-us = <0>;
			st,i2c-min-sda-pulse-width-us = <5>;
			status = "okay";
		};

		sti-display-subsystem {
			sti_hdmi: sti-hdmi@8d04000 {
				status = "okay";
			};
		};

		miphy28lp_phy: miphy28lp@9b22000 {

			phy_port1: port@9b2a000 {
				st,osc-force-ext;
			};
		};

		sata1: sata@9b28000 {
			status = "okay";
		};
	};
};
