1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig ARCH_MXC
3	bool "Freescale i.MX family"
4	depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
5	select ARCH_SUPPORTS_BIG_ENDIAN
6	select CLKSRC_IMX_GPT
7	select GENERIC_IRQ_CHIP
8	select GPIOLIB
9	select PINCTRL
10	select PM_OPP if PM
11	select SOC_BUS
12	select SRAM
13	help
14	  Support for Freescale MXC/iMX-based family of processors
15
16if ARCH_MXC
17
18config MXC_TZIC
19	bool
20
21config MXC_AVIC
22	bool
23
24config MXC_DEBUG_BOARD
25	bool "Enable MXC debug board(for 3-stack)"
26	depends on MACH_MX27_3DS || MACH_MX31_3DS || MACH_MX35_3DS
27	help
28	  The debug board is an integral part of the MXC 3-stack(PDK)
29	  platforms, it can be attached or removed from the peripheral
30	  board. On debug board, several debug devices(ethernet, UART,
31	  buttons, LEDs and JTAG) are implemented. Between the MCU and
32	  these devices, a CPLD is added as a bridge which performs
33	  data/address de-multiplexing and decode, signal level shift,
34	  interrupt control and various board functions.
35
36config HAVE_IMX_ANATOP
37	bool
38
39config HAVE_IMX_GPC
40	bool
41	select PM_GENERIC_DOMAINS if PM
42
43config HAVE_IMX_MMDC
44	bool
45
46config HAVE_IMX_SRC
47	def_bool y if SMP
48	select ARCH_HAS_RESET_CONTROLLER
49
50if ARCH_MULTI_V6
51
52comment "ARM1136 platforms"
53
54config SOC_IMX31
55	bool "i.MX31 support"
56	select CPU_V6
57	select MXC_AVIC
58	help
59	  This enables support for Freescale i.MX31 processor
60
61config SOC_IMX35
62	bool "i.MX35 support"
63	select MXC_AVIC
64	select PINCTRL_IMX35
65	help
66	  This enables support for Freescale i.MX35 processor
67
68endif
69
70if ARCH_MULTI_V4T
71
72config SOC_IMX1
73	bool "i.MX1 support"
74	select CPU_ARM920T
75	select MXC_AVIC
76	select PINCTRL_IMX1
77	help
78	  This enables support for Freescale i.MX1 processor
79
80endif
81
82if ARCH_MULTI_V5
83
84config SOC_IMX25
85	bool "i.MX25 support"
86	select CPU_ARM926T
87	select MXC_AVIC
88	select PINCTRL_IMX25
89	help
90	  This enables support for Freescale i.MX25 processor
91
92config SOC_IMX27
93	bool "i.MX27 support"
94	select CPU_ARM926T
95	select MXC_AVIC
96	select PINCTRL_IMX27
97	help
98	  This enables support for Freescale i.MX27 processor
99
100endif
101
102if ARCH_MULTI_V7
103
104comment "Cortex-A platforms"
105
106config SOC_IMX5
107	bool
108	select HAVE_IMX_SRC
109	select MXC_TZIC
110
111config	SOC_IMX50
112	bool "i.MX50 support"
113	select PINCTRL_IMX50
114	select SOC_IMX5
115
116	help
117	  This enables support for Freescale i.MX50 processor.
118
119config SOC_IMX51
120	bool "i.MX51 support"
121	select PINCTRL_IMX51
122	select SOC_IMX5
123	help
124	  This enables support for Freescale i.MX51 processor
125
126config	SOC_IMX53
127	bool "i.MX53 support"
128	select PINCTRL_IMX53
129	select SOC_IMX5
130
131	help
132	  This enables support for Freescale i.MX53 processor.
133
134config SOC_IMX6
135	bool
136	select ARM_CPU_SUSPEND if (PM || CPU_IDLE)
137	select ARM_GIC
138	select HAVE_IMX_ANATOP
139	select HAVE_IMX_GPC
140	select HAVE_IMX_MMDC
141	select HAVE_IMX_SRC
142	select MFD_SYSCON
143	select PL310_ERRATA_769419 if CACHE_L2X0
144
145config SOC_IMX6Q
146	bool "i.MX6 Quad/DualLite support"
147	select ARM_ERRATA_764369 if SMP
148	select ARM_ERRATA_754322
149	select ARM_ERRATA_775420
150	select HAVE_ARM_SCU if SMP
151	select HAVE_ARM_TWD
152	select PINCTRL_IMX6Q
153	select SOC_IMX6
154
155	help
156	  This enables support for Freescale i.MX6 Quad processor.
157
158config SOC_IMX6SL
159	bool "i.MX6 SoloLite support"
160	select ARM_ERRATA_754322
161	select ARM_ERRATA_775420
162	select PINCTRL_IMX6SL
163	select SOC_IMX6
164
165	help
166	  This enables support for Freescale i.MX6 SoloLite processor.
167
168config SOC_IMX6SLL
169	bool "i.MX6 SoloLiteLite support"
170	select ARM_ERRATA_754322
171	select ARM_ERRATA_775420
172	select PINCTRL_IMX6SLL
173	select SOC_IMX6
174
175	help
176	  This enables support for Freescale i.MX6 SoloLiteLite processor.
177
178config SOC_IMX6SX
179	bool "i.MX6 SoloX support"
180	select ARM_ERRATA_754322
181	select ARM_ERRATA_775420
182	select PINCTRL_IMX6SX
183	select SOC_IMX6
184
185	help
186	  This enables support for Freescale i.MX6 SoloX processor.
187
188config SOC_IMX6UL
189	bool "i.MX6 UltraLite support"
190	select PINCTRL_IMX6UL
191	select SOC_IMX6
192	select ARM_ERRATA_814220
193
194	help
195	  This enables support for Freescale i.MX6 UltraLite processor.
196
197config SOC_LS1021A
198	bool "Freescale LS1021A support"
199	select ARM_GIC
200	select HAVE_ARM_ARCH_TIMER
201	select ZONE_DMA if ARM_LPAE
202	help
203	  This enables support for Freescale LS1021A processor.
204
205endif
206
207if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
208
209comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
210
211config SOC_IMX7D_CA7
212	bool
213	select ARM_GIC
214	select HAVE_ARM_ARCH_TIMER
215	select HAVE_IMX_ANATOP
216	select HAVE_IMX_MMDC
217	select HAVE_IMX_SRC
218	select IMX_GPCV2
219
220config SOC_IMX7D_CM4
221	bool
222	select ARMV7M_SYSTICK
223
224config SOC_IMX7D
225	bool "i.MX7 Dual support"
226	select PINCTRL_IMX7D
227	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
228	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
229	select ARM_ERRATA_814220 if ARCH_MULTI_V7
230	help
231		This enables support for Freescale i.MX7 Dual processor.
232
233config SOC_IMX7ULP
234	bool "i.MX7ULP support"
235	select CLKSRC_IMX_TPM
236	select PINCTRL_IMX7ULP
237	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
238	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
239	help
240	  This enables support for Freescale i.MX7 Ultra Low Power processor.
241
242config SOC_VF610
243	bool "Vybrid Family VF610 support"
244	select ARM_GIC if ARCH_MULTI_V7
245	select PINCTRL_VF610
246
247	help
248	  This enables support for Freescale Vybrid VF610 processor.
249
250choice
251	prompt "Clocksource for scheduler clock"
252	depends on SOC_VF610
253	default VF_USE_ARM_GLOBAL_TIMER
254
255	config VF_USE_ARM_GLOBAL_TIMER
256		bool "Use ARM Global Timer"
257		depends on ARCH_MULTI_V7
258		select ARM_GLOBAL_TIMER
259		select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
260		help
261		  Use the ARM Global Timer as clocksource
262
263	config VF_USE_PIT_TIMER
264		bool "Use PIT timer"
265		select VF_PIT_TIMER
266		help
267		  Use SoC Periodic Interrupt Timer (PIT) as clocksource
268
269endchoice
270
271endif
272
273endif
274