arm/km: use spi claim bus to switch between SPI and NAND
We overwrite these weak functions from the kirkwood spi code to use our own method to be able to switch between the SPI NOR and the NAND flash. This is needed e.g. to update the u-boot. The former command do_spi_toggle can therefore be removed. And the usage of this command is removed from the u-boot update command in the u-boot environment. Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com> Signed-off-by: Prafulla Wadaskar <prafulla@marvell.com> cc: Holger Brunck <holger.brunck@keymile.com> cc: Prafulla Wadaskar <prafulla@marvell.com>
This commit is contained in:
parent
dacc8c6f79
commit
0c25defccd
|
@ -33,6 +33,7 @@
|
||||||
#include <nand.h>
|
#include <nand.h>
|
||||||
#include <netdev.h>
|
#include <netdev.h>
|
||||||
#include <miiphy.h>
|
#include <miiphy.h>
|
||||||
|
#include <spi.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/arch/cpu.h>
|
#include <asm/arch/cpu.h>
|
||||||
#include <asm/arch/kirkwood.h>
|
#include <asm/arch/kirkwood.h>
|
||||||
|
@ -284,48 +285,17 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_SF)
|
int board_spi_claim_bus(struct spi_slave *slave)
|
||||||
int do_spi_toggle(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
||||||
{
|
{
|
||||||
u32 tmp;
|
kw_gpio_set_value(KM_FLASH_GPIO_PIN, 0);
|
||||||
if (argc < 2)
|
|
||||||
return cmd_usage(cmdtp);
|
|
||||||
|
|
||||||
if ((strcmp(argv[1], "off") == 0)) {
|
|
||||||
printf("SPI FLASH disabled, NAND enabled\n");
|
|
||||||
/* Multi-Purpose Pins Functionality configuration */
|
|
||||||
kwmpp_config[0] = MPP0_NF_IO2;
|
|
||||||
kwmpp_config[1] = MPP1_NF_IO3;
|
|
||||||
kwmpp_config[2] = MPP2_NF_IO4;
|
|
||||||
kwmpp_config[3] = MPP3_NF_IO5;
|
|
||||||
|
|
||||||
kirkwood_mpp_conf(kwmpp_config, NULL);
|
|
||||||
tmp = readl(KW_GPIO0_BASE);
|
|
||||||
writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
|
|
||||||
} else if ((strcmp(argv[1], "on") == 0)) {
|
|
||||||
printf("SPI FLASH enabled, NAND disabled\n");
|
|
||||||
/* Multi-Purpose Pins Functionality configuration */
|
|
||||||
kwmpp_config[0] = MPP0_SPI_SCn;
|
|
||||||
kwmpp_config[1] = MPP1_SPI_MOSI;
|
|
||||||
kwmpp_config[2] = MPP2_SPI_SCK;
|
|
||||||
kwmpp_config[3] = MPP3_SPI_MISO;
|
|
||||||
|
|
||||||
kirkwood_mpp_conf(kwmpp_config, NULL);
|
|
||||||
tmp = readl(KW_GPIO0_BASE);
|
|
||||||
writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE);
|
|
||||||
} else {
|
|
||||||
return cmd_usage(cmdtp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_CMD(
|
void board_spi_release_bus(struct spi_slave *slave)
|
||||||
spitoggle, 2, 0, do_spi_toggle,
|
{
|
||||||
"En-/disable SPI FLASH access",
|
kw_gpio_set_value(KM_FLASH_GPIO_PIN, 1);
|
||||||
"<on|off> - Enable (on) or disable (off) SPI FLASH access\n"
|
}
|
||||||
);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -227,7 +227,11 @@ int get_scl(void);
|
||||||
#define CONFIG_SPI_FLASH
|
#define CONFIG_SPI_FLASH
|
||||||
#define CONFIG_SPI_FLASH_STMICRO
|
#define CONFIG_SPI_FLASH_STMICRO
|
||||||
|
|
||||||
|
/* SPI bus claim MPP configuration */
|
||||||
|
#define CONFIG_SYS_KW_SPI_MPP 0x0
|
||||||
|
|
||||||
#define FLASH_GPIO_PIN 0x00010000
|
#define FLASH_GPIO_PIN 0x00010000
|
||||||
|
#define KM_FLASH_GPIO_PIN 16
|
||||||
|
|
||||||
#ifndef MTDIDS_DEFAULT
|
#ifndef MTDIDS_DEFAULT
|
||||||
# define MTDIDS_DEFAULT "nand0=orion_nand"
|
# define MTDIDS_DEFAULT "nand0=orion_nand"
|
||||||
|
@ -241,9 +245,8 @@ int get_scl(void);
|
||||||
|
|
||||||
#define CONFIG_KM_UPDATE_UBOOT \
|
#define CONFIG_KM_UPDATE_UBOOT \
|
||||||
"update=" \
|
"update=" \
|
||||||
"spi on;sf probe 0;sf erase 0 +${filesize};" \
|
"sf probe 0;sf erase 0 +${filesize};" \
|
||||||
"sf write ${load_addr_r} 0 ${filesize};" \
|
"sf write ${load_addr_r} 0 ${filesize};\0"
|
||||||
"spi off\0"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default environment variables
|
* Default environment variables
|
||||||
|
|
Loading…
Reference in a new issue