1if ARCH_ROCKCHIP
2
3config ROCKCHIP_PX30
4	bool "Support Rockchip PX30"
5	select ARM64
6	select SUPPORT_SPL
7	select SUPPORT_TPL
8	select SPL
9	select TPL
10	select TPL_TINY_FRAMEWORK if TPL
11	select TPL_NEEDS_SEPARATE_TEXT_BASE if SPL
12	select TPL_NEEDS_SEPARATE_STACK if TPL
13	imply SPL_SEPARATE_BSS
14	select SPL_SERIAL_SUPPORT
15	select TPL_SERIAL_SUPPORT
16	select DEBUG_UART_BOARD_INIT
17	imply ROCKCHIP_COMMON_BOARD
18	imply SPL_ROCKCHIP_COMMON_BOARD
19	help
20	  The Rockchip PX30 is a ARM-based SoC with a quad-core Cortex-A35
21	  including NEON and GPU, Mali-400 graphics, several DDR3 options
22	  and video codec support. Peripherals include Gigabit Ethernet,
23	  USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
24
25config ROCKCHIP_RK3036
26	bool "Support Rockchip RK3036"
27	select CPU_V7A
28	select SUPPORT_SPL
29	select SPL
30	imply USB_FUNCTION_ROCKUSB
31	imply CMD_ROCKUSB
32	imply ROCKCHIP_COMMON_BOARD
33	help
34	  The Rockchip RK3036 is a ARM-based SoC with a dual-core Cortex-A7
35	  including NEON and GPU, Mali-400 graphics, several DDR3 options
36	  and video codec support. Peripherals include Gigabit Ethernet,
37	  USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
38
39config ROCKCHIP_RK3128
40	bool "Support Rockchip RK3128"
41	select CPU_V7A
42	imply ROCKCHIP_COMMON_BOARD
43	help
44	  The Rockchip RK3128 is a ARM-based SoC with a quad-core Cortex-A7
45	  including NEON and GPU, Mali-400 graphics, several DDR3 options
46	  and video codec support. Peripherals include Gigabit Ethernet,
47	  USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
48
49config ROCKCHIP_RK3188
50	bool "Support Rockchip RK3188"
51	select CPU_V7A
52	select SPL_BOARD_INIT if SPL
53	select SUPPORT_SPL
54	select SPL
55	select SPL_CLK
56	select SPL_REGMAP
57	select SPL_SYSCON
58	select SPL_RAM
59	select SPL_DRIVERS_MISC_SUPPORT
60	select SPL_ROCKCHIP_EARLYRETURN_TO_BROM
61	select SPL_ROCKCHIP_BACK_TO_BROM
62	select BOARD_LATE_INIT
63	imply ROCKCHIP_COMMON_BOARD
64	imply SPL_ROCKCHIP_COMMON_BOARD
65	help
66	  The Rockchip RK3188 is a ARM-based SoC with a quad-core Cortex-A9
67	  including NEON and GPU, 512KB L2 cache, Mali-400 graphics, two
68	  video interfaces, several memory options and video codec support.
69	  Peripherals include Fast Ethernet, USB2 host and OTG, SDIO, I2S,
70	  UART, SPI, I2C and PWMs.
71
72config ROCKCHIP_RK322X
73	bool "Support Rockchip RK3228/RK3229"
74	select CPU_V7A
75	select SUPPORT_SPL
76	select SUPPORT_TPL
77	select SPL
78	select SPL_DM
79	select SPL_OF_LIBFDT
80	select TPL
81	select TPL_DM
82	select TPL_OF_LIBFDT
83	select TPL_NEEDS_SEPARATE_TEXT_BASE if SPL
84	select TPL_NEEDS_SEPARATE_STACK if TPL
85	select SPL_DRIVERS_MISC_SUPPORT
86	imply ROCKCHIP_COMMON_BOARD
87	imply SPL_SERIAL_SUPPORT
88	imply SPL_ROCKCHIP_COMMON_BOARD
89	imply TPL_SERIAL_SUPPORT
90	imply TPL_ROCKCHIP_COMMON_BOARD
91	select TPL_LIBCOMMON_SUPPORT
92	select TPL_LIBGENERIC_SUPPORT
93	help
94	  The Rockchip RK3229 is a ARM-based SoC with a dual-core Cortex-A7
95	  including NEON and GPU, Mali-400 graphics, several DDR3 options
96	  and video codec support. Peripherals include Gigabit Ethernet,
97	  USB2 host and OTG, SDIO, I2S, UART, SPI, I2C and PWMs.
98
99config ROCKCHIP_RK3288
100	bool "Support Rockchip RK3288"
101	select CPU_V7A
102	select OF_BOARD_SETUP
103	select SUPPORT_SPL
104	select SPL
105	select SUPPORT_TPL
106	imply PRE_CONSOLE_BUFFER
107	imply ROCKCHIP_COMMON_BOARD
108	imply SPL_ROCKCHIP_COMMON_BOARD
109	imply TPL_CLK
110	imply TPL_DM
111	imply TPL_DRIVERS_MISC_SUPPORT
112	imply TPL_LIBCOMMON_SUPPORT
113	imply TPL_LIBGENERIC_SUPPORT
114	imply TPL_NEEDS_SEPARATE_TEXT_BASE
115	imply TPL_NEEDS_SEPARATE_STACK
116	imply TPL_OF_CONTROL
117	imply TPL_OF_PLATDATA
118	imply TPL_RAM
119	imply TPL_REGMAP
120	imply TPL_ROCKCHIP_COMMON_BOARD
121	imply TPL_SERIAL_SUPPORT
122	imply TPL_SYSCON
123	imply USB_FUNCTION_ROCKUSB
124	imply CMD_ROCKUSB
125	help
126	  The Rockchip RK3288 is a ARM-based SoC with a quad-core Cortex-A17
127	  including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
128	  video interfaces supporting HDMI and eDP, several DDR3 options
129	  and video codec support. Peripherals include Gigabit Ethernet,
130	  USB2 host and OTG, SDIO, I2S, UARTs, SPI, I2C and PWMs.
131
132config ROCKCHIP_RK3308
133	bool "Support Rockchip RK3308"
134	select ARM64
135	select DEBUG_UART_BOARD_INIT
136	select SUPPORT_SPL
137	select SUPPORT_TPL
138	select SPL
139	select SPL_ATF
140	select SPL_ATF_NO_PLATFORM_PARAM
141	select SPL_LOAD_FIT
142	imply ROCKCHIP_COMMON_BOARD
143	imply SPL_ROCKCHIP_COMMON_BOARD
144	imply SPL_CLK
145	imply SPL_REGMAP
146	imply SPL_SYSCON
147	imply SPL_RAM
148	imply SPL_SERIAL_SUPPORT
149	imply TPL_SERIAL_SUPPORT
150	imply SPL_SEPARATE_BSS
151	help
152	  The Rockchip RK3308 is a ARM-based Soc which embedded with quad
153	  Cortex-A35 and highly integrated audio interfaces.
154
155config ROCKCHIP_RK3328
156	bool "Support Rockchip RK3328"
157	select ARM64
158	select SUPPORT_SPL
159	select SPL
160	select SUPPORT_TPL
161	select TPL
162	select TPL_NEEDS_SEPARATE_TEXT_BASE if TPL
163	select TPL_NEEDS_SEPARATE_STACK if TPL
164	imply ROCKCHIP_COMMON_BOARD
165	imply ROCKCHIP_SDRAM_COMMON
166	imply SPL_ROCKCHIP_COMMON_BOARD
167	imply SPL_SERIAL_SUPPORT
168	imply TPL_SERIAL_SUPPORT
169	imply SPL_SEPARATE_BSS
170	select ENABLE_ARM_SOC_BOOT0_HOOK
171	select DEBUG_UART_BOARD_INIT
172	select SYS_NS16550
173	help
174	  The Rockchip RK3328 is a ARM-based SoC with a quad-core Cortex-A53.
175	  including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
176	  video interfaces supporting HDMI and eDP, several DDR3 options
177	  and video codec support. Peripherals include Gigabit Ethernet,
178	  USB2 host and OTG, SDIO, I2S, UARTs, SPI, I2C and PWMs.
179
180config ROCKCHIP_RK3368
181	bool "Support Rockchip RK3368"
182	select ARM64
183	select SUPPORT_SPL
184	select SUPPORT_TPL
185	select TPL_NEEDS_SEPARATE_TEXT_BASE if SPL
186	select TPL_NEEDS_SEPARATE_STACK if TPL
187	imply ROCKCHIP_COMMON_BOARD
188	imply SPL_ROCKCHIP_COMMON_BOARD
189	imply SPL_SEPARATE_BSS
190	imply SPL_SERIAL_SUPPORT
191	imply TPL_SERIAL_SUPPORT
192	imply TPL_ROCKCHIP_COMMON_BOARD
193	help
194	  The Rockchip RK3368 is a ARM-based SoC with a octa-core (organised
195	  into a big and little cluster with 4 cores each) Cortex-A53 including
196	  AdvSIMD, 512KB L2 cache (for the big cluster) and 256 KB L2 cache
197	  (for the little cluster), PowerVR G6110 based graphics, one video
198	  output processor supporting LVDS/HDMI/eDP, several DDR3 options and
199	  video codec support.
200
201	  On-chip peripherals include Gigabit Ethernet, USB2 host and OTG, SDIO,
202	  I2S, UARTs, SPI, I2C and PWMs.
203
204config ROCKCHIP_RK3399
205	bool "Support Rockchip RK3399"
206	select ARM64
207	select SUPPORT_SPL
208	select SUPPORT_TPL
209	select SPL
210	select SPL_ATF
211	select SPL_BOARD_INIT if SPL
212	select SPL_LOAD_FIT
213	select SPL_CLK if SPL
214	select SPL_PINCTRL if SPL
215	select SPL_RAM if SPL
216	select SPL_REGMAP if SPL
217	select SPL_SYSCON if SPL
218	select TPL_NEEDS_SEPARATE_TEXT_BASE if TPL
219	select TPL_NEEDS_SEPARATE_STACK if TPL
220	select SPL_SEPARATE_BSS
221	select SPL_SERIAL_SUPPORT
222	select SPL_DRIVERS_MISC_SUPPORT
223	select CLK
224	select FIT
225	select PINCTRL
226	select RAM
227	select REGMAP
228	select SYSCON
229	select DM_PMIC
230	select DM_REGULATOR_FIXED
231	select BOARD_LATE_INIT
232	imply PRE_CONSOLE_BUFFER
233	imply ROCKCHIP_COMMON_BOARD
234	imply ROCKCHIP_SDRAM_COMMON
235	imply SPL_ATF_NO_PLATFORM_PARAM if SPL_ATF
236	imply SPL_ROCKCHIP_COMMON_BOARD
237	imply TPL_SERIAL_SUPPORT
238	imply TPL_LIBCOMMON_SUPPORT
239	imply TPL_LIBGENERIC_SUPPORT
240	imply TPL_SYS_MALLOC_SIMPLE
241	imply TPL_DRIVERS_MISC_SUPPORT
242	imply TPL_OF_CONTROL
243	imply TPL_DM
244	imply TPL_REGMAP
245	imply TPL_SYSCON
246	imply TPL_RAM
247	imply TPL_CLK
248	imply TPL_TINY_MEMSET
249	imply TPL_ROCKCHIP_COMMON_BOARD
250	imply SYS_BOOTCOUNT_SINGLEWORD if BOOTCOUNT_LIMIT
251	imply CMD_BOOTCOUNT if BOOTCOUNT_LIMIT
252	help
253	  The Rockchip RK3399 is a ARM-based SoC with a dual-core Cortex-A72
254	  and quad-core Cortex-A53.
255	  including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
256	  video interfaces supporting HDMI and eDP, several DDR3 options
257	  and video codec support. Peripherals include Gigabit Ethernet,
258	  USB2 host and OTG, SDIO, I2S, UARTs, SPI, I2C and PWMs.
259
260config ROCKCHIP_RV1108
261	bool "Support Rockchip RV1108"
262	select CPU_V7A
263	imply ROCKCHIP_COMMON_BOARD
264	help
265	  The Rockchip RV1108 is a ARM-based SoC with a single-core Cortex-A7
266	  and a DSP.
267
268config ROCKCHIP_USB_UART
269	bool "Route uart output to usb pins"
270	help
271	  Rockchip SoCs have the ability to route the signals of the debug
272	  uart through the d+ and d- pins of a specific usb phy to enable
273	  some form of closed-case debugging. With this option supported
274	  SoCs will enable this routing as a debug measure.
275
276config SPL_ROCKCHIP_BACK_TO_BROM
277	bool "SPL returns to bootrom"
278	default y if ROCKCHIP_RK3036
279	select ROCKCHIP_BROM_HELPER
280	select SPL_BOOTROM_SUPPORT
281	depends on SPL
282	help
283	  Rockchip SoCs have ability to load SPL & U-Boot binary. If enabled,
284          SPL will return to the boot rom, which will then load the U-Boot
285          binary to keep going on.
286
287config TPL_ROCKCHIP_BACK_TO_BROM
288	bool "TPL returns to bootrom"
289	default y
290	select ROCKCHIP_BROM_HELPER
291	select TPL_BOOTROM_SUPPORT
292	depends on TPL
293	help
294	  Rockchip SoCs have ability to load SPL & U-Boot binary. If enabled,
295          SPL will return to the boot rom, which will then load the U-Boot
296          binary to keep going on.
297
298config ROCKCHIP_COMMON_BOARD
299	bool "Rockchip common board file"
300	help
301	  Rockchip SoCs have similar boot process, Common board file is mainly
302	  in charge of common process of board_init() and board_late_init() for
303	  U-Boot proper.
304
305config SPL_ROCKCHIP_COMMON_BOARD
306	bool "Rockchip SPL common board file"
307	depends on SPL
308	help
309	  Rockchip SoCs have similar boot process, SPL is mainly in charge of
310	  load and boot Trust ATF/U-Boot firmware, and DRAM init if there is
311	  no TPL for the board.
312
313config TPL_ROCKCHIP_COMMON_BOARD
314	bool "Rockchip TPL common board file"
315	depends on TPL
316	help
317	  Rockchip SoCs have similar boot process, prefer to use TPL for DRAM
318	  init and back to bootrom, and SPL as Trust ATF/U-Boot loader. TPL
319	  common board is a basic TPL board init which can be shared for most
320	  of SoCs to avoid copy-paste for different SoCs.
321
322config ROCKCHIP_BOOT_MODE_REG
323	hex "Rockchip boot mode flag register address"
324	help
325	  The Soc will enter to different boot mode(defined in asm/arch-rockchip/boot_mode.h)
326	  according to the value from this register.
327
328config ROCKCHIP_SPL_RESERVE_IRAM
329	hex "Size of IRAM reserved in SPL"
330	default 0
331	help
332	  SPL may need reserve memory for firmware loaded by SPL, whose load
333	  address is in IRAM and may overlay with SPL text area if not
334	  reserved.
335
336config ROCKCHIP_BROM_HELPER
337	bool
338
339config SPL_ROCKCHIP_EARLYRETURN_TO_BROM
340        bool "SPL requires early-return (for RK3188-style BROM) to BROM"
341	depends on SPL && ENABLE_ARM_SOC_BOOT0_HOOK
342	help
343	  Some Rockchip BROM variants (e.g. on the RK3188) load the
344	  first stage in segments and enter multiple times. E.g. on
345	  the RK3188, the first 1KB of the first stage are loaded
346	  first and entered; after returning to the BROM, the
347	  remainder of the first stage is loaded, but the BROM
348	  re-enters at the same address/to the same code as previously.
349
350	  This enables support code in the BOOT0 hook for the SPL stage
351	  to allow multiple entries.
352
353config TPL_ROCKCHIP_EARLYRETURN_TO_BROM
354        bool "TPL requires early-return (for RK3188-style BROM) to BROM"
355	depends on TPL && ENABLE_ARM_SOC_BOOT0_HOOK
356	help
357	  Some Rockchip BROM variants (e.g. on the RK3188) load the
358	  first stage in segments and enter multiple times. E.g. on
359	  the RK3188, the first 1KB of the first stage are loaded
360	  first and entered; after returning to the BROM, the
361	  remainder of the first stage is loaded, but the BROM
362	  re-enters at the same address/to the same code as previously.
363
364	  This enables support code in the BOOT0 hook for the TPL stage
365	  to allow multiple entries.
366
367config SPL_MMC_SUPPORT
368	default y if !SPL_ROCKCHIP_BACK_TO_BROM
369
370config ROCKCHIP_SPI_IMAGE
371	bool "Build a SPI image for rockchip"
372	depends on HAS_ROM
373	help
374	  Some Rockchip SoCs support booting from SPI flash. Enable this
375	  option to produce a 4MB SPI-flash image (called u-boot.rom)
376	  containing U-Boot. The image is built by binman. U-Boot sits near
377	  the start of the image.
378
379source "arch/arm/mach-rockchip/px30/Kconfig"
380source "arch/arm/mach-rockchip/rk3036/Kconfig"
381source "arch/arm/mach-rockchip/rk3128/Kconfig"
382source "arch/arm/mach-rockchip/rk3188/Kconfig"
383source "arch/arm/mach-rockchip/rk322x/Kconfig"
384source "arch/arm/mach-rockchip/rk3288/Kconfig"
385source "arch/arm/mach-rockchip/rk3308/Kconfig"
386source "arch/arm/mach-rockchip/rk3328/Kconfig"
387source "arch/arm/mach-rockchip/rk3368/Kconfig"
388source "arch/arm/mach-rockchip/rk3399/Kconfig"
389source "arch/arm/mach-rockchip/rv1108/Kconfig"
390endif
391