12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- From 597715c61ae75a05ab3310a34ff3857a006f0f63 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
- Date: Thu, 20 Nov 2014 21:32:42 +0100
- Subject: [PATCH] bcma: add table of serial flashes with smaller blocks
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
- ---
- drivers/bcma/driver_chipcommon_sflash.c | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
- --- a/drivers/bcma/driver_chipcommon_sflash.c
- +++ b/drivers/bcma/driver_chipcommon_sflash.c
- @@ -9,6 +9,7 @@
-
- #include <linux/platform_device.h>
- #include <linux/bcma/bcma.h>
- +#include <bcm47xx_board.h>
-
- static struct resource bcma_sflash_resource = {
- .name = "bcma_sflash",
- @@ -42,6 +43,13 @@ static const struct bcma_sflash_tbl_e bc
- { NULL },
- };
-
- +/* Some devices use smaller blocks (and have more of them) */
- +static const struct bcma_sflash_tbl_e bcma_sflash_st_shrink_tbl[] = {
- + { "M25P16", 0x14, 0x1000, 512, },
- + { "M25P32", 0x15, 0x1000, 1024, },
- + { NULL },
- +};
- +
- static const struct bcma_sflash_tbl_e bcma_sflash_sst_tbl[] = {
- { "SST25WF512", 1, 0x1000, 16, },
- { "SST25VF512", 0x48, 0x1000, 16, },
- @@ -85,6 +93,24 @@ static void bcma_sflash_cmd(struct bcma_
- bcma_err(cc->core->bus, "SFLASH control command failed (timeout)!\n");
- }
-
- +const struct bcma_sflash_tbl_e *bcma_sflash_shrink_flash(u32 id)
- +{
- + enum bcm47xx_board board = bcm47xx_board_get();
- + const struct bcma_sflash_tbl_e *e;
- +
- + switch (board) {
- + case BCM47XX_BOARD_NETGEAR_WGR614_V10:
- + case BCM47XX_BOARD_NETGEAR_WNR1000_V3:
- + for (e = bcma_sflash_st_shrink_tbl; e->name; e++) {
- + if (e->id == id)
- + return e;
- + }
- + return NULL;
- + default:
- + return NULL;
- + }
- +}
- +
- /* Initialize serial flash access */
- int bcma_sflash_init(struct bcma_drv_cc *cc)
- {
- @@ -115,6 +141,10 @@ int bcma_sflash_init(struct bcma_drv_cc
- case 0x13:
- return -ENOTSUPP;
- default:
- + e = bcma_sflash_shrink_flash(id);
- + if (e)
- + break;
- +
- for (e = bcma_sflash_st_tbl; e->name; e++) {
- if (e->id == id)
- break;
|