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