The currently unreferenced function in sharplhf00l04.c does a standard
FWH block protection reset (writes 0 to the protection register) and a
standard FWH block erase.
The locking blocks of the FWH block lock cover 128KB areas, and thats
the only thing page_size is used for in the functions referenced in the
LHF00L04 entry.
Finally, this adds a comment that there are non-volatile (flash memory)
lock bits for 8 sectors in the last 64KB. They are write-only and clearable
at once. Readback seems unsupported.
Signed-off-by: Michael Karcher <flashrom(a)mkarcher.dialup.fu-berlin.de>
---
Makefile | 2 +-
flashchips.c | 5 ++-
sharplhf00l04.c | 58 -------------------------------------------------------
3 files changed, 4 insertions(+), 61 deletions(-)
delete mode 100644 sharplhf00l04.c
diff --git a/Makefile b/Makefile
index 6e6e2de..470d944 100644
--- a/Makefile
+++ b/Makefile
@@ -119,7 +119,7 @@ endif
CHIP_OBJS = jedec.o stm50flw0x0x.o w39.o w29ee011.o \
sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o \
- sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o sharplhf00l04.o \
+ sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o \
a25.o at25.o
LIB_OBJS = layout.o
diff --git a/flashchips.c b/flashchips.c
index 865ba2f..4514985 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -5151,7 +5151,7 @@ const struct flashchip flashchips[] = {
.manufacture_id = SHARP_ID,
.model_id = SHARP_LHF00L04,
.total_size = 1024,
- .page_size = 64 * 1024,
+ .page_size = 128 * 1024,
.feature_bits = FEATURE_EITHER_RESET | FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
.probe = probe_82802ab,
@@ -5171,7 +5171,8 @@ const struct flashchip flashchips[] = {
.block_erase = NULL, /* 30 D0, only in A/A mux mode */
},
},
- .unlock = unlock_82802ab,
+ .unlock = unlock_82802ab, /* additionally, there are write-only non-volatile
+ boot block protection bits per 8K sector*/
.write = write_82802ab,
.read = read_memmapped,
.voltage = {3000, 3600},
diff --git a/sharplhf00l04.c b/sharplhf00l04.c
deleted file mode 100644
index f21950a..0000000
--- a/sharplhf00l04.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * This file is part of the flashrom project.
- *
- * Copyright (C) 2000 Silicon Integrated System Corporation
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "flash.h"
-#include "chipdrivers.h"
-
-/* FIXME: The datasheet is unclear whether we should use toggle_ready_jedec
- * or wait_82802ab.
- * FIXME: This file is unused.
- */
-
-int erase_lhf00l04_block(struct flashchip *flash, unsigned int blockaddr, unsigned int blocklen)
-{
- chipaddr bios = flash->virtual_memory + blockaddr;
- chipaddr wrprotect = flash->virtual_registers + blockaddr + 2;
- uint8_t status;
-
- // clear status register
- chip_writeb(0x50, bios);
- status = wait_82802ab(flash);
- print_status_82802ab(status);
- // clear write protect
- msg_cspew("write protect is at 0x%lx\n", (wrprotect));
- msg_cspew("write protect is 0x%x\n", chip_readb(wrprotect));
- chip_writeb(0, wrprotect);
- msg_cspew("write protect is 0x%x\n", chip_readb(wrprotect));
-
- // now start it
- chip_writeb(0x20, bios);
- chip_writeb(0xd0, bios);
- programmer_delay(10);
- // now let's see what the register is
- status = wait_82802ab(flash);
- print_status_82802ab(status);
-
- if (check_erased_range(flash, blockaddr, blocklen)) {
- msg_cerr("ERASE FAILED!\n");
- return -1;
- }
- return 0;
-}
--
1.7.5.3