Skip to content

Commit 9f19cac

Browse files
committed
add 32M(W25Q256FV) support
1 parent 1799b1c commit 9f19cac

File tree

4 files changed

+90
-63
lines changed

4 files changed

+90
-63
lines changed

drivers/spi_flash.c

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -257,44 +257,51 @@ struct chip_info *spi_chip_info = NULL;
257257

258258
static struct chip_info chips_data [] = {
259259
/* REVISIT: fill in JEDEC ids, for parts that have them */
260-
{ "AT25DF321", 0x1f, 0x47000000, 64 * 1024, 64, 0 },
261-
{ "AT26DF161", 0x1f, 0x46000000, 64 * 1024, 32, 0 },
262-
{ "FL016AIF", 0x01, 0x02140000, 64 * 1024, 32, 0 },
263-
{ "FL064AIF", 0x01, 0x02160000, 64 * 1024, 128, 0 },
264-
{ "MX25L1605D", 0xc2, 0x2015c220, 64 * 1024, 32, 0 },
265-
{ "MX25L3205D", 0xc2, 0x2016c220, 64 * 1024, 64, 0 },
266-
{ "MX25L6405D", 0xc2, 0x2017c220, 64 * 1024, 128, 0 },
267-
{ "MX25L12805D", 0xc2, 0x2018c220, 64 * 1024, 256, 0 },
260+
{ "AT25DF321", 0x1f, 0x47000000, 64 * 1024, 64, 0 },
261+
{ "AT26DF161", 0x1f, 0x46000000, 64 * 1024, 32, 0 },
262+
{ "FL016AIF", 0x01, 0x02140000, 64 * 1024, 32, 0 },
263+
{ "FL064AIF", 0x01, 0x02160000, 64 * 1024, 128, 0 },
264+
{ "MX25L1605D", 0xc2, 0x2015c220, 64 * 1024, 32, 0 },//MX25L1606E
265+
{ "MX25L3205D", 0xc2, 0x2016c220, 64 * 1024, 64, 0 },//MX25L3233F
266+
{ "MX25L6405D", 0xc2, 0x2017c220, 64 * 1024, 128, 0 },//MX25L6433F
267+
{ "MX25L12805D", 0xc2, 0x2018c220, 64 * 1024, 256, 0 },//MX25L12835F
268268
#ifndef NO_4B_ADDRESS_SUPPORT
269-
{ "MX25L25635E", 0xc2, 0x2019c220, 64 * 1024, 512, 1 },
270-
{ "S25FL256S", 0x01, 0x02194D01, 64 * 1024, 512, 1 },
271-
{ "N25Q256A", 0x20, 0xba191000, 64 * 1024, 512, 1 },
272-
{ "MT25QL512AB", 0x20, 0xba201044, 64 * 1024, 1024, 1 },
269+
{ "MX25L25635E", 0xc2, 0x2019c220, 64 * 1024, 512, 1 },//MX25L25635F
270+
{ "MX25L51245G", 0xc2, 0x201ac220, 64 * 1024, 1024, 1 },
271+
{ "S25FL256S", 0x01, 0x02194D01, 64 * 1024, 512, 1 },
273272
#endif
274-
{ "S25FL128P", 0x01, 0x20180301, 64 * 1024, 256, 0 },
275-
{ "S25FL129P", 0x01, 0x20184D01, 64 * 1024, 256, 0 },
273+
{ "S25FL128P", 0x01, 0x20180301, 64 * 1024, 256, 0 },
274+
{ "S25FL129P", 0x01, 0x20184D01, 64 * 1024, 256, 0 },
276275
{ "S25FL164K", 0x01, 0x40170140, 64 * 1024, 128, 0 },
277-
{ "S25FL132K", 0x01, 0x40160140, 64 * 1024, 64, 0 },
278-
{ "S25FL032P", 0x01, 0x02154D00, 64 * 1024, 64, 0 },
279-
{ "S25FL064P", 0x01, 0x02164D00, 64 * 1024, 128, 0 },
280-
{ "S25FL116K", 0x01, 0x40150140, 64 * 1024, 32, 0 },
276+
{ "S25FL132K", 0x01, 0x40160140, 64 * 1024, 64, 0 },
277+
{ "S25FL032P", 0x01, 0x02154D00, 64 * 1024, 64, 0 },
278+
{ "S25FL064P", 0x01, 0x02164D00, 64 * 1024, 128, 0 },
279+
{ "S25FL116K", 0x01, 0x40150140, 64 * 1024, 32, 0 },
281280
{ "F25L64QA", 0x8c, 0x41170000, 64 * 1024, 128, 0 }, //ESMT
282281
{ "F25L32QA", 0x8c, 0x41168c41, 64 * 1024, 64, 0 }, //ESMT
283-
{ "EN25F16", 0x1c, 0x31151c31, 64 * 1024, 32, 0 },
284-
{ "EN25Q32B", 0x1c, 0x30161c30, 64 * 1024, 64, 0 },
285-
{ "EN25F32", 0x1c, 0x31161c31, 64 * 1024, 64, 0 },
286-
{ "EN25F64", 0x1c, 0x20171c20, 64 * 1024, 128, 0 }, //EN25P64
287-
{ "EN25Q64", 0x1c, 0x30171c30, 64 * 1024, 128, 0 },
288-
{ "W25Q32BV", 0xef, 0x40160000, 64 * 1024, 64, 0 }, //S25FL032K //W25Q32FV
289-
{ "W25Q64BV", 0xef, 0x40170000, 64 * 1024, 128, 0 }, //S25FL064K //W25Q64FV
290-
{ "W25Q128BV", 0xef, 0x40180000, 64 * 1024, 256, 0 }, //W25Q128FV
291-
{ "W25Q256FV", 0xef, 0x40190000, 64 * 1024, 512, 1 },
292-
{ "N25Q032A13ESE40F", 0x20, 0xba161000, 64 * 1024, 64, 0 },
282+
{ "EN25F16", 0x1c, 0x31151c31, 64 * 1024, 32, 0 },
283+
{ "EN25Q32B", 0x1c, 0x30161c30, 64 * 1024, 64, 0 },
284+
{ "EN25F32", 0x1c, 0x31161c31, 64 * 1024, 64, 0 },
285+
{ "EN25F64", 0x1c, 0x20171c20, 64 * 1024, 128, 0 }, // EN25P64
286+
{ "EN25Q64", 0x1c, 0x30171c30, 64 * 1024, 128, 0 },
287+
{ "W25Q32BV", 0xef, 0x40160000, 64 * 1024, 64, 0 },//W25Q32FV
288+
{ "W25X32VS", 0xef, 0x30160000, 64 * 1024, 64, 0 },
289+
{ "W25Q64BV", 0xef, 0x40170000, 64 * 1024, 128, 0 }, //S25FL064K //W25Q64FV
290+
{ "W25Q128BV", 0xef, 0x40180000, 64 * 1024, 256, 0 },//W25Q128FV
291+
#ifndef NO_4B_ADDRESS_SUPPORT
292+
{ "W25Q256FV", 0xef, 0x40190000, 64 * 1024, 512, 1 },
293+
#endif
294+
{ "N25Q032A13ESE40F", 0x20, 0xba161000, 64 * 1024, 64, 0 },
293295
{ "N25Q064A13ESE40F", 0x20, 0xba171000, 64 * 1024, 128, 0 },
294296
{ "N25Q128A13ESE40F", 0x20, 0xba181000, 64 * 1024, 256, 0 },
297+
#ifndef NO_4B_ADDRESS_SUPPORT
298+
{ "N25Q256A", 0x20, 0xba191000, 64 * 1024, 512, 1 },
299+
{ "MT25QL512AB", 0x20, 0xba201044, 64 * 1024, 1024, 1 },
300+
#endif
295301
{ "GD25Q32B", 0xC8, 0x40160000, 64 * 1024, 64, 0 },
296-
{ "GD25Q64B", 0xC8, 0x40170000, 64 * 1024, 128, 0 },
297-
{ "GD25Q128C", 0xC8, 0x40180000, 64 * 1024, 256, 0 },
302+
{ "GD25Q64B", 0xC8, 0x40170000, 64 * 1024, 128, 0 },
303+
{ "GD25Q128C", 0xC8, 0x40180000, 64 * 1024, 256, 0 },
304+
298305
};
299306

