summaryrefslogtreecommitdiff
path: root/util/flashrom/stm50flw0x0x.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/flashrom/stm50flw0x0x.c')
-rw-r--r--util/flashrom/stm50flw0x0x.c66
1 files changed, 32 insertions, 34 deletions
diff --git a/util/flashrom/stm50flw0x0x.c b/util/flashrom/stm50flw0x0x.c
index bc51c2f552..67cf62c650 100644
--- a/util/flashrom/stm50flw0x0x.c
+++ b/util/flashrom/stm50flw0x0x.c
@@ -16,7 +16,6 @@
* 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
- *
*/
/*
@@ -25,7 +24,6 @@
* ST M50FLW040B (not yet tested)
* ST M50FLW080A
* ST M50FLW080B (not yet tested)
- *
*/
#include <stdio.h>
@@ -93,7 +91,6 @@ int probe_stm50flw0x0x(struct flashchip *flash)
return 1;
}
-
static void wait_stm50flw0x0x(volatile uint8_t *bios)
{
uint8_t id1;
@@ -114,50 +111,48 @@ static void wait_stm50flw0x0x(volatile uint8_t *bios)
*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
*(volatile uint8_t *)(bios + 0x2AAA) = 0x55;
*(volatile uint8_t *)(bios + 0x5555) = 0xF0;
-
}
/*
* claus.gindhart@kontron.com
* The ST M50FLW080B and STM50FLW080B chips have to be unlocked,
- * before you can erase them or write to them
-*/
+ * before you can erase them or write to them.
+ */
int unlock_block_stm50flw0x0x(struct flashchip *flash, int offset)
{
volatile uint8_t *flash_addr = flash->virtual_registers + 2;
const uint8_t unlock_sector = 0x00;
int j;
- /* These chips have to be unlocked before you can erase
- * them or write to them
- * The size of the locking sectors depends on the type
- * of chip
- *
- * Sometimes, the BIOS does this for you; so you propably
- * dont need to worry about that
- */
-
- /* check, if it's is a top/bottom-block with 4k-sectors */
- /* TODO: What about the other types ? */
+ /*
+ * These chips have to be unlocked before you can erase them or write
+ * to them. The size of the locking sectors depends on the type
+ * of chip.
+ *
+ * Sometimes, the BIOS does this for you; so you propably
+ * don't need to worry about that.
+ */
+
+ /* Check, if it's is a top/bottom-block with 4k-sectors. */
+ /* TODO: What about the other types? */
if ((offset == 0) ||
- (offset == (flash->model_id == ST_M50FLW080A ? 0xE0000 : 0x10000))
- || (offset == 0xF0000)) {
+ (offset == (flash->model_id == ST_M50FLW080A ? 0xE0000 : 0x10000))
+ || (offset == 0xF0000)) {
// unlock each 4k-sector
for (j = 0; j < 0x10000; j += 0x1000) {
printf_debug("unlocking at 0x%x\n", offset + j);
*(flash_addr + offset + j) = unlock_sector;
- if (*(flash_addr + offset + j) != unlock_sector)
- {
- printf("Cannot unlock sector @ 0x%x\n",offset + j);
+ if (*(flash_addr + offset + j) != unlock_sector) {
+ printf("Cannot unlock sector @ 0x%x\n",
+ offset + j);
return -1;
}
}
} else {
printf_debug("unlocking at 0x%x\n", offset);
*(flash_addr + offset) = unlock_sector;
- if (*(flash_addr + offset) != unlock_sector)
- {
+ if (*(flash_addr + offset) != unlock_sector) {
printf("Cannot unlock sector @ 0x%x\n", offset);
return -1;
}
@@ -194,9 +189,9 @@ int erase_block_stm50flw0x0x(struct flashchip *flash, int offset)
}
int write_page_stm50flw0x0x(volatile uint8_t *bios, uint8_t *src,
- volatile uint8_t *dst, int page_size)
+ volatile uint8_t *dst, int page_size)
{
- int i, rc=0;
+ int i, rc = 0;
volatile uint8_t *d = dst;
uint8_t *s = src;
@@ -236,18 +231,19 @@ int write_page_stm50flw0x0x(volatile uint8_t *bios, uint8_t *src,
*/
int erase_stm50flw0x0x(struct flashchip *flash)
{
- int i,rc=0;
+ int i, rc = 0;
int total_size = flash->total_size * 1024;
int page_size = flash->page_size;
volatile uint8_t *bios = flash->virtual_memory;
printf("Erasing page:\n");
- for (i = 0;(i < total_size / page_size) && (rc==0); i++) {
+ for (i = 0; (i < total_size / page_size) && (rc == 0); i++) {
printf
("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
printf("%04d at address: 0x%08x ", i, i * page_size);
rc = unlock_block_stm50flw0x0x(flash, i * page_size);
- if (!rc) rc = erase_block_stm50flw0x0x(flash, i * page_size);
+ if (!rc)
+ rc = erase_block_stm50flw0x0x(flash, i * page_size);
}
printf("\n");
protect_stm50flw0x0x(bios);
@@ -257,13 +253,13 @@ int erase_stm50flw0x0x(struct flashchip *flash)
int write_stm50flw0x0x(struct flashchip *flash, uint8_t * buf)
{
- int i,rc=0;
+ int i, rc = 0;
int total_size = flash->total_size * 1024;
int page_size = flash->page_size;
volatile uint8_t *bios = flash->virtual_memory;
printf("Programming page: \n");
- for (i = 0;(i < total_size / page_size) && (rc==0); i++) {
+ for (i = 0; (i < total_size / page_size) && (rc == 0); i++) {
printf
("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
printf("%04d at address: 0x%08x ", i, i * page_size);
@@ -282,9 +278,11 @@ int write_stm50flw0x0x(struct flashchip *flash, uint8_t * buf)
}
rc = unlock_block_stm50flw0x0x(flash, i * page_size);
- if (!rc) rc = erase_block_stm50flw0x0x(flash, i * page_size);
- if (!rc) write_page_stm50flw0x0x(bios, buf + i * page_size,
- bios + i * page_size, page_size);
+ if (!rc)
+ rc = erase_block_stm50flw0x0x(flash, i * page_size);
+ if (!rc)
+ write_page_stm50flw0x0x(bios, buf + i * page_size,
+ bios + i * page_size, page_size);
}
printf("\n");
protect_stm50flw0x0x(bios);