trivial patch for abuild: allow powerpc-elf-gcc, too.
[coreboot.git] / util / flashrom / sst_fwhub.c
index b828ceef3bfb5f23d55b77a8213870ed68dd27ec..ab541e41f886cee7c345349979cb4a295fbd3ec5 100644 (file)
@@ -1,35 +1,27 @@
 /*
- * adapted from the Intel FW hub stuff for 82802ax parts. 
+ * This file is part of the flashrom project.
  *
+ * Copyright (C) 2000 Silicon Integrated System Corporation
  *
- * Copyright 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 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * 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 <errno.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
+/* Adapted from the Intel FW hub stuff for 82802ax parts. */
 
+#include <stdio.h>
 #include "flash.h"
-#include "jedec.h"
-#include "sst_fwhub.h"
 
 // I need that Berkeley bit-map printer
 void print_sst_fwhub_status(uint8_t status)
@@ -59,22 +51,32 @@ int erase_sst_fwhub_block(struct flashchip *flash, int offset)
        volatile uint8_t *wrprotect = flash->virtual_registers + offset + 2;
 
        // clear write protect
-       *(wrprotect) = 0;
+       chip_writeb(0, wrprotect);
 
        erase_block_jedec(flash->virtual_memory, offset);
        toggle_ready_jedec(flash->virtual_memory);
 
-       return (0);
+       return 0;
 }
 
 int erase_sst_fwhub(struct flashchip *flash)
 {
        int i;
        unsigned int total_size = flash->total_size * 1024;
+       volatile uint8_t *bios = flash->virtual_memory;
 
        for (i = 0; i < total_size; i += flash->page_size)
                erase_sst_fwhub_block(flash, i);
-       return (0);
+
+       // dumb check if erase was successful.
+       for (i = 0; i < total_size; i++) {
+               if (bios[i] != 0xff) {
+                       printf("ERASE FAILED!\n");
+                       return -1;
+               }
+       }
+
+       return 0;
 }
 
 int write_sst_fwhub(struct flashchip *flash, uint8_t *buf)
@@ -85,17 +87,10 @@ int write_sst_fwhub(struct flashchip *flash, uint8_t *buf)
        volatile uint8_t *bios = flash->virtual_memory;
 
        // FIXME: We want block wide erase instead of ironing the whole chip
-       erase_sst_fwhub(flash);
-
-       // dumb check if erase was successful.
-       for (i = 0; i < total_size; i++) {
-               if (bios[i] != 0xff) {
-                       printf("ERASE FAILED\n");
-                       return -1;
-               }
-       }
+       if (erase_sst_fwhub(flash))
+               return -1;
 
-       printf("Programming Page: ");
+       printf("Programming page: ");
        for (i = 0; i < total_size / page_size; i++) {
                printf("%04d at address: 0x%08x", i, i * page_size);
                write_sector_jedec(bios, buf + i * page_size,
@@ -103,5 +98,6 @@ int write_sst_fwhub(struct flashchip *flash, uint8_t *buf)
                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("\n");
-       return (0);
+
+       return 0;
 }