Deleted Added
full compact
24c24
< * $FreeBSD: head/sys/boot/arm/at91/boot0spi/main.c 157917 2006-04-21 06:51:08Z imp $
---
> * $FreeBSD: head/sys/boot/arm/at91/boot0spi/main.c 161369 2006-08-16 23:18:07Z imp $
29a30
> #include "spi_flash.h"
31c32
< extern void doit(void *);
---
> #define OFFSET 0
35a37
> int len, i, j, off;
36a39,40
> char *addr2 = (char *)SDRAM_BASE + (2 << 20); /* Load to base + 2MB */
> char *addr3 = (char *)SDRAM_BASE + (3 << 20); /* Load to base + 2MB */
38c42,44
< while (xmodem_rx(addr) == -1)
---
> SPI_InitFlash();
> printf("Waiting for data\r\n");
> while ((len = xmodem_rx(addr)) == -1)
40c46,59
< doit(addr);
---
> printf("\r\nDownloaded %u bytes.\r\n", len);
> p_memcpy(addr3, addr, (len + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE * FLASH_PAGE_SIZE);
> printf("Writing %u bytes to flash at %u\r\n", len, OFFSET);
> for (i = 0; i < len; i+= FLASH_PAGE_SIZE) {
> for (j = 0; j < 10; j++) {
> off = i + OFFSET;
> SPI_WriteFlash(off, addr + i, FLASH_PAGE_SIZE);
> SPI_ReadFlash(off, addr2 + i, FLASH_PAGE_SIZE);
> if (p_memcmp(addr3 + i, addr2 + i, FLASH_PAGE_SIZE) == 0)
> break;
> }
> if (j >= 10)
> printf("Bad Readback at %u\r\n", i);
> }