Convert CONFIG_SPL_GPIO_SUPPORT to Kconfig
[platform/kernel/u-boot.git] / board / sunxi / Kconfig
1 if ARCH_SUNXI
2
3 config SPL_GPIO_SUPPORT
4         default y
5
6 # Note only one of these may be selected at a time! But hidden choices are
7 # not supported by Kconfig
8 config SUNXI_GEN_SUN4I
9         bool
10         ---help---
11         Select this for sunxi SoCs which have resets and clocks set up
12         as the original A10 (mach-sun4i).
13
14 config SUNXI_GEN_SUN6I
15         bool
16         ---help---
17         Select this for sunxi SoCs which have sun6i like periphery, like
18         separate ahb reset control registers, custom pmic bus, new style
19         watchdog, etc.
20
21
22 choice
23         prompt "Sunxi SoC Variant"
24         optional
25
26 config MACH_SUN4I
27         bool "sun4i (Allwinner A10)"
28         select CPU_V7
29         select SUNXI_GEN_SUN4I
30         select SUPPORT_SPL
31
32 config MACH_SUN5I
33         bool "sun5i (Allwinner A13)"
34         select CPU_V7
35         select SUNXI_GEN_SUN4I
36         select SUPPORT_SPL
37
38 config MACH_SUN6I
39         bool "sun6i (Allwinner A31)"
40         select CPU_V7
41         select CPU_V7_HAS_NONSEC
42         select CPU_V7_HAS_VIRT
43         select ARCH_SUPPORT_PSCI
44         select SUNXI_GEN_SUN6I
45         select SUPPORT_SPL
46         select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
47
48 config MACH_SUN7I
49         bool "sun7i (Allwinner A20)"
50         select CPU_V7
51         select CPU_V7_HAS_NONSEC
52         select CPU_V7_HAS_VIRT
53         select ARCH_SUPPORT_PSCI
54         select SUNXI_GEN_SUN4I
55         select SUPPORT_SPL
56         select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
57
58 config MACH_SUN8I_A23
59         bool "sun8i (Allwinner A23)"
60         select CPU_V7
61         select CPU_V7_HAS_NONSEC
62         select CPU_V7_HAS_VIRT
63         select ARCH_SUPPORT_PSCI
64         select SUNXI_GEN_SUN6I
65         select SUPPORT_SPL
66         select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
67
68 config MACH_SUN8I_A33
69         bool "sun8i (Allwinner A33)"
70         select CPU_V7
71         select CPU_V7_HAS_NONSEC
72         select CPU_V7_HAS_VIRT
73         select ARCH_SUPPORT_PSCI
74         select SUNXI_GEN_SUN6I
75         select SUPPORT_SPL
76         select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
77
78 config MACH_SUN8I_A83T
79         bool "sun8i (Allwinner A83T)"
80         select CPU_V7
81         select SUNXI_GEN_SUN6I
82         select SUPPORT_SPL
83
84 config MACH_SUN8I_H3
85         bool "sun8i (Allwinner H3)"
86         select CPU_V7
87         select CPU_V7_HAS_NONSEC
88         select CPU_V7_HAS_VIRT
89         select ARCH_SUPPORT_PSCI
90         select SUNXI_GEN_SUN6I
91         select SUPPORT_SPL
92         select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
93
94 config MACH_SUN9I
95         bool "sun9i (Allwinner A80)"
96         select CPU_V7
97         select SUNXI_GEN_SUN6I
98
99 config MACH_SUN50I
100         bool "sun50i (Allwinner A64)"
101         select ARM64
102         select SUNXI_GEN_SUN6I
103
104 endchoice
105
106 # The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
107 config MACH_SUN8I
108         bool
109         default y if MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_H3 || MACH_SUN8I_A83T
110
111 config DRAM_TYPE
112         int "sunxi dram type"
113         depends on MACH_SUN8I_A83T
114         default 3
115         ---help---
116         Set the dram type, 3: DDR3, 7: LPDDR3
117
118 config DRAM_CLK
119         int "sunxi dram clock speed"
120         default 312 if MACH_SUN6I || MACH_SUN8I
121         default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
122         ---help---
123         Set the dram clock speed, valid range 240 - 480, must be a multiple
124         of 24.
125
126 if MACH_SUN5I || MACH_SUN7I
127 config DRAM_MBUS_CLK
128         int "sunxi mbus clock speed"
129         default 300
130         ---help---
131         Set the mbus clock speed. The maximum on sun5i hardware is 300MHz.
132
133 endif
134
135 config DRAM_ZQ
136         int "sunxi dram zq value"
137         default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
138         default 127 if MACH_SUN7I
139         ---help---
140         Set the dram zq value.
141
142 config DRAM_ODT_EN
143         bool "sunxi dram odt enable"
144         default n if !MACH_SUN8I_A23
145         default y if MACH_SUN8I_A23
146         ---help---
147         Select this to enable dram odt (on die termination).
148
149 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
150 config DRAM_EMR1
151         int "sunxi dram emr1 value"
152         default 0 if MACH_SUN4I
153         default 4 if MACH_SUN5I || MACH_SUN7I
154         ---help---
155         Set the dram controller emr1 value.
156
157 config DRAM_TPR3
158         hex "sunxi dram tpr3 value"
159         default 0
160         ---help---
161         Set the dram controller tpr3 parameter. This parameter configures
162         the delay on the command lane and also phase shifts, which are
163         applied for sampling incoming read data. The default value 0
164         means that no phase/delay adjustments are necessary. Properly
165         configuring this parameter increases reliability at high DRAM
166         clock speeds.
167
168 config DRAM_DQS_GATING_DELAY
169         hex "sunxi dram dqs_gating_delay value"
170         default 0
171         ---help---
172         Set the dram controller dqs_gating_delay parmeter. Each byte
173         encodes the DQS gating delay for each byte lane. The delay
174         granularity is 1/4 cycle. For example, the value 0x05060606
175         means that the delay is 5 quarter-cycles for one lane (1.25
176         cycles) and 6 quarter-cycles (1.5 cycles) for 3 other lanes.
177         The default value 0 means autodetection. The results of hardware
178         autodetection are not very reliable and depend on the chip
179         temperature (sometimes producing different results on cold start
180         and warm reboot). But the accuracy of hardware autodetection
181         is usually good enough, unless running at really high DRAM
182         clocks speeds (up to 600MHz). If unsure, keep as 0.
183
184 choice
185         prompt "sunxi dram timings"
186         default DRAM_TIMINGS_VENDOR_MAGIC
187         ---help---
188         Select the timings of the DDR3 chips.
189
190 config DRAM_TIMINGS_VENDOR_MAGIC
191         bool "Magic vendor timings from Android"
192         ---help---
193         The same DRAM timings as in the Allwinner boot0 bootloader.
194
195 config DRAM_TIMINGS_DDR3_1066F_1333H
196         bool "JEDEC DDR3-1333H with down binning to DDR3-1066F"
197         ---help---
198         Use the timings of the standard JEDEC DDR3-1066F speed bin for
199         DRAM_CLK <= 533MHz and the timings of the DDR3-1333H speed bin
200         for DRAM_CLK > 533MHz. This covers the majority of DDR3 chips
201         used in Allwinner A10/A13/A20 devices. In the case of DDR3-1333
202         or DDR3-1600 chips, be sure to check the DRAM datasheet to confirm
203         that down binning to DDR3-1066F is supported (because DDR3-1066F
204         uses a bit faster timings than DDR3-1333H).
205
206 config DRAM_TIMINGS_DDR3_800E_1066G_1333J
207         bool "JEDEC DDR3-800E / DDR3-1066G / DDR3-1333J"
208         ---help---
209         Use the timings of the slowest possible JEDEC speed bin for the
210         selected DRAM_CLK. Depending on the DRAM_CLK value, it may be
211         DDR3-800E, DDR3-1066G or DDR3-1333J.
212
213 endchoice
214
215 endif
216
217 if MACH_SUN8I_A23
218 config DRAM_ODT_CORRECTION
219         int "sunxi dram odt correction value"
220         default 0
221         ---help---
222         Set the dram odt correction value (range -255 - 255). In allwinner
223         fex files, this option is found in bits 8-15 of the u32 odt_en variable
224         in the [dram] section. When bit 31 of the odt_en variable is set
225         then the correction is negative. Usually the value for this is 0.
226 endif
227
228 config SYS_CLK_FREQ
229         default 816000000 if MACH_SUN50I
230         default 912000000 if MACH_SUN7I
231         default 1008000000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I
232
233 config SYS_CONFIG_NAME
234         default "sun4i" if MACH_SUN4I
235         default "sun5i" if MACH_SUN5I
236         default "sun6i" if MACH_SUN6I
237         default "sun7i" if MACH_SUN7I
238         default "sun8i" if MACH_SUN8I
239         default "sun9i" if MACH_SUN9I
240         default "sun50i" if MACH_SUN50I
241
242 config SYS_BOARD
243         default "sunxi"
244
245 config SYS_SOC
246         default "sunxi"
247
248 config UART0_PORT_F
249         bool "UART0 on MicroSD breakout board"
250         default n
251         ---help---
252         Repurpose the SD card slot for getting access to the UART0 serial
253         console. Primarily useful only for low level u-boot debugging on
254         tablets, where normal UART0 is difficult to access and requires
255         device disassembly and/or soldering. As the SD card can't be used
256         at the same time, the system can be only booted in the FEL mode.
257         Only enable this if you really know what you are doing.
258
259 config OLD_SUNXI_KERNEL_COMPAT
260         bool "Enable workarounds for booting old kernels"
261         default n
262         ---help---
263         Set this to enable various workarounds for old kernels, this results in
264         sub-optimal settings for newer kernels, only enable if needed.
265
266 config MMC
267         depends on !UART0_PORT_F
268         default y if ARCH_SUNXI
269
270 config MMC0_CD_PIN
271         string "Card detect pin for mmc0"
272         default "PF6" if MACH_SUN8I_A83T || MACH_SUN8I_H3 || MACH_SUN50I
273         default ""
274         ---help---
275         Set the card detect pin for mmc0, leave empty to not use cd. This
276         takes a string in the format understood by sunxi_name_to_gpio, e.g.
277         PH1 for pin 1 of port H.
278
279 config MMC1_CD_PIN
280         string "Card detect pin for mmc1"
281         default ""
282         ---help---
283         See MMC0_CD_PIN help text.
284
285 config MMC2_CD_PIN
286         string "Card detect pin for mmc2"
287         default ""
288         ---help---
289         See MMC0_CD_PIN help text.
290
291 config MMC3_CD_PIN
292         string "Card detect pin for mmc3"
293         default ""
294         ---help---
295         See MMC0_CD_PIN help text.
296
297 config MMC1_PINS
298         string "Pins for mmc1"
299         default ""
300         ---help---
301         Set the pins used for mmc1, when applicable. This takes a string in the
302         format understood by sunxi_name_to_gpio_bank, e.g. PH for port H.
303
304 config MMC2_PINS
305         string "Pins for mmc2"
306         default ""
307         ---help---
308         See MMC1_PINS help text.
309
310 config MMC3_PINS
311         string "Pins for mmc3"
312         default ""
313         ---help---
314         See MMC1_PINS help text.
315
316 config MMC_SUNXI_SLOT_EXTRA
317         int "mmc extra slot number"
318         default -1
319         ---help---
320         sunxi builds always enable mmc0, some boards also have a second sdcard
321         slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
322         support for this.
323
324 config INITIAL_USB_SCAN_DELAY
325         int "delay initial usb scan by x ms to allow builtin devices to init"
326         default 0
327         ---help---
328         Some boards have on board usb devices which need longer than the
329         USB spec's 1 second to connect from board powerup. Set this config
330         option to a non 0 value to add an extra delay before the first usb
331         bus scan.
332
333 config USB0_VBUS_PIN
334         string "Vbus enable pin for usb0 (otg)"
335         default ""
336         ---help---
337         Set the Vbus enable pin for usb0 (otg). This takes a string in the
338         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
339
340 config USB0_VBUS_DET
341         string "Vbus detect pin for usb0 (otg)"
342         default ""
343         ---help---
344         Set the Vbus detect pin for usb0 (otg). This takes a string in the
345         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
346
347 config USB0_ID_DET
348         string "ID detect pin for usb0 (otg)"
349         default ""
350         ---help---
351         Set the ID detect pin for usb0 (otg). This takes a string in the
352         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
353
354 config USB1_VBUS_PIN
355         string "Vbus enable pin for usb1 (ehci0)"
356         default "PH6" if MACH_SUN4I || MACH_SUN7I
357         default "PH27" if MACH_SUN6I
358         ---help---
359         Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
360         a string in the format understood by sunxi_name_to_gpio, e.g.
361         PH1 for pin 1 of port H.
362
363 config USB2_VBUS_PIN
364         string "Vbus enable pin for usb2 (ehci1)"
365         default "PH3" if MACH_SUN4I || MACH_SUN7I
366         default "PH24" if MACH_SUN6I
367         ---help---
368         See USB1_VBUS_PIN help text.
369
370 config USB3_VBUS_PIN
371         string "Vbus enable pin for usb3 (ehci2)"
372         default ""
373         ---help---
374         See USB1_VBUS_PIN help text.
375
376 config I2C0_ENABLE
377         bool "Enable I2C/TWI controller 0"
378         default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
379         default n if MACH_SUN6I || MACH_SUN8I
380         select CMD_I2C
381         ---help---
382         This allows enabling I2C/TWI controller 0 by muxing its pins, enabling
383         its clock and setting up the bus. This is especially useful on devices
384         with slaves connected to the bus or with pins exposed through e.g. an
385         expansion port/header.
386
387 config I2C1_ENABLE
388         bool "Enable I2C/TWI controller 1"
389         default n
390         select CMD_I2C
391         ---help---
392         See I2C0_ENABLE help text.
393
394 config I2C2_ENABLE
395         bool "Enable I2C/TWI controller 2"
396         default n
397         select CMD_I2C
398         ---help---
399         See I2C0_ENABLE help text.
400
401 if MACH_SUN6I || MACH_SUN7I
402 config I2C3_ENABLE
403         bool "Enable I2C/TWI controller 3"
404         default n
405         select CMD_I2C
406         ---help---
407         See I2C0_ENABLE help text.
408 endif
409
410 if SUNXI_GEN_SUN6I
411 config R_I2C_ENABLE
412         bool "Enable the PRCM I2C/TWI controller"
413         # This is used for the pmic on H3
414         default y if SY8106A_POWER
415         select CMD_I2C
416         ---help---
417         Set this to y to enable the I2C controller which is part of the PRCM.
418 endif
419
420 if MACH_SUN7I
421 config I2C4_ENABLE
422         bool "Enable I2C/TWI controller 4"
423         default n
424         select CMD_I2C
425         ---help---
426         See I2C0_ENABLE help text.
427 endif
428
429 config AXP_GPIO
430         bool "Enable support for gpio-s on axp PMICs"
431         default n
432         ---help---
433         Say Y here to enable support for the gpio pins of the axp PMIC ICs.
434
435 config VIDEO
436         bool "Enable graphical uboot console on HDMI, LCD or VGA"
437         depends on !MACH_SUN8I_A83T && !MACH_SUN8I_H3 && !MACH_SUN9I && !MACH_SUN50I
438         default y
439         ---help---
440         Say Y here to add support for using a cfb console on the HDMI, LCD
441         or VGA output found on most sunxi devices. See doc/README.video for
442         info on how to select the video output and mode.
443
444 config VIDEO_HDMI
445         bool "HDMI output support"
446         depends on VIDEO && !MACH_SUN8I
447         default y
448         ---help---
449         Say Y here to add support for outputting video over HDMI.
450
451 config VIDEO_VGA
452         bool "VGA output support"
453         depends on VIDEO && (MACH_SUN4I || MACH_SUN7I)
454         default n
455         ---help---
456         Say Y here to add support for outputting video over VGA.
457
458 config VIDEO_VGA_VIA_LCD
459         bool "VGA via LCD controller support"
460         depends on VIDEO && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
461         default n
462         ---help---
463         Say Y here to add support for external DACs connected to the parallel
464         LCD interface driving a VGA connector, such as found on the
465         Olimex A13 boards.
466
467 config VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH
468         bool "Force sync active high for VGA via LCD controller support"
469         depends on VIDEO_VGA_VIA_LCD
470         default n
471         ---help---
472         Say Y here if you've a board which uses opendrain drivers for the vga
473         hsync and vsync signals. Opendrain drivers cannot generate steep enough
474         positive edges for a stable video output, so on boards with opendrain
475         drivers the sync signals must always be active high.
476
477 config VIDEO_VGA_EXTERNAL_DAC_EN
478         string "LCD panel power enable pin"
479         depends on VIDEO_VGA_VIA_LCD
480         default ""
481         ---help---
482         Set the enable pin for the external VGA DAC. This takes a string in the
483         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
484
485 config VIDEO_COMPOSITE
486         bool "Composite video output support"
487         depends on VIDEO && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
488         default n
489         ---help---
490         Say Y here to add support for outputting composite video.
491
492 config VIDEO_LCD_MODE
493         string "LCD panel timing details"
494         depends on VIDEO
495         default ""
496         ---help---
497         LCD panel timing details string, leave empty if there is no LCD panel.
498         This is in drivers/video/videomodes.c: video_get_params() format, e.g.
499         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
500         Also see: http://linux-sunxi.org/LCD
501
502 config VIDEO_LCD_DCLK_PHASE
503         int "LCD panel display clock phase"
504         depends on VIDEO
505         default 1
506         ---help---
507         Select LCD panel display clock phase shift, range 0-3.
508
509 config VIDEO_LCD_POWER
510         string "LCD panel power enable pin"
511         depends on VIDEO
512         default ""
513         ---help---
514         Set the power enable pin for the LCD panel. This takes a string in the
515         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
516
517 config VIDEO_LCD_RESET
518         string "LCD panel reset pin"
519         depends on VIDEO
520         default ""
521         ---help---
522         Set the reset pin for the LCD panel. This takes a string in the format
523         understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
524
525 config VIDEO_LCD_BL_EN
526         string "LCD panel backlight enable pin"
527         depends on VIDEO
528         default ""
529         ---help---
530         Set the backlight enable pin for the LCD panel. This takes a string in the
531         the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
532         port H.
533
534 config VIDEO_LCD_BL_PWM
535         string "LCD panel backlight pwm pin"
536         depends on VIDEO
537         default ""
538         ---help---
539         Set the backlight pwm pin for the LCD panel. This takes a string in the
540         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
541
542 config VIDEO_LCD_BL_PWM_ACTIVE_LOW
543         bool "LCD panel backlight pwm is inverted"
544         depends on VIDEO
545         default y
546         ---help---
547         Set this if the backlight pwm output is active low.
548
549 config VIDEO_LCD_PANEL_I2C
550         bool "LCD panel needs to be configured via i2c"
551         depends on VIDEO
552         default n
553         select CMD_I2C
554         ---help---
555         Say y here if the LCD panel needs to be configured via i2c. This
556         will add a bitbang i2c controller using gpios to talk to the LCD.
557
558 config VIDEO_LCD_PANEL_I2C_SDA
559         string "LCD panel i2c interface SDA pin"
560         depends on VIDEO_LCD_PANEL_I2C
561         default "PG12"
562         ---help---
563         Set the SDA pin for the LCD i2c interface. This takes a string in the
564         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
565
566 config VIDEO_LCD_PANEL_I2C_SCL
567         string "LCD panel i2c interface SCL pin"
568         depends on VIDEO_LCD_PANEL_I2C
569         default "PG10"
570         ---help---
571         Set the SCL pin for the LCD i2c interface. This takes a string in the
572         format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
573
574
575 # Note only one of these may be selected at a time! But hidden choices are
576 # not supported by Kconfig
577 config VIDEO_LCD_IF_PARALLEL
578         bool
579
580 config VIDEO_LCD_IF_LVDS
581         bool
582
583
584 choice
585         prompt "LCD panel support"
586         depends on VIDEO
587         ---help---
588         Select which type of LCD panel to support.
589
590 config VIDEO_LCD_PANEL_PARALLEL
591         bool "Generic parallel interface LCD panel"
592         select VIDEO_LCD_IF_PARALLEL
593
594 config VIDEO_LCD_PANEL_LVDS
595         bool "Generic lvds interface LCD panel"
596         select VIDEO_LCD_IF_LVDS
597
598 config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
599         bool "MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip"
600         select VIDEO_LCD_SSD2828
601         select VIDEO_LCD_IF_PARALLEL
602         ---help---
603         7.85" 768x1024 LCD panels, such as LG LP079X01 or AUO B079XAN01.0
604
605 config VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804
606         bool "eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip"
607         select VIDEO_LCD_ANX9804
608         select VIDEO_LCD_IF_PARALLEL
609         select VIDEO_LCD_PANEL_I2C
610         ---help---
611         Select this for eDP LCD panels with 4 lanes running at 1.62G,
612         connected via an ANX9804 bridge chip.
613
614 config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
615         bool "Hitachi tx18d42vm LCD panel"
616         select VIDEO_LCD_HITACHI_TX18D42VM
617         select VIDEO_LCD_IF_LVDS
618         ---help---
619         7.85" 1024x768 Hitachi tx18d42vm LCD panel support
620
621 config VIDEO_LCD_TL059WV5C0
622         bool "tl059wv5c0 LCD panel"
623         select VIDEO_LCD_PANEL_I2C
624         select VIDEO_LCD_IF_PARALLEL
625         ---help---
626         6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
627         Aigo M60/M608/M606 tablets.
628
629 endchoice
630
631
632 config GMAC_TX_DELAY
633         int "GMAC Transmit Clock Delay Chain"
634         default 0
635         ---help---
636         Set the GMAC Transmit Clock Delay Chain value.
637
638 config SPL_STACK_R_ADDR
639         default 0x4fe00000 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN7I || MACH_SUN8I || MACH_SUN50I
640         default 0x2fe00000 if MACH_SUN9I
641
642 endif