4 default " Allwinner Technology"
6 config PRE_CONSOLE_BUFFER
9 config SPL_GPIO_SUPPORT
12 config SPL_LIBCOMMON_SUPPORT
15 config SPL_LIBDISK_SUPPORT
18 config SPL_LIBGENERIC_SUPPORT
21 config SPL_MMC_SUPPORT
24 config SPL_POWER_SUPPORT
27 config SPL_SERIAL_SUPPORT
30 config SUNXI_HIGH_SRAM
34 Older Allwinner SoCs have their mask boot ROM mapped just below 4GB,
35 with the first SRAM region being located at address 0.
36 Some newer SoCs map the boot ROM at address 0 instead and move the
37 SRAM to 64KB, just behind the mask ROM.
38 Chips using the latter setup are supposed to select this option to
39 adjust the addresses accordingly.
41 # Note only one of these may be selected at a time! But hidden choices are
42 # not supported by Kconfig
43 config SUNXI_GEN_SUN4I
46 Select this for sunxi SoCs which have resets and clocks set up
47 as the original A10 (mach-sun4i).
49 config SUNXI_GEN_SUN6I
52 Select this for sunxi SoCs which have sun6i like periphery, like
53 separate ahb reset control registers, custom pmic bus, new style
58 prompt "Sunxi SoC Variant"
62 bool "sun4i (Allwinner A10)"
64 select ARM_CORTEX_CPU_IS_UP
65 select SUNXI_GEN_SUN4I
69 bool "sun5i (Allwinner A13)"
71 select ARM_CORTEX_CPU_IS_UP
72 select SUNXI_GEN_SUN4I
76 bool "sun6i (Allwinner A31)"
78 select CPU_V7_HAS_NONSEC
79 select CPU_V7_HAS_VIRT
80 select ARCH_SUPPORT_PSCI
81 select SUNXI_GEN_SUN6I
83 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
86 bool "sun7i (Allwinner A20)"
88 select CPU_V7_HAS_NONSEC
89 select CPU_V7_HAS_VIRT
90 select ARCH_SUPPORT_PSCI
91 select SUNXI_GEN_SUN4I
93 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
96 bool "sun8i (Allwinner A23)"
98 select CPU_V7_HAS_NONSEC
99 select CPU_V7_HAS_VIRT
100 select ARCH_SUPPORT_PSCI
101 select SUNXI_GEN_SUN6I
103 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
105 config MACH_SUN8I_A33
106 bool "sun8i (Allwinner A33)"
108 select CPU_V7_HAS_NONSEC
109 select CPU_V7_HAS_VIRT
110 select ARCH_SUPPORT_PSCI
111 select SUNXI_GEN_SUN6I
113 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
115 config MACH_SUN8I_A83T
116 bool "sun8i (Allwinner A83T)"
118 select SUNXI_GEN_SUN6I
122 bool "sun8i (Allwinner H3)"
124 select CPU_V7_HAS_NONSEC
125 select CPU_V7_HAS_VIRT
126 select ARCH_SUPPORT_PSCI
127 select SUNXI_GEN_SUN6I
129 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
132 bool "sun9i (Allwinner A80)"
134 select SUNXI_HIGH_SRAM
135 select SUNXI_GEN_SUN6I
139 bool "sun50i (Allwinner A64)"
141 select SUNXI_GEN_SUN6I
142 select SUNXI_HIGH_SRAM
147 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
150 default y if MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_H3 || MACH_SUN8I_A83T
152 config RESERVE_ALLWINNER_BOOT0_HEADER
153 bool "reserve space for Allwinner boot0 header"
154 select ENABLE_ARM_SOC_BOOT0_HOOK
156 Prepend a 1536 byte (empty) header to the U-Boot image file, to be
157 filled with magic values post build. The Allwinner provided boot0
158 blob relies on this information to load and execute U-Boot.
159 Only needed on 64-bit Allwinner boards so far when using boot0.
161 config ARM_BOOT_HOOK_RMR
165 select ENABLE_ARM_SOC_BOOT0_HOOK
167 Insert some ARM32 code at the very beginning of the U-Boot binary
168 which uses an RMR register write to bring the core into AArch64 mode.
169 The very first instruction acts as a switch, since it's carefully
170 chosen to be a NOP in one mode and a branch in the other, so the
171 code would only be executed if not already in AArch64.
172 This allows both the SPL and the U-Boot proper to be entered in
173 either mode and switch to AArch64 if needed.
176 int "sunxi dram type"
177 depends on MACH_SUN8I_A83T
180 Set the dram type, 3: DDR3, 7: LPDDR3
183 int "sunxi dram clock speed"
184 default 792 if MACH_SUN9I
185 default 312 if MACH_SUN6I || MACH_SUN8I
186 default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
187 default 672 if MACH_SUN50I
189 Set the dram clock speed, valid range 240 - 480 (prior to sun9i),
190 must be a multiple of 24. For the sun9i (A80), the tested values
191 (for DDR3-1600) are 312 to 792.
193 if MACH_SUN5I || MACH_SUN7I
195 int "sunxi mbus clock speed"
198 Set the mbus clock speed. The maximum on sun5i hardware is 300MHz.
203 int "sunxi dram zq value"
204 default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
205 default 127 if MACH_SUN7I
206 default 4145117 if MACH_SUN9I
207 default 3881915 if MACH_SUN50I
209 Set the dram zq value.
212 bool "sunxi dram odt enable"
213 default n if !MACH_SUN8I_A23
214 default y if MACH_SUN8I_A23
215 default y if MACH_SUN50I
217 Select this to enable dram odt (on die termination).
219 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
221 int "sunxi dram emr1 value"
222 default 0 if MACH_SUN4I
223 default 4 if MACH_SUN5I || MACH_SUN7I
225 Set the dram controller emr1 value.
228 hex "sunxi dram tpr3 value"
231 Set the dram controller tpr3 parameter. This parameter configures
232 the delay on the command lane and also phase shifts, which are
233 applied for sampling incoming read data. The default value 0
234 means that no phase/delay adjustments are necessary. Properly
235 configuring this parameter increases reliability at high DRAM
238 config DRAM_DQS_GATING_DELAY
239 hex "sunxi dram dqs_gating_delay value"
242 Set the dram controller dqs_gating_delay parmeter. Each byte
243 encodes the DQS gating delay for each byte lane. The delay
244 granularity is 1/4 cycle. For example, the value 0x05060606
245 means that the delay is 5 quarter-cycles for one lane (1.25
246 cycles) and 6 quarter-cycles (1.5 cycles) for 3 other lanes.
247 The default value 0 means autodetection. The results of hardware
248 autodetection are not very reliable and depend on the chip
249 temperature (sometimes producing different results on cold start
250 and warm reboot). But the accuracy of hardware autodetection
251 is usually good enough, unless running at really high DRAM
252 clocks speeds (up to 600MHz). If unsure, keep as 0.
255 prompt "sunxi dram timings"
256 default DRAM_TIMINGS_VENDOR_MAGIC
258 Select the timings of the DDR3 chips.
260 config DRAM_TIMINGS_VENDOR_MAGIC
261 bool "Magic vendor timings from Android"
263 The same DRAM timings as in the Allwinner boot0 bootloader.
265 config DRAM_TIMINGS_DDR3_1066F_1333H
266 bool "JEDEC DDR3-1333H with down binning to DDR3-1066F"
268 Use the timings of the standard JEDEC DDR3-1066F speed bin for
269 DRAM_CLK <= 533MHz and the timings of the DDR3-1333H speed bin
270 for DRAM_CLK > 533MHz. This covers the majority of DDR3 chips
271 used in Allwinner A10/A13/A20 devices. In the case of DDR3-1333
272 or DDR3-1600 chips, be sure to check the DRAM datasheet to confirm
273 that down binning to DDR3-1066F is supported (because DDR3-1066F
274 uses a bit faster timings than DDR3-1333H).
276 config DRAM_TIMINGS_DDR3_800E_1066G_1333J
277 bool "JEDEC DDR3-800E / DDR3-1066G / DDR3-1333J"
279 Use the timings of the slowest possible JEDEC speed bin for the
280 selected DRAM_CLK. Depending on the DRAM_CLK value, it may be
281 DDR3-800E, DDR3-1066G or DDR3-1333J.
288 config DRAM_ODT_CORRECTION
289 int "sunxi dram odt correction value"
292 Set the dram odt correction value (range -255 - 255). In allwinner
293 fex files, this option is found in bits 8-15 of the u32 odt_en variable
294 in the [dram] section. When bit 31 of the odt_en variable is set
295 then the correction is negative. Usually the value for this is 0.
299 default 816000000 if MACH_SUN50I
300 default 912000000 if MACH_SUN7I
301 default 1008000000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I || MACH_SUN9I
303 config SYS_CONFIG_NAME
304 default "sun4i" if MACH_SUN4I
305 default "sun5i" if MACH_SUN5I
306 default "sun6i" if MACH_SUN6I
307 default "sun7i" if MACH_SUN7I
308 default "sun8i" if MACH_SUN8I
309 default "sun9i" if MACH_SUN9I
310 default "sun50i" if MACH_SUN50I
319 bool "UART0 on MicroSD breakout board"
322 Repurpose the SD card slot for getting access to the UART0 serial
323 console. Primarily useful only for low level u-boot debugging on
324 tablets, where normal UART0 is difficult to access and requires
325 device disassembly and/or soldering. As the SD card can't be used
326 at the same time, the system can be only booted in the FEL mode.
327 Only enable this if you really know what you are doing.
329 config OLD_SUNXI_KERNEL_COMPAT
330 bool "Enable workarounds for booting old kernels"
333 Set this to enable various workarounds for old kernels, this results in
334 sub-optimal settings for newer kernels, only enable if needed.
337 string "Card detect pin for mmc0"
338 default "PF6" if MACH_SUN8I_A83T || MACH_SUN8I_H3 || MACH_SUN50I
341 Set the card detect pin for mmc0, leave empty to not use cd. This
342 takes a string in the format understood by sunxi_name_to_gpio, e.g.
343 PH1 for pin 1 of port H.
346 string "Card detect pin for mmc1"
349 See MMC0_CD_PIN help text.
352 string "Card detect pin for mmc2"
355 See MMC0_CD_PIN help text.
358 string "Card detect pin for mmc3"
361 See MMC0_CD_PIN help text.
364 string "Pins for mmc1"
367 Set the pins used for mmc1, when applicable. This takes a string in the
368 format understood by sunxi_name_to_gpio_bank, e.g. PH for port H.
371 string "Pins for mmc2"
374 See MMC1_PINS help text.
377 string "Pins for mmc3"
380 See MMC1_PINS help text.
382 config MMC_SUNXI_SLOT_EXTRA
383 int "mmc extra slot number"
386 sunxi builds always enable mmc0, some boards also have a second sdcard
387 slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
390 config INITIAL_USB_SCAN_DELAY
391 int "delay initial usb scan by x ms to allow builtin devices to init"
394 Some boards have on board usb devices which need longer than the
395 USB spec's 1 second to connect from board powerup. Set this config
396 option to a non 0 value to add an extra delay before the first usb
400 string "Vbus enable pin for usb0 (otg)"
403 Set the Vbus enable pin for usb0 (otg). This takes a string in the
404 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
407 string "Vbus detect pin for usb0 (otg)"
410 Set the Vbus detect pin for usb0 (otg). This takes a string in the
411 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
414 string "ID detect pin for usb0 (otg)"
417 Set the ID detect pin for usb0 (otg). This takes a string in the
418 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
421 string "Vbus enable pin for usb1 (ehci0)"
422 default "PH6" if MACH_SUN4I || MACH_SUN7I
423 default "PH27" if MACH_SUN6I
425 Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
426 a string in the format understood by sunxi_name_to_gpio, e.g.
427 PH1 for pin 1 of port H.
430 string "Vbus enable pin for usb2 (ehci1)"
431 default "PH3" if MACH_SUN4I || MACH_SUN7I
432 default "PH24" if MACH_SUN6I
434 See USB1_VBUS_PIN help text.
437 string "Vbus enable pin for usb3 (ehci2)"
440 See USB1_VBUS_PIN help text.
443 bool "Enable I2C/TWI controller 0"
444 default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
445 default n if MACH_SUN6I || MACH_SUN8I
448 This allows enabling I2C/TWI controller 0 by muxing its pins, enabling
449 its clock and setting up the bus. This is especially useful on devices
450 with slaves connected to the bus or with pins exposed through e.g. an
451 expansion port/header.
454 bool "Enable I2C/TWI controller 1"
458 See I2C0_ENABLE help text.
461 bool "Enable I2C/TWI controller 2"
465 See I2C0_ENABLE help text.
467 if MACH_SUN6I || MACH_SUN7I
469 bool "Enable I2C/TWI controller 3"
473 See I2C0_ENABLE help text.
478 bool "Enable the PRCM I2C/TWI controller"
479 # This is used for the pmic on H3
480 default y if SY8106A_POWER
483 Set this to y to enable the I2C controller which is part of the PRCM.
488 bool "Enable I2C/TWI controller 4"
492 See I2C0_ENABLE help text.
496 bool "Enable support for gpio-s on axp PMICs"
499 Say Y here to enable support for the gpio pins of the axp PMIC ICs.
502 bool "Enable graphical uboot console on HDMI, LCD or VGA"
503 depends on !MACH_SUN8I_A83T && !MACH_SUN8I_H3 && !MACH_SUN9I && !MACH_SUN50I
506 Say Y here to add support for using a cfb console on the HDMI, LCD
507 or VGA output found on most sunxi devices. See doc/README.video for
508 info on how to select the video output and mode.
511 bool "HDMI output support"
512 depends on VIDEO && !MACH_SUN8I
515 Say Y here to add support for outputting video over HDMI.
518 bool "VGA output support"
519 depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
522 Say Y here to add support for outputting video over VGA.
524 config VIDEO_VGA_VIA_LCD
525 bool "VGA via LCD controller support"
526 depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
529 Say Y here to add support for external DACs connected to the parallel
530 LCD interface driving a VGA connector, such as found on the
533 config VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH
534 bool "Force sync active high for VGA via LCD controller support"
535 depends on VIDEO_VGA_VIA_LCD
538 Say Y here if you've a board which uses opendrain drivers for the vga
539 hsync and vsync signals. Opendrain drivers cannot generate steep enough
540 positive edges for a stable video output, so on boards with opendrain
541 drivers the sync signals must always be active high.
543 config VIDEO_VGA_EXTERNAL_DAC_EN
544 string "LCD panel power enable pin"
545 depends on VIDEO_VGA_VIA_LCD
548 Set the enable pin for the external VGA DAC. This takes a string in the
549 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
551 config VIDEO_COMPOSITE
552 bool "Composite video output support"
553 depends on VIDEO && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
556 Say Y here to add support for outputting composite video.
558 config VIDEO_LCD_MODE
559 string "LCD panel timing details"
563 LCD panel timing details string, leave empty if there is no LCD panel.
564 This is in drivers/video/videomodes.c: video_get_params() format, e.g.
565 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
566 Also see: http://linux-sunxi.org/LCD
568 config VIDEO_LCD_DCLK_PHASE
569 int "LCD panel display clock phase"
573 Select LCD panel display clock phase shift, range 0-3.
575 config VIDEO_LCD_POWER
576 string "LCD panel power enable pin"
580 Set the power enable pin for the LCD panel. This takes a string in the
581 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
583 config VIDEO_LCD_RESET
584 string "LCD panel reset pin"
588 Set the reset pin for the LCD panel. This takes a string in the format
589 understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
591 config VIDEO_LCD_BL_EN
592 string "LCD panel backlight enable pin"
596 Set the backlight enable pin for the LCD panel. This takes a string in the
597 the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
600 config VIDEO_LCD_BL_PWM
601 string "LCD panel backlight pwm pin"
605 Set the backlight pwm pin for the LCD panel. This takes a string in the
606 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
608 config VIDEO_LCD_BL_PWM_ACTIVE_LOW
609 bool "LCD panel backlight pwm is inverted"
613 Set this if the backlight pwm output is active low.
615 config VIDEO_LCD_PANEL_I2C
616 bool "LCD panel needs to be configured via i2c"
621 Say y here if the LCD panel needs to be configured via i2c. This
622 will add a bitbang i2c controller using gpios to talk to the LCD.
624 config VIDEO_LCD_PANEL_I2C_SDA
625 string "LCD panel i2c interface SDA pin"
626 depends on VIDEO_LCD_PANEL_I2C
629 Set the SDA pin for the LCD i2c interface. This takes a string in the
630 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
632 config VIDEO_LCD_PANEL_I2C_SCL
633 string "LCD panel i2c interface SCL pin"
634 depends on VIDEO_LCD_PANEL_I2C
637 Set the SCL pin for the LCD i2c interface. This takes a string in the
638 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
641 # Note only one of these may be selected at a time! But hidden choices are
642 # not supported by Kconfig
643 config VIDEO_LCD_IF_PARALLEL
646 config VIDEO_LCD_IF_LVDS
651 prompt "LCD panel support"
654 Select which type of LCD panel to support.
656 config VIDEO_LCD_PANEL_PARALLEL
657 bool "Generic parallel interface LCD panel"
658 select VIDEO_LCD_IF_PARALLEL
660 config VIDEO_LCD_PANEL_LVDS
661 bool "Generic lvds interface LCD panel"
662 select VIDEO_LCD_IF_LVDS
664 config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
665 bool "MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip"
666 select VIDEO_LCD_SSD2828
667 select VIDEO_LCD_IF_PARALLEL
669 7.85" 768x1024 LCD panels, such as LG LP079X01 or AUO B079XAN01.0
671 config VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804
672 bool "eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip"
673 select VIDEO_LCD_ANX9804
674 select VIDEO_LCD_IF_PARALLEL
675 select VIDEO_LCD_PANEL_I2C
677 Select this for eDP LCD panels with 4 lanes running at 1.62G,
678 connected via an ANX9804 bridge chip.
680 config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
681 bool "Hitachi tx18d42vm LCD panel"
682 select VIDEO_LCD_HITACHI_TX18D42VM
683 select VIDEO_LCD_IF_LVDS
685 7.85" 1024x768 Hitachi tx18d42vm LCD panel support
687 config VIDEO_LCD_TL059WV5C0
688 bool "tl059wv5c0 LCD panel"
689 select VIDEO_LCD_PANEL_I2C
690 select VIDEO_LCD_IF_PARALLEL
692 6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
693 Aigo M60/M608/M606 tablets.
699 int "GMAC Transmit Clock Delay Chain"
702 Set the GMAC Transmit Clock Delay Chain value.
704 config SPL_STACK_R_ADDR
705 default 0x4fe00000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN7I || MACH_SUN8I || MACH_SUN50I
706 default 0x2fe00000 if MACH_SUN9I