]> git.sur5r.net Git - u-boot/blob - arch/arm/mach-sunxi/Kconfig
sunxi: Add SUN6I_P2WI kconfig entry
[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 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
20 config SUN6I_PRCM
21         bool
22         help
23           Support for the PRCM (Power/Reset/Clock Management) unit available
24           in A31 SoC.
25
26 config 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
39 config 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
45 config 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
52 config 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
60 if SUNXI_DRAM_DW
61 config 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
67 config SUNXI_DRAM_DW_32BIT
68         bool
69         ---help---
70         Select this for sunxi SoCs with DesignWare DRAM controller with
71         32-bit memory buswidth.
72 endif
73
74 config 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
83 choice
84         prompt "Sunxi SoC Variant"
85         optional
86
87 config 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
94 config 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
102 config 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
114 config 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
124 config 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
135 config 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
146 config 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
153 config 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
162 config 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
173 config 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
185 config 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
192 config 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
205 config 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
213 endchoice
214
215 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
216 config 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
225 config 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
234 config 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
248 if SUNXI_DRAM_DW
249 config SUNXI_DRAM_DDR3
250         bool
251
252 config SUNXI_DRAM_DDR2
253         bool
254
255 config SUNXI_DRAM_LPDDR3
256         bool
257
258 choice
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
263 config 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
271 config 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
278 config 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
286 endchoice
287 endif
288
289 config 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
296 config 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
309 if MACH_SUN5I || MACH_SUN7I
310 config 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
316 endif
317
318 config 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
329 config 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
338 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
339 config 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
346 config 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
357 config 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
373 choice
374         prompt "sunxi dram timings"
375         default DRAM_TIMINGS_VENDOR_MAGIC
376         ---help---
377         Select the timings of the DDR3 chips.
378
379 config 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
384 config 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
395 config 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
402 endchoice
403
404 endif
405
406 if MACH_SUN8I_A23
407 config 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.
415 endif
416
417 config 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
426 config 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
435 config SYS_BOARD
436         default "sunxi"
437
438 config SYS_SOC
439         default "sunxi"
440
441 config 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
452 config 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
459 config 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
466 config 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
475 config MMC1_CD_PIN
476         string "Card detect pin for mmc1"
477         default ""
478         ---help---
479         See MMC0_CD_PIN help text.
480
481 config MMC2_CD_PIN
482         string "Card detect pin for mmc2"
483         default ""
484         ---help---
485         See MMC0_CD_PIN help text.
486
487 config MMC3_CD_PIN
488         string "Card detect pin for mmc3"
489         default ""
490         ---help---
491         See MMC0_CD_PIN help text.
492
493 config 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
500 config MMC2_PINS
501         string "Pins for mmc2"
502         default ""
503         ---help---
504         See MMC1_PINS help text.
505
506 config MMC3_PINS
507         string "Pins for mmc3"
508         default ""
509         ---help---
510         See MMC1_PINS help text.
511
512 config 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
520 config 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
529 config 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
536 config 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
543 config 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
550 config 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
559 config 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
566 config USB3_VBUS_PIN
567         string "Vbus enable pin for usb3 (ehci2)"
568         default ""
569         ---help---
570         See USB1_VBUS_PIN help text.
571
572 config 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
583 config 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
590 config 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
597 if MACH_SUN6I || MACH_SUN7I
598 config I2C3_ENABLE
599         bool "Enable I2C/TWI controller 3"
600         default n
601         select CMD_I2C
602         ---help---
603         See I2C0_ENABLE help text.
604 endif
605
606 if SUNXI_GEN_SUN6I
607 config 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.
614 endif
615
616 if MACH_SUN7I
617 config I2C4_ENABLE
618         bool "Enable I2C/TWI controller 4"
619         default n
620         select CMD_I2C
621         ---help---
622         See I2C0_ENABLE help text.
623 endif
624
625 config 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
631 config 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
647 config 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
654 config 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
661 config 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
670 config 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
680 config 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
688 config 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
695 config 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
705 config 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
712 config 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
720 config 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
728 config 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
737 config 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
745 config 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
752 config 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
761 config 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
769 config 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
780 config VIDEO_LCD_IF_PARALLEL
781         bool
782
783 config VIDEO_LCD_IF_LVDS
784         bool
785
786 config SUNXI_DE2
787         bool
788         default n
789
790 config 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
802 choice
803         prompt "LCD panel support"
804         depends on VIDEO_SUNXI
805         ---help---
806         Select which type of LCD panel to support.
807
808 config VIDEO_LCD_PANEL_PARALLEL
809         bool "Generic parallel interface LCD panel"
810         select VIDEO_LCD_IF_PARALLEL
811
812 config VIDEO_LCD_PANEL_LVDS
813         bool "Generic lvds interface LCD panel"
814         select VIDEO_LCD_IF_LVDS
815
816 config 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
823 config 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
832 config 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
839 config 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
847 endchoice
848
849 config 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
857 config 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
863 config 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
872 config 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
880 endif