// SPDX-License-Identifier: GPL-2.0 /* * Tesla Full Self-Driving SoC device tree source * * Copyright (c) 2017-2022 Samsung Electronics Co., Ltd. * https://www.samsung.com * Copyright (c) 2017-2022 Tesla, Inc. * https://www.tesla.com */ #include #include / { compatible = "tesla,fsd"; interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; aliases { i2c0 = &hsi2c_0; i2c1 = &hsi2c_1; i2c2 = &hsi2c_2; i2c3 = &hsi2c_3; i2c4 = &hsi2c_4; i2c5 = &hsi2c_5; i2c6 = &hsi2c_6; i2c7 = &hsi2c_7; pinctrl0 = &pinctrl_fsys0; pinctrl1 = &pinctrl_peric; pinctrl2 = &pinctrl_pmu; spi0 = &spi_0; spi1 = &spi_1; spi2 = &spi_2; }; cpus { #address-cells = <2>; #size-cells = <0>; cpu-map { cluster0 { core0 { cpu = <&cpucl0_0>; }; core1 { cpu = <&cpucl0_1>; }; core2 { cpu = <&cpucl0_2>; }; core3 { cpu = <&cpucl0_3>; }; }; cluster1 { core0 { cpu = <&cpucl1_0>; }; core1 { cpu = <&cpucl1_1>; }; core2 { cpu = <&cpucl1_2>; }; core3 { cpu = <&cpucl1_3>; }; }; cluster2 { core0 { cpu = <&cpucl2_0>; }; core1 { cpu = <&cpucl2_1>; }; core2 { cpu = <&cpucl2_2>; }; core3 { cpu = <&cpucl2_3>; }; }; }; /* Cluster 0 */ cpucl0_0: cpu@0 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x000>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl0_1: cpu@1 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x001>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl0_2: cpu@2 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x002>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl0_3: cpu@3 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x003>; enable-method = "psci"; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; /* Cluster 1 */ cpucl1_0: cpu@100 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x100>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl1_1: cpu@101 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x101>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl1_2: cpu@102 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x102>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl1_3: cpu@103 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x103>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; /* Cluster 2 */ cpucl2_0: cpu@200 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x200>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl2_1: cpu@201 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x201>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl2_2: cpu@202 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x202>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl2_3: cpu@203 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x203>; enable-method = "psci"; clock-frequency = <2400000000>; cpu-idle-states = <&CPU_SLEEP>; i-cache-size = <0xc000>; i-cache-line-size = <64>; i-cache-sets = <256>; d-cache-size = <0x8000>; d-cache-line-size = <64>; d-cache-sets = <256>; next-level-cache = <&cpucl_l2>; }; cpucl_l2: l2-cache0 { compatible = "cache"; cache-level = <2>; cache-unified; cache-size = <0x400000>; cache-line-size = <64>; cache-sets = <4096>; }; idle-states { entry-method = "psci"; CPU_SLEEP: cpu-sleep { idle-state-name = "c2"; compatible = "arm,idle-state"; local-timer-stop; arm,psci-suspend-param = <0x0010000>; entry-latency-us = <30>; exit-latency-us = <75>; min-residency-us = <300>; }; }; }; arm-pmu { compatible = "arm,armv8-pmuv3"; interrupts = , , , , , , , , , , , ; interrupt-affinity = <&cpucl0_0>, <&cpucl0_1>, <&cpucl0_2>, <&cpucl0_3>, <&cpucl1_0>, <&cpucl1_1>, <&cpucl1_2>, <&cpucl1_3>, <&cpucl2_0>, <&cpucl2_1>, <&cpucl2_2>, <&cpucl2_3>; }; psci { compatible = "arm,psci-1.0"; method = "smc"; }; timer { compatible = "arm,armv8-timer"; interrupts = , , , ; }; fin_pll: clock { compatible = "fixed-clock"; clock-output-names = "fin_pll"; #clock-cells = <0>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; mfc_left: region@84000000 { compatible = "shared-dma-pool"; no-map; reg = <0 0x84000000 0 0x8000000>; }; }; soc: soc@0 { compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges = <0x0 0x0 0x0 0x0 0x0 0x18000000>; dma-ranges = <0x0 0x0 0x0 0x0 0x10 0x0>; gic: interrupt-controller@10400000 { compatible = "arm,gic-v3"; #interrupt-cells = <3>; interrupt-controller; reg = <0x0 0x10400000 0x0 0x10000>, /* GICD */ <0x0 0x10600000 0x0 0x200000>; /* GICR_RD+GICR_SGI */ interrupts = ; }; smmu_imem: iommu@10200000 { compatible = "arm,mmu-500"; reg = <0x0 0x10200000 0x0 0x10000>; #iommu-cells = <2>; #global-interrupts = <7>; interrupts = , /* Global secure fault */ , /* Global non-secure fault */ , /* Combined secure interrupt */ , /* Combined non-secure interrupt */ /* Performance counter interrupts */ , /* for FSYS1_0 */ , /* for FSYS1_1 */ , /* for IMEM_0 */ /* Per context non-secure context interrupts, 0-3 interrupts */ , /* for CONTEXT_0 */ , /* for CONTEXT_1 */ , /* for CONTEXT_2 */ ; /* for CONTEXT_3 */ }; smmu_isp: iommu@12100000 { compatible = "arm,mmu-500"; reg = <0x0 0x12100000 0x0 0x10000>; #iommu-cells = <2>; #global-interrupts = <11>; interrupts = , /* Global secure fault */ , /* Global non-secure fault */ , /* Combined secure interrupt */ , /* Combined non-secure interrupt */ /* Performance counter interrupts */ , /* for CAM_CSI */ , /* for CAM_DP_0 */ , /* for CAM_DP_1 */ , /* for CAM_ISP_0 */ , /* for CAM_ISP_1 */ , /* for CAM_MFC_0 */ , /* for CAM_MFC_1 */ /* Per context non-secure context interrupts, 0-7 interrupts */ , /* for CONTEXT_0 */ , /* for CONTEXT_1 */ , /* for CONTEXT_2 */ , /* for CONTEXT_3 */ , /* for CONTEXT_4 */ , /* for CONTEXT_5 */ , /* for CONTEXT_6 */ ; /* for CONTEXT_7 */ }; smmu_peric: iommu@14900000 { compatible = "arm,mmu-500"; reg = <0x0 0x14900000 0x0 0x10000>; #iommu-cells = <2>; #global-interrupts = <5>; interrupts = , /* Global secure fault */ , /* Global non-secure fault */ , /* Combined secure interrupt */ , /* Combined non-secure interrupt */ /* Performance counter interrupts */ , /* for PERIC */ /* Per context non-secure context interrupts, 0-1 interrupts */ , /* for CONTEXT_0 */ ; /* for CONTEXT_1 */ }; smmu_fsys0: iommu@15450000 { compatible = "arm,mmu-500"; reg = <0x0 0x15450000 0x0 0x10000>; #iommu-cells = <2>; #global-interrupts = <5>; interrupts = , /* Global secure fault */ , /* Global non-secure fault */ , /* Combined secure interrupt */ , /* Combined non-secure interrupt */ /* Performance counter interrupts */ , /* for FSYS0 */ /* Per context non-secure context interrupts, 0-1 interrupts */ , /* for CONTEXT_0 */ ; /* for CONTEXT_1 */ }; clock_imem: clock-controller@10010000 { compatible = "tesla,fsd-clock-imem"; reg = <0x0 0x10010000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>, <&clock_cmu DOUT_CMU_IMEM_TCUCLK>, <&clock_cmu DOUT_CMU_IMEM_ACLK>, <&clock_cmu DOUT_CMU_IMEM_DMACLK>; clock-names = "fin_pll", "dout_cmu_imem_tcuclk", "dout_cmu_imem_aclk", "dout_cmu_imem_dmaclk"; }; clock_cmu: clock-controller@11c10000 { compatible = "tesla,fsd-clock-cmu"; reg = <0x0 0x11c10000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>; clock-names = "fin_pll"; }; clock_csi: clock-controller@12610000 { compatible = "tesla,fsd-clock-cam_csi"; reg = <0x0 0x12610000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>; clock-names = "fin_pll"; }; sysreg_cam: system-controller@12630000 { compatible = "tesla,fsd-cam-sysreg", "syscon"; reg = <0x0 0x12630000 0x0 0x500>; }; clock_mfc: clock-controller@12810000 { compatible = "tesla,fsd-clock-mfc"; reg = <0x0 0x12810000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>; clock-names = "fin_pll"; }; clock_peric: clock-controller@14010000 { compatible = "tesla,fsd-clock-peric"; reg = <0x0 0x14010000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>, <&clock_cmu DOUT_CMU_PLL_SHARED0_DIV4>, <&clock_cmu DOUT_CMU_PERIC_SHARED1DIV36>, <&clock_cmu DOUT_CMU_PERIC_SHARED0DIV3_TBUCLK>, <&clock_cmu DOUT_CMU_PERIC_SHARED0DIV20>, <&clock_cmu DOUT_CMU_PERIC_SHARED1DIV4_DMACLK>; clock-names = "fin_pll", "dout_cmu_pll_shared0_div4", "dout_cmu_peric_shared1div36", "dout_cmu_peric_shared0div3_tbuclk", "dout_cmu_peric_shared0div20", "dout_cmu_peric_shared1div4_dmaclk"; }; sysreg_peric: system-controller@14030000 { compatible = "tesla,fsd-peric-sysreg", "syscon"; reg = <0x0 0x14030000 0x0 0x1000>; }; clock_fsys0: clock-controller@15010000 { compatible = "tesla,fsd-clock-fsys0"; reg = <0x0 0x15010000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>, <&clock_cmu DOUT_CMU_PLL_SHARED0_DIV6>, <&clock_cmu DOUT_CMU_FSYS0_SHARED1DIV4>, <&clock_cmu DOUT_CMU_FSYS0_SHARED0DIV4>; clock-names = "fin_pll", "dout_cmu_pll_shared0_div6", "dout_cmu_fsys0_shared1div4", "dout_cmu_fsys0_shared0div4"; }; sysreg_fsys0: system-controller@15030000 { compatible = "tesla,fsd-fsys0-sysreg", "syscon"; reg = <0x0 0x15030000 0x0 0x1000>; }; clock_fsys1: clock-controller@16810000 { compatible = "tesla,fsd-clock-fsys1"; reg = <0x0 0x16810000 0x0 0x3000>; #clock-cells = <1>; clocks = <&fin_pll>, <&clock_cmu DOUT_CMU_FSYS1_SHARED0DIV8>, <&clock_cmu DOUT_CMU_FSYS1_SHARED0DIV4>; clock-names = "fin_pll", "dout_cmu_fsys1_shared0div8", "dout_cmu_fsys1_shared0div4"; }; sysreg_fsys1: system-controller@16830000 { compatible = "tesla,fsd-fsys1-sysreg", "syscon"; reg = <0x0 0x16830000 0x0 0x1000>; }; mdma0: dma-controller@10100000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0x10100000 0x0 0x1000>; interrupts = ; #dma-cells = <1>; clocks = <&clock_imem IMEM_DMA0_IPCLKPORT_ACLK>; clock-names = "apb_pclk"; iommus = <&smmu_imem 0x800 0x0>; }; mdma1: dma-controller@10110000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0x10110000 0x0 0x1000>; interrupts = ; #dma-cells = <1>; clocks = <&clock_imem IMEM_DMA1_IPCLKPORT_ACLK>; clock-names = "apb_pclk"; iommus = <&smmu_imem 0x801 0x0>; }; pdma0: dma-controller@14280000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0x14280000 0x0 0x1000>; interrupts = ; #dma-cells = <1>; clocks = <&clock_peric PERIC_DMA0_IPCLKPORT_ACLK>; clock-names = "apb_pclk"; iommus = <&smmu_peric 0x2 0x0>; }; pdma1: dma-controller@14290000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0x14290000 0x0 0x1000>; interrupts = ; #dma-cells = <1>; clocks = <&clock_peric PERIC_DMA1_IPCLKPORT_ACLK>; clock-names = "apb_pclk"; iommus = <&smmu_peric 0x1 0x0>; }; serial_0: serial@14180000 { compatible = "tesla,fsd-uart", "samsung,exynos4210-uart"; reg = <0x0 0x14180000 0x0 0x100>; interrupts = ; dmas = <&pdma1 1>, <&pdma1 0>; dma-names = "rx", "tx"; clocks = <&clock_peric PERIC_PCLK_UART0>, <&clock_peric PERIC_SCLK_UART0>; clock-names = "uart", "clk_uart_baud0"; status = "disabled"; }; serial_1: serial@14190000 { compatible = "tesla,fsd-uart", "samsung,exynos4210-uart"; reg = <0x0 0x14190000 0x0 0x100>; interrupts = ; dmas = <&pdma1 3>, <&pdma1 2>; dma-names = "rx", "tx"; clocks = <&clock_peric PERIC_PCLK_UART1>, <&clock_peric PERIC_SCLK_UART1>; clock-names = "uart", "clk_uart_baud0"; status = "disabled"; }; pmu_system_controller: system-controller@11400000 { compatible = "tesla,fsd-pmu", "samsung,exynos7-pmu", "syscon"; reg = <0x0 0x11400000 0x0 0x5000>; }; watchdog_0: watchdog@100a0000 { compatible = "tesla,fsd-wdt", "samsung,exynos7-wdt"; reg = <0x0 0x100a0000 0x0 0x100>; interrupts = ; samsung,syscon-phandle = <&pmu_system_controller>; clocks = <&fin_pll>; clock-names = "watchdog"; }; watchdog_1: watchdog@100b0000 { compatible = "tesla,fsd-wdt", "samsung,exynos7-wdt"; reg = <0x0 0x100b0000 0x0 0x100>; interrupts = ; samsung,syscon-phandle = <&pmu_system_controller>; clocks = <&fin_pll>; clock-names = "watchdog"; }; watchdog_2: watchdog@100c0000 { compatible = "tesla,fsd-wdt", "samsung,exynos7-wdt"; reg = <0x0 0x100c0000 0x0 0x100>; interrupts = ; samsung,syscon-phandle = <&pmu_system_controller>; clocks = <&fin_pll>; clock-names = "watchdog"; }; pwm_0: pwm@14100000 { compatible = "tesla,fsd-pwm", "samsung,exynos4210-pwm"; reg = <0x0 0x14100000 0x0 0x100>; samsung,pwm-outputs = <0>, <1>, <2>, <3>; #pwm-cells = <3>; clocks = <&clock_peric PERIC_PWM0_IPCLKPORT_I_PCLK_S0>; clock-names = "timers"; status = "disabled"; }; pwm_1: pwm@14110000 { compatible = "tesla,fsd-pwm", "samsung,exynos4210-pwm"; reg = <0x0 0x14110000 0x0 0x100>; samsung,pwm-outputs = <0>, <1>, <2>, <3>; #pwm-cells = <3>; clocks = <&clock_peric PERIC_PWM1_IPCLKPORT_I_PCLK_S0>; clock-names = "timers"; status = "disabled"; }; hsi2c_0: i2c@14200000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14200000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c0_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C0>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_1: i2c@14210000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14210000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c1_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C1>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_2: i2c@14220000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14220000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c2_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C2>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_3: i2c@14230000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14230000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c3_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C3>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_4: i2c@14240000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14240000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c4_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C4>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_5: i2c@14250000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14250000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c5_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C5>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_6: i2c@14260000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14260000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c6_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C6>; clock-names = "hsi2c"; status = "disabled"; }; hsi2c_7: i2c@14270000 { compatible = "tesla,fsd-hsi2c", "samsung,exynos7-hsi2c"; reg = <0x0 0x14270000 0x0 0x1000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&hs_i2c7_bus>; clocks = <&clock_peric PERIC_PCLK_HSI2C7>; clock-names = "hsi2c"; status = "disabled"; }; i2s_0: i2s@140e0000 { compatible = "tesla,fsd-i2s"; reg = <0x0 0x140e0000 0x0 0x100>; interrupts = ; dmas = <&pdma1 14>, <&pdma1 13>, <&pdma1 12>; dma-names = "tx", "rx", "tx-sec"; #clock-cells = <1>; clocks = <&clock_peric PERIC_PCLK_TDM0>, <&clock_peric PERIC_HCLK_TDM0>, <&clock_peric PERIC_HCLK_TDM0>; clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; pinctrl-names = "default"; pinctrl-0 = <&i2s0_bus>; #sound-dai-cells = <1>; status = "disabled"; }; i2s_1: i2s@140f0000 { compatible = "tesla,fsd-i2s"; reg = <0x0 0x140f0000 0x0 0x100>; interrupts = ; dmas = <&pdma1 17>, <&pdma1 16>, <&pdma1 15>; dma-names = "tx", "rx", "tx-sec"; #clock-cells = <1>; clocks = <&clock_peric PERIC_PCLK_TDM1>, <&clock_peric PERIC_HCLK_TDM1>, <&clock_peric PERIC_HCLK_TDM1>; clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; pinctrl-names = "default"; pinctrl-0 = <&i2s1_bus>; #sound-dai-cells = <1>; status = "disabled"; }; pinctrl_pmu: pinctrl@114f0000 { compatible = "tesla,fsd-pinctrl"; reg = <0x0 0x114f0000 0x0 0x1000>; }; pinctrl_peric: pinctrl@141f0000 { compatible = "tesla,fsd-pinctrl"; reg = <0x0 0x141f0000 0x0 0x1000>; interrupts = ; }; pinctrl_fsys0: pinctrl@15020000 { compatible = "tesla,fsd-pinctrl"; reg = <0x0 0x15020000 0x0 0x1000>; interrupts = ; }; m_can0: can@14088000 { compatible = "bosch,m_can"; reg = <0x0 0x14088000 0x0 0x0200>, <0x0 0x14080000 0x0 0x8000>; reg-names = "m_can", "message_ram"; interrupts = , ; interrupt-names = "int0", "int1"; pinctrl-names = "default"; pinctrl-0 = <&m_can0_bus>; clocks = <&clock_peric PERIC_MCAN0_IPCLKPORT_PCLK>, <&clock_peric PERIC_MCAN0_IPCLKPORT_CCLK>; clock-names = "hclk", "cclk"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; m_can1: can@14098000 { compatible = "bosch,m_can"; reg = <0x0 0x14098000 0x0 0x0200>, <0x0 0x14090000 0x0 0x8000>; reg-names = "m_can", "message_ram"; interrupts = , ; interrupt-names = "int0", "int1"; pinctrl-names = "default"; pinctrl-0 = <&m_can1_bus>; clocks = <&clock_peric PERIC_MCAN1_IPCLKPORT_PCLK>, <&clock_peric PERIC_MCAN1_IPCLKPORT_CCLK>; clock-names = "hclk", "cclk"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; m_can2: can@140a8000 { compatible = "bosch,m_can"; reg = <0x0 0x140a8000 0x0 0x0200>, <0x0 0x140a0000 0x0 0x8000>; reg-names = "m_can", "message_ram"; interrupts = , ; interrupt-names = "int0", "int1"; pinctrl-names = "default"; pinctrl-0 = <&m_can2_bus>; clocks = <&clock_peric PERIC_MCAN2_IPCLKPORT_PCLK>, <&clock_peric PERIC_MCAN2_IPCLKPORT_CCLK>; clock-names = "hclk", "cclk"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; m_can3: can@140b8000 { compatible = "bosch,m_can"; reg = <0x0 0x140b8000 0x0 0x0200>, <0x0 0x140b0000 0x0 0x8000>; reg-names = "m_can", "message_ram"; interrupts = , ; interrupt-names = "int0", "int1"; pinctrl-names = "default"; pinctrl-0 = <&m_can3_bus>; clocks = <&clock_peric PERIC_MCAN3_IPCLKPORT_PCLK>, <&clock_peric PERIC_MCAN3_IPCLKPORT_CCLK>; clock-names = "hclk", "cclk"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; spi_0: spi@14140000 { compatible = "tesla,fsd-spi"; reg = <0x0 0x14140000 0x0 0x100>; interrupts = ; dmas = <&pdma1 4>, <&pdma1 5>; dma-names = "tx", "rx"; #address-cells = <1>; #size-cells = <0>; clocks = <&clock_peric PERIC_PCLK_SPI0>, <&clock_peric PERIC_SCLK_SPI0>; clock-names = "spi", "spi_busclk0"; samsung,spi-src-clk = <0>; pinctrl-names = "default"; pinctrl-0 = <&spi0_bus>; num-cs = <1>; status = "disabled"; }; spi_1: spi@14150000 { compatible = "tesla,fsd-spi"; reg = <0x0 0x14150000 0x0 0x100>; interrupts = ; dmas = <&pdma1 6>, <&pdma1 7>; dma-names = "tx", "rx"; #address-cells = <1>; #size-cells = <0>; clocks = <&clock_peric PERIC_PCLK_SPI1>, <&clock_peric PERIC_SCLK_SPI1>; clock-names = "spi", "spi_busclk0"; samsung,spi-src-clk = <0>; pinctrl-names = "default"; pinctrl-0 = <&spi1_bus>; num-cs = <1>; status = "disabled"; }; spi_2: spi@14160000 { compatible = "tesla,fsd-spi"; reg = <0x0 0x14160000 0x0 0x100>; interrupts = ; dmas = <&pdma1 8>, <&pdma1 9>; dma-names = "tx", "rx"; #address-cells = <1>; #size-cells = <0>; clocks = <&clock_peric PERIC_PCLK_SPI2>, <&clock_peric PERIC_SCLK_SPI2>; clock-names = "spi", "spi_busclk0"; samsung,spi-src-clk = <0>; pinctrl-names = "default"; pinctrl-0 = <&spi2_bus>; num-cs = <1>; status = "disabled"; }; timer@10040000 { compatible = "tesla,fsd-mct", "samsung,exynos4210-mct"; reg = <0x0 0x10040000 0x0 0x800>; interrupts = , , , , , , , , , , , , , , , ; clocks = <&fin_pll>, <&clock_imem IMEM_MCT_PCLK>; clock-names = "fin_pll", "mct"; }; mfc: mfc@12880000 { compatible = "tesla,fsd-mfc"; reg = <0x0 0x12880000 0x0 0x10000>; interrupts = ; clock-names = "mfc"; clocks = <&clock_mfc MFC_MFC_IPCLKPORT_ACLK>; memory-region = <&mfc_left>; }; ufs: ufs@15120000 { compatible = "tesla,fsd-ufs"; reg = <0x0 0x15120000 0x0 0x200>, /* 0: HCI standard */ <0x0 0x15121100 0x0 0x200>, /* 1: Vendor specified */ <0x0 0x15110000 0x0 0x8000>, /* 2: UNIPRO */ <0x0 0x15130000 0x0 0x100>; /* 3: UFS protector */ reg-names = "hci", "vs_hci", "unipro", "ufsp"; interrupts = ; clocks = <&clock_fsys0 UFS0_TOP0_HCLK_BUS>, <&clock_fsys0 UFS0_TOP0_CLK_UNIPRO>; clock-names = "core_clk", "sclk_unipro_main"; freq-table-hz = <0 0>, <0 0>; pinctrl-names = "default"; pinctrl-0 = <&ufs_rst_n &ufs_refclk_out>; phys = <&ufs_phy>; phy-names = "ufs-phy"; status = "disabled"; }; ufs_phy: ufs-phy@15124000 { compatible = "tesla,fsd-ufs-phy"; reg = <0x0 0x15124000 0x0 0x800>; reg-names = "phy-pma"; samsung,pmu-syscon = <&pmu_system_controller>; #phy-cells = <0>; clocks = <&clock_fsys0 UFS0_MPHY_REFCLK_IXTAL26>; clock-names = "ref_clk"; }; }; }; #include "fsd-pinctrl.dtsi"