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