1# SPDX-License-Identifier: GPL-2.0
2#
3# Copyright 2009 Simtec Electronics
4
5config PLAT_SAMSUNG
6	bool
7	depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_EXYNOS || ARCH_S5PV210
8	default y
9	select GENERIC_IRQ_CHIP
10	select NO_IOPORT_MAP
11	help
12	  Base platform code for all Samsung SoC based systems
13
14config SAMSUNG_PM
15	bool
16	depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX)
17	default y
18	help
19	  Base platform power management code for samsung code
20
21if PLAT_SAMSUNG
22menu "Samsung Common options"
23
24# boot configurations
25
26comment "Boot options"
27
28config S3C_LOWLEVEL_UART_PORT
29	int "S3C UART to use for low-level messages"
30	depends on ARCH_S3C64XX
31	default 0
32	help
33	  Choice of which UART port to use for the low-level messages,
34	  such as the `Uncompressing...` at start time. The value of
35	  this configuration should be between zero and two. The port
36	  must have been initialised by the boot-loader before use.
37
38config SAMSUNG_ATAGS
39	def_bool n
40	depends on ATAGS
41	help
42	   This option enables ATAGS based boot support code for
43	   Samsung platforms, including static platform devices, legacy
44	   clock, timer and interrupt initialization, etc.
45
46	   Platforms that support only DT based boot need not to select
47	   this option.
48
49if SAMSUNG_ATAGS
50
51config S3C_GPIO_SPACE
52	int "Space between gpio banks"
53	default 0
54	help
55	  Add a number of spare GPIO entries between each bank for debugging
56	  purposes. This allows any problems where an counter overflows from
57	  one bank to another to be caught, at the expense of using a little
58	  more memory.
59
60config S3C_GPIO_TRACK
61	bool
62	help
63	  Internal configuration option to enable the s3c specific gpio
64	  chip tracking if the platform requires it.
65
66# ADC driver
67
68config S3C_ADC
69	bool "ADC common driver support"
70	depends on !ARCH_MULTIPLATFORM
71	help
72	  Core support for the ADC block found in the Samsung SoC systems
73	  for drivers such as the touchscreen and hwmon to use to share
74	  this resource.
75
76# device definitions to compile in
77
78config S3C_DEV_HSMMC
79	bool
80	help
81	  Compile in platform device definitions for HSMMC code
82
83config S3C_DEV_HSMMC1
84	bool
85	help
86	  Compile in platform device definitions for HSMMC channel 1
87
88config S3C_DEV_HSMMC2
89	bool
90	help
91	  Compile in platform device definitions for HSMMC channel 2
92
93config S3C_DEV_HSMMC3
94	bool
95	help
96	  Compile in platform device definitions for HSMMC channel 3
97
98config S3C_DEV_HWMON
99	bool
100	help
101	    Compile in platform device definitions for HWMON
102
103config S3C_DEV_I2C1
104	bool
105	help
106	  Compile in platform device definitions for I2C channel 1
107
108config S3C_DEV_I2C2
109	bool
110	help
111	  Compile in platform device definitions for I2C channel 2
112
113config S3C_DEV_I2C3
114	bool
115	help
116	  Compile in platform device definition for I2C controller 3
117
118config S3C_DEV_I2C4
119	bool
120	help
121	  Compile in platform device definition for I2C controller 4
122
123config S3C_DEV_I2C5
124	bool
125	help
126	  Compile in platform device definition for I2C controller 5
127
128config S3C_DEV_I2C6
129	bool
130	help
131	  Compile in platform device definition for I2C controller 6
132
133config S3C_DEV_I2C7
134	bool
135	help
136	  Compile in platform device definition for I2C controller 7
137
138config S3C_DEV_FB
139	bool
140	help
141	  Compile in platform device definition for framebuffer
142
143config S3C_DEV_USB_HOST
144	bool
145	help
146	  Compile in platform device definition for USB host.
147
148config S3C_DEV_USB_HSOTG
149	bool
150	help
151	  Compile in platform device definition for USB high-speed OtG
152
153config S3C_DEV_WDT
154	bool
155	default y if ARCH_S3C24XX
156	help
157	  Complie in platform device definition for Watchdog Timer
158
159config S3C_DEV_NAND
160	bool
161	help
162	  Compile in platform device definition for NAND controller
163
164config S3C_DEV_ONENAND
165	bool
166	help
167	  Compile in platform device definition for OneNAND controller
168
169config S3C_DEV_RTC
170	bool
171	help
172	  Complie in platform device definition for RTC
173
174config SAMSUNG_DEV_ADC
175	bool
176	help
177	  Compile in platform device definition for ADC controller
178
179config SAMSUNG_DEV_IDE
180	bool
181	help
182	  Compile in platform device definitions for IDE
183
184config S3C64XX_DEV_SPI0
185	bool
186	help
187	  Compile in platform device definitions for S3C64XX's type
188	  SPI controller 0
189
190config S3C64XX_DEV_SPI1
191	bool
192	help
193	  Compile in platform device definitions for S3C64XX's type
194	  SPI controller 1
195
196config S3C64XX_DEV_SPI2
197	bool
198	help
199	  Compile in platform device definitions for S3C64XX's type
200	  SPI controller 2
201
202config SAMSUNG_DEV_TS
203	bool
204	help
205	    Common in platform device definitions for touchscreen device
206
207config SAMSUNG_DEV_KEYPAD
208	bool
209	help
210	  Compile in platform device definitions for keypad
211
212config SAMSUNG_DEV_PWM
213	bool
214	default y if ARCH_S3C24XX
215	help
216	  Compile in platform device definition for PWM Timer
217
218config S3C24XX_PWM
219	bool "PWM device support"
220	select PWM
221	select PWM_SAMSUNG
222	help
223	  Support for exporting the PWM timer blocks via the pwm device
224	  system
225
226config GPIO_SAMSUNG
227	def_bool y
228
229config SAMSUNG_PM_GPIO
230	bool
231	default y if GPIO_SAMSUNG && PM
232	help
233	  Include legacy GPIO power management code for platforms not using
234	  pinctrl-samsung driver.
235endif
236
237comment "Power management"
238
239config SAMSUNG_PM_DEBUG
240	bool "Samsung PM Suspend debug"
241	depends on PM && DEBUG_KERNEL
242	depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210
243	depends on DEBUG_EXYNOS_UART || DEBUG_S3C24XX_UART || DEBUG_S3C2410_UART
244	help
245	  Say Y here if you want verbose debugging from the PM Suspend and
246	  Resume code. See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
247	  for more information.
248
249config S3C_PM_DEBUG_LED_SMDK
250       bool "SMDK LED suspend/resume debugging"
251       depends on PM && (MACH_SMDK6410)
252       help
253         Say Y here to enable the use of the SMDK LEDs on the baseboard
254	 for debugging of the state of the suspend and resume process.
255
256	 Note, this currently only works for S3C64XX based SMDK boards.
257
258config SAMSUNG_PM_CHECK
259	bool "S3C2410 PM Suspend Memory CRC"
260	depends on PM && (PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210)
261	select CRC32
262	help
263	  Enable the PM code's memory area checksum over sleep. This option
264	  will generate CRCs of all blocks of memory, and store them before
265	  going to sleep. The blocks are then checked on resume for any
266	  errors.
267
268	  Note, this can take several seconds depending on memory size
269	  and CPU speed.
270
271	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
272
273config SAMSUNG_PM_CHECK_CHUNKSIZE
274	int "S3C2410 PM Suspend CRC Chunksize (KiB)"
275	depends on PM && SAMSUNG_PM_CHECK
276	default 64
277	help
278	  Set the chunksize in Kilobytes of the CRC for checking memory
279	  corruption over suspend and resume. A smaller value will mean that
280	  the CRC data block will take more memory, but will identify any
281	  faults with better precision.
282
283	  See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
284
285config SAMSUNG_WAKEMASK
286	bool
287	depends on PM
288	help
289	  Compile support for wakeup-mask controls found on the S3C6400
290	  and above. This code allows a set of interrupt to wakeup-mask
291	  mappings. See <plat/wakeup-mask.h>
292
293config SAMSUNG_WDT_RESET
294	bool
295	help
296	  Compile support for system restart by triggering watchdog reset.
297	  Used on SoCs that do not provide dedicated reset control.
298
299config DEBUG_S3C_UART
300	depends on PLAT_SAMSUNG
301	int
302	default "0" if DEBUG_S3C_UART0
303	default "1" if DEBUG_S3C_UART1
304	default "2" if DEBUG_S3C_UART2
305	default "3" if DEBUG_S3C_UART3
306
307endmenu
308endif
309