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