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