xref: /freebsd/sys/contrib/device-tree/src/arm64/ti/k3-am62p-j722s-common-mcu.dtsi (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1*0e8011faSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-only OR MIT
2*0e8011faSEmmanuel Vadot/*
3*0e8011faSEmmanuel Vadot * Device Tree file for the MCU domain peripherals shared by AM62P and J722S
4*0e8011faSEmmanuel Vadot *
5*0e8011faSEmmanuel Vadot * Copyright (C) 2023-2024 Texas Instruments Incorporated - https://www.ti.com/
6*0e8011faSEmmanuel Vadot */
7*0e8011faSEmmanuel Vadot
8*0e8011faSEmmanuel Vadot&cbass_mcu {
9*0e8011faSEmmanuel Vadot	mcu_pmx0: pinctrl@4084000 {
10*0e8011faSEmmanuel Vadot		compatible = "pinctrl-single";
11*0e8011faSEmmanuel Vadot		reg = <0x00 0x04084000 0x00 0x88>;
12*0e8011faSEmmanuel Vadot		#pinctrl-cells = <1>;
13*0e8011faSEmmanuel Vadot		pinctrl-single,register-width = <32>;
14*0e8011faSEmmanuel Vadot		pinctrl-single,function-mask = <0xffffffff>;
15*0e8011faSEmmanuel Vadot		pinctrl-single,gpio-range =
16*0e8011faSEmmanuel Vadot			<&mcu_pmx_range 0 21 PIN_GPIO_RANGE_IOPAD>,
17*0e8011faSEmmanuel Vadot			<&mcu_pmx_range 23 1 PIN_GPIO_RANGE_IOPAD>,
18*0e8011faSEmmanuel Vadot			<&mcu_pmx_range 32 2 PIN_GPIO_RANGE_IOPAD>;
19*0e8011faSEmmanuel Vadot		bootph-all;
20*0e8011faSEmmanuel Vadot
21*0e8011faSEmmanuel Vadot		mcu_pmx_range: gpio-range {
22*0e8011faSEmmanuel Vadot			#pinctrl-single,gpio-range-cells = <3>;
23*0e8011faSEmmanuel Vadot		};
24*0e8011faSEmmanuel Vadot	};
25*0e8011faSEmmanuel Vadot
26*0e8011faSEmmanuel Vadot	mcu_esm: esm@4100000 {
27*0e8011faSEmmanuel Vadot		compatible = "ti,j721e-esm";
28*0e8011faSEmmanuel Vadot		reg = <0x00 0x4100000 0x00 0x1000>;
29*0e8011faSEmmanuel Vadot		ti,esm-pins = <0>, <1>, <2>, <85>;
30*0e8011faSEmmanuel Vadot		status = "reserved";
31*0e8011faSEmmanuel Vadot		bootph-pre-ram;
32*0e8011faSEmmanuel Vadot	};
33*0e8011faSEmmanuel Vadot
34*0e8011faSEmmanuel Vadot	/*
35*0e8011faSEmmanuel Vadot	 * The MCU domain timer interrupts are routed only to the ESM module,
36*0e8011faSEmmanuel Vadot	 * and not currently available for Linux. The MCU domain timers are
37*0e8011faSEmmanuel Vadot	 * of limited use without interrupts, and likely reserved by the ESM.
38*0e8011faSEmmanuel Vadot	 */
39*0e8011faSEmmanuel Vadot	mcu_timer0: timer@4800000 {
40*0e8011faSEmmanuel Vadot		compatible = "ti,am654-timer";
41*0e8011faSEmmanuel Vadot		reg = <0x00 0x4800000 0x00 0x400>;
42*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 35 2>;
43*0e8011faSEmmanuel Vadot		clock-names = "fck";
44*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 35 TI_SCI_PD_EXCLUSIVE>;
45*0e8011faSEmmanuel Vadot		ti,timer-pwm;
46*0e8011faSEmmanuel Vadot		status = "reserved";
47*0e8011faSEmmanuel Vadot	};
48*0e8011faSEmmanuel Vadot
49*0e8011faSEmmanuel Vadot	mcu_timer1: timer@4810000 {
50*0e8011faSEmmanuel Vadot		compatible = "ti,am654-timer";
51*0e8011faSEmmanuel Vadot		reg = <0x00 0x4810000 0x00 0x400>;
52*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 48 2>;
53*0e8011faSEmmanuel Vadot		clock-names = "fck";
54*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 48 TI_SCI_PD_EXCLUSIVE>;
55*0e8011faSEmmanuel Vadot		ti,timer-pwm;
56*0e8011faSEmmanuel Vadot		status = "reserved";
57*0e8011faSEmmanuel Vadot	};
58*0e8011faSEmmanuel Vadot
59*0e8011faSEmmanuel Vadot	mcu_timer2: timer@4820000 {
60*0e8011faSEmmanuel Vadot		compatible = "ti,am654-timer";
61*0e8011faSEmmanuel Vadot		reg = <0x00 0x4820000 0x00 0x400>;
62*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 49 2>;
63*0e8011faSEmmanuel Vadot		clock-names = "fck";
64*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 49 TI_SCI_PD_EXCLUSIVE>;
65*0e8011faSEmmanuel Vadot		ti,timer-pwm;
66*0e8011faSEmmanuel Vadot		status = "reserved";
67*0e8011faSEmmanuel Vadot	};
68*0e8011faSEmmanuel Vadot
69*0e8011faSEmmanuel Vadot	mcu_timer3: timer@4830000 {
70*0e8011faSEmmanuel Vadot		compatible = "ti,am654-timer";
71*0e8011faSEmmanuel Vadot		reg = <0x00 0x4830000 0x00 0x400>;
72*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 50 2>;
73*0e8011faSEmmanuel Vadot		clock-names = "fck";
74*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 50 TI_SCI_PD_EXCLUSIVE>;
75*0e8011faSEmmanuel Vadot		ti,timer-pwm;
76*0e8011faSEmmanuel Vadot		status = "reserved";
77*0e8011faSEmmanuel Vadot	};
78*0e8011faSEmmanuel Vadot
79*0e8011faSEmmanuel Vadot	mcu_uart0: serial@4a00000 {
80*0e8011faSEmmanuel Vadot		compatible = "ti,am64-uart", "ti,am654-uart";
81*0e8011faSEmmanuel Vadot		reg = <0x00 0x04a00000 0x00 0x100>;
82*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
83*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 149 TI_SCI_PD_EXCLUSIVE>;
84*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 149 0>;
85*0e8011faSEmmanuel Vadot		clock-names = "fclk";
86*0e8011faSEmmanuel Vadot		status = "disabled";
87*0e8011faSEmmanuel Vadot	};
88*0e8011faSEmmanuel Vadot
89*0e8011faSEmmanuel Vadot	mcu_i2c0: i2c@4900000 {
90*0e8011faSEmmanuel Vadot		compatible = "ti,am64-i2c", "ti,omap4-i2c";
91*0e8011faSEmmanuel Vadot		reg = <0x00 0x04900000 0x00 0x100>;
92*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
93*0e8011faSEmmanuel Vadot		#address-cells = <1>;
94*0e8011faSEmmanuel Vadot		#size-cells = <0>;
95*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 106 TI_SCI_PD_EXCLUSIVE>;
96*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 106 2>;
97*0e8011faSEmmanuel Vadot		clock-names = "fck";
98*0e8011faSEmmanuel Vadot		status = "disabled";
99*0e8011faSEmmanuel Vadot	};
100*0e8011faSEmmanuel Vadot
101*0e8011faSEmmanuel Vadot	mcu_spi0: spi@4b00000 {
102*0e8011faSEmmanuel Vadot		compatible = "ti,am654-mcspi", "ti,omap4-mcspi";
103*0e8011faSEmmanuel Vadot		reg = <0x00 0x04b00000 0x00 0x400>;
104*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
105*0e8011faSEmmanuel Vadot		#address-cells = <1>;
106*0e8011faSEmmanuel Vadot		#size-cells = <0>;
107*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 147 TI_SCI_PD_EXCLUSIVE>;
108*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 147 0>;
109*0e8011faSEmmanuel Vadot		status = "disabled";
110*0e8011faSEmmanuel Vadot	};
111*0e8011faSEmmanuel Vadot
112*0e8011faSEmmanuel Vadot	mcu_spi1: spi@4b10000 {
113*0e8011faSEmmanuel Vadot		compatible = "ti,am654-mcspi","ti,omap4-mcspi";
114*0e8011faSEmmanuel Vadot		reg = <0x00 0x04b10000 0x00 0x400>;
115*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
116*0e8011faSEmmanuel Vadot		#address-cells = <1>;
117*0e8011faSEmmanuel Vadot		#size-cells = <0>;
118*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 148 TI_SCI_PD_EXCLUSIVE>;
119*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 148 0>;
120*0e8011faSEmmanuel Vadot		status = "disabled";
121*0e8011faSEmmanuel Vadot	};
122*0e8011faSEmmanuel Vadot
123*0e8011faSEmmanuel Vadot	mcu_gpio_intr: interrupt-controller@4210000 {
124*0e8011faSEmmanuel Vadot		compatible = "ti,sci-intr";
125*0e8011faSEmmanuel Vadot		reg = <0x00 0x04210000 0x00 0x200>;
126*0e8011faSEmmanuel Vadot		ti,intr-trigger-type = <1>;
127*0e8011faSEmmanuel Vadot		interrupt-controller;
128*0e8011faSEmmanuel Vadot		interrupt-parent = <&gic500>;
129*0e8011faSEmmanuel Vadot		#interrupt-cells = <1>;
130*0e8011faSEmmanuel Vadot		ti,sci = <&dmsc>;
131*0e8011faSEmmanuel Vadot		ti,sci-dev-id = <5>;
132*0e8011faSEmmanuel Vadot		ti,interrupt-ranges = <0 104 4>;
133*0e8011faSEmmanuel Vadot	};
134*0e8011faSEmmanuel Vadot
135*0e8011faSEmmanuel Vadot	mcu_gpio0: gpio@4201000 {
136*0e8011faSEmmanuel Vadot		compatible = "ti,am64-gpio", "ti,keystone-gpio";
137*0e8011faSEmmanuel Vadot		reg = <0x00 0x4201000 0x00 0x100>;
138*0e8011faSEmmanuel Vadot		gpio-controller;
139*0e8011faSEmmanuel Vadot		#gpio-cells = <2>;
140*0e8011faSEmmanuel Vadot		interrupt-parent = <&mcu_gpio_intr>;
141*0e8011faSEmmanuel Vadot		interrupts = <30>, <31>;
142*0e8011faSEmmanuel Vadot		interrupt-controller;
143*0e8011faSEmmanuel Vadot		#interrupt-cells = <2>;
144*0e8011faSEmmanuel Vadot		ti,ngpio = <24>;
145*0e8011faSEmmanuel Vadot		ti,davinci-gpio-unbanked = <0>;
146*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 79 TI_SCI_PD_EXCLUSIVE>;
147*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 79 0>;
148*0e8011faSEmmanuel Vadot		clock-names = "gpio";
149*0e8011faSEmmanuel Vadot		gpio-ranges = <&mcu_pmx0 0 0 21>, <&mcu_pmx0 21 23 1>,
150*0e8011faSEmmanuel Vadot			      <&mcu_pmx0 22 32 2>;
151*0e8011faSEmmanuel Vadot	};
152*0e8011faSEmmanuel Vadot
153*0e8011faSEmmanuel Vadot	mcu_rti0: watchdog@4880000 {
154*0e8011faSEmmanuel Vadot		compatible = "ti,j7-rti-wdt";
155*0e8011faSEmmanuel Vadot		reg = <0x00 0x04880000 0x00 0x100>;
156*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 131 0>;
157*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 131 TI_SCI_PD_EXCLUSIVE>;
158*0e8011faSEmmanuel Vadot		assigned-clocks = <&k3_clks 131 0>;
159*0e8011faSEmmanuel Vadot		assigned-clock-parents = <&k3_clks 131 2>;
160*0e8011faSEmmanuel Vadot		/* Tightly coupled to M4F */
161*0e8011faSEmmanuel Vadot		status = "reserved";
162*0e8011faSEmmanuel Vadot	};
163*0e8011faSEmmanuel Vadot
164*0e8011faSEmmanuel Vadot	mcu_mcan0: can@4e08000 {
165*0e8011faSEmmanuel Vadot		compatible = "bosch,m_can";
166*0e8011faSEmmanuel Vadot		reg = <0x00 0x4e08000 0x00 0x200>,
167*0e8011faSEmmanuel Vadot		      <0x00 0x4e00000 0x00 0x8000>;
168*0e8011faSEmmanuel Vadot		reg-names = "m_can", "message_ram";
169*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 188 TI_SCI_PD_EXCLUSIVE>;
170*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 188 6>, <&k3_clks 188 1>;
171*0e8011faSEmmanuel Vadot		clock-names = "hclk", "cclk";
172*0e8011faSEmmanuel Vadot		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
173*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
174*0e8011faSEmmanuel Vadot			     <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
175*0e8011faSEmmanuel Vadot		interrupt-names = "int0", "int1";
176*0e8011faSEmmanuel Vadot		status = "disabled";
177*0e8011faSEmmanuel Vadot	};
178*0e8011faSEmmanuel Vadot
179*0e8011faSEmmanuel Vadot	mcu_mcan1: can@4e18000 {
180*0e8011faSEmmanuel Vadot		compatible = "bosch,m_can";
181*0e8011faSEmmanuel Vadot		reg = <0x00 0x4e18000 0x00 0x200>,
182*0e8011faSEmmanuel Vadot		      <0x00 0x4e10000 0x00 0x8000>;
183*0e8011faSEmmanuel Vadot		reg-names = "m_can", "message_ram";
184*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 189 TI_SCI_PD_EXCLUSIVE>;
185*0e8011faSEmmanuel Vadot		clocks = <&k3_clks 189 6>, <&k3_clks 189 1>;
186*0e8011faSEmmanuel Vadot		clock-names = "hclk", "cclk";
187*0e8011faSEmmanuel Vadot		bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
188*0e8011faSEmmanuel Vadot		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
189*0e8011faSEmmanuel Vadot			     <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
190*0e8011faSEmmanuel Vadot		interrupt-names = "int0", "int1";
191*0e8011faSEmmanuel Vadot		status = "disabled";
192*0e8011faSEmmanuel Vadot	};
193*0e8011faSEmmanuel Vadot
194*0e8011faSEmmanuel Vadot	mcu_r5fss0: r5fss@79000000 {
195*0e8011faSEmmanuel Vadot		compatible = "ti,am62-r5fss";
196*0e8011faSEmmanuel Vadot		#address-cells = <1>;
197*0e8011faSEmmanuel Vadot		#size-cells = <1>;
198*0e8011faSEmmanuel Vadot		ranges = <0x79000000 0x00 0x79000000 0x8000>,
199*0e8011faSEmmanuel Vadot			 <0x79020000 0x00 0x79020000 0x8000>;
200*0e8011faSEmmanuel Vadot		power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
201*0e8011faSEmmanuel Vadot		status = "disabled";
202*0e8011faSEmmanuel Vadot
203*0e8011faSEmmanuel Vadot		mcu_r5fss0_core0: r5f@79000000 {
204*0e8011faSEmmanuel Vadot			compatible = "ti,am62-r5f";
205*0e8011faSEmmanuel Vadot			reg = <0x79000000 0x00008000>,
206*0e8011faSEmmanuel Vadot			      <0x79020000 0x00008000>;
207*0e8011faSEmmanuel Vadot			reg-names = "atcm", "btcm";
208*0e8011faSEmmanuel Vadot			ti,sci = <&dmsc>;
209*0e8011faSEmmanuel Vadot			ti,sci-dev-id = <9>;
210*0e8011faSEmmanuel Vadot			ti,sci-proc-ids = <0x03 0xff>;
211*0e8011faSEmmanuel Vadot			resets = <&k3_reset 9 1>;
212*0e8011faSEmmanuel Vadot			firmware-name = "am62p-mcu-r5f0_0-fw";
213*0e8011faSEmmanuel Vadot			ti,atcm-enable = <0>;
214*0e8011faSEmmanuel Vadot			ti,btcm-enable = <1>;
215*0e8011faSEmmanuel Vadot			ti,loczrama = <0>;
216*0e8011faSEmmanuel Vadot		};
217*0e8011faSEmmanuel Vadot	};
218*0e8011faSEmmanuel Vadot};
219