/*
 * 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"
#include <dt-bindings/gpio/gpio.h>
/ {
	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 {
				label	= "Front Panel LED";
				gpios	= <&pio4 1 GPIO_ACTIVE_HIGH>;
				linux,default-trigger	= "heartbeat";
			};
			green {
				gpios	= <&pio4 7 GPIO_ACTIVE_HIGH>;
				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>;
		};
	};
};
