Date: Fri, 22 Sep 2006 00:20:22 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 106480 for review Message-ID: <200609220020.k8M0KMM9011941@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=106480 Change 106480 by imp@imp_lighthouse on 2006/09/22 00:19:32 Break out the board specific stuff from the more generic stuff. There's still a lot of assumptions about hardware, but this makes it easier to add new boards. Affected files ... .. //depot/projects/arm/src/sys/boot/arm/at91/boot2/Makefile#7 edit .. //depot/projects/arm/src/sys/boot/arm/at91/boot2/boot2.c#23 edit .. //depot/projects/arm/src/sys/boot/arm/at91/boot2/tsc_board.c#1 add Differences ... ==== //depot/projects/arm/src/sys/boot/arm/at91/boot2/Makefile#7 (text+ko) ==== @@ -4,7 +4,7 @@ P=boot2 FILES=${P} -SRCS=arm_init.S boot2.c ee.c +SRCS=arm_init.S boot2.c tsc_board.c ee.c NO_MAN= LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg OBJS+= ${SRCS:N*.h:R:S/$/.o/g} ==== //depot/projects/arm/src/sys/boot/arm/at91/boot2/boot2.c#23 (text+ko) ==== @@ -141,112 +141,16 @@ } } -#ifdef BOOT_TSC -#define TSC_FPGA -#endif - -#ifdef TSC_FPGA -#include "at91rm9200.h" -#include "spi_flash.h" -#include "fpga.h" - -#define FPGA_OFFSET (15 * FLASH_PAGE_SIZE) -#define FPGA_LEN (212608) - -char buffer[FPGA_LEN]; - -const struct fpga main_fpga = -{ - AT91C_BASE_PIOB, AT91C_PIO_PB0, - AT91C_BASE_PIOC, AT91C_PIO_PC11, - AT91C_BASE_PIOB, AT91C_PIO_PB2, - AT91C_BASE_PIOC, AT91C_PIO_PC12 -}; - -void -fpga_load(void) -{ - int len, off, i, offset; - char *addr = buffer; - - len = FPGA_LEN; - offset = FPGA_OFFSET; - for (i = 0; i < len; i+= FLASH_PAGE_SIZE) { - off = i + offset; - SPI_ReadFlash(off, addr + i, FLASH_PAGE_SIZE); - } - fpga_init(&main_fpga); - fpga_clear(&main_fpga); - fpga_write_bytes(&main_fpga, addr, len); - fpga_done(&main_fpga); -} -#endif - -#ifdef BOOT_TSC -static void -MacFromEE() -{ - uint32_t sig; -#if 0 - uint8_t euid64[8] = { 0x00, 0x30, 0x96, 0x20, - 0x00, 0x00, 0x00, 0x05 }; -#endif +// Each board has to provide one of these. +void board_init(void); -#if 0 - printf("writing...\n"); - sig = 0xaa55aa55; - EEWrite(0, (uint8_t *)&sig, sizeof(sig)); - EEWrite(48, euid64, sizeof(euid64)); -#endif - sig = 0; - EERead(0, (uint8_t *)&sig, sizeof(sig)); - if (sig != 0xaa55aa55) - return; - EERead(48, mac, 3); - EERead(48+5, mac+3, 3); - printf("MAC %x:%x:%x:%x:%x:%x\n", mac[0], - mac[1], mac[2], mac[3], mac[4], mac[5]); -} -#endif - -#define XMODEM_DL -#ifdef XMODEM_DL -#define FLASH_OFFSET (0 * FLASH_PAGE_SIZE) -#define FPGA_OFFSET (15 * FLASH_PAGE_SIZE) -#define FPGA_LEN (212608) -#define KERNEL_OFFSET (220 * FLASH_PAGE_SIZE) -#define KERNEL_LEN (6 * 1024 * FLASH_PAGE_SIZE) - -static void -UpdateFlash(int offset) -{ - char *addr = (char *)0x20000000 + (1 << 20); /* Load to base + 1MB */ - int len, i, off; - - while ((len = xmodem_rx(addr)) == -1) - continue; - printf("\nDownloaded %u bytes.\n", len); - for (i = 0; i < len; i+= FLASH_PAGE_SIZE) { - off = i + offset; - SPI_WriteFlash(off, addr + i, FLASH_PAGE_SIZE); - } -} -#endif - int main(void) { int autoboot, c = 0; ino_t ino; -#ifdef TSC_FPGA - SPI_InitFlash(); - fpga_load(); -#endif -#ifdef BOOT_TSC - EEInit(); - MacFromEE(); -#endif + board_init(); EMAC_Init(); sdcard_init(); EMAC_SetMACAddress(mac); @@ -282,7 +186,7 @@ xputchar('\a'); #ifdef XMODEM_DL else if (*cmd == '*') - UpdateFlash(FLASH_OFFSET); + Update(); else if (*cmd == '#') reset(); #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609220020.k8M0KMM9011941>