// SPDX-License-Identifier: GPL-2.0
/*
 * Samsung Exynos5260 SoC device tree source
 *
 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 */

#include <dt-bindings/clock/exynos5260-clk.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	compatible = "samsung,exynos5260", "samsung,exynos5";
	interrupt-parent = <&gic>;
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		i2c0 = &hsi2c_0;
		i2c1 = &hsi2c_1;
		i2c2 = &hsi2c_2;
		i2c3 = &hsi2c_3;
		pinctrl0 = &pinctrl_0;
		pinctrl1 = &pinctrl_1;
		pinctrl2 = &pinctrl_2;
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &uart2;
		serial3 = &uart3;
	};

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

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&cpu0>;
				};
				core1 {
					cpu = <&cpu1>;
				};
			};

			cluster1 {
				core0 {
					cpu = <&cpu2>;
				};
				core1 {
					cpu = <&cpu3>;
				};
				core2 {
					cpu = <&cpu4>;
				};
				core3 {
					cpu = <&cpu5>;
				};
			};
		};

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a15";
			reg = <0x0>;
			cci-control-port = <&cci_control1>;
		};

		cpu1: cpu@1 {
			device_type = "cpu";
			compatible = "arm,cortex-a15";
			reg = <0x1>;
			cci-control-port = <&cci_control1>;
		};

		cpu2: cpu@100 {
			device_type = "cpu";
			compatible = "arm,cortex-a7";
			reg = <0x100>;
			cci-control-port = <&cci_control0>;
		};

		cpu3: cpu@101 {
			device_type = "cpu";
			compatible = "arm,cortex-a7";
			reg = <0x101>;
			cci-control-port = <&cci_control0>;
		};

		cpu4: cpu@102 {
			device_type = "cpu";
			compatible = "arm,cortex-a7";
			reg = <0x102>;
			cci-control-port = <&cci_control0>;
		};

		cpu5: cpu@103 {
			device_type = "cpu";
			compatible = "arm,cortex-a7";
			reg = <0x103>;
			cci-control-port = <&cci_control0>;
		};
	};

	soc: soc {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		clock_top: clock-controller@10010000 {
			compatible = "samsung,exynos5260-clock-top";
			reg = <0x10010000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_mif MIF_DOUT_MEM_PLL>,
				 <&clock_mif MIF_DOUT_BUS_PLL>,
				 <&clock_mif MIF_DOUT_MEDIA_PLL>;
			clock-names = "fin_pll",
				      "dout_mem_pll",
				      "dout_bus_pll",
				      "dout_media_pll";
		};

		clock_peri: clock-controller@10200000 {
			compatible = "samsung,exynos5260-clock-peri";
			reg = <0x10200000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&ioclk_pcm>,
				 <&ioclk_i2s>,
				 <&ioclk_spdif>,
				 <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_PERI_66>,
				 <&clock_top TOP_DOUT_SCLK_PERI_UART0>,
				 <&clock_top TOP_DOUT_SCLK_PERI_UART1>,
				 <&clock_top TOP_DOUT_SCLK_PERI_UART2>,
				 <&clock_top TOP_DOUT_SCLK_PERI_SPI0_B>,
				 <&clock_top TOP_DOUT_SCLK_PERI_SPI1_B>,
				 <&clock_top TOP_DOUT_SCLK_PERI_SPI2_B>,
				 <&clock_top TOP_DOUT_ACLK_PERI_AUD>;
			clock-names = "fin_pll",
				      "ioclk_pcm_extclk",
				      "ioclk_i2s_cdclk",
				      "ioclk_spdif_extclk",
				      "phyclk_hdmi_phy_ref_cko",
				      "dout_aclk_peri_66",
				      "dout_sclk_peri_uart0",
				      "dout_sclk_peri_uart1",
				      "dout_sclk_peri_uart2",
				      "dout_sclk_peri_spi0_b",
				      "dout_sclk_peri_spi1_b",
				      "dout_sclk_peri_spi2_b",
				      "dout_aclk_peri_aud";
		};

		clock_egl: clock-controller@10600000 {
			compatible = "samsung,exynos5260-clock-egl";
			reg = <0x10600000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_mif MIF_DOUT_BUS_PLL>;
			clock-names = "fin_pll",
				      "dout_bus_pll";
		};

		clock_kfc: clock-controller@10700000 {
			compatible = "samsung,exynos5260-clock-kfc";
			reg = <0x10700000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_mif MIF_DOUT_MEDIA_PLL>;
			clock-names = "fin_pll",
				      "dout_media_pll";
		};

		clock_g2d: clock-controller@10a00000 {
			compatible = "samsung,exynos5260-clock-g2d";
			reg = <0x10A00000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_G2D_333>;
			clock-names = "fin_pll",
				      "dout_aclk_g2d_333";
		};

		clock_mif: clock-controller@10ce0000 {
			compatible = "samsung,exynos5260-clock-mif";
			reg = <0x10CE0000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>;
			clock-names = "fin_pll";
		};

		clock_mfc: clock-controller@11090000 {
			compatible = "samsung,exynos5260-clock-mfc";
			reg = <0x11090000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_MFC_333>;
			clock-names = "fin_pll",
				      "dout_aclk_mfc_333";
		};

		clock_g3d: clock-controller@11830000 {
			compatible = "samsung,exynos5260-clock-g3d";
			reg = <0x11830000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>;
			clock-names = "fin_pll";
		};

		clock_fsys: clock-controller@122e0000 {
			compatible = "samsung,exynos5260-clock-fsys";
			reg = <0x122E0000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_FSYS_200>;
			clock-names = "fin_pll",
				      "phyclk_usbhost20_phy_phyclock",
				      "phyclk_usbhost20_phy_freeclk",
				      "phyclk_usbhost20_phy_clk48mohci",
				      "phyclk_usbdrd30_udrd30_pipe_pclk",
				      "phyclk_usbdrd30_udrd30_phyclock",
				      "dout_aclk_fsys_200";
		};

		clock_aud: clock-controller@128c0000 {
			compatible = "samsung,exynos5260-clock-aud";
			reg = <0x128C0000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_top TOP_FOUT_AUD_PLL>,
				 <&ioclk_i2s>,
				 <&ioclk_pcm>;
			clock-names = "fin_pll",
				      "fout_aud_pll",
				      "ioclk_i2s_cdclk",
				      "ioclk_pcm_extclk";
		};

		clock_isp: clock-controller@133c0000 {
			compatible = "samsung,exynos5260-clock-isp";
			reg = <0x133C0000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_ISP1_266>,
				 <&clock_top TOP_DOUT_ACLK_ISP1_400>,
				 <&clock_top TOP_MOUT_ACLK_ISP1_266>;
			clock-names = "fin_pll",
				      "dout_aclk_isp1_266",
				      "dout_aclk_isp1_400",
				      "mout_aclk_isp1_266";
		};

		clock_gscl: clock-controller@13f00000 {
			compatible = "samsung,exynos5260-clock-gscl";
			reg = <0x13F00000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&clock_top TOP_DOUT_ACLK_GSCL_400>,
				 <&clock_top TOP_DOUT_ACLK_GSCL_333>;
			clock-names = "fin_pll",
				      "dout_aclk_gscl_400",
				      "dout_aclk_gscl_333";
		};

		clock_disp: clock-controller@14550000 {
			compatible = "samsung,exynos5260-clock-disp";
			reg = <0x14550000 0x10000>;
			#clock-cells = <1>;
			clocks = <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&fin_pll>,
				 <&ioclk_spdif>,
				 <&clock_top TOP_DOUT_ACLK_PERI_AUD>,
				 <&clock_top TOP_DOUT_ACLK_DISP_222>,
				 <&clock_top TOP_DOUT_SCLK_DISP_PIXEL>,
				 <&clock_top TOP_DOUT_ACLK_DISP_333>;
			clock-names = "fin_pll",
				      "phyclk_dptx_phy_ch3_txd_clk",
				      "phyclk_dptx_phy_ch2_txd_clk",
				      "phyclk_dptx_phy_ch1_txd_clk",
				      "phyclk_dptx_phy_ch0_txd_clk",
				      "phyclk_hdmi_phy_tmds_clko",
				      "phyclk_hdmi_phy_ref_clko",
				      "phyclk_hdmi_phy_pixel_clko",
				      "phyclk_hdmi_link_o_tmds_clkhi",
				      "phyclk_mipi_dphy_4l_m_txbyte_clkhs",
				      "phyclk_dptx_phy_o_ref_clk_24m",
				      "phyclk_dptx_phy_clk_div2",
				      "phyclk_mipi_dphy_4l_m_rxclkesc0",
				      "phyclk_hdmi_phy_ref_cko",
				      "ioclk_spdif_extclk",
				      "dout_aclk_peri_aud",
				      "dout_aclk_disp_222",
				      "dout_sclk_disp_pixel",
				      "dout_aclk_disp_333";
		};

		gic: interrupt-controller@10481000 {
			compatible = "arm,gic-400", "arm,cortex-a15-gic";
			#interrupt-cells = <3>;
			interrupt-controller;
			reg = <0x10481000 0x1000>,
				<0x10482000 0x2000>,
				<0x10484000 0x2000>,
				<0x10486000 0x2000>;
			interrupts = <GIC_PPI 9
					(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
		};

		chipid: chipid@10000000 {
			compatible = "samsung,exynos4210-chipid";
			reg = <0x10000000 0x100>;
		};

		mct: timer@100b0000 {
			compatible = "samsung,exynos4210-mct";
			reg = <0x100B0000 0x1000>;
			clocks = <&fin_pll>, <&clock_peri PERI_CLK_MCT>;
			clock-names = "fin_pll", "mct";
			interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>;
		};

		cci: cci@10f00000 {
			compatible = "arm,cci-400";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x10F00000 0x1000>;
			ranges = <0x0 0x10F00000 0x6000>;

			cci_control0: slave-if@4000 {
				compatible = "arm,cci-400-ctrl-if";
				interface-type = "ace";
				reg = <0x4000 0x1000>;
			};

			cci_control1: slave-if@5000 {
				compatible = "arm,cci-400-ctrl-if";
				interface-type = "ace";
				reg = <0x5000 0x1000>;
			};
		};

		pinctrl_0: pinctrl@11600000 {
			compatible = "samsung,exynos5260-pinctrl";
			reg = <0x11600000 0x1000>;
			interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;

			wakeup-interrupt-controller {
				compatible = "samsung,exynos4210-wakeup-eint";
				interrupt-parent = <&gic>;
				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
			};
		};

		pinctrl_1: pinctrl@12290000 {
			compatible = "samsung,exynos5260-pinctrl";
			reg = <0x12290000 0x1000>;
			interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
		};

		pinctrl_2: pinctrl@128b0000 {
			compatible = "samsung,exynos5260-pinctrl";
			reg = <0x128B0000 0x1000>;
			interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
		};

		pmu_system_controller: system-controller@10d50000 {
			compatible = "samsung,exynos5260-pmu", "syscon";
			reg = <0x10D50000 0x10000>;
		};

		uart0: serial@12c00000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x12C00000 0x100>;
			interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock_peri PERI_CLK_UART0>, <&clock_peri PERI_SCLK_UART0>;
			clock-names = "uart", "clk_uart_baud0";
			status = "disabled";
		};

		uart1: serial@12c10000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x12C10000 0x100>;
			interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock_peri PERI_CLK_UART1>, <&clock_peri PERI_SCLK_UART1>;
			clock-names = "uart", "clk_uart_baud0";
			status = "disabled";
		};

		uart2: serial@12c20000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x12C20000 0x100>;
			interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock_peri PERI_CLK_UART2>, <&clock_peri PERI_SCLK_UART2>;
			clock-names = "uart", "clk_uart_baud0";
			status = "disabled";
		};

		uart3: serial@12860000 {
			compatible = "samsung,exynos4210-uart";
			reg = <0x12860000 0x100>;
			interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&clock_aud AUD_CLK_AUD_UART>, <&clock_aud AUD_SCLK_AUD_UART>;
			clock-names = "uart", "clk_uart_baud0";
			status = "disabled";
		};

		mmc_0: mmc@12140000 {
			compatible = "samsung,exynos5250-dw-mshc";
			reg = <0x12140000 0x2000>;
			interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock_fsys FSYS_CLK_MMC0>, <&clock_top TOP_SCLK_MMC0>;
			clock-names = "biu", "ciu";
			assigned-clocks =
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_A>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_B>,
				<&clock_top TOP_SCLK_MMC0>;
			assigned-clock-parents =
				<&clock_top TOP_MOUT_BUSTOP_PLL_USER>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_A>;
			assigned-clock-rates = <0>, <0>, <800000000>;
			fifo-depth = <64>;
			status = "disabled";
		};

		mmc_1: mmc@12150000 {
			compatible = "samsung,exynos5250-dw-mshc";
			reg = <0x12150000 0x2000>;
			interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock_fsys FSYS_CLK_MMC1>, <&clock_top TOP_SCLK_MMC1>;
			clock-names = "biu", "ciu";
			assigned-clocks =
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_A>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_B>,
				<&clock_top TOP_SCLK_MMC1>;
			assigned-clock-parents =
				<&clock_top TOP_MOUT_BUSTOP_PLL_USER>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_A>;
			assigned-clock-rates = <0>, <0>, <800000000>;
			fifo-depth = <64>;
			status = "disabled";
		};

		mmc_2: mmc@12160000 {
			compatible = "samsung,exynos5250-dw-mshc";
			reg = <0x12160000 0x2000>;
			interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			clocks = <&clock_fsys FSYS_CLK_MMC2>, <&clock_top TOP_SCLK_MMC2>;
			clock-names = "biu", "ciu";
			assigned-clocks =
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_A>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_B>,
				<&clock_top TOP_SCLK_MMC2>;
			assigned-clock-parents =
				<&clock_top TOP_MOUT_BUSTOP_PLL_USER>,
				<&clock_top TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_A>;
			assigned-clock-rates = <0>, <0>, <800000000>;
			fifo-depth = <64>;
			status = "disabled";
		};

		hsi2c_0: i2c@12da0000 {
			compatible = "samsung,exynos5260-hsi2c";
			reg = <0x12DA0000 0x1000>;
			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&i2c0_hs_bus>;
			clocks = <&clock_peri PERI_CLK_HSIC0>;
			clock-names = "hsi2c";
			status = "disabled";
		};

		hsi2c_1: i2c@12db0000 {
			compatible = "samsung,exynos5260-hsi2c";
			reg = <0x12DB0000 0x1000>;
			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&i2c1_hs_bus>;
			clocks = <&clock_peri PERI_CLK_HSIC1>;
			clock-names = "hsi2c";
			status = "disabled";
		};

		hsi2c_2: i2c@12dc0000 {
			compatible = "samsung,exynos5260-hsi2c";
			reg = <0x12DC0000 0x1000>;
			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&i2c2_hs_bus>;
			clocks = <&clock_peri PERI_CLK_HSIC2>;
			clock-names = "hsi2c";
			status = "disabled";
		};

		hsi2c_3: i2c@12dd0000 {
			compatible = "samsung,exynos5260-hsi2c";
			reg = <0x12DD0000 0x1000>;
			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
			#address-cells = <1>;
			#size-cells = <0>;
			pinctrl-names = "default";
			pinctrl-0 = <&i2c3_hs_bus>;
			clocks = <&clock_peri PERI_CLK_HSIC3>;
			clock-names = "hsi2c";
			status = "disabled";
		};
	};
};

#include "exynos5260-pinctrl.dtsi"
