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