xref: /openbmc/u-boot/arch/arm/mach-sunxi/Kconfig (revision 87a62bce)
1if ARCH_SUNXI
2
3config SPL_LDSCRIPT
4	default "arch/arm/cpu/armv7/sunxi/u-boot-spl.lds" if !ARM64
5
6config IDENT_STRING
7	default " Allwinner Technology"
8
9config DRAM_SUN4I
10	bool
11	help
12	  Select this dram controller driver for Sun4/5/7i platforms,
13	  like A10/A13/A20.
14
15config DRAM_SUN6I
16	bool
17	help
18	  Select this dram controller driver for Sun6i platforms,
19	  like A31/A31s.
20
21config DRAM_SUN8I_A23
22	bool
23	help
24	  Select this dram controller driver for Sun8i platforms,
25	  for A23 SOC.
26
27config DRAM_SUN8I_A33
28	bool
29	help
30	  Select this dram controller driver for Sun8i platforms,
31	  for A33 SOC.
32
33config DRAM_SUN8I_A83T
34	bool
35	help
36	  Select this dram controller driver for Sun8i platforms,
37	  for A83T SOC.
38
39config DRAM_SUN9I
40	bool
41	help
42	  Select this dram controller driver for Sun9i platforms,
43	  like A80.
44
45config SUN6I_P2WI
46	bool "Allwinner sun6i internal P2WI controller"
47	help
48	  If you say yes to this option, support will be included for the
49	  P2WI (Push/Pull 2 Wire Interface) controller embedded in some sunxi
50	  SOCs.
51	  The P2WI looks like an SMBus controller (which supports only byte
52	  accesses), except that it only supports one slave device.
53	  This interface is used to connect to specific PMIC devices (like the
54	  AXP221).
55
56config SUN6I_PRCM
57	bool
58	help
59	  Support for the PRCM (Power/Reset/Clock Management) unit available
60	  in A31 SoC.
61
62config AXP_PMIC_BUS
63	bool "Sunxi AXP PMIC bus access helpers"
64	help
65	  Select this PMIC bus access helpers for Sunxi platform PRCM or other
66	  AXP family PMIC devices.
67
68config SUN8I_RSB
69	bool "Allwinner sunXi Reduced Serial Bus Driver"
70	help
71	  Say y here to enable support for Allwinner's Reduced Serial Bus
72	  (RSB) support. This controller is responsible for communicating
73	  with various RSB based devices, such as AXP223, AXP8XX PMICs,
74	  and AC100/AC200 ICs.
75
76config SUNXI_HIGH_SRAM
77	bool
78	default n
79	---help---
80	Older Allwinner SoCs have their mask boot ROM mapped just below 4GB,
81	with the first SRAM region being located at address 0.
82	Some newer SoCs map the boot ROM at address 0 instead and move the
83	SRAM to 64KB, just behind the mask ROM.
84	Chips using the latter setup are supposed to select this option to
85	adjust the addresses accordingly.
86
87# Note only one of these may be selected at a time! But hidden choices are
88# not supported by Kconfig
89config SUNXI_GEN_SUN4I
90	bool
91	---help---
92	Select this for sunxi SoCs which have resets and clocks set up
93	as the original A10 (mach-sun4i).
94
95config SUNXI_GEN_SUN6I
96	bool
97	---help---
98	Select this for sunxi SoCs which have sun6i like periphery, like
99	separate ahb reset control registers, custom pmic bus, new style
100	watchdog, etc.
101
102config SUNXI_DRAM_DW
103	bool
104	---help---
105	Select this for sunxi SoCs which uses a DRAM controller like the
106	DesignWare controller used in H3, mainly SoCs after H3, which do
107	not have official open-source DRAM initialization code, but can
108	use modified H3 DRAM initialization code.
109
110if SUNXI_DRAM_DW
111config SUNXI_DRAM_DW_16BIT
112	bool
113	---help---
114	Select this for sunxi SoCs with DesignWare DRAM controller and
115	have only 16-bit memory buswidth.
116
117config SUNXI_DRAM_DW_32BIT
118	bool
119	---help---
120	Select this for sunxi SoCs with DesignWare DRAM controller with
121	32-bit memory buswidth.
122endif
123
124config MACH_SUNXI_H3_H5
125	bool
126	select DM_I2C
127	select PHY_SUN4I_USB
128	select SUNXI_DE2
129	select SUNXI_DRAM_DW
130	select SUNXI_DRAM_DW_32BIT
131	select SUNXI_GEN_SUN6I
132	select SUPPORT_SPL
133
134choice
135	prompt "Sunxi SoC Variant"
136	optional
137
138config MACH_SUN4I
139	bool "sun4i (Allwinner A10)"
140	select CPU_V7A
141	select ARM_CORTEX_CPU_IS_UP
142	select PHY_SUN4I_USB
143	select DRAM_SUN4I
144	select SUNXI_GEN_SUN4I
145	select SUPPORT_SPL
146
147config MACH_SUN5I
148	bool "sun5i (Allwinner A13)"
149	select CPU_V7A
150	select ARM_CORTEX_CPU_IS_UP
151	select DRAM_SUN4I
152	select PHY_SUN4I_USB
153	select SUNXI_GEN_SUN4I
154	select SUPPORT_SPL
155	imply CONS_INDEX_2 if !DM_SERIAL
156
157config MACH_SUN6I
158	bool "sun6i (Allwinner A31)"
159	select CPU_V7A
160	select CPU_V7_HAS_NONSEC
161	select CPU_V7_HAS_VIRT
162	select ARCH_SUPPORT_PSCI
163	select DRAM_SUN6I
164	select PHY_SUN4I_USB
165	select SUN6I_P2WI
166	select SUN6I_PRCM
167	select SUNXI_GEN_SUN6I
168	select SUPPORT_SPL
169	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
170
171config MACH_SUN7I
172	bool "sun7i (Allwinner A20)"
173	select CPU_V7A
174	select CPU_V7_HAS_NONSEC
175	select CPU_V7_HAS_VIRT
176	select ARCH_SUPPORT_PSCI
177	select DRAM_SUN4I
178	select PHY_SUN4I_USB
179	select SUNXI_GEN_SUN4I
180	select SUPPORT_SPL
181	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
182
183config MACH_SUN8I_A23
184	bool "sun8i (Allwinner A23)"
185	select CPU_V7A
186	select CPU_V7_HAS_NONSEC
187	select CPU_V7_HAS_VIRT
188	select ARCH_SUPPORT_PSCI
189	select DRAM_SUN8I_A23
190	select PHY_SUN4I_USB
191	select SUNXI_GEN_SUN6I
192	select SUPPORT_SPL
193	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
194	imply CONS_INDEX_5 if !DM_SERIAL
195
196config MACH_SUN8I_A33
197	bool "sun8i (Allwinner A33)"
198	select CPU_V7A
199	select CPU_V7_HAS_NONSEC
200	select CPU_V7_HAS_VIRT
201	select ARCH_SUPPORT_PSCI
202	select DRAM_SUN8I_A33
203	select PHY_SUN4I_USB
204	select SUNXI_GEN_SUN6I
205	select SUPPORT_SPL
206	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
207	imply CONS_INDEX_5 if !DM_SERIAL
208
209config MACH_SUN8I_A83T
210	bool "sun8i (Allwinner A83T)"
211	select CPU_V7A
212	select DRAM_SUN8I_A83T
213	select PHY_SUN4I_USB
214	select SUNXI_GEN_SUN6I
215	select MMC_SUNXI_HAS_NEW_MODE
216	select SUPPORT_SPL
217
218config MACH_SUN8I_H3
219	bool "sun8i (Allwinner H3)"
220	select CPU_V7A
221	select CPU_V7_HAS_NONSEC
222	select CPU_V7_HAS_VIRT
223	select ARCH_SUPPORT_PSCI
224	select MACH_SUNXI_H3_H5
225	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
226
227config MACH_SUN8I_R40
228	bool "sun8i (Allwinner R40)"
229	select CPU_V7A
230	select CPU_V7_HAS_NONSEC
231	select CPU_V7_HAS_VIRT
232	select ARCH_SUPPORT_PSCI
233	select SUNXI_GEN_SUN6I
234	select SUPPORT_SPL
235	select SUNXI_DRAM_DW
236	select SUNXI_DRAM_DW_32BIT
237
238config MACH_SUN8I_V3S
239	bool "sun8i (Allwinner V3s)"
240	select CPU_V7A
241	select CPU_V7_HAS_NONSEC
242	select CPU_V7_HAS_VIRT
243	select ARCH_SUPPORT_PSCI
244	select SUNXI_GEN_SUN6I
245	select SUNXI_DRAM_DW
246	select SUNXI_DRAM_DW_16BIT
247	select SUPPORT_SPL
248	select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
249
250config MACH_SUN9I
251	bool "sun9i (Allwinner A80)"
252	select CPU_V7A
253	select DRAM_SUN9I
254	select SUN6I_PRCM
255	select SUNXI_HIGH_SRAM
256	select SUNXI_GEN_SUN6I
257	select SUN8I_RSB
258	select SUPPORT_SPL
259
260config MACH_SUN50I
261	bool "sun50i (Allwinner A64)"
262	select ARM64
263	select DM_I2C
264	select PHY_SUN4I_USB
265	select SUNXI_DE2
266	select SUNXI_GEN_SUN6I
267	select SUNXI_HIGH_SRAM
268	select SUPPORT_SPL
269	select SUNXI_DRAM_DW
270	select SUNXI_DRAM_DW_32BIT
271	select FIT
272	select SPL_LOAD_FIT
273
274config MACH_SUN50I_H5
275	bool "sun50i (Allwinner H5)"
276	select ARM64
277	select MACH_SUNXI_H3_H5
278	select SUNXI_HIGH_SRAM
279	select FIT
280	select SPL_LOAD_FIT
281
282endchoice
283
284# The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
285config MACH_SUN8I
286	bool
287	select SUN8I_RSB
288	select SUN6I_PRCM
289	default y if MACH_SUN8I_A23
290	default y if MACH_SUN8I_A33
291	default y if MACH_SUN8I_A83T
292	default y if MACH_SUNXI_H3_H5
293	default y if MACH_SUN8I_R40
294	default y if MACH_SUN8I_V3S
295
296config RESERVE_ALLWINNER_BOOT0_HEADER
297	bool "reserve space for Allwinner boot0 header"
298	select ENABLE_ARM_SOC_BOOT0_HOOK
299	---help---
300	Prepend a 1536 byte (empty) header to the U-Boot image file, to be
301	filled with magic values post build. The Allwinner provided boot0
302	blob relies on this information to load and execute U-Boot.
303	Only needed on 64-bit Allwinner boards so far when using boot0.
304
305config ARM_BOOT_HOOK_RMR
306	bool
307	depends on ARM64
308	default y
309	select ENABLE_ARM_SOC_BOOT0_HOOK
310	---help---
311	Insert some ARM32 code at the very beginning of the U-Boot binary
312	which uses an RMR register write to bring the core into AArch64 mode.
313	The very first instruction acts as a switch, since it's carefully
314	chosen to be a NOP in one mode and a branch in the other, so the
315	code would only be executed if not already in AArch64.
316	This allows both the SPL and the U-Boot proper to be entered in
317	either mode and switch to AArch64 if needed.
318
319if SUNXI_DRAM_DW
320config SUNXI_DRAM_DDR3
321	bool
322
323config SUNXI_DRAM_DDR2
324	bool
325
326config SUNXI_DRAM_LPDDR3
327	bool
328
329choice
330	prompt "DRAM Type and Timing"
331	default SUNXI_DRAM_DDR3_1333 if !MACH_SUN8I_V3S
332	default SUNXI_DRAM_DDR2_V3S if MACH_SUN8I_V3S
333
334config SUNXI_DRAM_DDR3_1333
335	bool "DDR3 1333"
336	select SUNXI_DRAM_DDR3
337	depends on !MACH_SUN8I_V3S
338	---help---
339	This option is the original only supported memory type, which suits
340	many H3/H5/A64 boards available now.
341
342config SUNXI_DRAM_LPDDR3_STOCK
343	bool "LPDDR3 with Allwinner stock configuration"
344	select SUNXI_DRAM_LPDDR3
345	---help---
346	This option is the LPDDR3 timing used by the stock boot0 by
347	Allwinner.
348
349config SUNXI_DRAM_DDR2_V3S
350	bool "DDR2 found in V3s chip"
351	select SUNXI_DRAM_DDR2
352	depends on MACH_SUN8I_V3S
353	---help---
354	This option is only for the DDR2 memory chip which is co-packaged in
355	Allwinner V3s SoC.
356
357endchoice
358endif
359
360config DRAM_TYPE
361	int "sunxi dram type"
362	depends on MACH_SUN8I_A83T
363	default 3
364	---help---
365	Set the dram type, 3: DDR3, 7: LPDDR3
366
367config DRAM_CLK
368	int "sunxi dram clock speed"
369	default 792 if MACH_SUN9I
370	default 648 if MACH_SUN8I_R40
371	default 312 if MACH_SUN6I || MACH_SUN8I
372	default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \
373		       MACH_SUN8I_V3S
374	default 672 if MACH_SUN50I
375	---help---
376	Set the dram clock speed, valid range 240 - 480 (prior to sun9i),
377	must be a multiple of 24. For the sun9i (A80), the tested values
378	(for DDR3-1600) are 312 to 792.
379
380if MACH_SUN5I || MACH_SUN7I
381config DRAM_MBUS_CLK
382	int "sunxi mbus clock speed"
383	default 300
384	---help---
385	Set the mbus clock speed. The maximum on sun5i hardware is 300MHz.
386
387endif
388
389config DRAM_ZQ
390	int "sunxi dram zq value"
391	default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
392	default 127 if MACH_SUN7I
393	default 14779 if MACH_SUN8I_V3S
394	default 3881979 if MACH_SUN8I_R40
395	default 4145117 if MACH_SUN9I
396	default 3881915 if MACH_SUN50I
397	---help---
398	Set the dram zq value.
399
400config DRAM_ODT_EN
401	bool "sunxi dram odt enable"
402	default n if !MACH_SUN8I_A23
403	default y if MACH_SUN8I_A23
404	default y if MACH_SUN8I_R40
405	default y if MACH_SUN50I
406	---help---
407	Select this to enable dram odt (on die termination).
408
409if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
410config DRAM_EMR1
411	int "sunxi dram emr1 value"
412	default 0 if MACH_SUN4I
413	default 4 if MACH_SUN5I || MACH_SUN7I
414	---help---
415	Set the dram controller emr1 value.
416
417config DRAM_TPR3
418	hex "sunxi dram tpr3 value"
419	default 0
420	---help---
421	Set the dram controller tpr3 parameter. This parameter configures
422	the delay on the command lane and also phase shifts, which are
423	applied for sampling incoming read data. The default value 0
424	means that no phase/delay adjustments are necessary. Properly
425	configuring this parameter increases reliability at high DRAM
426	clock speeds.
427
428config DRAM_DQS_GATING_DELAY
429	hex "sunxi dram dqs_gating_delay value"
430	default 0
431	---help---
432	Set the dram controller dqs_gating_delay parmeter. Each byte
433	encodes the DQS gating delay for each byte lane. The delay
434	granularity is 1/4 cycle. For example, the value 0x05060606
435	means that the delay is 5 quarter-cycles for one lane (1.25
436	cycles) and 6 quarter-cycles (1.5 cycles) for 3 other lanes.
437	The default value 0 means autodetection. The results of hardware
438	autodetection are not very reliable and depend on the chip
439	temperature (sometimes producing different results on cold start
440	and warm reboot). But the accuracy of hardware autodetection
441	is usually good enough, unless running at really high DRAM
442	clocks speeds (up to 600MHz). If unsure, keep as 0.
443
444choice
445	prompt "sunxi dram timings"
446	default DRAM_TIMINGS_VENDOR_MAGIC
447	---help---
448	Select the timings of the DDR3 chips.
449
450config DRAM_TIMINGS_VENDOR_MAGIC
451	bool "Magic vendor timings from Android"
452	---help---
453	The same DRAM timings as in the Allwinner boot0 bootloader.
454
455config DRAM_TIMINGS_DDR3_1066F_1333H
456	bool "JEDEC DDR3-1333H with down binning to DDR3-1066F"
457	---help---
458	Use the timings of the standard JEDEC DDR3-1066F speed bin for
459	DRAM_CLK <= 533MHz and the timings of the DDR3-1333H speed bin
460	for DRAM_CLK > 533MHz. This covers the majority of DDR3 chips
461	used in Allwinner A10/A13/A20 devices. In the case of DDR3-1333
462	or DDR3-1600 chips, be sure to check the DRAM datasheet to confirm
463	that down binning to DDR3-1066F is supported (because DDR3-1066F
464	uses a bit faster timings than DDR3-1333H).
465
466config DRAM_TIMINGS_DDR3_800E_1066G_1333J
467	bool "JEDEC DDR3-800E / DDR3-1066G / DDR3-1333J"
468	---help---
469	Use the timings of the slowest possible JEDEC speed bin for the
470	selected DRAM_CLK. Depending on the DRAM_CLK value, it may be
471	DDR3-800E, DDR3-1066G or DDR3-1333J.
472
473endchoice
474
475endif
476
477if MACH_SUN8I_A23
478config DRAM_ODT_CORRECTION
479	int "sunxi dram odt correction value"
480	default 0
481	---help---
482	Set the dram odt correction value (range -255 - 255). In allwinner
483	fex files, this option is found in bits 8-15 of the u32 odt_en variable
484	in the [dram] section. When bit 31 of the odt_en variable is set
485	then the correction is negative. Usually the value for this is 0.
486endif
487
488config SYS_CLK_FREQ
489	default 1008000000 if MACH_SUN4I
490	default 1008000000 if MACH_SUN5I
491	default 1008000000 if MACH_SUN6I
492	default 912000000 if MACH_SUN7I
493	default 816000000 if MACH_SUN50I || MACH_SUN50I_H5
494	default 1008000000 if MACH_SUN8I
495	default 1008000000 if MACH_SUN9I
496
497config SYS_CONFIG_NAME
498	default "sun4i" if MACH_SUN4I
499	default "sun5i" if MACH_SUN5I
500	default "sun6i" if MACH_SUN6I
501	default "sun7i" if MACH_SUN7I
502	default "sun8i" if MACH_SUN8I
503	default "sun9i" if MACH_SUN9I
504	default "sun50i" if MACH_SUN50I
505
506config SYS_BOARD
507	default "sunxi"
508
509config SYS_SOC
510	default "sunxi"
511
512config UART0_PORT_F
513	bool "UART0 on MicroSD breakout board"
514	default n
515	---help---
516	Repurpose the SD card slot for getting access to the UART0 serial
517	console. Primarily useful only for low level u-boot debugging on
518	tablets, where normal UART0 is difficult to access and requires
519	device disassembly and/or soldering. As the SD card can't be used
520	at the same time, the system can be only booted in the FEL mode.
521	Only enable this if you really know what you are doing.
522
523config OLD_SUNXI_KERNEL_COMPAT
524	bool "Enable workarounds for booting old kernels"
525	default n
526	---help---
527	Set this to enable various workarounds for old kernels, this results in
528	sub-optimal settings for newer kernels, only enable if needed.
529
530config MACPWR
531	string "MAC power pin"
532	default ""
533	help
534	  Set the pin used to power the MAC. This takes a string in the format
535	  understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
536
537config MMC0_CD_PIN
538	string "Card detect pin for mmc0"
539	default "PF6" if MACH_SUN8I_A83T || MACH_SUNXI_H3_H5 || MACH_SUN50I
540	default ""
541	---help---
542	Set the card detect pin for mmc0, leave empty to not use cd. This
543	takes a string in the format understood by sunxi_name_to_gpio, e.g.
544	PH1 for pin 1 of port H.
545
546config MMC1_CD_PIN
547	string "Card detect pin for mmc1"
548	default ""
549	---help---
550	See MMC0_CD_PIN help text.
551
552config MMC2_CD_PIN
553	string "Card detect pin for mmc2"
554	default ""
555	---help---
556	See MMC0_CD_PIN help text.
557
558config MMC3_CD_PIN
559	string "Card detect pin for mmc3"
560	default ""
561	---help---
562	See MMC0_CD_PIN help text.
563
564config MMC1_PINS
565	string "Pins for mmc1"
566	default ""
567	---help---
568	Set the pins used for mmc1, when applicable. This takes a string in the
569	format understood by sunxi_name_to_gpio_bank, e.g. PH for port H.
570
571config MMC2_PINS
572	string "Pins for mmc2"
573	default ""
574	---help---
575	See MMC1_PINS help text.
576
577config MMC3_PINS
578	string "Pins for mmc3"
579	default ""
580	---help---
581	See MMC1_PINS help text.
582
583config MMC_SUNXI_SLOT_EXTRA
584	int "mmc extra slot number"
585	default -1
586	---help---
587	sunxi builds always enable mmc0, some boards also have a second sdcard
588	slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
589	support for this.
590
591config INITIAL_USB_SCAN_DELAY
592	int "delay initial usb scan by x ms to allow builtin devices to init"
593	default 0
594	---help---
595	Some boards have on board usb devices which need longer than the
596	USB spec's 1 second to connect from board powerup. Set this config
597	option to a non 0 value to add an extra delay before the first usb
598	bus scan.
599
600config USB0_VBUS_PIN
601	string "Vbus enable pin for usb0 (otg)"
602	default ""
603	---help---
604	Set the Vbus enable pin for usb0 (otg). This takes a string in the
605	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
606
607config USB0_VBUS_DET
608	string "Vbus detect pin for usb0 (otg)"
609	default ""
610	---help---
611	Set the Vbus detect pin for usb0 (otg). This takes a string in the
612	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
613
614config USB0_ID_DET
615	string "ID detect pin for usb0 (otg)"
616	default ""
617	---help---
618	Set the ID detect pin for usb0 (otg). This takes a string in the
619	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
620
621config USB1_VBUS_PIN
622	string "Vbus enable pin for usb1 (ehci0)"
623	default "PH6" if MACH_SUN4I || MACH_SUN7I
624	default "PH27" if MACH_SUN6I
625	---help---
626	Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
627	a string in the format understood by sunxi_name_to_gpio, e.g.
628	PH1 for pin 1 of port H.
629
630config USB2_VBUS_PIN
631	string "Vbus enable pin for usb2 (ehci1)"
632	default "PH3" if MACH_SUN4I || MACH_SUN7I
633	default "PH24" if MACH_SUN6I
634	---help---
635	See USB1_VBUS_PIN help text.
636
637config USB3_VBUS_PIN
638	string "Vbus enable pin for usb3 (ehci2)"
639	default ""
640	---help---
641	See USB1_VBUS_PIN help text.
642
643config I2C0_ENABLE
644	bool "Enable I2C/TWI controller 0"
645	default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_R40
646	default n if MACH_SUN6I || MACH_SUN8I
647	select CMD_I2C
648	---help---
649	This allows enabling I2C/TWI controller 0 by muxing its pins, enabling
650	its clock and setting up the bus. This is especially useful on devices
651	with slaves connected to the bus or with pins exposed through e.g. an
652	expansion port/header.
653
654config I2C1_ENABLE
655	bool "Enable I2C/TWI controller 1"
656	default n
657	select CMD_I2C
658	---help---
659	See I2C0_ENABLE help text.
660
661config I2C2_ENABLE
662	bool "Enable I2C/TWI controller 2"
663	default n
664	select CMD_I2C
665	---help---
666	See I2C0_ENABLE help text.
667
668if MACH_SUN6I || MACH_SUN7I
669config I2C3_ENABLE
670	bool "Enable I2C/TWI controller 3"
671	default n
672	select CMD_I2C
673	---help---
674	See I2C0_ENABLE help text.
675endif
676
677if SUNXI_GEN_SUN6I
678config R_I2C_ENABLE
679	bool "Enable the PRCM I2C/TWI controller"
680	# This is used for the pmic on H3
681	default y if SY8106A_POWER
682	select CMD_I2C
683	---help---
684	Set this to y to enable the I2C controller which is part of the PRCM.
685endif
686
687if MACH_SUN7I
688config I2C4_ENABLE
689	bool "Enable I2C/TWI controller 4"
690	default n
691	select CMD_I2C
692	---help---
693	See I2C0_ENABLE help text.
694endif
695
696config AXP_GPIO
697	bool "Enable support for gpio-s on axp PMICs"
698	default n
699	---help---
700	Say Y here to enable support for the gpio pins of the axp PMIC ICs.
701
702config VIDEO_SUNXI
703	bool "Enable graphical uboot console on HDMI, LCD or VGA"
704	depends on !MACH_SUN8I_A83T
705	depends on !MACH_SUNXI_H3_H5
706	depends on !MACH_SUN8I_R40
707	depends on !MACH_SUN8I_V3S
708	depends on !MACH_SUN9I
709	depends on !MACH_SUN50I
710	select VIDEO
711	imply VIDEO_DT_SIMPLEFB
712	default y
713	---help---
714	Say Y here to add support for using a cfb console on the HDMI, LCD
715	or VGA output found on most sunxi devices. See doc/README.video for
716	info on how to select the video output and mode.
717
718config VIDEO_HDMI
719	bool "HDMI output support"
720	depends on VIDEO_SUNXI && !MACH_SUN8I
721	default y
722	---help---
723	Say Y here to add support for outputting video over HDMI.
724
725config VIDEO_VGA
726	bool "VGA output support"
727	depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN7I)
728	default n
729	---help---
730	Say Y here to add support for outputting video over VGA.
731
732config VIDEO_VGA_VIA_LCD
733	bool "VGA via LCD controller support"
734	depends on VIDEO_SUNXI && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
735	default n
736	---help---
737	Say Y here to add support for external DACs connected to the parallel
738	LCD interface driving a VGA connector, such as found on the
739	Olimex A13 boards.
740
741config VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH
742	bool "Force sync active high for VGA via LCD controller support"
743	depends on VIDEO_VGA_VIA_LCD
744	default n
745	---help---
746	Say Y here if you've a board which uses opendrain drivers for the vga
747	hsync and vsync signals. Opendrain drivers cannot generate steep enough
748	positive edges for a stable video output, so on boards with opendrain
749	drivers the sync signals must always be active high.
750
751config VIDEO_VGA_EXTERNAL_DAC_EN
752	string "LCD panel power enable pin"
753	depends on VIDEO_VGA_VIA_LCD
754	default ""
755	---help---
756	Set the enable pin for the external VGA DAC. This takes a string in the
757	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
758
759config VIDEO_COMPOSITE
760	bool "Composite video output support"
761	depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
762	default n
763	---help---
764	Say Y here to add support for outputting composite video.
765
766config VIDEO_LCD_MODE
767	string "LCD panel timing details"
768	depends on VIDEO_SUNXI
769	default ""
770	---help---
771	LCD panel timing details string, leave empty if there is no LCD panel.
772	This is in drivers/video/videomodes.c: video_get_params() format, e.g.
773	x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0
774	Also see: http://linux-sunxi.org/LCD
775
776config VIDEO_LCD_DCLK_PHASE
777	int "LCD panel display clock phase"
778	depends on VIDEO_SUNXI || DM_VIDEO
779	default 1
780	---help---
781	Select LCD panel display clock phase shift, range 0-3.
782
783config VIDEO_LCD_POWER
784	string "LCD panel power enable pin"
785	depends on VIDEO_SUNXI
786	default ""
787	---help---
788	Set the power enable pin for the LCD panel. This takes a string in the
789	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
790
791config VIDEO_LCD_RESET
792	string "LCD panel reset pin"
793	depends on VIDEO_SUNXI
794	default ""
795	---help---
796	Set the reset pin for the LCD panel. This takes a string in the format
797	understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
798
799config VIDEO_LCD_BL_EN
800	string "LCD panel backlight enable pin"
801	depends on VIDEO_SUNXI
802	default ""
803	---help---
804	Set the backlight enable pin for the LCD panel. This takes a string in the
805	the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
806	port H.
807
808config VIDEO_LCD_BL_PWM
809	string "LCD panel backlight pwm pin"
810	depends on VIDEO_SUNXI
811	default ""
812	---help---
813	Set the backlight pwm pin for the LCD panel. This takes a string in the
814	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
815
816config VIDEO_LCD_BL_PWM_ACTIVE_LOW
817	bool "LCD panel backlight pwm is inverted"
818	depends on VIDEO_SUNXI
819	default y
820	---help---
821	Set this if the backlight pwm output is active low.
822
823config VIDEO_LCD_PANEL_I2C
824	bool "LCD panel needs to be configured via i2c"
825	depends on VIDEO_SUNXI
826	default n
827	select CMD_I2C
828	---help---
829	Say y here if the LCD panel needs to be configured via i2c. This
830	will add a bitbang i2c controller using gpios to talk to the LCD.
831
832config VIDEO_LCD_PANEL_I2C_SDA
833	string "LCD panel i2c interface SDA pin"
834	depends on VIDEO_LCD_PANEL_I2C
835	default "PG12"
836	---help---
837	Set the SDA pin for the LCD i2c interface. This takes a string in the
838	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
839
840config VIDEO_LCD_PANEL_I2C_SCL
841	string "LCD panel i2c interface SCL pin"
842	depends on VIDEO_LCD_PANEL_I2C
843	default "PG10"
844	---help---
845	Set the SCL pin for the LCD i2c interface. This takes a string in the
846	format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
847
848
849# Note only one of these may be selected at a time! But hidden choices are
850# not supported by Kconfig
851config VIDEO_LCD_IF_PARALLEL
852	bool
853
854config VIDEO_LCD_IF_LVDS
855	bool
856
857config SUNXI_DE2
858	bool
859	default n
860
861config VIDEO_DE2
862	bool "Display Engine 2 video driver"
863	depends on SUNXI_DE2
864	select DM_VIDEO
865	select DISPLAY
866	imply VIDEO_DT_SIMPLEFB
867	default y
868	---help---
869	Say y here if you want to build DE2 video driver which is present on
870	newer SoCs. Currently only HDMI output is supported.
871
872
873choice
874	prompt "LCD panel support"
875	depends on VIDEO_SUNXI
876	---help---
877	Select which type of LCD panel to support.
878
879config VIDEO_LCD_PANEL_PARALLEL
880	bool "Generic parallel interface LCD panel"
881	select VIDEO_LCD_IF_PARALLEL
882
883config VIDEO_LCD_PANEL_LVDS
884	bool "Generic lvds interface LCD panel"
885	select VIDEO_LCD_IF_LVDS
886
887config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
888	bool "MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip"
889	select VIDEO_LCD_SSD2828
890	select VIDEO_LCD_IF_PARALLEL
891	---help---
892	7.85" 768x1024 LCD panels, such as LG LP079X01 or AUO B079XAN01.0
893
894config VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804
895	bool "eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip"
896	select VIDEO_LCD_ANX9804
897	select VIDEO_LCD_IF_PARALLEL
898	select VIDEO_LCD_PANEL_I2C
899	---help---
900	Select this for eDP LCD panels with 4 lanes running at 1.62G,
901	connected via an ANX9804 bridge chip.
902
903config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
904	bool "Hitachi tx18d42vm LCD panel"
905	select VIDEO_LCD_HITACHI_TX18D42VM
906	select VIDEO_LCD_IF_LVDS
907	---help---
908	7.85" 1024x768 Hitachi tx18d42vm LCD panel support
909
910config VIDEO_LCD_TL059WV5C0
911	bool "tl059wv5c0 LCD panel"
912	select VIDEO_LCD_PANEL_I2C
913	select VIDEO_LCD_IF_PARALLEL
914	---help---
915	6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
916	Aigo M60/M608/M606 tablets.
917
918endchoice
919
920config SATAPWR
921	string "SATA power pin"
922	default ""
923	help
924	  Set the pins used to power the SATA. This takes a string in the
925	  format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
926	  port H.
927
928config GMAC_TX_DELAY
929	int "GMAC Transmit Clock Delay Chain"
930	default 0
931	---help---
932	Set the GMAC Transmit Clock Delay Chain value.
933
934config SPL_STACK_R_ADDR
935	default 0x4fe00000 if MACH_SUN4I
936	default 0x4fe00000 if MACH_SUN5I
937	default 0x4fe00000 if MACH_SUN6I
938	default 0x4fe00000 if MACH_SUN7I
939	default 0x4fe00000 if MACH_SUN8I
940	default 0x2fe00000 if MACH_SUN9I
941	default 0x4fe00000 if MACH_SUN50I
942
943config SPL_SPI_SUNXI
944	bool "Support for SPI Flash on Allwinner SoCs in SPL"
945	depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUNXI_H3_H5 || MACH_SUN50I
946	help
947	  Enable support for SPI Flash. This option allows SPL to read from
948	  sunxi SPI Flash. It uses the same method as the boot ROM, so does
949	  not need any extra configuration.
950
951endif
952