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