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