/*
 * Copyright (C) 2012 STMicroelectronics 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.dtsi"
#include "stih416-clock.dtsi"
#include "stih416-pinctrl.dtsi"

#include <dt-bindings/phy/phy.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset-controller/stih416-resets.h>
#include <dt-bindings/interrupt-controller/irq-st.h>
/ {
	L2: cache-controller {
		compatible = "arm,pl310-cache";
		reg = <0xfffe2000 0x1000>;
		arm,data-latency = <3 3 3>;
		arm,tag-latency = <2 2 2>;
		cache-unified;
		cache-level = <2>;
	};

	arm-pmu {
		compatible = "arm,cortex-a9-pmu";
		interrupt-parent = <&intc>;
		interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		interrupt-parent = <&intc>;
		ranges;
		compatible	= "simple-bus";

		restart {
			compatible = "st,stih416-restart";
			st,syscfg = <&syscfg_sbc>;
			status = "okay";
		};

		powerdown: powerdown-controller {
			#reset-cells = <1>;
			compatible = "st,stih416-powerdown";
		};

		softreset: softreset-controller {
			#reset-cells = <1>;
			compatible = "st,stih416-softreset";
		};

		syscfg_sbc:sbc-syscfg@fe600000{
			compatible	= "st,stih416-sbc-syscfg", "syscon";
			reg		= <0xfe600000 0x1000>;
		};

		syscfg_front:front-syscfg@fee10000{
			compatible	= "st,stih416-front-syscfg", "syscon";
			reg		= <0xfee10000 0x1000>;
		};

		syscfg_rear:rear-syscfg@fe830000{
			compatible	= "st,stih416-rear-syscfg", "syscon";
			reg		= <0xfe830000 0x1000>;
		};

		/* MPE */
		syscfg_fvdp_fe:fvdp-fe-syscfg@fddf0000{
			compatible	= "st,stih416-fvdp-fe-syscfg", "syscon";
			reg		= <0xfddf0000 0x1000>;
		};

		syscfg_fvdp_lite:fvdp-lite-syscfg@fd6a0000{
			compatible	= "st,stih416-fvdp-lite-syscfg", "syscon";
			reg		= <0xfd6a0000 0x1000>;
		};

		syscfg_cpu:cpu-syscfg@fdde0000{
			compatible	= "st,stih416-cpu-syscfg", "syscon";
			reg		= <0xfdde0000 0x1000>;
		};

		syscfg_compo:compo-syscfg@fd320000{
			compatible	= "st,stih416-compo-syscfg", "syscon";
			reg		= <0xfd320000 0x1000>;
		};

		syscfg_transport:transport-syscfg@fd690000{
			compatible	= "st,stih416-transport-syscfg", "syscon";
			reg		= <0xfd690000 0x1000>;
		};

		syscfg_lpm:lpm-syscfg@fe4b5100{
			compatible	= "st,stih416-lpm-syscfg", "syscon";
			reg		= <0xfe4b5100 0x8>;
		};

		irq-syscfg {
			compatible    = "st,stih416-irq-syscfg";
			st,syscfg     = <&syscfg_cpu>;
			st,irq-device = <ST_IRQ_SYSCFG_PMU_0>,
					<ST_IRQ_SYSCFG_PMU_1>;
			st,fiq-device = <ST_IRQ_SYSCFG_DISABLED>,
					<ST_IRQ_SYSCFG_DISABLED>;
		};

		serial2: serial@fed32000{
			compatible	= "st,asc";
			status 		= "disabled";
			reg		= <0xfed32000 0x2c>;
			interrupts	= <0 197 0>;
			clocks 		= <&clk_s_a0_ls CLK_ICN_REG>;
			pinctrl-names 	= "default";
			pinctrl-0 	= <&pinctrl_serial2 &pinctrl_serial2_oe>;
		};

		/* SBC_UART1 */
		sbc_serial1: serial@fe531000 {
			compatible	= "st,asc";
			status 		= "disabled";
			reg		= <0xfe531000 0x2c>;
			interrupts	= <0 210 0>;
			pinctrl-names 	= "default";
			pinctrl-0 	= <&pinctrl_sbc_serial1>;
			clocks		= <&clk_sysin>;
		};

		i2c@fed40000 {
			compatible	= "st,comms-ssc4-i2c";
			reg		= <0xfed40000 0x110>;
			interrupts	= <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
			clocks 		= <&clk_s_a0_ls CLK_ICN_REG>;
			clock-names	= "ssc";
			clock-frequency = <400000>;
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_i2c0_default>;

			status		= "disabled";
		};

		i2c@fed41000 {
			compatible	= "st,comms-ssc4-i2c";
			reg		= <0xfed41000 0x110>;
			interrupts	= <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
			clocks 		= <&clk_s_a0_ls CLK_ICN_REG>;
			clock-names	= "ssc";
			clock-frequency = <400000>;
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_i2c1_default>;

			status		= "disabled";
		};

		i2c@fe540000 {
			compatible	= "st,comms-ssc4-i2c";
			reg		= <0xfe540000 0x110>;
			interrupts	= <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
			clocks		= <&clk_sysin>;
			clock-names	= "ssc";
			clock-frequency = <400000>;
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_sbc_i2c0_default>;

			status		= "disabled";
		};

		i2c@fe541000 {
			compatible	= "st,comms-ssc4-i2c";
			reg		= <0xfe541000 0x110>;
			interrupts	= <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
			clocks		= <&clk_sysin>;
			clock-names	= "ssc";
			clock-frequency = <400000>;
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_sbc_i2c1_default>;

			status		= "disabled";
		};

		ethernet0: dwmac@fe810000 {
			device_type 	= "network";
			compatible	= "st,stih416-dwmac", "snps,dwmac", "snps,dwmac-3.710";
			status 		= "disabled";
			reg		= <0xfe810000 0x8000>;
			reg-names	= "stmmaceth";

			interrupts = <0 133 0>, <0 134 0>, <0 135 0>;
			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";

			snps,pbl 	= <32>;
			snps,mixed-burst;

			st,syscon		= <&syscfg_rear 0x8bc>;
			resets			= <&softreset STIH416_ETH0_SOFTRESET>;
			reset-names		= "stmmaceth";
			pinctrl-names 	= "default";
			pinctrl-0	= <&pinctrl_mii0>;
			clock-names	= "stmmaceth", "sti-ethclk";
			clocks		= <&clk_s_a1_ls CLK_ICN_IF_2>, <&clk_s_a1_ls CLK_GMAC0_PHY>;
		};

		ethernet1: dwmac@fef08000 {
			device_type = "network";
			compatible		= "st,stih416-dwmac", "snps,dwmac", "snps,dwmac-3.710";
			status 		= "disabled";
			reg		= <0xfef08000 0x8000>;
			reg-names	= "stmmaceth";
			interrupts = <0 136 0>, <0 137 0>, <0 138 0>;
			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";

			snps,pbl	= <32>;
			snps,mixed-burst;

			st,syscon	= <&syscfg_sbc 0x7f0>;

			resets		= <&softreset STIH416_ETH1_SOFTRESET>;
			reset-names	= "stmmaceth";
			pinctrl-names 	= "default";
			pinctrl-0	= <&pinctrl_mii1>;
			clock-names	= "stmmaceth", "sti-ethclk";
			clocks		= <&clk_s_a0_ls CLK_ICN_REG>, <&clk_s_a0_ls CLK_ETH1_PHY>;
		};

		rc: rc@fe518000 {
			compatible	= "st,comms-irb";
			reg		= <0xfe518000 0x234>;
			interrupts	=  <0 203 0>;
			rx-mode         = "infrared";
			clocks		= <&clk_sysin>;
			pinctrl-names 	= "default";
			pinctrl-0	= <&pinctrl_ir>;
			resets		= <&softreset STIH416_IRB_SOFTRESET>;
		};

		/* FSM */
		spifsm: spifsm@fe902000 {
			compatible	   = "st,spi-fsm";
			reg		   = <0xfe902000 0x1000>;
			pinctrl-0	   = <&pinctrl_fsm>;

			st,syscfg	   = <&syscfg_rear>;
			st,boot-device-reg = <0x958>;
			st,boot-device-spi = <0x1a>;

			status = "disabled";
		};

		keyscan: keyscan@fe4b0000 {
			compatible = "st,sti-keyscan";
			status = "disabled";
			reg = <0xfe4b0000 0x2000>;
			interrupts = <GIC_SPI 212 IRQ_TYPE_NONE>;
			clocks = <&clk_sysin>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_keyscan>;
			resets	= <&powerdown STIH416_KEYSCAN_POWERDOWN>,
				  <&softreset STIH416_KEYSCAN_SOFTRESET>;
		};

		temp0 {
			compatible = "st,stih416-sas-thermal";
			clock-names = "thermal";
			clocks = <&clockgen_c_vcc 14>;

			status = "okay";
		};

		temp1@fdfe8000 {
			compatible = "st,stih416-mpe-thermal";
			reg = <0xfdfe8000 0x10>;
			clocks = <&clockgen_e 3>;
			clock-names = "thermal";
			interrupts = <GIC_SPI 23 IRQ_TYPE_EDGE_RISING>;

			status = "okay";
		};

		mmc0: sdhci@fe81e000 {
			compatible	= "st,sdhci";
			status		= "disabled";
			reg		= <0xfe81e000 0x1000>;
			interrupts	= <GIC_SPI 127 IRQ_TYPE_NONE>;
			interrupt-names	= "mmcirq";
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_mmc0>;
			clock-names	= "mmc";
			clocks		= <&clk_s_a1_ls 1>;
		};

		mmc1: sdhci@fe81f000 {
			compatible	= "st,sdhci";
			status		= "disabled";
			reg		= <0xfe81f000 0x1000>;
			interrupts	= <GIC_SPI 128 IRQ_TYPE_NONE>;
			interrupt-names	= "mmcirq";
			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_mmc1>;
			clock-names	= "mmc";
			clocks		= <&clk_s_a1_ls 8>;
		};

		miphy365x_phy: phy@fe382000 {
			compatible      = "st,miphy365x-phy";
			st,syscfg	= <&syscfg_rear 0x824 0x828>;
			#address-cells	= <1>;
			#size-cells	= <1>;
			ranges;

			phy_port0: port@fe382000 {
				#phy-cells = <1>;
				reg = <0xfe382000 0x100>, <0xfe394000 0x100>;
				reg-names = "sata", "pcie";
			};

			phy_port1: port@fe38a000 {
				#phy-cells = <1>;
				reg = <0xfe38a000 0x100>, <0xfe804000 0x100>;
				reg-names = "sata", "pcie";
			};
		};

		sata0: sata@fe380000 {
			compatible      = "st,sti-ahci";
			reg             = <0xfe380000 0x1000>;
			interrupts      = <GIC_SPI 157 IRQ_TYPE_NONE>;
			interrupt-names = "hostc";
			phys	        = <&phy_port0 PHY_TYPE_SATA>;
			phy-names       = "sata-phy";
			resets	        = <&powerdown STIH416_SATA0_POWERDOWN>,
					  <&softreset STIH416_SATA0_SOFTRESET>;
			reset-names     = "pwr-dwn", "sw-rst";
			clock-names     = "ahci_clk";
			clocks	        = <&clk_s_a0_ls CLK_ICN_REG>;

			status	        = "disabled";
		};

		usb2_phy: phy@0 {
			compatible = "st,stih416-usb-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_rear>;
			clocks = <&clk_sysin>;
			clock-names = "osc_phy";
		};

		ehci0: usb@fe1ffe00 {
			compatible = "st,st-ehci-300x";
			reg = <0xfe1ffe00 0x100>;
			interrupts = <GIC_SPI 148 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb0>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB0_POWERDOWN>,
				 <&softreset STIH416_USB0_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ohci0: usb@fe1ffc00 {
			compatible = "st,st-ohci-300x";
			reg = <0xfe1ffc00 0x100>;
			interrupts = <GIC_SPI 149 IRQ_TYPE_NONE>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			status = "okay";
			resets = <&powerdown STIH416_USB0_POWERDOWN>,
				 <&softreset STIH416_USB0_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ehci1: usb@fe203e00 {
			compatible = "st,st-ehci-300x";
			reg = <0xfe203e00 0x100>;
			interrupts = <GIC_SPI 150 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb1>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB1_POWERDOWN>,
				 <&softreset STIH416_USB1_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ohci1: usb@fe203c00 {
			compatible = "st,st-ohci-300x";
			reg = <0xfe203c00 0x100>;
			interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB1_POWERDOWN>,
				 <&softreset STIH416_USB1_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ehci2: usb@fe303e00 {
			compatible = "st,st-ehci-300x";
			reg = <0xfe303e00 0x100>;
			interrupts = <GIC_SPI 152 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb2>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB2_POWERDOWN>,
				 <&softreset STIH416_USB2_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ohci2: usb@fe303c00 {
			compatible = "st,st-ohci-300x";
			reg = <0xfe303c00 0x100>;
			interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB2_POWERDOWN>,
				 <&softreset STIH416_USB2_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ehci3: usb@fe343e00 {
			compatible = "st,st-ehci-300x";
			reg = <0xfe343e00 0x100>;
			interrupts = <GIC_SPI 154 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb3>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB3_POWERDOWN>,
				 <&softreset STIH416_USB3_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		ohci3: usb@fe343c00 {
			compatible = "st,st-ohci-300x";
			reg = <0xfe343c00 0x100>;
			interrupts = <GIC_SPI 155 IRQ_TYPE_NONE>;
			clocks = <&clk_s_a1_ls 0>,
				 <&clockgen_b0 0>;
			clock-names = "ic", "clk48";
			phys = <&usb2_phy>;
			phy-names = "usb";
			resets = <&powerdown STIH416_USB3_POWERDOWN>,
				 <&softreset STIH416_USB3_SOFTRESET>;
			reset-names = "power", "softreset";
		};

		/* SAS PWM Module */
		pwm0: pwm@fed10000 {
			compatible	= "st,sti-pwm";
			status		= "disabled";
			#pwm-cells	= <2>;
			reg		= <0xfed10000 0x68>;

			pinctrl-names	= "default";
			pinctrl-0 = 	<&pinctrl_pwm0_chan0_default
					&pinctrl_pwm0_chan1_default
					&pinctrl_pwm0_chan2_default
					&pinctrl_pwm0_chan3_default>;

			clock-names	= "pwm";
			clocks		= <&clk_sysin>;
			st,pwm-num-chan = <4>;
		};

		/* SBC PWM Module */
		pwm1: pwm@fe510000 {
			compatible	= "st,sti-pwm";
			status		= "disabled";
			#pwm-cells	= <2>;
			reg		= <0xfe510000 0x68>;

			pinctrl-names	= "default";
			pinctrl-0	= <&pinctrl_pwm1_chan0_default
					/*
					 * Shared with SBC_OBS_NOTRST.  Don't
					 * enable unless you really know what
					 * you're doing.
					 *
					 * &pinctrl_pwm1_chan1_default
					 */
					&pinctrl_pwm1_chan2_default
					&pinctrl_pwm1_chan3_default>;

			clock-names	= "pwm";
			clocks		= <&clk_sysin>;
			st,pwm-num-chan = <3>;
		};
	};
};
