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