/*
 * Copyright (C) 2013 STMicroelectronics (R&D) Limited.
 * Author: Srinivas Kandagatla <srinivas.kandagatla@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
 * publishhed by the Free Software Foundation.
 */
#include "stih41x-b2020x.dtsi"
/ {
	memory{
		device_type = "memory";
		reg = <0x40000000 0x80000000>;
	};

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

	aliases {
		ttyAS0 = &sbc_serial1;
		ethernet1 = &ethernet1;
	};
	soc {
		sbc_serial1: serial@fe531000 {
			status = "okay";
		};

		leds {
			compatible	= "gpio-leds";
			red {
				#gpio-cells = <1>;
				label	= "Front Panel LED";
				gpios	= <&pio4 1>;
				linux,default-trigger	= "heartbeat";
			};
			green {
				gpios	= <&pio4 7>;
				default-state = "off";
			};
		};

		i2c@fed40000 {
			status = "okay";
		};

		/* HDMI Tx I2C */
		i2c@fed41000 {
			/* HDMI V1.3a supports Standard mode only */
			clock-frequency = <100000>;
			i2c-min-scl-pulse-width-us = <0>;
			i2c-min-sda-pulse-width-us = <5>;

			status = "okay";
		};

		i2c@fe540000 {
			status = "okay";
		};

		i2c@fe541000 {
			status = "okay";
		};

		ethernet1: dwmac@fef08000 {
			status			= "okay";
			phy-mode		= "rgmii-id";
			max-speed		= <1000>;
			st,tx-retime-src	= "clk_125";
			snps,reset-gpio 	= <&pio3 0>;
			snps,reset-active-low;
			snps,reset-delays-us 	= <0 10000 10000>;

			pinctrl-0	= <&pinctrl_rgmii1>;
		};

		mmc0: sdhci@fe81e000 {
			bus-width = <8>;
		};
	};
};
