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

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