#define SPSN_ID_S25FL032A 0x0215
#define SPSN_ID_S25FL064A 0x0216
#define SPSN_ID_S25FL128P 0x2018
+#define SPSN_ID_S25FL129P 0x2018
#define SPSN_EXT_ID_S25FL128P_256KB 0x0300
#define SPSN_EXT_ID_S25FL128P_64KB 0x0301
+#define SPSN_EXT_ID_S25FL129P_256KB 0x4d00
+#define SPSN_EXT_ID_S25FL129P_64KB 0x4d01
+ #define SPSN_EXT_ID_S25FL032P 0x4d00
#define SPANSION_SR_WIP (1 << 0) /* Write-in-Progress */
.nr_sectors = 64,
.name = "S25FL128P_256K",
},
+ {
+ .idcode1 = SPSN_ID_S25FL129P,
+ .idcode2 = SPSN_EXT_ID_S25FL129P_64KB,
+ .page_size = 256,
+ .pages_per_sector = 256,
+#ifndef CONFIG_XILINX_PSS_QSPI_USE_DUAL_FLASH
+ .nr_sectors = 256,
+ .name = "S25FL129P_64K",
+#else
+ .nr_sectors = 512,
+ .name = "S25FL129P_64Kx2",
+#endif
+ },
+ {
+ .idcode1 = SPSN_ID_S25FL129P,
+ .idcode2 = SPSN_EXT_ID_S25FL129P_256KB,
+ .page_size = 256,
+ .pages_per_sector = 1024,
+ .nr_sectors = 64,
+ .name = "S25FL129P_256K",
+ },
+ {
+ .idcode1 = SPSN_ID_S25FL032A,
+ .idcode2 = SPSN_EXT_ID_S25FL032P,
+ .page_size = 256,
+ .pages_per_sector = 256,
+ .nr_sectors = 64,
+ .name = "S25FL032P",
+ },
};
+static inline void span_addr2cmd(struct spansion_spi_flash *spsn,
+ unsigned page_addr, unsigned byte_addr, u8 *cmd)
+{
+ /* opcode is in cmd[0] */
+ if (spsn->addr_width == 4) {
+ cmd[1] = page_addr >> 16;
+ cmd[2] = page_addr >> 8;
+ cmd[3] = page_addr;
+ cmd[4] = byte_addr;
+ } else {
+ cmd[1] = page_addr >> 8;
+ cmd[2] = page_addr;
+ cmd[3] = byte_addr;
+ }
+}
+
+static inline int span_cmdsz(struct spansion_spi_flash *flash)
+{
+ return 1 + flash->addr_width;
+}
+
static int spansion_wait_ready(struct spi_flash *flash, unsigned long timeout)
{
struct spi_slave *spi = flash->spi;
return -1;
}
- len /= sector_size;
cmd[0] = CMD_S25FLXX_SE;
- cmd[2] = 0x00;
- cmd[3] = 0x00;
ret = spi_claim_bus(flash->spi);
if (ret) {
.name = "W25X64",
},
{
- .id = WINBOND_ID_W25Q64DW,
+ .id = 0x4015,
+ .l2_page_size = 8,
+ .pages_per_sector = 16,
+ .sectors_per_block = 16,
+ .nr_blocks = 32,
+ .name = "W25Q16",
+ },
+ {
+ .id = 0x4016,
+ .l2_page_size = 8,
+ .pages_per_sector = 16,
+ .sectors_per_block = 16,
+ .nr_blocks = 64,
+ .name = "W25Q32",
+ },
+ {
+ .id = 0x4017,
+ .l2_page_size = 8,
+ .pages_per_sector = 16,
+ .sectors_per_block = 16,
+ .nr_blocks = 128,
+ .name = "W25Q64",
+ },
+ {
+ .id = 0x4018,
+ .l2_page_size = 8,
+ .pages_per_sector = 16,
+ .sectors_per_block = 16,
+ .nr_blocks = 256,
+ .name = "W25Q128",
+ },
++ {
++ .id = 0x6017,
+ .l2_page_size = 8,
+ .pages_per_sector = 16,
+ .sectors_per_block = 16,
+#ifdef CONFIG_XILINX_PSS_QSPI_USE_DUAL_FLASH
+ .nr_blocks = 256,
+ .name = "W25Q64DWx2",
+#else
+ .nr_blocks = 128,
+ .name = "W25Q64DW",
+#endif
- },
++ }
};
static int winbond_wait_ready(struct spi_flash *flash, unsigned long timeout)
#define CONFIG_AUTO_COMPLETE 1
#define CONFIG_CMDLINE_EDITING 1
-#define CONFIG_SYS_PROMPT "pele-boot> "
+#define CONFIG_SYS_PROMPT "zynq-uboot> "
-#undef CONFIG_SKIP_RELOCATE_UBOOT
+#undef CONFIG_SKIP_RELOCATE_UBOOT
- /* Uncomment it if you don't want Flash */
- /*#define CONFIG_SYS_NO_FLASH */
-
#define CONFIG_SYS_SDRAM_BASE 0
#define CONFIG_L2_OFF
#define CONFIG_SYS_CACHELINE_SIZE 32 /* Assuming bytes? */
- /* CONFIG_SYS_INIT_RAM_ADDR? */
- /* CONFIG_SYS_GLOBAL_DATA_OFFSET? */
+ #define CONFIG_SYS_INIT_RAM_ADDR 0xFFFF0000
+ #define CONFIG_SYS_INIT_RAM_SIZE 0x1000
+ #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
+ CONFIG_SYS_INIT_RAM_SIZE - \
+ GENERATED_GBL_DATA_SIZE)
/* Because (at least at first) we're going to be loaded via JTAG_Tcl */
-//#define CONFIG_SKIP_LOWLEVEL_INIT
+/*#define CONFIG_SKIP_LOWLEVEL_INIT */
/* HW to use */