Loading...
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2014 STMicroelectronics Limited.
 * Author: Peter Griffin <peter.griffin@linaro.org>
 */
#include "stih410-clock.dtsi"
#include "stih407-family.dtsi"
#include "stih410-pinctrl.dtsi"
#include <dt-bindings/gpio/gpio.h>
/ {
	aliases {
		bdisp0 = &bdisp0;
	};

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

	display-subsystem {
		compatible = "st,sti-display-subsystem";
		ports = <&compositor>, <&hqvdp>, <&tvout>, <&sti_hdmi>;

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

	soc {
		ohci0: usb@9a03c00 {
			compatible = "st,st-ohci-300x";
			reg = <0x9a03c00 0x100>;
			interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
			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 = "st,st-ehci-300x";
			reg = <0x9a03e00 0x100>;
			interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
			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 = "st,st-ohci-300x";
			reg = <0x9a83c00 0x100>;
			interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
			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 = "st,st-ehci-300x";
			reg = <0x9a83e00 0x100>;
			interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
			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";
		};

		compositor: display-controller@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>;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					compo_main_out: endpoint {
						remote-endpoint = <&tvout_in0>;
					};
				};

				port@1 {
					reg = <1>;
					compo_aux_out: endpoint {
						remote-endpoint = <&tvout_in1>;
					};
				};
			};
		};

		tvout: encoder@8d08000 {
			compatible = "st,stih407-tvout";
			reg = <0x8d08000 0x1000>;
			reg-names = "tvout-reg";
			reset-names = "tvout";
			resets = <&softreset STIH407_HDTVOUT_SOFTRESET>;
			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>;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@0 {
					reg = <0>;
					tvout_in0: endpoint {
						remote-endpoint = <&compo_main_out>;
					};
				};

				port@1 {
					reg = <1>;
					tvout_in1: endpoint {
						remote-endpoint = <&compo_aux_out>;
					};
				};

				port@2 {
					reg = <2>;
					tvout_out0: endpoint {
						remote-endpoint = <&hdmi_in>;
					};
				};

				port@3 {
					reg = <3>;
					tvout_out1: endpoint {
						remote-endpoint = <&hda_in>;
					};
				};
			};
		};

		sti_hdmi: hdmi@8d04000 {
			compatible = "st,stih407-hdmi";
			reg = <0x8d04000 0x1000>;
			reg-names = "hdmi-reg";
			#sound-dai-cells = <0>;
			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
			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 GPIO_ACTIVE_LOW>;
			reset-names = "hdmi";
			resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
			ddc = <&hdmiddc>;

			port {
				hdmi_in: endpoint {
					remote-endpoint = <&tvout_out0>;
				};
			};
		};

		analog@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>;

			port {
				hda_in: endpoint {
					remote-endpoint = <&tvout_out1>;
				};
			};
		};

		hqvdp: plane@9c00000 {
			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_LEVEL_HIGH>;
			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_LEVEL_HIGH>,
				     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
			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>;
			#thermal-sensor-cells = <0>;
		};

		cec@94a087c {
			compatible = "st,stih-cec";
			reg = <0x94a087c 0x64>;
			clocks = <&clk_sysin>;
			clock-names = "cec-clk";
			interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "cec-irq";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_cec0_default>;
			resets = <&softreset STIH407_LPM_SOFTRESET>;
			hdmi-phandle = <&sti_hdmi>;
		};

		gpu: gpu@9f00000 {
			compatible = "st,stih410-mali", "arm,mali-400";
			reg = <0x9f00000 0x10000>;
			/* LIMA driver needs 2 clocks, use the same for both */
			clocks = <&clk_s_c0_flexgen CLK_ICN_GPU>,
				 <&clk_s_c0_flexgen CLK_ICN_GPU>;
			clock-names = "bus", "core";
			assigned-clocks = <&clk_s_c0_flexgen CLK_ICN_GPU>;
			assigned-clock-rates = <400000000>;
			resets = <&softreset STIH407_GPU_SOFTRESET>;
			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "gp",
					  "gpmmu",
					  "pp0",
					  "ppmmu0",
					  "pp1",
					  "ppmmu1",
					  "pp2",
					  "ppmmu2",
					  "pp3",
					  "ppmmu3";

			status = "disabled";
		};
	};
};