ar71xx: build firmware image for the WNDR3700 v4 board
[openwrt/staging/wigyori.git] / package / boot / uboot-lantiq / patches / 0013-sf-macronix-add-support-for-4-byte-address-mode.patch
1 From 207662a9270cc542709fbab0d25fbc361b39748c Mon Sep 17 00:00:00 2001
2 From: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
3 Date: Wed, 7 Nov 2012 15:13:49 +0100
4 Subject: sf: macronix: add support for 4-byte address mode
5
6 Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
7
8 --- a/drivers/mtd/spi/macronix.c
9 +++ b/drivers/mtd/spi/macronix.c
10 @@ -35,6 +35,8 @@
11
12 #include "spi_flash_internal.h"
13
14 +#define MX25XX_EN4B 0xb7 /* Enter 4-byte mode */
15 +
16 struct macronix_spi_flash_params {
17 u16 idcode;
18 u16 nr_blocks;
19 @@ -79,6 +81,13 @@ static const struct macronix_spi_flash_p
20 },
21 };
22
23 +static __maybe_unused int macronix_set_4byte_mode(struct spi_flash *flash)
24 +{
25 + struct spi_slave *spi = flash->spi;
26 +
27 + return spi_flash_cmd(spi, MX25XX_EN4B, NULL, 0);
28 +}
29 +
30 int spi_flash_probe_macronix(struct spi_flash *flash, u8 *idcode)
31 {
32 const struct macronix_spi_flash_params *params;
33 @@ -106,6 +115,11 @@ int spi_flash_probe_macronix(struct spi_
34 flash->sector_size = 256 * 16 * 16;
35 flash->size = flash->sector_size * params->nr_blocks;
36
37 +#ifdef CONFIG_SPI_FLASH_4BYTE_MODE
38 + if (flash->size > (1 << 24))
39 + flash->set_4byte_mode = macronix_set_4byte_mode;
40 +#endif
41 +
42 /* Clear BP# bits for read-only flash */
43 spi_flash_cmd_write_status(flash, 0);
44