e60bdf5595dfcbbb96e6e2b2bcb9ea5003a73bb7
[openwrt.git] / target / linux / ramips / patches-3.6 / 011-mtd-cfi_cmdset_0002-force-word-write.patch
1 Index: linux-3.6.6/drivers/mtd/chips/cfi_cmdset_0002.c
2 ===================================================================
3 --- linux-3.6.6.orig/drivers/mtd/chips/cfi_cmdset_0002.c
4 +++ linux-3.6.6/drivers/mtd/chips/cfi_cmdset_0002.c
5 @@ -39,7 +39,7 @@
6  #include <linux/mtd/xip.h>
7  
8  #define AMD_BOOTLOC_BUG
9 -#define FORCE_WORD_WRITE 0
10 +#define FORCE_WORD_WRITE 1
11  
12  #define MAX_WORD_RETRIES 3
13  
14 @@ -50,7 +50,9 @@
15  
16  static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
17  static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
18 +#if !FORCE_WORD_WRITE
19  static int cfi_amdstd_write_buffers(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
20 +#endif
21  static int cfi_amdstd_erase_chip(struct mtd_info *, struct erase_info *);
22  static int cfi_amdstd_erase_varsize(struct mtd_info *, struct erase_info *);
23  static void cfi_amdstd_sync (struct mtd_info *);
24 @@ -186,6 +188,7 @@ static void fixup_amd_bootblock(struct m
25  }
26  #endif
27  
28 +#if !FORCE_WORD_WRITE
29  static void fixup_use_write_buffers(struct mtd_info *mtd)
30  {
31         struct map_info *map = mtd->priv;
32 @@ -195,6 +198,7 @@ static void fixup_use_write_buffers(stru
33                 mtd->_write = cfi_amdstd_write_buffers;
34         }
35  }
36 +#endif /* !FORCE_WORD_WRITE */
37  
38  /* Atmel chips don't use the same PRI format as AMD chips */
39  static void fixup_convert_atmel_pri(struct mtd_info *mtd)
40 @@ -1376,6 +1380,7 @@ static int cfi_amdstd_write_words(struct
41  /*
42   * FIXME: interleaved mode not tested, and probably not supported!
43   */
44 +#if !FORCE_WORD_WRITE
45  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
46                                     unsigned long adr, const u_char *buf,
47                                     int len)
48 @@ -1488,7 +1493,6 @@ static int __xipram do_write_buffer(stru
49         return ret;
50  }
51  
52 -
53  static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
54                                     size_t *retlen, const u_char *buf)
55  {
56 @@ -1563,6 +1567,7 @@ static int cfi_amdstd_write_buffers(stru
57  
58         return 0;
59  }
60 +#endif /* !FORCE_WORD_WRITE */
61  
62  /*
63   * Wait for the flash chip to become ready to write data