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