summaryrefslogtreecommitdiff
path: root/board/sunxi
diff options
context:
space:
mode:
authorDaniel KochmaƄski <dkochmanski@turtle-solutions.eu>2015-05-26 17:00:42 +0200
committerHans de Goede <hdegoede@redhat.com>2015-05-29 13:46:36 +0200
commitf76eba38b3eda905ff3bdc18dd1240d3dcbc6e5a (patch)
tree56a788b048b1f8121f45ac335fb98ce157c9eb9a /board/sunxi
parentd0f4200392515194bf67213165be906e5b9e5748 (diff)
sunxi/nand: Add support to the SPL for loading u-boot from internal NAND memory
This commit adds support to the sunxi SPL to load u-boot from the internal NAND. Note this only adds support to access the boot partitions to load u-boot, full NAND support to load the kernel, etc. from the nand data partition will come later. Signed-off-by: Roy Spliet <r.spliet@ultimaker.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'board/sunxi')
-rw-r--r--board/sunxi/Kconfig12
-rw-r--r--board/sunxi/board.c18
2 files changed, 30 insertions, 0 deletions
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
index 6f5fde9ae2..c6c876d4e7 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -271,6 +271,18 @@ config MMC_SUNXI_SLOT_EXTRA
slot or emmc on mmc1 - mmc3. Setting this to 1, 2 or 3 will enable
support for this.
+config SPL_NAND_SUPPORT
+ bool "SPL/NAND mode support"
+ depends on SPL
+ default n
+ ---help---
+ This enables support for booting from NAND internal
+ memory. U-Boot SPL doesn't detect where is it load from,
+ therefore this option is needed to properly load image from
+ flash. Option also disables MMC functionality on U-Boot due to
+ initialization errors encountered, when both controllers are
+ enabled.
+
config USB0_VBUS_PIN
string "Vbus enable pin for usb0 (otg)"
default ""
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index ed60e74808..f27967bbf4 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -22,6 +22,9 @@
#ifdef CONFIG_AXP221_POWER
#include <axp221.h>
#endif
+#ifdef CONFIG_NAND_SUNXI
+#include <nand.h>
+#endif
#include <asm/arch/clock.h>
#include <asm/arch/cpu.h>
#include <asm/arch/display.h>
@@ -315,6 +318,21 @@ int board_mmc_init(bd_t *bis)
}
#endif
+#ifdef CONFIG_NAND
+void board_nand_init(void)
+{
+ unsigned int pin;
+ static u8 ports[] = CONFIG_NAND_SUNXI_GPC_PORTS;
+
+ /* Configure AHB muxes to connect output pins with NAND controller */
+ for (pin = 0; pin < 16; pin++)
+ sunxi_gpio_set_cfgpin(SUNXI_GPC(pin), SUNXI_GPC_NAND);
+
+ for (pin = 0; pin < ARRAY_SIZE(ports); pin++)
+ sunxi_gpio_set_cfgpin(SUNXI_GPC(ports[pin]), SUNXI_GPC_NAND);
+}
+#endif
+
void i2c_init_board(void)
{
#ifdef CONFIG_I2C0_ENABLE