
Boards may require a different pinmux setup for NAND than the default one. Add a way to call into board specific code to set this up.
Signed-off-by: Lucas Stach dev@lynxeye.de --- arch/arm/include/asm/arch-tegra/board.h | 1 + drivers/mtd/nand/tegra_nand.c | 11 ++++++++++- 2 Dateien geändert, 11 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)
diff --git a/arch/arm/include/asm/arch-tegra/board.h b/arch/arm/include/asm/arch-tegra/board.h index 7e56df7..be6bf25 100644 --- a/arch/arm/include/asm/arch-tegra/board.h +++ b/arch/arm/include/asm/arch-tegra/board.h @@ -43,5 +43,6 @@ void gpio_early_init(void); /* overrideable GPIO config */
void pin_mux_usb(void); /* overrideable USB pinmux setup */ void pin_mux_spi(void); /* overrideable SPI pinmux setup */ +void pin_mux_nand(void); /* overrideable NAND pinmux setup */
#endif diff --git a/drivers/mtd/nand/tegra_nand.c b/drivers/mtd/nand/tegra_nand.c index 2c1b533..baaea4f 100644 --- a/drivers/mtd/nand/tegra_nand.c +++ b/drivers/mtd/nand/tegra_nand.c @@ -28,6 +28,7 @@ #include <nand.h> #include <asm/arch/clock.h> #include <asm/arch/funcmux.h> +#include <asm/arch-tegra/board.h> #include <asm/arch-tegra/clk_rst.h> #include <asm/errno.h> #include <asm/gpio.h> @@ -992,7 +993,6 @@ int tegra_nand_init(struct nand_chip *nand, int devnum) /* Adjust timing for NAND device */ setup_timing(config->timing, info->reg);
- funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_DEFAULT); fdtdec_setup_gpio(&config->wp_gpio); gpio_direction_output(config->wp_gpio.gpio, 1);
@@ -1016,10 +1016,19 @@ int tegra_nand_init(struct nand_chip *nand, int devnum) return 0; }
+void __pin_mux_nand(void) +{ + funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_DEFAULT); +} + +void pin_mux_nand(void) __attribute__((weak, alias("__pin_mux_nand"))); + void board_nand_init(void) { struct nand_chip *nand = &nand_chip[0];
+ pin_mux_nand(); + if (tegra_nand_init(nand, 0)) puts("Tegra NAND init failed\n"); }