Date: Wed, 3 May 2006 21:18:36 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 96617 for review Message-ID: <200605032118.k43LIaTd058376@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=96617 Change 96617 by imp@imp_hammer on 2006/05/03 21:17:55 12k images, allow FPGA burning (note: we have to load the FPGA image from the SPI part). Affected files ... .. //depot/projects/arm/src/sys/boot/arm/at91/Makefile.inc#14 edit .. //depot/projects/arm/src/sys/boot/arm/at91/bootspi/Makefile#8 edit .. //depot/projects/arm/src/sys/boot/arm/at91/bootspi/loader_prompt.c#2 edit .. //depot/projects/arm/src/sys/boot/arm/at91/bootspi/loader_prompt.h#2 edit .. //depot/projects/arm/src/sys/boot/arm/at91/bootspi/main.c#5 edit Differences ... ==== //depot/projects/arm/src/sys/boot/arm/at91/Makefile.inc#14 (text+ko) ==== @@ -20,7 +20,7 @@ .if defined(P) ${P}: ${P}.out objcopy -S -O binary ${P}.out ${.TARGET} - @set -- `ls -l ${.TARGET}`; x=$$((8192-$$5)); \ + @set -- `ls -l ${.TARGET}`; x=$$((12288-$$5)); \ echo "$$x bytes available"; test $$x -ge 0 ${P}.out: ${OBJS} @@ -35,4 +35,10 @@ MK_TAG_LIST:=no .endif +.if defined(WITHOUT_FPGA) +MK_FPGA:=no +.else +MK_FPGA:=yes +.endif + .endif ==== //depot/projects/arm/src/sys/boot/arm/at91/bootspi/Makefile#8 (text+ko) ==== @@ -8,3 +8,12 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .include <bsd.prog.mk> + +.if ${MK_TAG_LIST} != "no" +CFLAGS += -I${.CURDIR}/.. -DSUPPORT_TAG_LIST +SRCS+=tag_list.c +.endif + +.if ${MK_FPGA} != "no" +CFLAGS += -DTSC_FPGA +.endif ==== //depot/projects/arm/src/sys/boot/arm/at91/bootspi/loader_prompt.c#2 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/bootspi/loader_prompt.h#2 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/bootspi/main.c#5 (text+ko) ==== @@ -1,57 +1,85 @@ -/******************************************************************************* +/*- + * Copyright (c) 2006 M. Warner Losh. All rights reserved. * - * Filename: main.c + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * Basic entry points for top-level functions + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * Revision information: + * This software is derived from software provided by kwikbyte without + * copyright as follows: * - * 20AUG2004 kb_admin initial creation - * 12JAN2005 kb_admin cosmetic changes - * 29APR2005 kb_admin modified boot delay - * - * BEGIN_KBDD_BLOCK * No warranty, expressed or implied, is included with this software. It is * provided "AS IS" and no warranty of any kind including statutory or aspects * relating to merchantability or fitness for any purpose is provided. All * intellectual property rights of others is maintained with the respective * owners. This software is not copyrighted and is intended for reference * only. - * END_BLOCK * - * $FreeBSD: src/sys/boot/arm/at91/bootspi/main.c,v 1.1 2006/04/19 17:16:48 imp Exp $ - ******************************************************************************/ + * $FreeBSD$ + */ #include "env_vars.h" +#include "at91rm9200.h" #include "at91rm9200_lowlevel.h" #include "loader_prompt.h" #include "emac.h" #include "lib.h" +#ifdef TSC_FPGA +#include "spi_flash.h" +#include "fpga.h" + +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 +}; + +static void +fpga_load(void) +{ + int len; + char *addr = (char *)SDRAM_BASE + (1 << 20); /* Load to base + 1MB */ + + SPI_InitFlash(); + len = 212482; + SPI_ReadFlash(15 * FLASH_PAGE_SIZE, addr, len); + printf("Loading %u bytes into the FPGA...\r\n", len); + fpga_init(&main_fpga); + fpga_clear(&main_fpga); + fpga_write_bytes(&main_fpga, addr, len); + fpga_done(&main_fpga); +} +#endif -/* - * .KB_C_FN_DEFINITION_START - * int main(void) - * This global function waits at least one second, but not more than two - * seconds, for input from the serial port. If no response is recognized, - * it acts according to the parameters specified by the environment. For - * example, the function might boot an operating system. Do not return - * from this function. - * .KB_C_FN_DEFINITION_END - */ int main(void) { - +#ifdef TSC_FPGA + fpga_load(); +#endif EMAC_Init(); - LoadBootCommands(); - printf("\r\nSPI Boot loader.\r\nAutoboot...\r\n"); - if (getc(1) == -1) ExecuteEnvironmentFunctions(); - Bootloader(0); - return (1); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200605032118.k43LIaTd058376>