init
[vuplus_openvuplus_3.0] / meta-bsp / bm750 / recipes / linux / linux-vuplus-3.1.1 / linux_3.1.1_bm750.patch
1 diff --git a/arch/mips/brcmstb/board.c b/arch/mips/brcmstb/board.c
2 index ab1cb65..2875cf5 100644
3 --- a/arch/mips/brcmstb/board.c
4 +++ b/arch/mips/brcmstb/board.c
5 @@ -311,7 +311,7 @@ void __init board_pinmux_setup(void)
6         PINMUX(7, gpio_035, 1);         /* UARTB RX */
7         PINMUX(7, gpio_038, 1);         /* UARTC TX */
8         PINMUX(7, gpio_039, 1);         /* UARTC RX */
9 -
10 +#if 0
11         PINMUX(9, gpio_054, 3);         /* MII */
12         PINMUX(9, gpio_055, 3);
13         PINMUX(9, gpio_056, 3);
14 @@ -330,6 +330,7 @@ void __init board_pinmux_setup(void)
15         PINMUX(10, gpio_070, 3);
16         PINMUX(10, gpio_071, 3);
17         PINMUX(10, gpio_072, 3);
18 +#endif
19  
20  #elif defined(CONFIG_BCM7340)
21  
22 @@ -718,15 +719,13 @@ void __init board_get_ram_size(unsigned long *dram0_mb, unsigned long *dram1_mb)
23  
24  static struct mtd_partition fixed_partition_map[] = {
25          /* name                 offset          size */
26 -        { name: "rootfs",               offset: 0,              size:0x1F200000 /* DEFAULT_ROOTFS_SIZE*/ },   /* rootfs is total nand size - 6 M Bytes. referr to cfe. bcm97335_devs.c */
27 -        { name: "kernel",       offset: 0x1F200000,             size: 4<<20 },
28 -        { name: "boot",         offset: 0x1F600000,             size: 4<<20 },
29 -       { name: "splash",       offset: 0x1FA00000,             size: 2<<20 },
30 -        { name: "cfe",          offset: 0x1FC00000,             size: 1<<20 },
31 -        { name: "mac",          offset: 0x1FD00000,             size: 1<<19 },
32 -        { name: "env",          offset: 0x1FD80000,             size: 1<<19 },
33 -        { name: "nvm",          offset: 0x1FE00000,             size: 1<<20 },
34 -        { name: "data",         offset: 0x20000000,             size: 0x1FC00000 },
35 +        { name: "rootfs",               offset: 0,               size: (128-4-2-3-1)<<20 },   /* rootfs is total nand size - 6 M Bytes. referr to cfe. bcm97335_devs.c */
36 +        { name: "kernel",       offset: 0x07600000,             size: 4<<20 },
37 +        { name: "boot",         offset: 0x07a00000,             size: 2<<20 },
38 +        { name: "cfe",          offset: 0x07C00000,             size: 1<<20 },
39 +        { name: "mac",          offset: 0x07D00000,             size: 1<<19 },
40 +        { name: "env",          offset: 0x07D80000,             size: 1<<19 },
41 +        { name: "nvm",          offset: 0x07E00000,             size: 1<<20 },
42          /* BBT 1MB not mountable by anyone */
43  /*        { name: "data",         offset: 0x20000000,             size: 0 },*/
44  /* Add 1 extra place-holder partition for splash, and a safety guard element */
45 diff --git a/drivers/mtd/brcmnand/brcmnand_base.c b/drivers/mtd/brcmnand/brcmnand_base.c
46 index 22035af..b54bc29 100644
47 --- a/drivers/mtd/brcmnand/brcmnand_base.c
48 +++ b/drivers/mtd/brcmnand/brcmnand_base.c
49 @@ -226,8 +226,8 @@ static brcmnand_chip_Id brcmnand_chips[] = {
50                 .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
51                 .idOptions = 0,
52                                 //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
53 -               .timing1 = 0, //00070000,
54 -               .timing2 = 0,
55 +                .timing1 = 0x4232222D,
56 +                .timing2 = 0x00000D94,
57                 .nop=8,
58                 .ctrlVersion = 0, /* THT Verified on data-sheet 7/10/08: Allows 4 on main and 4 on OOB */
59         },
60 @@ -7553,10 +7553,7 @@ brcmnand_decode_config(struct brcmnand_chip* chip, uint32_t nand_config)
61                         chip->blockSize = 2048 << 10;
62                         break;
63    #endif
64 -               case BCHP_NAND_CONFIG_BLOCK_SIZE_BK_SIZE_256KB:
65 -                       chip->blockSize = 256 << 10;
66 -                       break;
67 -               case BCHP_NAND_CONFIG_BLOCK_SIZE_BK_SIZE_512KB:
68 +               case BCHP_NAND_CONFIG_BLOCK_SIZE_BK_SIZE_512KB:
69                         chip->blockSize = 512 << 10;
70                         break;
71                 case BCHP_NAND_CONFIG_BLOCK_SIZE_BK_SIZE_8KB:
72 @@ -7772,7 +7769,7 @@ is_ecc_strong(int registerEcc, int requiredEcc)
73  }
74  
75  
76 -
77 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
78  static void
79  brcmnand_set_acccontrol(struct brcmnand_chip * chip , unsigned int chipSelect, 
80         uint32_t pageSize, uint16_t oobSizePerPage, int reqEcc, int codeWorkSize, int nbrBitsPerCell)
81 @@ -7928,7 +7925,7 @@ PRINTK("%s: gAccControl[CS=%d]=%08x, ACC=%08lx\n",
82  #endif
83          }
84  }
85 -
86 +#endif
87  
88  static void 
89  brcmnand_read_id(struct mtd_info *mtd, unsigned int chipSelect, unsigned long* dev_id)
90 @@ -8005,6 +8002,7 @@ printk("After: NandSelect=%08x, nandConfig=%08x\n", nandSelect, nandConfig);
91  }
92  
93  
94 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0                                
95  /* 
96   * Type-1 ID string, called from brcmnand_probe with the following condition
97   * if ((brcmnand_chips[i].idOptions & BRCMNAND_ID_HAS_BYTE4) && 
98 @@ -8202,7 +8200,9 @@ PRINTK("nandConfigChipSize = %04x\n", nandConfigChipSize);
99  
100         return nand_config;
101  }
102 +#endif
103  
104 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0                                
105  
106  /*
107   * Type-2 ID string, called from brcmnand_probe with the following condition
108 @@ -8372,8 +8372,9 @@ PRINTK("Required ECC level = %d, devIdExt=%08x, eccShift=%02x, sector Size=%d\n"
109  
110         return nand_config;
111  }
112 +#endif
113  
114 -
115 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0                                
116  /*
117   * Type-2 ID string, called from brcmnand_probe with the following condition
118   * if ((brcmnand_chips[i].idOptions & BRCMNAND_ID_EXT_BYTES_TYPE2) == 
119 @@ -8519,6 +8520,7 @@ PRINTK("Updating Config Reg on CS%1d: Block & Page Size: After: %08x\n", chip->c
120         
121         return nand_config;
122  }
123 +#endif
124  
125  
126  #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_4_0
127 @@ -9074,7 +9076,7 @@ static int brcmnand_probe(struct mtd_info *mtd, unsigned int chipSelect)
128                 for (i=0; i < BRCMNAND_MAX_CHIPS; i++) {
129                         if (brcmnand_dev_id == brcmnand_chips[i].chipId 
130                                 && brcmnand_maf_id == brcmnand_chips[i].mafId) {
131 -                               
132 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0                                
133                                 /* No ambiguity in ID#3,4,5 */
134                                 if (brcmnand_chips[i].chipId345[0] == 0x0 
135                                         && brcmnand_chips[i].chipId345[1] == 0x0 
136 @@ -9113,6 +9115,15 @@ static int brcmnand_probe(struct mtd_info *mtd, unsigned int chipSelect)
137                                         }
138                                         /* Else not match */
139                                 }
140 +#else
141 +                               if (brcmnand_chips[i].chipId345[0] == 0x0 
142 +                                       && brcmnand_chips[i].chipId345[1] == 0x0 
143 +                                       && brcmnand_chips[i].chipId345[2] == 0x0) {
144 +                                       foundInIdTable = 1;
145 +                                       break; 
146 +                               }
147 +                               
148 +#endif
149                         }
150                 }
151  
152 @@ -9312,7 +9323,7 @@ static int brcmnand_probe(struct mtd_info *mtd, unsigned int chipSelect)
153  printk("%s: Ecc level set to %d, sectorSize=%d from ID table\n", __FUNCTION__, chip->reqEccLevel, chip->eccSectorSize);
154                         }
155                 }
156 -
157 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
158                 /* ID not in table, and no CONFIG REG was passed at command line */
159                 else if (!skipIdLookup && !foundInIdTable) {
160                         uint32_t acc;
161 @@ -9339,6 +9350,7 @@ printk("%s: Ecc level set to %d, sectorSize=%d from ID table\n", __FUNCTION__, c
162                         printk("Spare Area Size = %dB/512B\n", chip->eccOobSize);
163                         
164                 }
165 +#endif
166         }
167  
168         /*
169 @@ -9355,10 +9367,11 @@ printk("%s: Ecc level set to %d, sectorSize=%d from ID table\n", __FUNCTION__, c
170         // Also works for dummy entries, but no adjustments possible
171         brcmnand_adjust_timings(chip, &brcmnand_chips[i]);
172  
173 +#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
174         // Adjust perchip NAND ACC CONTROL 
175         // updateInternalData = not ONFI .or. not in ID table
176         brcmnand_adjust_acccontrol(chip, isONFI, foundInIdTable, i);
177 -       
178 +#endif
179  
180         /* Flash device information */
181         brcmnand_print_device_info(&brcmnand_chips[i], mtd);