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