3 config SPL_GPIO_SUPPORT
6 config SPL_LIBCOMMON_SUPPORT
9 config SPL_LIBDISK_SUPPORT
12 config SPL_LIBGENERIC_SUPPORT
15 config SPL_MMC_SUPPORT
18 config SPL_POWER_SUPPORT
21 # Note only one of these may be selected at a time! But hidden choices are
22 # not supported by Kconfig
23 config SUNXI_GEN_SUN4I
26 Select this for sunxi SoCs which have resets and clocks set up
27 as the original A10 (mach-sun4i).
29 config SUNXI_GEN_SUN6I
32 Select this for sunxi SoCs which have sun6i like periphery, like
33 separate ahb reset control registers, custom pmic bus, new style
38 prompt "Sunxi SoC Variant"
42 bool "sun4i (Allwinner A10)"
44 select SUNXI_GEN_SUN4I
48 bool "sun5i (Allwinner A13)"
50 select SUNXI_GEN_SUN4I
54 bool "sun6i (Allwinner A31)"
56 select CPU_V7_HAS_NONSEC
57 select CPU_V7_HAS_VIRT
58 select ARCH_SUPPORT_PSCI
59 select SUNXI_GEN_SUN6I
61 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
64 bool "sun7i (Allwinner A20)"
66 select CPU_V7_HAS_NONSEC
67 select CPU_V7_HAS_VIRT
68 select ARCH_SUPPORT_PSCI
69 select SUNXI_GEN_SUN4I
71 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
74 bool "sun8i (Allwinner A23)"
76 select CPU_V7_HAS_NONSEC
77 select CPU_V7_HAS_VIRT
78 select ARCH_SUPPORT_PSCI
79 select SUNXI_GEN_SUN6I
81 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
84 bool "sun8i (Allwinner A33)"
86 select CPU_V7_HAS_NONSEC
87 select CPU_V7_HAS_VIRT
88 select ARCH_SUPPORT_PSCI
89 select SUNXI_GEN_SUN6I
91 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
93 config MACH_SUN8I_A83T
94 bool "sun8i (Allwinner A83T)"
96 select SUNXI_GEN_SUN6I
100 bool "sun8i (Allwinner H3)"
102 select CPU_V7_HAS_NONSEC
103 select CPU_V7_HAS_VIRT
104 select ARCH_SUPPORT_PSCI
105 select SUNXI_GEN_SUN6I
107 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
110 bool "sun9i (Allwinner A80)"
112 select SUNXI_GEN_SUN6I
115 bool "sun50i (Allwinner A64)"
117 select SUNXI_GEN_SUN6I
121 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
124 default y if MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_H3 || MACH_SUN8I_A83T
127 int "sunxi dram type"
128 depends on MACH_SUN8I_A83T
131 Set the dram type, 3: DDR3, 7: LPDDR3
134 int "sunxi dram clock speed"
135 default 312 if MACH_SUN6I || MACH_SUN8I
136 default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
138 Set the dram clock speed, valid range 240 - 480, must be a multiple
141 if MACH_SUN5I || MACH_SUN7I
143 int "sunxi mbus clock speed"
146 Set the mbus clock speed. The maximum on sun5i hardware is 300MHz.
151 int "sunxi dram zq value"
152 default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
153 default 127 if MACH_SUN7I
155 Set the dram zq value.
158 bool "sunxi dram odt enable"
159 default n if !MACH_SUN8I_A23
160 default y if MACH_SUN8I_A23
162 Select this to enable dram odt (on die termination).
164 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
166 int "sunxi dram emr1 value"
167 default 0 if MACH_SUN4I
168 default 4 if MACH_SUN5I || MACH_SUN7I
170 Set the dram controller emr1 value.
173 hex "sunxi dram tpr3 value"
176 Set the dram controller tpr3 parameter. This parameter configures
177 the delay on the command lane and also phase shifts, which are
178 applied for sampling incoming read data. The default value 0
179 means that no phase/delay adjustments are necessary. Properly
180 configuring this parameter increases reliability at high DRAM
183 config DRAM_DQS_GATING_DELAY
184 hex "sunxi dram dqs_gating_delay value"
187 Set the dram controller dqs_gating_delay parmeter. Each byte
188 encodes the DQS gating delay for each byte lane. The delay
189 granularity is 1/4 cycle. For example, the value 0x05060606
190 means that the delay is 5 quarter-cycles for one lane (1.25
191 cycles) and 6 quarter-cycles (1.5 cycles) for 3 other lanes.
192 The default value 0 means autodetection. The results of hardware
193 autodetection are not very reliable and depend on the chip
194 temperature (sometimes producing different results on cold start
195 and warm reboot). But the accuracy of hardware autodetection
196 is usually good enough, unless running at really high DRAM
197 clocks speeds (up to 600MHz). If unsure, keep as 0.
200 prompt "sunxi dram timings"
201 default DRAM_TIMINGS_VENDOR_MAGIC
203 Select the timings of the DDR3 chips.
205 config DRAM_TIMINGS_VENDOR_MAGIC
206 bool "Magic vendor timings from Android"
208 The same DRAM timings as in the Allwinner boot0 bootloader.
210 config DRAM_TIMINGS_DDR3_1066F_1333H
211 bool "JEDEC DDR3-1333H with down binning to DDR3-1066F"
213 Use the timings of the standard JEDEC DDR3-1066F speed bin for
214 DRAM_CLK <= 533MHz and the timings of the DDR3-1333H speed bin
215 for DRAM_CLK > 533MHz. This covers the majority of DDR3 chips
216 used in Allwinner A10/A13/A20 devices. In the case of DDR3-1333
217 or DDR3-1600 chips, be sure to check the DRAM datasheet to confirm
218 that down binning to DDR3-1066F is supported (because DDR3-1066F
219 uses a bit faster timings than DDR3-1333H).
221 config DRAM_TIMINGS_DDR3_800E_1066G_1333J
222 bool "JEDEC DDR3-800E / DDR3-1066G / DDR3-1333J"
224 Use the timings of the slowest possible JEDEC speed bin for the
225 selected DRAM_CLK. Depending on the DRAM_CLK value, it may be
226 DDR3-800E, DDR3-1066G or DDR3-1333J.
233 config DRAM_ODT_CORRECTION
234 int "sunxi dram odt correction value"
237 Set the dram odt correction value (range -255 - 255). In allwinner
238 fex files, this option is found in bits 8-15 of the u32 odt_en variable
239 in the [dram] section. When bit 31 of the odt_en variable is set
240 then the correction is negative. Usually the value for this is 0.
244 default 816000000 if MACH_SUN50I
245 default 912000000 if MACH_SUN7I
246 default 1008000000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
248 config SYS_CONFIG_NAME
249 default "sun4i" if MACH_SUN4I
250 default "sun5i" if MACH_SUN5I
251 default "sun6i" if MACH_SUN6I
252 default "sun7i" if MACH_SUN7I
253 default "sun8i" if MACH_SUN8I
254 default "sun9i" if MACH_SUN9I
255 default "sun50i" if MACH_SUN50I
264 bool "UART0 on MicroSD breakout board"
267 Repurpose the SD card slot for getting access to the UART0 serial
268 console. Primarily useful only for low level u-boot debugging on
269 tablets, where normal UART0 is difficult to access and requires
270 device disassembly and/or soldering. As the SD card can't be used
271 at the same time, the system can be only booted in the FEL mode.
272 Only enable this if you really know what you are doing.
274 config OLD_SUNXI_KERNEL_COMPAT
275 bool "Enable workarounds for booting old kernels"
278 Set this to enable various workarounds for old kernels, this results in
279 sub-optimal settings for newer kernels, only enable if needed.
282 depends on !UART0_PORT_F
283 default y if ARCH_SUNXI
286 string "Card detect pin for mmc0"
287 default "PF6" if MACH_SUN8I_A83T || MACH_SUN8I_H3 || MACH_SUN50I
290 Set the card detect pin for mmc0, leave empty to not use cd. This
291 takes a string in the format understood by sunxi_name_to_gpio, e.g.
292 PH1 for pin 1 of port H.
295 string "Card detect pin for mmc1"
298 See MMC0_CD_PIN help text.
301 string "Card detect pin for mmc2"
304 See MMC0_CD_PIN help text.
307 string "Card detect pin for mmc3"
310 See MMC0_CD_PIN help text.
313 string "Pins for mmc1"
316 Set the pins used for mmc1, when applicable. This takes a string in the
317 format understood by sunxi_name_to_gpio_bank, e.g. PH for port H.
320 string "Pins for mmc2"
323 See MMC1_PINS help text.
326 string "Pins for mmc3"
329 See MMC1_PINS help text.
331 config MMC_SUNXI_SLOT_EXTRA
332 int "mmc extra slot number"
335 sunxi builds always enable mmc0, some boards also have a second sdcard
336 slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
339 config INITIAL_USB_SCAN_DELAY
340 int "delay initial usb scan by x ms to allow builtin devices to init"
343 Some boards have on board usb devices which need longer than the
344 USB spec's 1 second to connect from board powerup. Set this config
345 option to a non 0 value to add an extra delay before the first usb
349 string "Vbus enable pin for usb0 (otg)"
352 Set the Vbus enable pin for usb0 (otg). This takes a string in the
353 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
356 string "Vbus detect pin for usb0 (otg)"
359 Set the Vbus detect pin for usb0 (otg). This takes a string in the
360 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
363 string "ID detect pin for usb0 (otg)"
366 Set the ID detect pin for usb0 (otg). This takes a string in the
367 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
370 string "Vbus enable pin for usb1 (ehci0)"
371 default "PH6" if MACH_SUN4I || MACH_SUN7I
372 default "PH27" if MACH_SUN6I
374 Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
375 a string in the format understood by sunxi_name_to_gpio, e.g.
376 PH1 for pin 1 of port H.
379 string "Vbus enable pin for usb2 (ehci1)"
380 default "PH3" if MACH_SUN4I || MACH_SUN7I
381 default "PH24" if MACH_SUN6I
383 See USB1_VBUS_PIN help text.
386 string "Vbus enable pin for usb3 (ehci2)"
389 See USB1_VBUS_PIN help text.
392 bool "Enable I2C/TWI controller 0"
393 default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
394 default n if MACH_SUN6I || MACH_SUN8I
397 This allows enabling I2C/TWI controller 0 by muxing its pins, enabling
398 its clock and setting up the bus. This is especially useful on devices
399 with slaves connected to the bus or with pins exposed through e.g. an
400 expansion port/header.
403 bool "Enable I2C/TWI controller 1"
407 See I2C0_ENABLE help text.
410 bool "Enable I2C/TWI controller 2"
414 See I2C0_ENABLE help text.
416 if MACH_SUN6I || MACH_SUN7I
418 bool "Enable I2C/TWI controller 3"
422 See I2C0_ENABLE help text.
427 bool "Enable the PRCM I2C/TWI controller"
428 # This is used for the pmic on H3
429 default y if SY8106A_POWER
432 Set this to y to enable the I2C controller which is part of the PRCM.
437 bool "Enable I2C/TWI controller 4"
441 See I2C0_ENABLE help text.
445 bool "Enable support for gpio-s on axp PMICs"
448 Say Y here to enable support for the gpio pins of the axp PMIC ICs.
451 bool "Enable graphical uboot console on HDMI, LCD or VGA"
452 depends on !MACH_SUN8I_A83T && !MACH_SUN8I_H3 && !MACH_SUN9I && !MACH_SUN50I
455 Say Y here to add support for using a cfb console on the HDMI, LCD
456 or VGA output found on most sunxi devices. See doc/README.video for
457 info on how to select the video output and mode.
460 bool "HDMI output support"
461 depends on VIDEO && !MACH_SUN8I
464 Say Y here to add support for outputting video over HDMI.
467 bool "VGA output support"
468 depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
471 Say Y here to add support for outputting video over VGA.
473 config VIDEO_VGA_VIA_LCD
474 bool "VGA via LCD controller support"
475 depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
478 Say Y here to add support for external DACs connected to the parallel
479 LCD interface driving a VGA connector, such as found on the
482 config VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH
483 bool "Force sync active high for VGA via LCD controller support"
484 depends on VIDEO_VGA_VIA_LCD
487 Say Y here if you've a board which uses opendrain drivers for the vga
488 hsync and vsync signals. Opendrain drivers cannot generate steep enough
489 positive edges for a stable video output, so on boards with opendrain
490 drivers the sync signals must always be active high.
492 config VIDEO_VGA_EXTERNAL_DAC_EN
493 string "LCD panel power enable pin"
494 depends on VIDEO_VGA_VIA_LCD
497 Set the enable pin for the external VGA DAC. This takes a string in the
498 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
500 config VIDEO_COMPOSITE
501 bool "Composite video output support"
502 depends on VIDEO && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
505 Say Y here to add support for outputting composite video.
507 config VIDEO_LCD_MODE
508 string "LCD panel timing details"
512 LCD panel timing details string, leave empty if there is no LCD panel.
513 This is in drivers/video/videomodes.c: video_get_params() format, e.g.
514 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
515 Also see: http://linux-sunxi.org/LCD
517 config VIDEO_LCD_DCLK_PHASE
518 int "LCD panel display clock phase"
522 Select LCD panel display clock phase shift, range 0-3.
524 config VIDEO_LCD_POWER
525 string "LCD panel power enable pin"
529 Set the power enable pin for the LCD panel. This takes a string in the
530 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
532 config VIDEO_LCD_RESET
533 string "LCD panel reset pin"
537 Set the reset pin for the LCD panel. This takes a string in the format
538 understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
540 config VIDEO_LCD_BL_EN
541 string "LCD panel backlight enable pin"
545 Set the backlight enable pin for the LCD panel. This takes a string in the
546 the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
549 config VIDEO_LCD_BL_PWM
550 string "LCD panel backlight pwm pin"
554 Set the backlight pwm pin for the LCD panel. This takes a string in the
555 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
557 config VIDEO_LCD_BL_PWM_ACTIVE_LOW
558 bool "LCD panel backlight pwm is inverted"
562 Set this if the backlight pwm output is active low.
564 config VIDEO_LCD_PANEL_I2C
565 bool "LCD panel needs to be configured via i2c"
570 Say y here if the LCD panel needs to be configured via i2c. This
571 will add a bitbang i2c controller using gpios to talk to the LCD.
573 config VIDEO_LCD_PANEL_I2C_SDA
574 string "LCD panel i2c interface SDA pin"
575 depends on VIDEO_LCD_PANEL_I2C
578 Set the SDA pin for the LCD i2c interface. This takes a string in the
579 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
581 config VIDEO_LCD_PANEL_I2C_SCL
582 string "LCD panel i2c interface SCL pin"
583 depends on VIDEO_LCD_PANEL_I2C
586 Set the SCL pin for the LCD i2c interface. This takes a string in the
587 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
590 # Note only one of these may be selected at a time! But hidden choices are
591 # not supported by Kconfig
592 config VIDEO_LCD_IF_PARALLEL
595 config VIDEO_LCD_IF_LVDS
600 prompt "LCD panel support"
603 Select which type of LCD panel to support.
605 config VIDEO_LCD_PANEL_PARALLEL
606 bool "Generic parallel interface LCD panel"
607 select VIDEO_LCD_IF_PARALLEL
609 config VIDEO_LCD_PANEL_LVDS
610 bool "Generic lvds interface LCD panel"
611 select VIDEO_LCD_IF_LVDS
613 config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
614 bool "MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip"
615 select VIDEO_LCD_SSD2828
616 select VIDEO_LCD_IF_PARALLEL
618 7.85" 768x1024 LCD panels, such as LG LP079X01 or AUO B079XAN01.0
620 config VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804
621 bool "eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip"
622 select VIDEO_LCD_ANX9804
623 select VIDEO_LCD_IF_PARALLEL
624 select VIDEO_LCD_PANEL_I2C
626 Select this for eDP LCD panels with 4 lanes running at 1.62G,
627 connected via an ANX9804 bridge chip.
629 config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
630 bool "Hitachi tx18d42vm LCD panel"
631 select VIDEO_LCD_HITACHI_TX18D42VM
632 select VIDEO_LCD_IF_LVDS
634 7.85" 1024x768 Hitachi tx18d42vm LCD panel support
636 config VIDEO_LCD_TL059WV5C0
637 bool "tl059wv5c0 LCD panel"
638 select VIDEO_LCD_PANEL_I2C
639 select VIDEO_LCD_IF_PARALLEL
641 6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
642 Aigo M60/M608/M606 tablets.
648 int "GMAC Transmit Clock Delay Chain"
651 Set the GMAC Transmit Clock Delay Chain value.
653 config SPL_STACK_R_ADDR
654 default 0x4fe00000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN7I || MACH_SUN8I || MACH_SUN50I
655 default 0x2fe00000 if MACH_SUN9I