8fe5ad5d33
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
74 lines
2.1 KiB
Diff
74 lines
2.1 KiB
Diff
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;
|