300307
#ifdef COMMAND_MODE

drivers/spi_rt6855A_flash.c

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ static int spic_transfer(const u8 *cmd, int n_cmd, u8 *buf, int n_buf, int flag)
151151
ra_or(RT2880_SPI0_CTL_REG, SPICTL_STARTRD);
152152
if (n_cmd != 1 && (retval & 0xffff) == 0) {
153153
printf(".");
154+
//smart7688_led_blink();
154155
}
155156
if (spic_busy_wait()) {
156157
printf("\n");
@@ -244,35 +245,45 @@ struct chip_info *spi_chip_info = NULL;
244245

245246
static struct chip_info chips_data [] = {
246247
/* REVISIT: fill in JEDEC ids, for parts that have them */
247-
{ "AT25DF321", 0x1f, 0x47000000, 64 * 1024, 64, 0 },
248-
{ "AT26DF161", 0x1f, 0x46000000, 64 * 1024, 32, 0 },
249-
{ "FL016AIF", 0x01, 0x02140000, 64 * 1024, 32, 0 },
250-
{ "FL064AIF", 0x01, 0x02160000, 64 * 1024, 128, 0 },
251-
{ "MX25L1605D", 0xc2, 0x2015c220, 64 * 1024, 32, 0 },
252-
{ "MX25L3205D", 0xc2, 0x2016c220, 64 * 1024, 64, 0 },
253-
{ "MX25L6405D", 0xc2, 0x2017c220, 64 * 1024, 128, 0 },
254-
{ "MX25L12805D", 0xc2, 0x2018c220, 64 * 1024, 256, 0 },
255-
{ "MX25L25635E", 0xc2, 0x2019c220, 64 * 1024, 512, 1 },
256-
{ "S25FL256S", 0x01, 0x02194D01, 64 * 1024, 512, 1 },
257-
{ "S25FL128P", 0x01, 0x20180301, 64 * 1024, 256, 0 },
258-
{ "S25FL164K", 0x01, 0x40170140, 64 * 1024, 128, 0 },
259-
{ "S25FL132K", 0x01, 0x40160140, 64 * 1024, 64, 0 },
260-
{ "S25FL129P", 0x01, 0x20184D01, 64 * 1024, 256, 0 },
261-
{ "S25FL032P", 0x01, 0x02154D00, 64 * 1024, 64, 0 },
262-
{ "S25FL064P", 0x01, 0x02164D00, 64 * 1024, 128, 0 },
263-
{ "F25L64QA", 0x8c, 0x41178c41, 64 * 1024, 128, 0 }, //ESMT
248+
{ "AT25DF321", 0x1f, 0x47000000, 64 * 1024, 64, 0 },
249+
{ "AT26DF161", 0x1f, 0x46000000, 64 * 1024, 32, 0 },
250+
{ "FL016AIF", 0x01, 0x02140000, 64 * 1024, 32, 0 },
251+
{ "FL064AIF", 0x01, 0x02160000, 64 * 1024, 128, 0 },
252+
{ "MX25L1605D", 0xc2, 0x2015c220, 64 * 1024, 32, 0 },//MX25L1606E
253+
{ "MX25L3205D", 0xc2, 0x2016c220, 64 * 1024, 64, 0 },//MX25L3233F
254+
{ "MX25L6405D", 0xc2, 0x2017c220, 64 * 1024, 128, 0 },//MX25L6433F
255+
{ "MX25L12805D", 0xc2, 0x2018c220, 64 * 1024, 256, 0 },//MX25L12835F
256+
{ "MX25L25635E", 0xc2, 0x2019c220, 64 * 1024, 512, 1 },//MX25L25635F
257+
{ "MX25L51245G", 0xc2, 0x201ac220, 64 * 1024, 1024, 1 },
258+
{ "S25FL256S", 0x01, 0x02194D01, 64 * 1024, 512, 1 },
259+
{ "S25FL128P", 0x01, 0x20180301, 64 * 1024, 256, 0 },
260+
{ "S25FL129P", 0x01, 0x20184D01, 64 * 1024, 256, 0 },
261+
{ "S25FL164K", 0x01, 0x40170140, 64 * 1024, 128, 0 },
262+
{ "S25FL132K", 0x01, 0x40160140, 64 * 1024, 64, 0 },
263+
{ "S25FL032P", 0x01, 0x02154D00, 64 * 1024, 64, 0 },
264+
{ "S25FL064P", 0x01, 0x02164D00, 64 * 1024, 128, 0 },
265+
{ "S25FL116K", 0x01, 0x40150140, 64 * 1024, 32, 0 },
266+
{ "F25L64QA", 0x8c, 0x41170000, 64 * 1024, 128, 0 }, //ESMT
264267
{ "F25L32QA", 0x8c, 0x41168c41, 64 * 1024, 64, 0 }, //ESMT
265-
{ "EN25F16", 0x1c, 0x31151c31, 64 * 1024, 32, 0 },
266-
{ "EN25F32", 0x1c, 0x31161c31, 64 * 1024, 64, 0 },
267-
{ "EN25Q32", 0x1c, 0x30161c30, 64 * 1024, 64, 0 },
268-
{ "EN25F64", 0x1c, 0x20171c20, 64 * 1024, 128, 0 }, //EN25P64
269-
{ "EN25Q64", 0x1c, 0x30171c30, 64 * 1024, 128, 0 },
270-
{ "W25Q32BV", 0xef, 0x40160000, 64 * 1024, 64, 0 },
271-
{ "W25Q64BV", 0xef, 0x40170000, 64 * 1024, 128, 0 }, //S25FL064K
272-
{ "W25Q128BV", 0xef, 0x40180000, 64 * 1024, 256, 0 },
273-
{ "GD25Q32B", 0xC8, 0x40160000, 64 * 1024, 64, 0 },
274-
{ "GD25Q64B", 0xC8, 0x40170000, 64 * 1024, 128, 0 },
275-
{ "GD25Q128C", 0xC8, 0x40180000, 64 * 1024, 256, 0 },
268+
{ "EN25F16", 0x1c, 0x31151c31, 64 * 1024, 32, 0 },
269+
{ "EN25Q32B", 0x1c, 0x30161c30, 64 * 1024, 64, 0 },
270+
{ "EN25F32", 0x1c, 0x31161c31, 64 * 1024, 64, 0 },
271+
{ "EN25F64", 0x1c, 0x20171c20, 64 * 1024, 128, 0 }, // EN25P64
272+
{ "EN25Q64", 0x1c, 0x30171c30, 64 * 1024, 128, 0 },
273+
{ "W25Q32BV", 0xef, 0x40160000, 64 * 1024, 64, 0 },//W25Q32FV
274+
{ "W25X32VS", 0xef, 0x30160000, 64 * 1024, 64, 0 },
275+
{ "W25Q64BV", 0xef, 0x40170000, 64 * 1024, 128, 0 }, //S25FL064K //W25Q64FV
276+
{ "W25Q128BV", 0xef, 0x40180000, 64 * 1024, 256, 0 },//W25Q128FV
277+
{ "W25Q256FV", 0xef, 0x40190000, 64 * 1024, 512, 1 },
278+
{ "N25Q032A13ESE40F", 0x20, 0xba161000, 64 * 1024, 64, 0 },
279+
{ "N25Q064A13ESE40F", 0x20, 0xba171000, 64 * 1024, 128, 0 },
280+
{ "N25Q128A13ESE40F", 0x20, 0xba181000, 64 * 1024, 256, 0 },
281+
{ "N25Q256A", 0x20, 0xba191000, 64 * 1024, 512, 1 },
282+
{ "MT25QL512AB", 0x20, 0xba201044, 64 * 1024, 1024, 1 },
283+
{ "GD25Q32B", 0xC8, 0x40160000, 64 * 1024, 64, 0 },
284+
{ "GD25Q64B", 0xC8, 0x40170000, 64 * 1024, 128, 0 },
285+
{ "GD25Q128C", 0xC8, 0x40180000, 64 * 1024, 256, 0 },
286+
276287
};
277288

278289

@@ -795,6 +806,13 @@ static int raspi_4byte_mode(int enable)
795806
}
796807
retval = bbu_spic_trans(code, 0, NULL, 1, 0, 0);
797808
#endif
809+
// for Winbond's W25Q256FV, need to clear extend address register
810+
if ((!enable) && (spi_chip_info->id == 0xef))
811+
{
812+
u8 code = 0x0;
813+
raspi_write_enable();
814+
raspi_write_rg(0xc5, &code);
815+
}
798816
if (retval != 0) {
799817
printf("%s: ret: %x\n", __func__, retval);
800818
return -1;
@@ -1023,6 +1041,7 @@ int raspi_erase(unsigned int offs, int len)
10231041
offs += spi_chip_info->sector_size;
10241042
len -= spi_chip_info->sector_size;
10251043
printf(".");
1044+
//smart7688_led_blink();
10261045
}
10271046
printf("\n");
10281047

