/*
 * 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";
			pinctrl-names = "default", "no-hw-flowctrl";
			pinctrl-0 = <&pinctrl_serial0_hw_flowctrl>;
			pinctrl-1 = <&pinctrl_serial0>;
			rts-gpios = <&pio17 3 GPIO_ACTIVE_LOW>;
			uart-has-rtscts;
			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@9060000 {
			pinctrl-0 = <&pinctrl_sd0>;
			bus-width = <4>;
			status = "okay";
		};

		/* high speed expansion connector */
		mmc1: sdhci@9080000 {
			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";
		};

		sti_uni_player0: sti-uni-player@8d80000 {
			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";
		};

		sound {
			compatible = "simple-audio-card";
			simple-audio-card,name = "STI-B2260";
			status = "okay";

			simple-audio-card,dai-link@0 {
				/* DAC */
				format = "i2s";
				mclk-fs = <128>;
				cpu {
					sound-dai = <&sti_uni_player0>;
				};

				codec {
					sound-dai = <&sti_hdmi>;
				};
			};
		};

		miphy28lp_phy: miphy28lp@9b22000 {

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

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