summaryrefslogtreecommitdiffstats
path: root/pm49fl004.c
diff options
context:
space:
mode:
Diffstat (limited to 'pm49fl004.c')
-rw-r--r--pm49fl004.c94
1 files changed, 49 insertions, 45 deletions
diff --git a/pm49fl004.c b/pm49fl004.c
index 25921c6..e0bd6aa 100644
--- a/pm49fl004.c
+++ b/pm49fl004.c
@@ -31,37 +31,38 @@
#define RESET 0xFF
#define READ_ID 0x90
-static __inline__ int erase_block_49fl004 ( volatile unsigned char * bios ,unsigned long address)
+static __inline__ int erase_block_49fl004(volatile unsigned char *bios,
+ unsigned long address)
{
- volatile unsigned char *Temp;
+ volatile unsigned char *Temp;
- Temp = bios + 0x5555; /* set up address to be C000:5555h */
- *Temp = 0xAA; /* write data 0xAA to the address */
- myusec_delay(10);
- Temp = bios + 0x2AAA; /* set up address to be C000:2AAAh */
- *Temp = 0x55; /* write data 0x55 to the address */
- myusec_delay(10);
- Temp = bios + 0x5555; /* set up address to be C000:5555h */
- *Temp = 0x80; /* write data 0x80 to the address */
- myusec_delay(10);
- Temp = bios + 0x5555; /* set up address to be C000:5555h */
- *Temp = 0xAA; /* write data 0xAA to the address */
- myusec_delay(10);
- Temp = bios + 0x2AAA; /* set up address to be C000:2AAAh */
- *Temp = 0x55; /* write data 0x55 to the address */
- myusec_delay(10);
- Temp = bios + address; /* set up address to be C000:5555h */
- *Temp = 0x50; /* write data 0x50 to the address */
+ Temp = bios + 0x5555; /* set up address to be C000:5555h */
+ *Temp = 0xAA; /* write data 0xAA to the address */
+ myusec_delay(10);
+ Temp = bios + 0x2AAA; /* set up address to be C000:2AAAh */
+ *Temp = 0x55; /* write data 0x55 to the address */
+ myusec_delay(10);
+ Temp = bios + 0x5555; /* set up address to be C000:5555h */
+ *Temp = 0x80; /* write data 0x80 to the address */
+ myusec_delay(10);
+ Temp = bios + 0x5555; /* set up address to be C000:5555h */
+ *Temp = 0xAA; /* write data 0xAA to the address */
+ myusec_delay(10);
+ Temp = bios + 0x2AAA; /* set up address to be C000:2AAAh */
+ *Temp = 0x55; /* write data 0x55 to the address */
+ myusec_delay(10);
+ Temp = bios + address; /* set up address to be C000:5555h */
+ *Temp = 0x50; /* write data 0x50 to the address */
/* wait for Toggle bit ready */
- toggle_ready_jedec(bios);
+ toggle_ready_jedec(bios);
- return(0);
+ return (0);
}
-static __inline__ int write_block_49fl004(volatile char * bios,
- unsigned char * src,
- volatile unsigned char * dst,
+static __inline__ int write_block_49fl004(volatile char *bios,
+ unsigned char *src,
+ volatile unsigned char *dst,
unsigned int page_size)
{
int i;
@@ -69,8 +70,9 @@ static __inline__ int write_block_49fl004(volatile char * bios,
for (i = 0; i < page_size; i++) {
if (*dst != 0xff) {
- printf("FATAL: dst %p not erased (val 0x%x\n", dst, *dst);
- return(-1);
+ printf("FATAL: dst %p not erased (val 0x%x\n", dst,
+ *dst);
+ return (-1);
}
/* transfer data from source to destination */
if (*src == 0xFF) {
@@ -78,42 +80,44 @@ static __inline__ int write_block_49fl004(volatile char * bios,
/* If the data is 0xFF, don't program it */
continue;
}
- Temp = (bios + 0x5555);
- *Temp = 0xAA;
- Temp = bios + 0x2AAA;
- *Temp = 0x55;
- Temp = bios + 0x5555;
- *Temp = 0xA0;
+ Temp = (bios + 0x5555);
+ *Temp = 0xAA;
+ Temp = bios + 0x2AAA;
+ *Temp = 0x55;
+ Temp = bios + 0x5555;
+ *Temp = 0xA0;
*dst = *src;
toggle_ready_jedec(bios);
if (*dst != *src)
printf("BAD! dst 0x%lx val 0x%x src 0x%x\n",
- (unsigned long)dst, *dst, *src);
+ (unsigned long) dst, *dst, *src);
dst++, src++;
}
- return(0);
+ return (0);
}
-int write_49fl004 (struct flashchip * flash, unsigned char * buf)
+int write_49fl004(struct flashchip *flash, unsigned char *buf)
{
int i;
- int total_size = flash->total_size * 1024, page_size = flash->page_size;
- volatile char * bios = flash->virt_addr;
+ int total_size = flash->total_size * 1024, page_size =
+ flash->page_size;
+ volatile char *bios = flash->virt_addr;
- printf ("Programming Page: ");
- for (i = 0; i < total_size/page_size; i++) {
+ printf("Programming Page: ");
+ for (i = 0; i < total_size / page_size; i++) {
/* erase the page before programming */
erase_block_49fl004(bios, i * page_size);
/* write to the sector */
- printf ("%04d at address: 0x%08x", i, i * page_size);
- write_block_49fl004(bios, buf + i * page_size, bios + i * page_size,
- page_size);
- 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");
- fflush(stdout);
+ printf("%04d at address: 0x%08x", i, i * page_size);
+ write_block_49fl004(bios, buf + i * page_size,
+ bios + i * page_size, page_size);
+ 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");
+ fflush(stdout);
}
printf("\n");
- return(0);
+ return (0);
}
OpenPOWER on IntegriCloud