1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig ARCH_AT91
3	bool "AT91/Microchip SoCs"
4	depends on (CPU_LITTLE_ENDIAN && (ARCH_MULTI_V4T || ARCH_MULTI_V5)) || \
5		ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
6	select ARM_CPU_SUSPEND if PM && ARCH_MULTI_V7
7	select COMMON_CLK_AT91
8	select GPIOLIB
9	select PINCTRL
10	select SOC_BUS
11
12if ARCH_AT91
13config SOC_SAMV7
14	bool "SAM Cortex-M7 family" if ARM_SINGLE_ARMV7M
15	select COMMON_CLK_AT91
16	select PINCTRL_AT91
17	help
18	  Select this if you are using an SoC from Microchip's SAME7, SAMS7 or SAMV7
19	  families.
20
21config SOC_SAMA5D2
22	bool "SAMA5D2 family"
23	depends on ARCH_MULTI_V7
24	select SOC_SAMA5
25	select CACHE_L2X0
26	select HAVE_AT91_UTMI
27	select HAVE_AT91_USB_CLK
28	select HAVE_AT91_H32MX
29	select HAVE_AT91_GENERATED_CLK
30	select HAVE_AT91_AUDIO_PLL
31	select HAVE_AT91_I2S_MUX_CLK
32	select PINCTRL_AT91PIO4
33	help
34	  Select this if ou are using one of Microchip's SAMA5D2 family SoC.
35
36config SOC_SAMA5D3
37	bool "SAMA5D3 family"
38	depends on ARCH_MULTI_V7
39	select SOC_SAMA5
40	select HAVE_AT91_UTMI
41	select HAVE_AT91_SMD
42	select HAVE_AT91_USB_CLK
43	select PINCTRL_AT91
44	help
45	  Select this if you are using one of Microchip's SAMA5D3 family SoC.
46	  This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
47
48config SOC_SAMA5D4
49	bool "SAMA5D4 family"
50	depends on ARCH_MULTI_V7
51	select SOC_SAMA5
52	select CACHE_L2X0
53	select HAVE_AT91_UTMI
54	select HAVE_AT91_SMD
55	select HAVE_AT91_USB_CLK
56	select HAVE_AT91_H32MX
57	select PINCTRL_AT91
58	help
59	  Select this if you are using one of Microchip's SAMA5D4 family SoC.
60
61config SOC_SAMA7G5
62	bool "SAMA7G5 family"
63	depends on ARCH_MULTI_V7
64	select HAVE_AT91_GENERATED_CLK
65	select HAVE_AT91_SAM9X60_PLL
66	select HAVE_AT91_UTMI
67	select PM_OPP
68	select SOC_SAMA7
69	help
70	  Select this if you are using one of Microchip's SAMA7G5 family SoC.
71
72config SOC_LAN966
73	bool "ARMv7 based Microchip LAN966 SoC family"
74	depends on ARCH_MULTI_V7
75	select DW_APB_TIMER_OF
76	select ARM_GIC
77	select MEMORY
78	help
79	  This enables support for ARMv7 based Microchip LAN966 SoC family.
80
81config SOC_AT91RM9200
82	bool "AT91RM9200"
83	depends on ARCH_MULTI_V4T
84	select ATMEL_AIC_IRQ
85	select ATMEL_PM if PM
86	select ATMEL_ST
87	select CPU_ARM920T
88	select HAVE_AT91_USB_CLK
89	select PINCTRL_AT91
90	select SOC_SAM_V4_V5
91	select SRAM if PM
92	help
93	  Select this if you are using Microchip's AT91RM9200 SoC.
94
95config SOC_AT91SAM9
96	bool "AT91SAM9"
97	depends on ARCH_MULTI_V5
98	select ATMEL_AIC_IRQ
99	select ATMEL_PM if PM
100	select CPU_ARM926T
101	select HAVE_AT91_SMD
102	select HAVE_AT91_USB_CLK
103	select HAVE_AT91_UTMI
104	select HAVE_FB_ATMEL
105	select MEMORY
106	select PINCTRL_AT91
107	select SOC_SAM_V4_V5
108	select SRAM if PM
109	help
110	  Select this if you are using one of those Microchip SoC:
111	    AT91SAM9260
112	    AT91SAM9261
113	    AT91SAM9263
114	    AT91SAM9G15
115	    AT91SAM9G20
116	    AT91SAM9G25
117	    AT91SAM9G35
118	    AT91SAM9G45
119	    AT91SAM9G46
120	    AT91SAM9M10
121	    AT91SAM9M11
122	    AT91SAM9N12
123	    AT91SAM9RL
124	    AT91SAM9X25
125	    AT91SAM9X35
126	    AT91SAM9XE
127
128config SOC_SAM9X60
129	bool "SAM9X60"
130	depends on ARCH_MULTI_V5
131	select ATMEL_AIC5_IRQ
132	select ATMEL_PM if PM
133	select CPU_ARM926T
134	select HAVE_AT91_USB_CLK
135	select HAVE_AT91_GENERATED_CLK
136	select HAVE_AT91_SAM9X60_PLL
137	select MEMORY
138	select PINCTRL_AT91
139	select SOC_SAM_V4_V5
140	select SRAM if PM
141	help
142	  Select this if you are using Microchip's SAM9X60 SoC
143
144comment "Clocksource driver selection"
145
146config ATMEL_CLOCKSOURCE_PIT
147	bool "Periodic Interval Timer (PIT) support"
148	depends on SOC_AT91SAM9 || SOC_SAM9X60 || SOC_SAMA5
149	default SOC_AT91SAM9 || SOC_SAMA5
150	select ATMEL_PIT
151	help
152	  Select this to get a clocksource based on the Atmel Periodic Interval
153	  Timer. It has a relatively low resolution and the TC Block clocksource
154	  should be preferred.
155
156config ATMEL_CLOCKSOURCE_TCB
157	bool "Timer Counter Blocks (TCB) support"
158	default SOC_AT91RM9200 || SOC_AT91SAM9 || SOC_SAM9X60 || SOC_SAMA5
159	select ATMEL_TCB_CLKSRC
160	help
161	  Select this to get a high precision clocksource based on a
162	  TC block with a 5+ MHz base clock rate.
163	  On platforms with 16-bit counters, two timer channels are combined
164	  to make a single 32-bit timer.
165	  It can also be used as a clock event device supporting oneshot mode.
166
167config MICROCHIP_CLOCKSOURCE_PIT64B
168	bool "64-bit Periodic Interval Timer (PIT64B) support"
169	default SOC_SAM9X60 || SOC_SAMA7
170	select MICROCHIP_PIT64B
171	help
172	  Select this to get a high resolution clockevent (SAM9X60) or
173	  clocksource and clockevent (SAMA7G5) based on Microchip 64-bit
174	  Periodic Interval Timer.
175
176config HAVE_AT91_UTMI
177	bool
178
179config HAVE_AT91_USB_CLK
180	bool
181
182config COMMON_CLK_AT91
183	bool
184	select MFD_SYSCON
185
186config HAVE_AT91_SMD
187	bool
188
189config HAVE_AT91_H32MX
190	bool
191
192config HAVE_AT91_GENERATED_CLK
193	bool
194
195config HAVE_AT91_AUDIO_PLL
196	bool
197
198config HAVE_AT91_I2S_MUX_CLK
199	bool
200
201config HAVE_AT91_SAM9X60_PLL
202	bool
203
204config SOC_SAM_V4_V5
205	bool
206
207config SOC_SAM_V7
208	bool
209
210config SOC_SAMA5
211	bool
212	select ATMEL_AIC5_IRQ
213	select ATMEL_PM if PM
214	select MEMORY
215	select SOC_SAM_V7
216	select SRAM if PM
217
218config ATMEL_PM
219	bool
220
221config ATMEL_SECURE_PM
222	bool "Atmel Secure PM support"
223	depends on SOC_SAMA5D2 && ATMEL_PM
224	select ARM_PSCI
225	help
226	  When running under a TEE, the suspend mode must be requested to be set
227	  at TEE level. When enable, this option will use secure monitor calls
228	  to set the suspend level. PSCI is then used to enter suspend.
229
230config SOC_SAMA7
231	bool
232	select ARM_GIC
233	select ATMEL_PM if PM
234	select MEMORY
235	select SOC_SAM_V7
236	select SRAM if PM
237endif
238