/*
 * Copyright (C) 2014 STMicroelectronics Limited.
 * Author: Peter Griffin <peter.griffin@linaro.org>
 *
 * 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 "stih410-clock.dtsi"
#include "stih407-family.dtsi"
#include "stih410-pinctrl.dtsi"
/ {
	aliases {
		bdisp0 = &bdisp0;
	};

	cpus {
		cpu@0 {
			st,syscfg = <&syscfg_core 0x8e0>;
			st,syscfg-eng = <&syscfg_opp 0x4 0x0>;
			clocks = <&clk_m_a9>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
		cpu@1 {
			clocks = <&clk_m_a9>;
			operating-points-v2 = <&cpu0_opp_table>;
		};
	};

	cpu0_opp_table: opp_table0 {
		compatible = "operating-points-v2";
		opp-shared;

		opp@1500000000 {
			opp-supported-hw = <0xffffffff  0xffffffff  0xffffffff>;
			opp-hz = /bits/ 64 <1500000000>;
			clock-latency-ns = <10000000>;
			opp-suspend;
		};
		opp@1200000000 {
			opp-supported-hw = <0xffffffff  0xffffffff  0xffffffff>;
			opp-hz = /bits/ 64 <1200000000>;
			clock-latency-ns = <10000000>;
		};
		opp@800000000 {
			opp-supported-hw = <0xffffffff  0xffffffff  0xffffffff>;
			opp-hz = /bits/ 64 <800000000>;
			clock-latency-ns = <10000000>;
		};
		opp@400000000 {
			opp-supported-hw = <0xffffffff  0xffffffff  0xffffffff>;
			opp-hz = /bits/ 64 <400000000>;
			clock-latency-ns = <10000000>;
		};
	};

	soc {
		syscfg_opp: @08a6583c {
			compatible = "syscon";
			reg = <0x08a6583c 0x8>;
		};

		usb2_picophy1: phy2 {
			compatible = "st,stih407-usb2-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_core 0xf8 0xf4>;
			resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
				 <&picophyreset STIH407_PICOPHY0_RESET>;
			reset-names = "global", "port";

			status = "disabled";
		};

		usb2_picophy2: phy3 {
			compatible = "st,stih407-usb2-phy";
			#phy-cells = <0>;
			st,syscfg = <&syscfg_core 0xfc 0xf4>;
			resets = <&softreset STIH407_PICOPHY_SOFTRESET>,
				 <&picophyreset STIH407_PICOPHY1_RESET>;
			reset-names = "global", "port";

			status = "disabled";
		};

		ohci0: usb@9a03c00 {
			compatible = "generic-ohci";
			reg = <0x9a03c00 0x100>;
			interrupts = <GIC_SPI 180 IRQ_TYPE_NONE>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
				 <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT0_SOFTRESET>;
			reset-names = "power", "softreset";

			phys = <&usb2_picophy1>;
			phy-names = "usb";

			status = "disabled";
		};

		ehci0: usb@9a03e00 {
			compatible = "generic-ehci";
			reg = <0x9a03e00 0x100>;
			interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb0>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
				 <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT0_SOFTRESET>;
			reset-names = "power", "softreset";
			phys = <&usb2_picophy1>;
			phy-names = "usb";

			status = "disabled";
		};

		ohci1: usb@9a83c00 {
			compatible = "generic-ohci";
			reg = <0x9a83c00 0x100>;
			interrupts = <GIC_SPI 181 IRQ_TYPE_NONE>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
				 <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT1_SOFTRESET>;
			reset-names = "power", "softreset";

			phys = <&usb2_picophy2>;
			phy-names = "usb";

			status = "disabled";
		};

		ehci1: usb@9a83e00 {
			compatible = "generic-ehci";
			reg = <0x9a83e00 0x100>;
			interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb1>;
			clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
				 <&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
			resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
				 <&softreset STIH407_USB2_PORT1_SOFTRESET>;
			reset-names = "power", "softreset";

			phys = <&usb2_picophy2>;
			phy-names = "usb";

			status = "disabled";
		};

		sti-display-subsystem {
			compatible = "st,sti-display-subsystem";
			#address-cells = <1>;
			#size-cells = <1>;

			assigned-clocks	= <&clk_s_d2_quadfs 0>,
					  <&clk_s_d2_quadfs 1>,
					  <&clk_s_c0_pll1 0>,
					  <&clk_s_c0_flexgen CLK_COMPO_DVP>,
					  <&clk_s_c0_flexgen CLK_MAIN_DISP>,
					  <&clk_s_d2_flexgen CLK_PIX_MAIN_DISP>,
					  <&clk_s_d2_flexgen CLK_PIX_AUX_DISP>,
					  <&clk_s_d2_flexgen CLK_PIX_GDP1>,
					  <&clk_s_d2_flexgen CLK_PIX_GDP2>,
					  <&clk_s_d2_flexgen CLK_PIX_GDP3>,
					  <&clk_s_d2_flexgen CLK_PIX_GDP4>;

			assigned-clock-parents = <0>,
						 <0>,
						 <0>,
						 <&clk_s_c0_pll1 0>,
						 <&clk_s_c0_pll1 0>,
						 <&clk_s_d2_quadfs 0>,
						 <&clk_s_d2_quadfs 1>,
						 <&clk_s_d2_quadfs 0>,
						 <&clk_s_d2_quadfs 0>,
						 <&clk_s_d2_quadfs 0>,
						 <&clk_s_d2_quadfs 0>;

			assigned-clock-rates = <297000000>,
					       <297000000>,
					       <0>,
					       <400000000>,
					       <400000000>;

			ranges;

			sti-compositor@9d11000 {
				compatible = "st,stih407-compositor";
				reg = <0x9d11000 0x1000>;

				clock-names = "compo_main",
					      "compo_aux",
					      "pix_main",
					      "pix_aux",
					      "pix_gdp1",
					      "pix_gdp2",
					      "pix_gdp3",
					      "pix_gdp4",
					      "main_parent",
					      "aux_parent";

				clocks = <&clk_s_c0_flexgen CLK_COMPO_DVP>,
					 <&clk_s_c0_flexgen CLK_COMPO_DVP>,
					 <&clk_s_d2_flexgen CLK_PIX_MAIN_DISP>,
					 <&clk_s_d2_flexgen CLK_PIX_AUX_DISP>,
					 <&clk_s_d2_flexgen CLK_PIX_GDP1>,
					 <&clk_s_d2_flexgen CLK_PIX_GDP2>,
					 <&clk_s_d2_flexgen CLK_PIX_GDP3>,
					 <&clk_s_d2_flexgen CLK_PIX_GDP4>,
					 <&clk_s_d2_quadfs 0>,
					 <&clk_s_d2_quadfs 1>;

				reset-names = "compo-main", "compo-aux";
				resets = <&softreset STIH407_COMPO_SOFTRESET>,
					 <&softreset STIH407_COMPO_SOFTRESET>;
				st,vtg = <&vtg_main>, <&vtg_aux>;
			};

			sti-tvout@8d08000 {
				compatible = "st,stih407-tvout";
				reg = <0x8d08000 0x1000>;
				reg-names = "tvout-reg";
				reset-names = "tvout";
				resets = <&softreset STIH407_HDTVOUT_SOFTRESET>;
				#address-cells = <1>;
				#size-cells = <1>;
				assigned-clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
						  <&clk_s_d2_flexgen CLK_TMDS_HDMI>,
						  <&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
						  <&clk_s_d0_flexgen CLK_PCM_0>,
						  <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
						  <&clk_s_d2_flexgen CLK_HDDAC>;

				assigned-clock-parents = <&clk_s_d2_quadfs 0>,
							 <&clk_tmdsout_hdmi>,
							 <&clk_s_d2_quadfs 0>,
							 <&clk_s_d0_quadfs 0>,
							 <&clk_s_d2_quadfs 0>,
							 <&clk_s_d2_quadfs 0>;
			};

			sti_hdmi: sti-hdmi@8d04000 {
				compatible = "st,stih407-hdmi";
				#sound-dai-cells = <0>;
				reg = <0x8d04000 0x1000>;
				reg-names = "hdmi-reg";
				interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
				interrupt-names	= "irq";
				clock-names = "pix",
					      "tmds",
					      "phy",
					      "audio",
					      "main_parent",
					      "aux_parent";

				clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
					 <&clk_s_d2_flexgen CLK_TMDS_HDMI>,
					 <&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
					 <&clk_s_d0_flexgen CLK_PCM_0>,
					 <&clk_s_d2_quadfs 0>,
					 <&clk_s_d2_quadfs 1>;

				hdmi,hpd-gpio = <&pio5 3>;
				reset-names = "hdmi";
				resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
				ddc = <&hdmiddc>;
			};

			sti-hda@8d02000 {
				compatible = "st,stih407-hda";
				status = "disabled";
				reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
				reg-names = "hda-reg", "video-dacs-ctrl";
				clock-names = "pix",
					      "hddac",
					      "main_parent",
					      "aux_parent";
				clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
					 <&clk_s_d2_flexgen CLK_HDDAC>,
					 <&clk_s_d2_quadfs 0>,
					 <&clk_s_d2_quadfs 1>;
			};

			sti-dvo@8d00400 {
				compatible = "st,stih407-dvo";
				status = "disabled";
				reg = <0x8d00400 0x200>;
				reg-names = "dvo-reg";
				clock-names = "dvo_pix",
					      "dvo",
					      "main_parent",
					      "aux_parent";
				clocks = <&clk_s_d2_flexgen CLK_PIX_DVO>,
					 <&clk_s_d2_flexgen CLK_DVO>,
					 <&clk_s_d2_quadfs 0>,
					 <&clk_s_d2_quadfs 1>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_dvo>;
			};

			sti-hqvdp@9c000000 {
				compatible = "st,stih407-hqvdp";
				reg = <0x9C00000 0x100000>;
				clock-names = "hqvdp", "pix_main";
				clocks = <&clk_s_c0_flexgen CLK_MAIN_DISP>,
					 <&clk_s_d2_flexgen CLK_PIX_MAIN_DISP>;
				reset-names = "hqvdp";
				resets = <&softreset STIH407_HDQVDP_SOFTRESET>;
				st,vtg = <&vtg_main>;
			};
		};

		bdisp0:bdisp@9f10000 {
			compatible = "st,stih407-bdisp";
			reg = <0x9f10000 0x1000>;
			interrupts = <GIC_SPI 38 IRQ_TYPE_NONE>;
			clock-names = "bdisp";
			clocks = <&clk_s_c0_flexgen CLK_IC_BDISP_0>;
		};

		hva@8c85000 {
			compatible = "st,st-hva";
			reg = <0x8c85000 0x400>, <0x6000000 0x40000>;
			reg-names = "hva_registers", "hva_esram";
			interrupts = <GIC_SPI 58 IRQ_TYPE_NONE>,
				     <GIC_SPI 59 IRQ_TYPE_NONE>;
			clock-names = "clk_hva";
			clocks = <&clk_s_c0_flexgen CLK_HVA>;
		};

		thermal@91a0000 {
			compatible = "st,stih407-thermal";
			reg = <0x91a0000 0x28>;
			clock-names = "thermal";
			clocks = <&clk_sysin>;
			interrupts = <GIC_SPI 205 IRQ_TYPE_EDGE_RISING>;
		};

		g1@8c80000 {
			compatible = "st,g1";
			reg = <0x8c80000 0x194>;
			interrupts = <GIC_SPI 57 IRQ_TYPE_NONE>;
		};

		temp0{
			compatible = "st,stih407-thermal";
			reg = <0x91a0000 0x28>;
			clock-names = "thermal";
			clocks = <&clk_sysin>;
			interrupts = <GIC_SPI 205 IRQ_TYPE_EDGE_RISING>;
		};

		delta0 {
			compatible = "st,delta";
			clock-names = "delta", "delta-st231", "delta-flash-promip";
			clocks = <&clk_s_c0_flexgen CLK_VID_DMU>,
			    <&clk_s_c0_flexgen CLK_ST231_DMU>,
			    <&clk_s_c0_flexgen CLK_FLASH_PROMIP>;
		};

		h264pp0: h264pp@8c00000 {
			compatible = "st,h264pp";
			reg = <0x8c00000 0x20000>;
			interrupts = <GIC_SPI 53 IRQ_TYPE_NONE>;
			clock-names = "clk_h264pp_0";
			clocks = <&clk_s_c0_flexgen CLK_PP_DMU>;
		};

		mali: mali@09f00000 {
			compatible	= "arm,mali-400";
			reg		= <0x09f00000 0x10000>;
			interrupts	= <GIC_SPI 49 IRQ_TYPE_NONE>,
					  <GIC_SPI 50 IRQ_TYPE_NONE>,
					  <GIC_SPI 41 IRQ_TYPE_NONE>,
					  <GIC_SPI 45 IRQ_TYPE_NONE>,
					  <GIC_SPI 42 IRQ_TYPE_NONE>,
					  <GIC_SPI 46 IRQ_TYPE_NONE>,
					  <GIC_SPI 43 IRQ_TYPE_NONE>,
					  <GIC_SPI 47 IRQ_TYPE_NONE>,
					  <GIC_SPI 44 IRQ_TYPE_NONE>,
					  <GIC_SPI 48 IRQ_TYPE_NONE>;
			interrupt-names = "IRQGP",
					  "IRQGPMMU",
					  "IRQPP0",
					  "IRQPPMMU0",
					  "IRQPP1",
					  "IRQPPMMU1",
					  "IRQPP2",
					  "IRQPPMMU2",
					  "IRQPP3",
					  "IRQPPMMU3";
			clock-names	= "gpu-clk";
			clocks		= <&clk_s_c0_flexgen CLK_ICN_GPU>;
			reset-names	= "gpu";
			resets		= <&softreset STIH407_GPU_SOFTRESET>;
		};

		delta0 {
			compatible = "st,st-delta";
			clock-names = "delta",
				      "delta-st231",
				      "delta-flash-promip";
			clocks = <&clk_s_c0_flexgen CLK_VID_DMU>,
				 <&clk_s_c0_flexgen CLK_ST231_DMU>,
				 <&clk_s_c0_flexgen CLK_FLASH_PROMIP>;
		};

		h264pp0: h264pp@8c00000 {
			compatible = "st,h264pp";
			reg = <0x8c00000 0x20000>;
			interrupts = <GIC_SPI 53 IRQ_TYPE_NONE>;
			clock-names = "clk_h264pp_0";
			clocks = <&clk_s_c0_flexgen CLK_PP_DMU>;
		};

		mali: mali@09f00000 {
			compatible	= "arm,mali-400";
			reg		= <0x09f00000 0x10000>;
			interrupts	= <GIC_SPI 49 IRQ_TYPE_NONE>,
					  <GIC_SPI 50 IRQ_TYPE_NONE>,
					  <GIC_SPI 41 IRQ_TYPE_NONE>,
					  <GIC_SPI 45 IRQ_TYPE_NONE>,
					  <GIC_SPI 42 IRQ_TYPE_NONE>,
					  <GIC_SPI 46 IRQ_TYPE_NONE>,
					  <GIC_SPI 43 IRQ_TYPE_NONE>,
					  <GIC_SPI 47 IRQ_TYPE_NONE>,
					  <GIC_SPI 44 IRQ_TYPE_NONE>,
					  <GIC_SPI 48 IRQ_TYPE_NONE>;
			interrupt-names = "IRQGP",
					  "IRQGPMMU",
					  "IRQPP0",
					  "IRQPPMMU0",
					  "IRQPP1",
					  "IRQPPMMU1",
					  "IRQPP2",
					  "IRQPPMMU2",
					  "IRQPP3",
					  "IRQPPMMU3";
			clock-names	= "gpu-clk";
			clocks		= <&clk_s_c0_flexgen CLK_ICN_GPU>;
			reset-names	= "gpu";
			resets		= <&softreset STIH407_GPU_SOFTRESET>;
		};

		hva@8c85000{
			compatible = "st,st-hva";
			reg = <0x8c85000 0x400>, <0x6000000 0x40000>;
			reg-names = "hva_registers", "hva_esram";
			interrupts = <GIC_SPI 58 IRQ_TYPE_NONE>,
				     <GIC_SPI 59 IRQ_TYPE_NONE>;
			clock-names = "clk_hva";
			clocks = <&clk_s_c0_flexgen CLK_HVA>;
		};
	};
};
