blob: 1b47a49f938cd54b6b6b4b737d356c8a35bb675d [file] [log] [blame]
Ian Campbell2c7e3b92014-10-24 21:20:44 +01001if ARCH_SUNXI
2
Siva Durga Prasad Paladugua4d88922016-07-29 15:31:47 +05303config IDENT_STRING
4 default " Allwinner Technology"
5
Jagan Tekidd928bf2018-01-10 16:03:34 +05306config DRAM_SUN4I
7 bool
8 help
9 Select this dram controller driver for Sun4/5/7i platforms,
10 like A10/A13/A20.
11
Jagan Tekifdfa9342018-03-17 00:16:36 +053012config DRAM_SUN6I
13 bool
14 help
15 Select this dram controller driver for Sun6i platforms,
16 like A31/A31s.
17
Jagan Tekiaf303932018-01-10 16:15:14 +053018config DRAM_SUN8I_A23
19 bool
20 help
21 Select this dram controller driver for Sun8i platforms,
22 for A23 SOC.
23
Jagan Tekic335e992018-01-10 16:17:39 +053024config DRAM_SUN8I_A33
25 bool
26 help
27 Select this dram controller driver for Sun8i platforms,
28 for A33 SOC.
29
Jagan Teki0354f4b2018-01-10 16:20:26 +053030config DRAM_SUN8I_A83T
31 bool
32 help
33 Select this dram controller driver for Sun8i platforms,
34 for A83T SOC.
35
Jagan Teki7d0b1652018-03-17 00:18:01 +053036config DRAM_SUN9I
37 bool
38 help
39 Select this dram controller driver for Sun9i platforms,
40 like A80.
41
Icenowy Zhengda261652018-07-23 06:13:34 +080042config DRAM_SUN50I_H6
43 bool
44 help
45 Select this dram controller driver for some sun50i platforms,
46 like H6.
47
Jernej Skrabecf4317db2021-01-11 21:11:43 +010048config DRAM_SUN50I_H616
49 bool
50 help
51 Select this dram controller driver for some sun50i platforms,
52 like H616.
53
54if DRAM_SUN50I_H616
Jernej Skrabecf35ec212023-04-10 10:21:12 +020055config DRAM_SUN50I_H616_DX_ODT
56 hex "H616 DRAM DX ODT parameter"
57 help
58 DX ODT value from vendor DRAM settings.
59
60config DRAM_SUN50I_H616_DX_DRI
61 hex "H616 DRAM DX DRI parameter"
62 help
63 DX DRI value from vendor DRAM settings.
64
65config DRAM_SUN50I_H616_CA_DRI
66 hex "H616 DRAM CA DRI parameter"
67 help
68 CA DRI value from vendor DRAM settings.
Jernej Skrabecf2214112023-04-10 10:21:13 +020069
70config DRAM_SUN50I_H616_TPR10
71 hex "H616 DRAM TPR10 parameter"
72 help
73 TPR10 value from vendor DRAM settings. It tells which features
74 should be configured, like write leveling, read calibration, etc.
Jernej Skrabecf4317db2021-01-11 21:11:43 +010075endif
76
Jagan Teki2aa697a2018-01-11 13:21:15 +053077config SUN6I_PRCM
78 bool
79 help
80 Support for the PRCM (Power/Reset/Clock Management) unit available
81 in A31 SoC.
82
Jagan Teki735fb252018-02-14 22:28:30 +053083config AXP_PMIC_BUS
Samuel Holland4ab39e72021-10-08 00:17:19 -050084 bool
Samuel Holland8b0eacd2021-10-08 00:17:23 -050085 select DM_PMIC if DM_I2C
86 select PMIC_AXP if DM_I2C
Jagan Teki735fb252018-02-14 22:28:30 +053087 help
88 Select this PMIC bus access helpers for Sunxi platform PRCM or other
89 AXP family PMIC devices.
90
Icenowy Zhengcadc7c22018-07-21 16:20:20 +080091config SUNXI_SRAM_ADDRESS
92 hex
93 default 0x10000 if MACH_SUN9I || MACH_SUN50I || MACH_SUN50I_H5
Jernej Skrabec44726092021-01-11 21:11:34 +010094 default 0x20000 if SUN50I_GEN_H6
Icenowy Zhengcadc7c22018-07-21 16:20:20 +080095 default 0x0
Andre Przywarabc613d82017-02-16 01:20:23 +000096 ---help---
97 Older Allwinner SoCs have their mask boot ROM mapped just below 4GB,
98 with the first SRAM region being located at address 0.
99 Some newer SoCs map the boot ROM at address 0 instead and move the
Icenowy Zhengcadc7c22018-07-21 16:20:20 +0800100 SRAM to a different address.
Andre Przywarabc613d82017-02-16 01:20:23 +0000101
Andre Przywarabe0d2172018-06-27 01:42:53 +0100102config SUNXI_A64_TIMER_ERRATUM
103 bool
104
Hans de Goede44d8ae52015-04-06 20:33:34 +0200105# Note only one of these may be selected at a time! But hidden choices are
106# not supported by Kconfig
107config SUNXI_GEN_SUN4I
108 bool
109 ---help---
110 Select this for sunxi SoCs which have resets and clocks set up
111 as the original A10 (mach-sun4i).
112
113config SUNXI_GEN_SUN6I
114 bool
115 ---help---
116 Select this for sunxi SoCs which have sun6i like periphery, like
117 separate ahb reset control registers, custom pmic bus, new style
118 watchdog, etc.
119
Jernej Skrabec44726092021-01-11 21:11:34 +0100120config SUN50I_GEN_H6
121 bool
122 select FIT
123 select SPL_LOAD_FIT
Andre Przywarab6e3bf12021-05-05 10:04:41 +0100124 select MMC_SUNXI_HAS_NEW_MODE
Jernej Skrabec44726092021-01-11 21:11:34 +0100125 select SUPPORT_SPL
126 ---help---
127 Select this for sunxi SoCs which have H6 like peripherals, clocks
128 and memory map.
129
Icenowy Zheng9934aba2017-06-03 17:10:14 +0800130config SUNXI_DRAM_DW
131 bool
132 ---help---
133 Select this for sunxi SoCs which uses a DRAM controller like the
134 DesignWare controller used in H3, mainly SoCs after H3, which do
135 not have official open-source DRAM initialization code, but can
136 use modified H3 DRAM initialization code.
Hans de Goede44d8ae52015-04-06 20:33:34 +0200137
Icenowy Zheng87098d72017-06-03 17:10:16 +0800138if SUNXI_DRAM_DW
139config SUNXI_DRAM_DW_16BIT
140 bool
141 ---help---
142 Select this for sunxi SoCs with DesignWare DRAM controller and
143 have only 16-bit memory buswidth.
144
145config SUNXI_DRAM_DW_32BIT
146 bool
147 ---help---
148 Select this for sunxi SoCs with DesignWare DRAM controller with
149 32-bit memory buswidth.
150endif
151
Andre Przywara7b82a222017-02-16 01:20:27 +0000152config MACH_SUNXI_H3_H5
153 bool
Jagan Tekidd322812018-05-07 13:03:38 +0530154 select PHY_SUN4I_USB
Jernej Skrabec1ae5def2017-03-27 19:22:31 +0200155 select SUNXI_DE2
Icenowy Zheng9934aba2017-06-03 17:10:14 +0800156 select SUNXI_DRAM_DW
Icenowy Zheng87098d72017-06-03 17:10:16 +0800157 select SUNXI_DRAM_DW_32BIT
Andre Przywara7b82a222017-02-16 01:20:27 +0000158 select SUNXI_GEN_SUN6I
159 select SUPPORT_SPL
160
Icenowy Zhengf8aa3f82018-10-25 17:23:06 +0800161# TODO: try out A80's 8GiB DRAM space
162config SUNXI_DRAM_MAX_SIZE
163 hex
Andre Przywarab8747852021-04-28 21:29:55 +0100164 default 0x100000000 if MACH_SUN50I_H616
165 default 0xC0000000 if MACH_SUN50I || MACH_SUN50I_H5 || MACH_SUN50I_H6
Icenowy Zhengf8aa3f82018-10-25 17:23:06 +0800166 default 0x80000000
167
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100168choice
169 prompt "Sunxi SoC Variant"
Hans de Goede3da95362016-06-12 11:57:07 +0200170 optional
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100171
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500172config MACH_SUNIV
173 bool "suniv (Allwinner F1C100s/F1C200s/F1C600/R6)"
174 select CPU_ARM926EJS
175 select SUNXI_GEN_SUN6I
176 select SUPPORT_SPL
Andre Przywarab87fb192022-10-05 23:19:28 +0100177 select SKIP_LOWLEVEL_INIT_ONLY
178 select SPL_SKIP_LOWLEVEL_INIT_ONLY
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500179
Ian Campbellc3be2792014-10-24 21:20:45 +0100180config MACH_SUN4I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100181 bool "sun4i (Allwinner A10)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530182 select CPU_V7A
Jagan Tekidd322812018-05-07 13:03:38 +0530183 select PHY_SUN4I_USB
Jagan Tekidd928bf2018-01-10 16:03:34 +0530184 select DRAM_SUN4I
Hans de Goede44d8ae52015-04-06 20:33:34 +0200185 select SUNXI_GEN_SUN4I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100186 select SUPPORT_SPL
Tom Rini55dabcc2021-08-18 23:12:24 -0400187 imply SPL_SYS_I2C_LEGACY
188 imply SYS_I2C_LEGACY
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100189
Ian Campbellc3be2792014-10-24 21:20:45 +0100190config MACH_SUN5I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100191 bool "sun5i (Allwinner A13)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530192 select CPU_V7A
Jagan Tekidd928bf2018-01-10 16:03:34 +0530193 select DRAM_SUN4I
Jagan Tekidd322812018-05-07 13:03:38 +0530194 select PHY_SUN4I_USB
Hans de Goede44d8ae52015-04-06 20:33:34 +0200195 select SUNXI_GEN_SUN4I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100196 select SUPPORT_SPL
Tom Rini55dabcc2021-08-18 23:12:24 -0400197 imply SPL_SYS_I2C_LEGACY
198 imply SYS_I2C_LEGACY
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100199
Ian Campbellc3be2792014-10-24 21:20:45 +0100200config MACH_SUN6I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100201 bool "sun6i (Allwinner A31)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530202 select CPU_V7A
Chen-Yu Tsaicc08ea42015-05-28 21:25:32 +0800203 select CPU_V7_HAS_NONSEC
204 select CPU_V7_HAS_VIRT
Masahiro Yamada217f92b2016-08-30 16:22:22 +0900205 select ARCH_SUPPORT_PSCI
Andre Przywara2564fce2022-01-23 00:27:19 +0000206 select SPL_ARMV7_SET_CORTEX_SMPEN
Jagan Tekifdfa9342018-03-17 00:16:36 +0530207 select DRAM_SUN6I
Jagan Tekidd322812018-05-07 13:03:38 +0530208 select PHY_SUN4I_USB
Samuel Holland104950a2021-10-08 00:17:20 -0500209 select SPL_I2C
Jagan Teki2aa697a2018-01-11 13:21:15 +0530210 select SUN6I_PRCM
Hans de Goede44d8ae52015-04-06 20:33:34 +0200211 select SUNXI_GEN_SUN6I
Hans de Goede8c2c9cf2014-10-25 20:18:10 +0200212 select SUPPORT_SPL
Samuel Holland104950a2021-10-08 00:17:20 -0500213 select SYS_I2C_SUN6I_P2WI
Chen-Yu Tsaicc08ea42015-05-28 21:25:32 +0800214 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100215
Ian Campbellc3be2792014-10-24 21:20:45 +0100216config MACH_SUN7I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100217 bool "sun7i (Allwinner A20)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530218 select CPU_V7A
Hans de Goedeea624e12014-11-14 09:34:30 +0100219 select CPU_V7_HAS_NONSEC
220 select CPU_V7_HAS_VIRT
Masahiro Yamada217f92b2016-08-30 16:22:22 +0900221 select ARCH_SUPPORT_PSCI
Andre Przywara2564fce2022-01-23 00:27:19 +0000222 select SPL_ARMV7_SET_CORTEX_SMPEN
Jagan Tekidd928bf2018-01-10 16:03:34 +0530223 select DRAM_SUN4I
Jagan Tekidd322812018-05-07 13:03:38 +0530224 select PHY_SUN4I_USB
Hans de Goede44d8ae52015-04-06 20:33:34 +0200225 select SUNXI_GEN_SUN4I
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100226 select SUPPORT_SPL
Hans de Goedeb366fb92014-10-24 20:12:04 +0200227 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
Tom Rini55dabcc2021-08-18 23:12:24 -0400228 imply SPL_SYS_I2C_LEGACY
229 imply SYS_I2C_LEGACY
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100230
Hans de Goede5e6bacd2015-04-06 20:55:39 +0200231config MACH_SUN8I_A23
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100232 bool "sun8i (Allwinner A23)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530233 select CPU_V7A
Chen-Yu Tsai014414f2015-05-28 21:25:34 +0800234 select CPU_V7_HAS_NONSEC
235 select CPU_V7_HAS_VIRT
Masahiro Yamada217f92b2016-08-30 16:22:22 +0900236 select ARCH_SUPPORT_PSCI
Jagan Tekiaf303932018-01-10 16:15:14 +0530237 select DRAM_SUN8I_A23
Jagan Tekidd322812018-05-07 13:03:38 +0530238 select PHY_SUN4I_USB
Samuel Holland3227c852021-10-08 00:17:21 -0500239 select SPL_I2C
Hans de Goede44d8ae52015-04-06 20:33:34 +0200240 select SUNXI_GEN_SUN6I
Hans de Goede08fd1472014-12-07 14:34:27 +0100241 select SUPPORT_SPL
Samuel Holland3227c852021-10-08 00:17:21 -0500242 select SYS_I2C_SUN8I_RSB
Chen-Yu Tsai014414f2015-05-28 21:25:34 +0800243 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100244
Vishnu Patekar8c3dacf2015-03-01 23:47:48 +0530245config MACH_SUN8I_A33
246 bool "sun8i (Allwinner A33)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530247 select CPU_V7A
Chen-Yu Tsai014414f2015-05-28 21:25:34 +0800248 select CPU_V7_HAS_NONSEC
249 select CPU_V7_HAS_VIRT
Masahiro Yamada217f92b2016-08-30 16:22:22 +0900250 select ARCH_SUPPORT_PSCI
Jagan Tekic335e992018-01-10 16:17:39 +0530251 select DRAM_SUN8I_A33
Jagan Tekidd322812018-05-07 13:03:38 +0530252 select PHY_SUN4I_USB
Samuel Holland3227c852021-10-08 00:17:21 -0500253 select SPL_I2C
Vishnu Patekar8c3dacf2015-03-01 23:47:48 +0530254 select SUNXI_GEN_SUN6I
255 select SUPPORT_SPL
Samuel Holland3227c852021-10-08 00:17:21 -0500256 select SYS_I2C_SUN8I_RSB
Chen-Yu Tsai014414f2015-05-28 21:25:34 +0800257 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
Vishnu Patekar8c3dacf2015-03-01 23:47:48 +0530258
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800259config MACH_SUN8I_A83T
260 bool "sun8i (Allwinner A83T)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530261 select CPU_V7A
Jagan Teki0354f4b2018-01-10 16:20:26 +0530262 select DRAM_SUN8I_A83T
Jagan Tekidd322812018-05-07 13:03:38 +0530263 select PHY_SUN4I_USB
Samuel Holland3227c852021-10-08 00:17:21 -0500264 select SPL_I2C
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800265 select SUNXI_GEN_SUN6I
Maxime Ripard343ff162017-08-23 12:03:42 +0200266 select MMC_SUNXI_HAS_NEW_MODE
Vasily Khoruzhick2a8882e2018-11-09 20:41:44 -0800267 select MMC_SUNXI_HAS_MODE_SWITCH
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800268 select SUPPORT_SPL
Samuel Holland3227c852021-10-08 00:17:21 -0500269 select SYS_I2C_SUN8I_RSB
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800270
Jens Kuske1c27b7d2015-11-17 15:12:58 +0100271config MACH_SUN8I_H3
272 bool "sun8i (Allwinner H3)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530273 select CPU_V7A
Chen-Yu Tsai853f6d12016-01-06 15:13:09 +0800274 select CPU_V7_HAS_NONSEC
275 select CPU_V7_HAS_VIRT
Masahiro Yamada217f92b2016-08-30 16:22:22 +0900276 select ARCH_SUPPORT_PSCI
Andre Przywara7b82a222017-02-16 01:20:27 +0000277 select MACH_SUNXI_H3_H5
Chen-Yu Tsai853f6d12016-01-06 15:13:09 +0800278 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
Jens Kuske1c27b7d2015-11-17 15:12:58 +0100279
Chen-Yu Tsai379feba2016-11-30 14:57:32 +0800280config MACH_SUN8I_R40
281 bool "sun8i (Allwinner R40)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530282 select CPU_V7A
Chen-Yu Tsai09186482017-03-01 11:03:15 +0800283 select CPU_V7_HAS_NONSEC
284 select CPU_V7_HAS_VIRT
285 select ARCH_SUPPORT_PSCI
Chen-Yu Tsai379feba2016-11-30 14:57:32 +0800286 select SUNXI_GEN_SUN6I
Andre Przywarab6e3bf12021-05-05 10:04:41 +0100287 select MMC_SUNXI_HAS_NEW_MODE
Chen-Yu Tsai50ae7ae2016-12-02 16:09:49 +0800288 select SUPPORT_SPL
Icenowy Zheng9934aba2017-06-03 17:10:14 +0800289 select SUNXI_DRAM_DW
Icenowy Zheng87098d72017-06-03 17:10:16 +0800290 select SUNXI_DRAM_DW_32BIT
Andre Przywaraa2f729f2020-01-01 23:44:48 +0000291 select PHY_SUN4I_USB
Tom Rini55dabcc2021-08-18 23:12:24 -0400292 imply SPL_SYS_I2C_LEGACY
Chen-Yu Tsai379feba2016-11-30 14:57:32 +0800293
Icenowy Zhengc1994892017-04-08 15:30:12 +0800294config MACH_SUN8I_V3S
Icenowy Zhengef9025b2020-10-26 22:15:59 +0800295 bool "sun8i (Allwinner V3/V3s/S3/S3L)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530296 select CPU_V7A
Icenowy Zhengc1994892017-04-08 15:30:12 +0800297 select CPU_V7_HAS_NONSEC
298 select CPU_V7_HAS_VIRT
299 select ARCH_SUPPORT_PSCI
300 select SUNXI_GEN_SUN6I
Icenowy Zheng7d06e592017-06-03 17:10:22 +0800301 select SUNXI_DRAM_DW
302 select SUNXI_DRAM_DW_16BIT
303 select SUPPORT_SPL
Icenowy Zhengc1994892017-04-08 15:30:12 +0800304 select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
305
Hans de Goede1871a8c2015-01-13 19:25:06 +0100306config MACH_SUN9I
307 bool "sun9i (Allwinner A80)"
Lokesh Vutlaacf15002018-04-26 18:21:26 +0530308 select CPU_V7A
Andre Przywara2564fce2022-01-23 00:27:19 +0000309 select SPL_ARMV7_SET_CORTEX_SMPEN
Jagan Teki7d0b1652018-03-17 00:18:01 +0530310 select DRAM_SUN9I
Samuel Holland3227c852021-10-08 00:17:21 -0500311 select SPL_I2C
Jagan Teki63928fa2018-01-11 13:23:02 +0530312 select SUN6I_PRCM
Hans de Goede1871a8c2015-01-13 19:25:06 +0100313 select SUNXI_GEN_SUN6I
Philipp Tomsicha98c2962016-10-28 18:21:32 +0800314 select SUPPORT_SPL
Hans de Goede1871a8c2015-01-13 19:25:06 +0100315
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800316config MACH_SUN50I
317 bool "sun50i (Allwinner A64)"
318 select ARM64
Jagan Tekidd322812018-05-07 13:03:38 +0530319 select PHY_SUN4I_USB
Vasily Khoruzhick31a4ac42018-11-05 20:24:30 -0800320 select SUN6I_PRCM
Jernej Skrabec1ae5def2017-03-27 19:22:31 +0200321 select SUNXI_DE2
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800322 select SUNXI_GEN_SUN6I
Vasily Khoruzhick0e21a2f2018-11-09 20:41:46 -0800323 select MMC_SUNXI_HAS_NEW_MODE
Andre Przywaraeb77f5c2017-01-02 11:48:45 +0000324 select SUPPORT_SPL
Icenowy Zheng9934aba2017-06-03 17:10:14 +0800325 select SUNXI_DRAM_DW
Icenowy Zheng87098d72017-06-03 17:10:16 +0800326 select SUNXI_DRAM_DW_32BIT
Andre Przywarad29adf82017-04-26 01:32:48 +0100327 select FIT
328 select SPL_LOAD_FIT
Andre Przywarabe0d2172018-06-27 01:42:53 +0100329 select SUNXI_A64_TIMER_ERRATUM
Chen-Yu Tsaia81b7992016-05-02 10:28:07 +0800330
Andre Przywara997bde62017-02-16 01:20:28 +0000331config MACH_SUN50I_H5
332 bool "sun50i (Allwinner H5)"
333 select ARM64
334 select MACH_SUNXI_H3_H5
Andre Przywarab6e3bf12021-05-05 10:04:41 +0100335 select MMC_SUNXI_HAS_NEW_MODE
Andre Przywarad29adf82017-04-26 01:32:48 +0100336 select FIT
337 select SPL_LOAD_FIT
Andre Przywara997bde62017-02-16 01:20:28 +0000338
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800339config MACH_SUN50I_H6
340 bool "sun50i (Allwinner H6)"
341 select ARM64
Andre Przywaraf96238e2019-06-23 15:09:50 +0100342 select PHY_SUN4I_USB
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800343 select DRAM_SUN50I_H6
Jernej Skrabec44726092021-01-11 21:11:34 +0100344 select SUN50I_GEN_H6
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800345
Jernej Skrabec8ec293e2021-01-11 21:11:46 +0100346config MACH_SUN50I_H616
347 bool "sun50i (Allwinner H616)"
348 select ARM64
349 select DRAM_SUN50I_H616
350 select SUN50I_GEN_H6
351
Ian Campbell2c7e3b92014-10-24 21:20:44 +0100352endchoice
Maxime Ripard8a6564d2014-10-03 20:16:29 +0800353
Hans de Goede5e6bacd2015-04-06 20:55:39 +0200354# The sun8i SoCs share a lot, this helps to avoid a lot of "if A23 || A33"
355config MACH_SUN8I
356 bool
Andre Przywara2564fce2022-01-23 00:27:19 +0000357 select SPL_ARMV7_SET_CORTEX_SMPEN if !ARM64
Jagan Teki63928fa2018-01-11 13:23:02 +0530358 select SUN6I_PRCM
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800359 default y if MACH_SUN8I_A23
360 default y if MACH_SUN8I_A33
361 default y if MACH_SUN8I_A83T
362 default y if MACH_SUNXI_H3_H5
Chen-Yu Tsai379feba2016-11-30 14:57:32 +0800363 default y if MACH_SUN8I_R40
Icenowy Zhengc1994892017-04-08 15:30:12 +0800364 default y if MACH_SUN8I_V3S
Hans de Goede5e6bacd2015-04-06 20:55:39 +0200365
Andre Przywarab5402d12017-01-02 11:48:35 +0000366config RESERVE_ALLWINNER_BOOT0_HEADER
367 bool "reserve space for Allwinner boot0 header"
368 select ENABLE_ARM_SOC_BOOT0_HOOK
369 ---help---
370 Prepend a 1536 byte (empty) header to the U-Boot image file, to be
371 filled with magic values post build. The Allwinner provided boot0
372 blob relies on this information to load and execute U-Boot.
373 Only needed on 64-bit Allwinner boards so far when using boot0.
374
Andre Przywara83843c92017-01-02 11:48:36 +0000375config ARM_BOOT_HOOK_RMR
376 bool
377 depends on ARM64
378 default y
379 select ENABLE_ARM_SOC_BOOT0_HOOK
380 ---help---
381 Insert some ARM32 code at the very beginning of the U-Boot binary
382 which uses an RMR register write to bring the core into AArch64 mode.
383 The very first instruction acts as a switch, since it's carefully
384 chosen to be a NOP in one mode and a branch in the other, so the
385 code would only be executed if not already in AArch64.
386 This allows both the SPL and the U-Boot proper to be entered in
387 either mode and switch to AArch64 if needed.
388
Andre Przywara770b85a2019-07-15 02:27:06 +0100389if SUNXI_DRAM_DW || DRAM_SUN50I_H6
Icenowy Zhengf6457ce2017-06-03 17:10:18 +0800390config SUNXI_DRAM_DDR3
391 bool
392
Icenowy Zheng67337e62017-06-03 17:10:20 +0800393config SUNXI_DRAM_DDR2
394 bool
395
Icenowy Zheng72cc9872017-06-03 17:10:23 +0800396config SUNXI_DRAM_LPDDR3
397 bool
398
Icenowy Zhengf6457ce2017-06-03 17:10:18 +0800399choice
400 prompt "DRAM Type and Timing"
Icenowy Zheng3ec06982017-06-03 17:10:21 +0800401 default SUNXI_DRAM_DDR3_1333 if !MACH_SUN8I_V3S
402 default SUNXI_DRAM_DDR2_V3S if MACH_SUN8I_V3S
Icenowy Zhengf6457ce2017-06-03 17:10:18 +0800403
404config SUNXI_DRAM_DDR3_1333
405 bool "DDR3 1333"
406 select SUNXI_DRAM_DDR3
407 ---help---
408 This option is the original only supported memory type, which suits
409 many H3/H5/A64 boards available now.
410
Icenowy Zhengec4670a2017-06-03 17:10:24 +0800411config SUNXI_DRAM_LPDDR3_STOCK
412 bool "LPDDR3 with Allwinner stock configuration"
413 select SUNXI_DRAM_LPDDR3
414 ---help---
415 This option is the LPDDR3 timing used by the stock boot0 by
416 Allwinner.
417
Andre Przywara770b85a2019-07-15 02:27:06 +0100418config SUNXI_DRAM_H6_LPDDR3
419 bool "LPDDR3 DRAM chips on the H6 DRAM controller"
420 select SUNXI_DRAM_LPDDR3
421 depends on DRAM_SUN50I_H6
422 ---help---
423 This option is the LPDDR3 timing used by the stock boot0 by
424 Allwinner.
425
Andre Przywara7656d392019-07-15 02:27:08 +0100426config SUNXI_DRAM_H6_DDR3_1333
427 bool "DDR3-1333 boot0 timings on the H6 DRAM controller"
428 select SUNXI_DRAM_DDR3
429 depends on DRAM_SUN50I_H6
430 ---help---
431 This option is the DDR3 timing used by the boot0 on H6 TV boxes
432 which use a DDR3-1333 timing.
433
Icenowy Zheng67337e62017-06-03 17:10:20 +0800434config SUNXI_DRAM_DDR2_V3S
435 bool "DDR2 found in V3s chip"
436 select SUNXI_DRAM_DDR2
Icenowy Zheng3ec06982017-06-03 17:10:21 +0800437 depends on MACH_SUN8I_V3S
Icenowy Zheng67337e62017-06-03 17:10:20 +0800438 ---help---
439 This option is only for the DDR2 memory chip which is co-packaged in
440 Allwinner V3s SoC.
441
Icenowy Zhengf6457ce2017-06-03 17:10:18 +0800442endchoice
443endif
444
Vishnu Patekarf5fd8ca2016-01-12 01:20:58 +0800445config DRAM_TYPE
446 int "sunxi dram type"
447 depends on MACH_SUN8I_A83T
448 default 3
449 ---help---
450 Set the dram type, 3: DDR3, 7: LPDDR3
Hans de Goede5e6bacd2015-04-06 20:55:39 +0200451
Hans de Goede37781a12014-11-15 19:46:39 +0100452config DRAM_CLK
Hans de Goede8ffc4872015-01-17 14:24:55 +0100453 int "sunxi dram clock speed"
Philipp Tomsich297bb9e2016-10-28 18:21:28 +0800454 default 792 if MACH_SUN9I
Chen-Yu Tsaifab03e32016-11-30 16:58:35 +0800455 default 648 if MACH_SUN8I_R40
Hans de Goede8ffc4872015-01-17 14:24:55 +0100456 default 312 if MACH_SUN6I || MACH_SUN8I
Icenowy Zheng7d06e592017-06-03 17:10:22 +0800457 default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || \
458 MACH_SUN8I_V3S
Andre Przywara52e31822017-01-02 11:48:37 +0000459 default 672 if MACH_SUN50I
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800460 default 744 if MACH_SUN50I_H6
Jernej Skrabecf4317db2021-01-11 21:11:43 +0100461 default 720 if MACH_SUN50I_H616
Hans de Goede37781a12014-11-15 19:46:39 +0100462 ---help---
Philipp Tomsich297bb9e2016-10-28 18:21:28 +0800463 Set the dram clock speed, valid range 240 - 480 (prior to sun9i),
464 must be a multiple of 24. For the sun9i (A80), the tested values
465 (for DDR3-1600) are 312 to 792.
Hans de Goede37781a12014-11-15 19:46:39 +0100466
Siarhei Siamashka47e35012015-02-01 00:27:06 +0200467if MACH_SUN5I || MACH_SUN7I
468config DRAM_MBUS_CLK
469 int "sunxi mbus clock speed"
470 default 300
471 ---help---
472 Set the mbus clock speed. The maximum on sun5i hardware is 300MHz.
473
474endif
475
Hans de Goede37781a12014-11-15 19:46:39 +0100476config DRAM_ZQ
Hans de Goede8ffc4872015-01-17 14:24:55 +0100477 int "sunxi dram zq value"
Jernej Skrabecf4317db2021-01-11 21:11:43 +0100478 depends on !MACH_SUN50I_H616
Paul Kocialkowski9c2b0dd2019-03-14 11:36:14 +0100479 default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || \
Paul Kocialkowski882b71e2019-03-14 11:36:15 +0100480 MACH_SUN8I_A23 || MACH_SUN8I_A33 || MACH_SUN8I_A83T
Hans de Goede8ffc4872015-01-17 14:24:55 +0100481 default 127 if MACH_SUN7I
Icenowy Zheng7d06e592017-06-03 17:10:22 +0800482 default 14779 if MACH_SUN8I_V3S
Paul Kocialkowski882b71e2019-03-14 11:36:15 +0100483 default 3881979 if MACH_SUNXI_H3_H5 || MACH_SUN8I_R40 || MACH_SUN50I_H6
Chen-Yu Tsai58b628e2016-10-28 18:21:36 +0800484 default 4145117 if MACH_SUN9I
Andre Przywara52e31822017-01-02 11:48:37 +0000485 default 3881915 if MACH_SUN50I
Hans de Goede37781a12014-11-15 19:46:39 +0100486 ---help---
Hans de Goedee1a08882015-01-25 11:29:27 +0100487 Set the dram zq value.
Hans de Goede37781a12014-11-15 19:46:39 +0100488
Hans de Goede8975cdf2015-05-13 15:00:46 +0200489config DRAM_ODT_EN
490 bool "sunxi dram odt enable"
Hans de Goede8975cdf2015-05-13 15:00:46 +0200491 default y if MACH_SUN8I_A23
Paul Kocialkowski9d0f9e82019-03-14 11:36:16 +0100492 default y if MACH_SUNXI_H3_H5
Chen-Yu Tsaifab03e32016-11-30 16:58:35 +0800493 default y if MACH_SUN8I_R40
Andre Przywaraeb77f5c2017-01-02 11:48:45 +0000494 default y if MACH_SUN50I
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800495 default y if MACH_SUN50I_H6
Jernej Skrabecf4317db2021-01-11 21:11:43 +0100496 default y if MACH_SUN50I_H616
Hans de Goede8975cdf2015-05-13 15:00:46 +0200497 ---help---
498 Select this to enable dram odt (on die termination).
499
Hans de Goede8ffc4872015-01-17 14:24:55 +0100500if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
501config DRAM_EMR1
502 int "sunxi dram emr1 value"
503 default 0 if MACH_SUN4I
504 default 4 if MACH_SUN5I || MACH_SUN7I
505 ---help---
Hans de Goedee1a08882015-01-25 11:29:27 +0100506 Set the dram controller emr1 value.
Siarhei Siamashkad1336472015-02-01 00:27:05 +0200507
Siarhei Siamashka47e35012015-02-01 00:27:06 +0200508config DRAM_TPR3
509 hex "sunxi dram tpr3 value"
510 default 0
511 ---help---
512 Set the dram controller tpr3 parameter. This parameter configures
513 the delay on the command lane and also phase shifts, which are
514 applied for sampling incoming read data. The default value 0
515 means that no phase/delay adjustments are necessary. Properly
516 configuring this parameter increases reliability at high DRAM
517 clock speeds.
518
519config DRAM_DQS_GATING_DELAY
520 hex "sunxi dram dqs_gating_delay value"
521 default 0
522 ---help---
523 Set the dram controller dqs_gating_delay parmeter. Each byte
524 encodes the DQS gating delay for each byte lane. The delay
525 granularity is 1/4 cycle. For example, the value 0x05060606
526 means that the delay is 5 quarter-cycles for one lane (1.25
527 cycles) and 6 quarter-cycles (1.5 cycles) for 3 other lanes.
528 The default value 0 means autodetection. The results of hardware
529 autodetection are not very reliable and depend on the chip
530 temperature (sometimes producing different results on cold start
531 and warm reboot). But the accuracy of hardware autodetection
532 is usually good enough, unless running at really high DRAM
533 clocks speeds (up to 600MHz). If unsure, keep as 0.
534
Siarhei Siamashkad1336472015-02-01 00:27:05 +0200535choice
536 prompt "sunxi dram timings"
537 default DRAM_TIMINGS_VENDOR_MAGIC
538 ---help---
539 Select the timings of the DDR3 chips.
540
541config DRAM_TIMINGS_VENDOR_MAGIC
542 bool "Magic vendor timings from Android"
543 ---help---
544 The same DRAM timings as in the Allwinner boot0 bootloader.
545
546config DRAM_TIMINGS_DDR3_1066F_1333H
547 bool "JEDEC DDR3-1333H with down binning to DDR3-1066F"
548 ---help---
549 Use the timings of the standard JEDEC DDR3-1066F speed bin for
550 DRAM_CLK <= 533MHz and the timings of the DDR3-1333H speed bin
551 for DRAM_CLK > 533MHz. This covers the majority of DDR3 chips
552 used in Allwinner A10/A13/A20 devices. In the case of DDR3-1333
553 or DDR3-1600 chips, be sure to check the DRAM datasheet to confirm
554 that down binning to DDR3-1066F is supported (because DDR3-1066F
555 uses a bit faster timings than DDR3-1333H).
556
557config DRAM_TIMINGS_DDR3_800E_1066G_1333J
558 bool "JEDEC DDR3-800E / DDR3-1066G / DDR3-1333J"
559 ---help---
560 Use the timings of the slowest possible JEDEC speed bin for the
561 selected DRAM_CLK. Depending on the DRAM_CLK value, it may be
562 DDR3-800E, DDR3-1066G or DDR3-1333J.
563
564endchoice
565
Hans de Goede37781a12014-11-15 19:46:39 +0100566endif
567
Hans de Goede8975cdf2015-05-13 15:00:46 +0200568if MACH_SUN8I_A23
569config DRAM_ODT_CORRECTION
570 int "sunxi dram odt correction value"
571 default 0
572 ---help---
573 Set the dram odt correction value (range -255 - 255). In allwinner
574 fex files, this option is found in bits 8-15 of the u32 odt_en variable
575 in the [dram] section. When bit 31 of the odt_en variable is set
576 then the correction is negative. Usually the value for this is 0.
577endif
578
Iain Patone71b4222015-03-28 10:26:38 +0000579config SYS_CLK_FREQ
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500580 default 408000000 if MACH_SUNIV
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800581 default 1008000000 if MACH_SUN4I
582 default 1008000000 if MACH_SUN5I
583 default 1008000000 if MACH_SUN6I
Iain Patone71b4222015-03-28 10:26:38 +0000584 default 912000000 if MACH_SUN7I
Icenowy Zheng3cfecee2017-10-31 07:36:28 +0800585 default 816000000 if MACH_SUN50I || MACH_SUN50I_H5
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800586 default 1008000000 if MACH_SUN8I
587 default 1008000000 if MACH_SUN9I
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800588 default 888000000 if MACH_SUN50I_H6
Jernej Skrabec8ec293e2021-01-11 21:11:46 +0100589 default 1008000000 if MACH_SUN50I_H616
Iain Patone71b4222015-03-28 10:26:38 +0000590
Maxime Ripard8a6564d2014-10-03 20:16:29 +0800591config SYS_CONFIG_NAME
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500592 default "suniv" if MACH_SUNIV
Ian Campbellc3be2792014-10-24 21:20:45 +0100593 default "sun4i" if MACH_SUN4I
594 default "sun5i" if MACH_SUN5I
595 default "sun6i" if MACH_SUN6I
596 default "sun7i" if MACH_SUN7I
597 default "sun8i" if MACH_SUN8I
Hans de Goede1871a8c2015-01-13 19:25:06 +0100598 default "sun9i" if MACH_SUN9I
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200599 default "sun50i" if MACH_SUN50I
Icenowy Zheng6f796a92018-07-21 16:20:31 +0800600 default "sun50i" if MACH_SUN50I_H6
Jernej Skrabec8ec293e2021-01-11 21:11:46 +0100601 default "sun50i" if MACH_SUN50I_H616
Hans de Goede6ae66f22014-08-01 09:28:24 +0200602
Masahiro Yamadadd840582014-07-30 14:08:14 +0900603config SYS_BOARD
Masahiro Yamadadd840582014-07-30 14:08:14 +0900604 default "sunxi"
605
606config SYS_SOC
Masahiro Yamadadd840582014-07-30 14:08:14 +0900607 default "sunxi"
608
Andre Przywara1bf98bd2022-07-03 00:47:20 +0100609config SUNXI_MINIMUM_DRAM_MB
610 int "minimum DRAM size"
611 default 32 if MACH_SUNIV
612 default 64 if MACH_SUN8I_V3S
613 default 256
614 ---help---
615 Minimum DRAM size expected on the board. Traditionally we assumed
616 256 MB, so that U-Boot would load at 160MB. With co-packaged DRAM
617 we have smaller sizes, though, so that U-Boot's own load address and
618 the default payload addresses must be shifted down.
619 This is expected to be fixed by the SoC selection.
620
Siarhei Siamashkaf0ce28e2014-12-25 02:34:47 +0200621config UART0_PORT_F
622 bool "UART0 on MicroSD breakout board"
Siarhei Siamashkaf0ce28e2014-12-25 02:34:47 +0200623 ---help---
624 Repurpose the SD card slot for getting access to the UART0 serial
625 console. Primarily useful only for low level u-boot debugging on
626 tablets, where normal UART0 is difficult to access and requires
627 device disassembly and/or soldering. As the SD card can't be used
628 at the same time, the system can be only booted in the FEL mode.
629 Only enable this if you really know what you are doing.
630
Hans de Goedeaccc9e42014-10-22 14:56:36 +0200631config OLD_SUNXI_KERNEL_COMPAT
Masahiro Yamadaab650062016-08-12 10:26:50 +0900632 bool "Enable workarounds for booting old kernels"
Hans de Goedeaccc9e42014-10-22 14:56:36 +0200633 ---help---
634 Set this to enable various workarounds for old kernels, this results in
635 sub-optimal settings for newer kernels, only enable if needed.
636
Mylène Josserandf5fd7882017-04-02 12:59:10 +0200637config MACPWR
638 string "MAC power pin"
639 default ""
640 help
641 Set the pin used to power the MAC. This takes a string in the format
642 understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
643
Samuel Hollanddda9fa72021-09-12 10:28:35 -0500644config MMC1_PINS_PH
645 bool "Pins for mmc1 are on Port H"
646 depends on MACH_SUN4I || MACH_SUN7I || MACH_SUN8I_R40
Paul Kocialkowski8deacca2015-03-22 18:12:23 +0100647 ---help---
Samuel Hollanddda9fa72021-09-12 10:28:35 -0500648 Select this option for boards where mmc1 uses the Port H pinmux.
Paul Kocialkowski8deacca2015-03-22 18:12:23 +0100649
Hans de Goede2ccfac02014-10-02 20:43:50 +0200650config MMC_SUNXI_SLOT_EXTRA
651 int "mmc extra slot number"
652 default -1
653 ---help---
654 sunxi builds always enable mmc0, some boards also have a second sdcard
655 slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
656 support for this.
657
Hans de Goede4458b7a2015-01-07 15:26:06 +0100658config USB0_VBUS_PIN
659 string "Vbus enable pin for usb0 (otg)"
660 default ""
661 ---help---
662 Set the Vbus enable pin for usb0 (otg). This takes a string in the
663 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
664
Hans de Goede52defe82015-02-16 22:13:43 +0100665config USB0_VBUS_DET
666 string "Vbus detect pin for usb0 (otg)"
Hans de Goede52defe82015-02-16 22:13:43 +0100667 default ""
668 ---help---
669 Set the Vbus detect pin for usb0 (otg). This takes a string in the
670 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
671
Hans de Goede48c06c92015-06-14 17:29:53 +0200672config USB0_ID_DET
673 string "ID detect pin for usb0 (otg)"
674 default ""
675 ---help---
676 Set the ID detect pin for usb0 (otg). This takes a string in the
677 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
678
Hans de Goede115200c2014-11-07 16:09:00 +0100679config USB1_VBUS_PIN
680 string "Vbus enable pin for usb1 (ehci0)"
681 default "PH6" if MACH_SUN4I || MACH_SUN7I
Hans de Goede76946df2014-11-07 14:51:12 +0100682 default "PH27" if MACH_SUN6I
Hans de Goede115200c2014-11-07 16:09:00 +0100683 ---help---
684 Set the Vbus enable pin for usb1 (ehci0, usb0 is the otg). This takes
685 a string in the format understood by sunxi_name_to_gpio, e.g.
686 PH1 for pin 1 of port H.
687
688config USB2_VBUS_PIN
689 string "Vbus enable pin for usb2 (ehci1)"
690 default "PH3" if MACH_SUN4I || MACH_SUN7I
Hans de Goede76946df2014-11-07 14:51:12 +0100691 default "PH24" if MACH_SUN6I
Hans de Goede115200c2014-11-07 16:09:00 +0100692 ---help---
693 See USB1_VBUS_PIN help text.
694
Hans de Goede60fa6302016-03-18 08:42:01 +0100695config USB3_VBUS_PIN
696 string "Vbus enable pin for usb3 (ehci2)"
697 default ""
698 ---help---
699 See USB1_VBUS_PIN help text.
700
Paul Kocialkowski6c739c52015-04-10 23:09:52 +0200701config I2C0_ENABLE
702 bool "Enable I2C/TWI controller 0"
Chen-Yu Tsai409677e2016-11-30 15:30:30 +0800703 default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUN8I_R40
Paul Kocialkowski6c739c52015-04-10 23:09:52 +0200704 default n if MACH_SUN6I || MACH_SUN8I
Hans de Goede0878a8a2016-05-15 13:51:58 +0200705 select CMD_I2C
Paul Kocialkowski6c739c52015-04-10 23:09:52 +0200706 ---help---
707 This allows enabling I2C/TWI controller 0 by muxing its pins, enabling
708 its clock and setting up the bus. This is especially useful on devices
709 with slaves connected to the bus or with pins exposed through e.g. an
710 expansion port/header.
711
712config I2C1_ENABLE
713 bool "Enable I2C/TWI controller 1"
Hans de Goede0878a8a2016-05-15 13:51:58 +0200714 select CMD_I2C
Paul Kocialkowski6c739c52015-04-10 23:09:52 +0200715 ---help---
716 See I2C0_ENABLE help text.
717
Jernej Skrabec57e76232021-01-11 21:11:38 +0100718if SUNXI_GEN_SUN6I || SUN50I_GEN_H6
Jelle van der Waa9d082682016-01-14 14:06:26 +0100719config R_I2C_ENABLE
720 bool "Enable the PRCM I2C/TWI controller"
Jelle van der Waa0d8382a2016-02-23 18:47:19 +0100721 # This is used for the pmic on H3
722 default y if SY8106A_POWER
Hans de Goede0878a8a2016-05-15 13:51:58 +0200723 select CMD_I2C
Jelle van der Waa9d082682016-01-14 14:06:26 +0100724 ---help---
725 Set this to y to enable the I2C controller which is part of the PRCM.
Jelle van der Waa0d8382a2016-02-23 18:47:19 +0100726endif
Jelle van der Waa9d082682016-01-14 14:06:26 +0100727
Hans de Goede2fcf0332015-04-25 17:25:14 +0200728config AXP_GPIO
Masahiro Yamadaab650062016-08-12 10:26:50 +0900729 bool "Enable support for gpio-s on axp PMICs"
Samuel Holland4ab39e72021-10-08 00:17:19 -0500730 depends on AXP_PMIC_BUS
Hans de Goede2fcf0332015-04-25 17:25:14 +0200731 ---help---
732 Say Y here to enable support for the gpio pins of the axp PMIC ICs.
733
Chris Morgan52bcc4f2022-01-21 13:37:32 +0000734config AXP_DISABLE_BOOT_ON_POWERON
735 bool "Disable device boot on power plug-in"
736 depends on AXP209_POWER || AXP221_POWER || AXP809_POWER || AXP818_POWER
737 default n
738 ---help---
739 Say Y here to prevent the device from booting up because of a plug-in
740 event. When set, the device will boot into the SPL briefly to
741 determine why it was powered on, and if it was determined because of
742 a plug-in event instead of a button press event it will shut back off.
743
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800744config VIDEO_SUNXI
Masahiro Yamadaab650062016-08-12 10:26:50 +0900745 bool "Enable graphical uboot console on HDMI, LCD or VGA"
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800746 depends on !MACH_SUN8I_A83T
747 depends on !MACH_SUNXI_H3_H5
Chen-Yu Tsai379feba2016-11-30 14:57:32 +0800748 depends on !MACH_SUN8I_R40
Icenowy Zhengc1994892017-04-08 15:30:12 +0800749 depends on !MACH_SUN8I_V3S
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800750 depends on !MACH_SUN9I
751 depends on !MACH_SUN50I
Jernej Skrabec44726092021-01-11 21:11:34 +0100752 depends on !SUN50I_GEN_H6
Simon Glassb86986c2022-10-18 07:46:31 -0600753 select VIDEO
Jagan Teki5d235322021-02-22 00:12:34 +0000754 select DISPLAY
Icenowy Zhengf6bdddc2017-10-26 11:14:46 +0800755 imply VIDEO_DT_SIMPLEFB
Luc Verhaegen7f2c5212014-08-13 07:55:06 +0200756 default y
757 ---help---
Jagan Teki5d235322021-02-22 00:12:34 +0000758 Say Y here to add support for using a graphical console on the HDMI,
759 LCD or VGA output found on older sunxi devices. This will also provide
760 a simple_framebuffer device for Linux.
Hans de Goede2dae8002014-12-21 16:28:32 +0100761
Hans de Goede2fbf0912014-12-23 23:04:35 +0100762config VIDEO_HDMI
Masahiro Yamadaab650062016-08-12 10:26:50 +0900763 bool "HDMI output support"
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500764 depends on VIDEO_SUNXI && !MACH_SUN8I && !MACH_SUNIV
Hans de Goede2fbf0912014-12-23 23:04:35 +0100765 default y
766 ---help---
767 Say Y here to add support for outputting video over HDMI.
768
Hans de Goeded9786d22014-12-25 13:58:06 +0100769config VIDEO_VGA
Masahiro Yamadaab650062016-08-12 10:26:50 +0900770 bool "VGA output support"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800771 depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN7I)
Hans de Goeded9786d22014-12-25 13:58:06 +0100772 ---help---
773 Say Y here to add support for outputting video over VGA.
774
Hans de Goedee2bbdfb2014-12-24 12:17:07 +0100775config VIDEO_VGA_VIA_LCD
Masahiro Yamadaab650062016-08-12 10:26:50 +0900776 bool "VGA via LCD controller support"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800777 depends on VIDEO_SUNXI && (MACH_SUN5I || MACH_SUN6I || MACH_SUN8I)
Hans de Goedee2bbdfb2014-12-24 12:17:07 +0100778 ---help---
779 Say Y here to add support for external DACs connected to the parallel
780 LCD interface driving a VGA connector, such as found on the
781 Olimex A13 boards.
782
Hans de Goedefb75d972015-01-25 15:33:07 +0100783config VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH
Masahiro Yamadaab650062016-08-12 10:26:50 +0900784 bool "Force sync active high for VGA via LCD controller support"
Hans de Goedefb75d972015-01-25 15:33:07 +0100785 depends on VIDEO_VGA_VIA_LCD
Hans de Goedefb75d972015-01-25 15:33:07 +0100786 ---help---
787 Say Y here if you've a board which uses opendrain drivers for the vga
788 hsync and vsync signals. Opendrain drivers cannot generate steep enough
789 positive edges for a stable video output, so on boards with opendrain
790 drivers the sync signals must always be active high.
791
Chen-Yu Tsai507e27d2015-01-12 18:02:11 +0800792config VIDEO_VGA_EXTERNAL_DAC_EN
793 string "LCD panel power enable pin"
794 depends on VIDEO_VGA_VIA_LCD
795 default ""
796 ---help---
797 Set the enable pin for the external VGA DAC. This takes a string in the
798 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
799
Hans de Goede39920c82015-08-03 19:20:26 +0200800config VIDEO_COMPOSITE
Masahiro Yamadaab650062016-08-12 10:26:50 +0900801 bool "Composite video output support"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800802 depends on VIDEO_SUNXI && (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
Hans de Goede39920c82015-08-03 19:20:26 +0200803 ---help---
804 Say Y here to add support for outputting composite video.
805
Hans de Goede2dae8002014-12-21 16:28:32 +0100806config VIDEO_LCD_MODE
807 string "LCD panel timing details"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800808 depends on VIDEO_SUNXI
Hans de Goede2dae8002014-12-21 16:28:32 +0100809 default ""
810 ---help---
811 LCD panel timing details string, leave empty if there is no LCD panel.
812 This is in drivers/video/videomodes.c: video_get_params() format, e.g.
813 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
Hans de Goede8addd3e2015-08-16 11:23:42 +0200814 Also see: http://linux-sunxi.org/LCD
Hans de Goede2dae8002014-12-21 16:28:32 +0100815
Hans de Goede65150322015-01-13 13:21:46 +0100816config VIDEO_LCD_DCLK_PHASE
817 int "LCD panel display clock phase"
Simon Glassb86986c2022-10-18 07:46:31 -0600818 depends on VIDEO_SUNXI || VIDEO
Hans de Goede65150322015-01-13 13:21:46 +0100819 default 1
Michal Suchaneke038c7a2022-07-03 20:49:24 +0200820 range 0 3
Hans de Goede65150322015-01-13 13:21:46 +0100821 ---help---
Michal Suchaneke038c7a2022-07-03 20:49:24 +0200822 Select LCD panel display clock phase shift
Hans de Goede65150322015-01-13 13:21:46 +0100823
Hans de Goede2dae8002014-12-21 16:28:32 +0100824config VIDEO_LCD_POWER
825 string "LCD panel power enable pin"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800826 depends on VIDEO_SUNXI
Hans de Goede2dae8002014-12-21 16:28:32 +0100827 default ""
828 ---help---
829 Set the power enable pin for the LCD panel. This takes a string in the
830 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
831
Hans de Goede242e3d82015-02-16 17:26:41 +0100832config VIDEO_LCD_RESET
833 string "LCD panel reset pin"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800834 depends on VIDEO_SUNXI
Hans de Goede242e3d82015-02-16 17:26:41 +0100835 default ""
836 ---help---
837 Set the reset pin for the LCD panel. This takes a string in the format
838 understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
839
Hans de Goede2dae8002014-12-21 16:28:32 +0100840config VIDEO_LCD_BL_EN
841 string "LCD panel backlight enable pin"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800842 depends on VIDEO_SUNXI
Hans de Goede2dae8002014-12-21 16:28:32 +0100843 default ""
844 ---help---
845 Set the backlight enable pin for the LCD panel. This takes a string in the
846 the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
847 port H.
848
849config VIDEO_LCD_BL_PWM
850 string "LCD panel backlight pwm pin"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800851 depends on VIDEO_SUNXI
Hans de Goede2dae8002014-12-21 16:28:32 +0100852 default ""
853 ---help---
854 Set the backlight pwm pin for the LCD panel. This takes a string in the
855 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H.
Luc Verhaegen7f2c5212014-08-13 07:55:06 +0200856
Hans de Goedea7403ae2015-01-22 21:02:42 +0100857config VIDEO_LCD_BL_PWM_ACTIVE_LOW
858 bool "LCD panel backlight pwm is inverted"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800859 depends on VIDEO_SUNXI
Hans de Goedea7403ae2015-01-22 21:02:42 +0100860 default y
861 ---help---
862 Set this if the backlight pwm output is active low.
863
Hans de Goede55410082015-02-16 17:23:25 +0100864config VIDEO_LCD_PANEL_I2C
865 bool "LCD panel needs to be configured via i2c"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800866 depends on VIDEO_SUNXI
Samuel Holland24214972021-10-08 00:17:24 -0500867 select DM_I2C_GPIO
Hans de Goede55410082015-02-16 17:23:25 +0100868 ---help---
869 Say y here if the LCD panel needs to be configured via i2c. This
870 will add a bitbang i2c controller using gpios to talk to the LCD.
871
Samuel Holland24214972021-10-08 00:17:24 -0500872config VIDEO_LCD_PANEL_I2C_NAME
873 string "LCD panel i2c interface node name"
Hans de Goede55410082015-02-16 17:23:25 +0100874 depends on VIDEO_LCD_PANEL_I2C
Samuel Holland70f24fa2022-04-27 15:31:24 -0500875 default "i2c"
Hans de Goede55410082015-02-16 17:23:25 +0100876 ---help---
Samuel Holland24214972021-10-08 00:17:24 -0500877 Set the device tree node name for the LCD i2c interface.
Hans de Goede213480e2015-01-01 22:04:34 +0100878
879# Note only one of these may be selected at a time! But hidden choices are
880# not supported by Kconfig
881config VIDEO_LCD_IF_PARALLEL
882 bool
883
884config VIDEO_LCD_IF_LVDS
885 bool
886
Jernej Skrabec1ae5def2017-03-27 19:22:31 +0200887config SUNXI_DE2
888 bool
Jernej Skrabec1ae5def2017-03-27 19:22:31 +0200889
Jernej Skrabec56009452017-03-27 19:22:32 +0200890config VIDEO_DE2
891 bool "Display Engine 2 video driver"
892 depends on SUNXI_DE2
Simon Glassb86986c2022-10-18 07:46:31 -0600893 select VIDEO
Jernej Skrabec56009452017-03-27 19:22:32 +0200894 select DISPLAY
Jernej Skrabec599177e2021-03-06 20:54:19 +0100895 select VIDEO_DW_HDMI
Icenowy Zhengbe5b96f2017-10-26 11:14:47 +0800896 imply VIDEO_DT_SIMPLEFB
Jernej Skrabec56009452017-03-27 19:22:32 +0200897 default y
898 ---help---
899 Say y here if you want to build DE2 video driver which is present on
900 newer SoCs. Currently only HDMI output is supported.
901
Hans de Goede213480e2015-01-01 22:04:34 +0100902
903choice
904 prompt "LCD panel support"
Icenowy Zheng401a3ca2017-10-26 11:14:44 +0800905 depends on VIDEO_SUNXI
Hans de Goede213480e2015-01-01 22:04:34 +0100906 ---help---
907 Select which type of LCD panel to support.
908
909config VIDEO_LCD_PANEL_PARALLEL
910 bool "Generic parallel interface LCD panel"
911 select VIDEO_LCD_IF_PARALLEL
912
913config VIDEO_LCD_PANEL_LVDS
914 bool "Generic lvds interface LCD panel"
915 select VIDEO_LCD_IF_LVDS
916
Siarhei Siamashka97ece832015-01-19 05:23:33 +0200917config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
918 bool "MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip"
919 select VIDEO_LCD_SSD2828
920 select VIDEO_LCD_IF_PARALLEL
921 ---help---
Hans de Goedec1cfd512015-08-08 16:13:53 +0200922 7.85" 768x1024 LCD panels, such as LG LP079X01 or AUO B079XAN01.0
923
924config VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804
925 bool "eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip"
926 select VIDEO_LCD_ANX9804
927 select VIDEO_LCD_IF_PARALLEL
928 select VIDEO_LCD_PANEL_I2C
929 ---help---
930 Select this for eDP LCD panels with 4 lanes running at 1.62G,
931 connected via an ANX9804 bridge chip.
Siarhei Siamashka97ece832015-01-19 05:23:33 +0200932
Hans de Goede27515b22015-01-20 09:23:36 +0100933config VIDEO_LCD_PANEL_HITACHI_TX18D42VM
934 bool "Hitachi tx18d42vm LCD panel"
935 select VIDEO_LCD_HITACHI_TX18D42VM
936 select VIDEO_LCD_IF_LVDS
937 ---help---
938 7.85" 1024x768 Hitachi tx18d42vm LCD panel support
939
Hans de Goedeaad2ac22015-02-16 17:49:47 +0100940config VIDEO_LCD_TL059WV5C0
941 bool "tl059wv5c0 LCD panel"
942 select VIDEO_LCD_PANEL_I2C
943 select VIDEO_LCD_IF_PARALLEL
944 ---help---
945 6" 480x800 tl059wv5c0 panel support, as used on the Utoo P66 and
946 Aigo M60/M608/M606 tablets.
947
Hans de Goede213480e2015-01-01 22:04:34 +0100948endchoice
949
Mylène Josserandd7b560e2017-04-02 12:59:09 +0200950config SATAPWR
951 string "SATA power pin"
952 default ""
953 help
954 Set the pins used to power the SATA. This takes a string in the
955 format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of
956 port H.
Hans de Goede213480e2015-01-01 22:04:34 +0100957
Hans de Goedec13f60d2015-01-25 12:10:48 +0100958config GMAC_TX_DELAY
959 int "GMAC Transmit Clock Delay Chain"
960 default 0
961 ---help---
962 Set the GMAC Transmit Clock Delay Chain value.
963
Hans de Goedeff42d102015-09-13 13:02:48 +0200964config SPL_STACK_R_ADDR
Icenowy Zhengcfe673c2022-01-29 10:23:07 -0500965 default 0x81e00000 if MACH_SUNIV
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800966 default 0x4fe00000 if MACH_SUN4I
967 default 0x4fe00000 if MACH_SUN5I
968 default 0x4fe00000 if MACH_SUN6I
969 default 0x4fe00000 if MACH_SUN7I
970 default 0x4fe00000 if MACH_SUN8I
Hans de Goedeff42d102015-09-13 13:02:48 +0200971 default 0x2fe00000 if MACH_SUN9I
Chen-Yu Tsai301791c2017-03-02 16:03:06 +0800972 default 0x4fe00000 if MACH_SUN50I
Jernej Skrabec44726092021-01-11 21:11:34 +0100973 default 0x4fe00000 if SUN50I_GEN_H6
Hans de Goedeff42d102015-09-13 13:02:48 +0200974
Jagan Tekic2a7a7e2018-02-06 22:42:56 +0530975config SPL_SPI_SUNXI
976 bool "Support for SPI Flash on Allwinner SoCs in SPL"
Andre Przywarae50ee3a2020-12-13 20:19:43 +0000977 depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || MACH_SUNXI_H3_H5 || MACH_SUN50I || MACH_SUN8I_R40 || SUN50I_GEN_H6 || MACH_SUNIV
Jagan Tekic2a7a7e2018-02-06 22:42:56 +0530978 help
979 Enable support for SPI Flash. This option allows SPL to read from
980 sunxi SPI Flash. It uses the same method as the boot ROM, so does
981 not need any extra configuration.
982
Icenowy Zhengc6c2c852018-10-25 17:23:02 +0800983config PINE64_DT_SELECTION
984 bool "Enable Pine64 device tree selection code"
985 depends on MACH_SUN50I
986 help
987 The original Pine A64 and Pine A64+ are similar but different
988 boards and can be differed by the DRAM size. Pine A64 has
989 512MiB DRAM, and Pine A64+ has 1GiB or 2GiB. By selecting this
990 option, the device tree selection code specific to Pine64 which
991 utilizes the DRAM size will be enabled.
992
Samuel Holland8a8b73b2020-10-24 10:21:52 -0500993config PINEPHONE_DT_SELECTION
994 bool "Enable PinePhone device tree selection code"
995 depends on MACH_SUN50I
996 help
997 Enable this option to automatically select the device tree for the
998 correct PinePhone hardware revision during boot.
999
Andre Heider9267ff82021-10-01 19:29:00 +01001000config BLUETOOTH_DT_DEVICE_FIXUP
1001 string "Fixup the Bluetooth controller address"
1002 default ""
1003 help
1004 This option specifies the DT compatible name of the Bluetooth
1005 controller for which to set the "local-bd-address" property.
1006 Set this option if your device ships with the Bluetooth controller
1007 default address.
1008 The used address is "bdaddr" if set, and "ethaddr" with the LSB
1009 flipped elsewise.
1010
Samuel Hollanda0ca51f2022-03-18 00:00:45 -05001011source "board/sunxi/Kconfig"
1012
Masahiro Yamadadd840582014-07-30 14:08:14 +09001013endif
Kory Maincent6c2c7e92021-05-04 19:31:27 +02001014
1015config CHIP_DIP_SCAN
1016 bool "Enable DIPs detection for CHIP board"
1017 select SUPPORT_EXTENSION_SCAN
1018 select W1
1019 select W1_GPIO
1020 select W1_EEPROM
1021 select W1_EEPROM_DS24XXX
1022 select CMD_EXTENSION