@@ -1284,8 +1303,10 @@ int raspi_write(char *buf, unsigned int to, int len)
12841303
#endif
12851304

12861305
//printf("%s:: to:%x page_size:%x ret:%x\n", __func__, to, page_size, rc);
1287-
if ((retlen & 0xffff) == 0)
1306+
if ((retlen & 0xffff) == 0) {
12881307
printf(".");
1308+
//smart7688_led_blink();
1309+
}
12891310

12901311
if (rc > 0) {
12911312
retlen += rc;

httpd/vendors/Widora/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
<body>
99
<div id="h"><img src="vt.png"></div>
1010
<div id="m">
11-
<h1>Update for Widora V1.0.5</h1>
11+
<h1>Update for Widora V1.0.6</h1>
1212
<p>Don't power off the device during update, if everything goes well, the device will restart.</p>
1313
<form method="post" enctype="multipart/form-data"><input type="file" name="firmware"><input type="submit" value="Update firmware"></form>
1414
<p><strong>U-Boot is very important,please be sure to update this device!!!</strong></p>
1515
<form method="post" enctype="multipart/form-data"><input type="file" name="uboot"><input type="submit" value="Update U-Boot"></form>
16-
<p><strong>ART/factory is very inportant!</strong></p>
16+
<p><strong>ART/factory is very important!</strong></p>
1717
<form method="post" enctype="multipart/form-data"><input type="file" name="art"><input type="submit" value="Update ART"></form>
1818
</div>
1919
</body>

lib_mips/board.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,8 +536,7 @@ static int init_func_ram (void)
536536
static int display_banner(void)
537537
{
538538

539-
printf ("\n\n%s\n\n", version_string);
540-
printf ("\n\nWidora by mango,V1.0.5\n\n");
539+
printf ("\n\nWidora by mango,V1.0.6\n\n");
541540
return (0);
542541
}
543542

0 commit comments

Comments
 (0)