diff options
Diffstat (limited to 'target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch b/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch deleted file mode 100644 index 3446a9f935..0000000000 --- a/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Subject: [PATCH] mtd: bcm47xxsflash: implement erasing support -Date: Tue, 21 May 2013 21:03:46 +0200 - -Signed-off-by: Rafał Miłecki <zajec5@gmail.com> ---- -This has been succesfully tested on BCM4706. ---- - drivers/mtd/devices/bcm47xxsflash.c | 43 +++++++++++++++++++++++++++++++++-- - 1 file changed, 41 insertions(+), 2 deletions(-) - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -64,6 +64,42 @@ static int bcm47xxsflash_poll(struct bcm - * MTD ops - **************************************************/ - -+static int bcm47xxsflash_erase(struct mtd_info *mtd, struct erase_info *erase) -+{ -+ struct bcm47xxsflash *b47s = mtd->priv; -+ int err; -+ -+ switch (b47s->type) { -+ case BCM47XXSFLASH_TYPE_ST: -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_WREN); -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, erase->addr); -+ /* Newer flashes have "sub-sectors" which can be erased -+ * independently with a new command: ST_SSE. The ST_SE command -+ * erases 64KB just as before. -+ */ -+ if (b47s->blocksize < (64 * 1024)) -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_SSE); -+ else -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_SE); -+ break; -+ case BCM47XXSFLASH_TYPE_ATMEL: -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, erase->addr << 1); -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_PAGE_ERASE); -+ break; -+ } -+ -+ err = bcm47xxsflash_poll(b47s, HZ); -+ if (err) -+ erase->state = MTD_ERASE_FAILED; -+ else -+ erase->state = MTD_ERASE_DONE; -+ -+ if (erase->callback) -+ erase->callback(erase); -+ -+ return err; -+} -+ - static int bcm47xxsflash_read(struct mtd_info *mtd, loff_t from, size_t len, - size_t *retlen, u_char *buf) - { -@@ -88,12 +124,15 @@ static void bcm47xxsflash_fill_mtd(struc - mtd->name = "bcm47xxsflash"; - mtd->owner = THIS_MODULE; - mtd->type = MTD_ROM; -- mtd->size = b47s->size; -- mtd->_read = bcm47xxsflash_read; - - /* TODO: implement writing support and verify/change following code */ - mtd->flags = MTD_CAP_ROM; -+ mtd->size = b47s->size; -+ mtd->erasesize = b47s->blocksize; - mtd->writebufsize = mtd->writesize = 1; -+ -+ mtd->_erase = bcm47xxsflash_erase; -+ mtd->_read = bcm47xxsflash_read; - } - - /************************************************** |