X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=board%2Fbf533-stamp%2Fbf533-stamp.c;h=185a651bec8e9b93e22f05a863efc125022cae89;hb=2d8d190c8394b43c0989cdb04a50cb48d4e1f8da;hp=69e425bf974e7cf69a96d31067feca236416d3a4;hpb=6b6f287a33ae8c340f97fb08ed95b6687e2baa4b;p=platform%2Fkernel%2Fu-boot.git diff --git a/board/bf533-stamp/bf533-stamp.c b/board/bf533-stamp/bf533-stamp.c index 69e425b..185a651 100644 --- a/board/bf533-stamp/bf533-stamp.c +++ b/board/bf533-stamp/bf533-stamp.c @@ -1,277 +1,127 @@ /* - * U-boot - stamp.c STAMP board specific routines + * U-Boot - main board file * - * Copyright (c) 2005-2007 Analog Devices Inc. + * Copyright (c) 2005-2008 Analog Devices Inc. * * (C) Copyright 2000-2004 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * - * See file CREDITS for list of people who contributed to this - * project. - * - * 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., 51 Franklin St, Fifth Floor, Boston, - * MA 02110-1301 USA + * SPDX-License-Identifier: GPL-2.0+ */ #include -#include -#include -#include "bf533-stamp.h" +#include +#include DECLARE_GLOBAL_DATA_PTR; -#define STATUS_LED_OFF 0 -#define STATUS_LED_ON 1 - -#ifdef CONFIG_SHOW_BOOT_PROGRESS -# define SHOW_BOOT_PROGRESS(arg) show_boot_progress(arg) -#else -# define SHOW_BOOT_PROGRESS(arg) -#endif - int checkboard(void) { -#if (BFIN_CPU == ADSP_BF531) - printf("CPU: ADSP BF531 Rev.: 0.%d\n", *pCHIPID >> 28); -#elif (BFIN_CPU == ADSP_BF532) - printf("CPU: ADSP BF532 Rev.: 0.%d\n", *pCHIPID >> 28); -#else - printf("CPU: ADSP BF533 Rev.: 0.%d\n", *pCHIPID >> 28); -#endif printf("Board: ADI BF533 Stamp board\n"); printf(" Support: http://blackfin.uclinux.org/\n"); return 0; } -long int initdram(int board_type) -{ -#ifdef DEBUG - printf("SDRAM attributes:\n"); - printf - (" tRCD:%d Cycles; tRP:%d Cycles; tRAS:%d Cycles; tWR:%d Cycles; " - "CAS Latency:%d cycles\n", (SDRAM_tRCD >> 15), (SDRAM_tRP >> 11), - (SDRAM_tRAS >> 6), (SDRAM_tWR >> 19), (SDRAM_CL >> 2)); - printf("SDRAM Begin: 0x%x\n", CFG_SDRAM_BASE); - printf("Bank size = %d MB\n", 128); -#endif - gd->bd->bi_memstart = CFG_SDRAM_BASE; - gd->bd->bi_memsize = CFG_MAX_RAM_SIZE; - return (gd->bd->bi_memsize); -} - +/* PF0 and PF1 are used to switch between the ethernet and flash: + * PF0 PF1 + * flash: 0 0 + * ether: 1 0 + */ void swap_to(int device_id) { - - if (device_id == ETHERNET) { - *pFIO_DIR = PF0; - sync(); - *pFIO_FLAG_S = PF0; - sync(); - } else if (device_id == FLASH) { - *pFIO_DIR = (PF4 | PF3 | PF2 | PF1 | PF0); - *pFIO_FLAG_S = (PF4 | PF3 | PF2); - *pFIO_MASKA_D = (PF8 | PF6 | PF5); - *pFIO_MASKB_D = (PF7); - *pFIO_POLAR = (PF8 | PF6 | PF5); - *pFIO_EDGE = (PF8 | PF7 | PF6 | PF5); - *pFIO_INEN = (PF8 | PF7 | PF6 | PF5); - *pFIO_FLAG_D = (PF4 | PF3 | PF2); - sync(); - } else { - printf("Unknown bank to switch\n"); - } - - return; + gpio_request(GPIO_PF0, "eth_flash_swap"); + gpio_request(GPIO_PF1, "eth_flash_swap"); + gpio_direction_output(GPIO_PF0, device_id == ETHERNET); + gpio_direction_output(GPIO_PF1, 0); + SSYNC(); } #if defined(CONFIG_MISC_INIT_R) /* miscellaneous platform dependent initialisations */ int misc_init_r(void) { - int i; - int cf_stat = 0; - - /* Check whether CF card is inserted */ - *pFIO_EDGE = FIO_EDGE_CF_BITS; - *pFIO_POLAR = FIO_POLAR_CF_BITS; - for (i = 0; i < 0x300; i++) - asm("nop;"); - - if ((*pFIO_FLAG_S) & CF_STAT_BITS) { - cf_stat = 0; - } else { - cf_stat = 1; - } - - *pFIO_EDGE = FIO_EDGE_BITS; - *pFIO_POLAR = FIO_POLAR_BITS; - - if (cf_stat) { - printf("Booting from COMPACT flash\n"); - - /* Set cycle time for CF */ - *(volatile unsigned long *)ambctl1 = CF_AMBCTL1VAL; - - for (i = 0; i < 0x1000; i++) - asm("nop;"); - for (i = 0; i < 0x1000; i++) - asm("nop;"); - for (i = 0; i < 0x1000; i++) - asm("nop;"); - - serial_setbrg(); - ide_init(); - - setenv("bootargs", ""); - setenv("bootcmd", - "fatload ide 0:1 0x1000000 uImage-stamp;bootm 0x1000000;bootm 0x20100000"); - } else { - printf("Booting from FLASH\n"); - } +#ifdef CONFIG_STAMP_CF + cf_ide_init(); +#endif return 0; } #endif -#ifdef CONFIG_STAMP_CF - -void cf_outb(unsigned char val, volatile unsigned char *addr) -{ - /* - * Set PF1 PF0 respectively to 0 1 to divert address - * to the expansion memory banks - */ - *pFIO_FLAG_S = CF_PF0; - *pFIO_FLAG_C = CF_PF1; - sync(); - - *(addr) = val; - sync(); - - /* Setback PF1 PF0 to 0 0 to address external - * memory banks */ - *(volatile unsigned short *)pFIO_FLAG_C = CF_PF1_PF0; - sync(); -} - -unsigned char cf_inb(volatile unsigned char *addr) -{ - volatile unsigned char c; - - *pFIO_FLAG_S = CF_PF0; - *pFIO_FLAG_C = CF_PF1; - sync(); - - c = *(addr); - sync(); - - *pFIO_FLAG_C = CF_PF1_PF0; - sync(); - - return c; -} - -void cf_insw(unsigned short *sect_buf, unsigned short *addr, int words) -{ - int i; - - *pFIO_FLAG_S = CF_PF0; - *pFIO_FLAG_C = CF_PF1; - sync(); +#ifdef CONFIG_SHOW_BOOT_PROGRESS - for (i = 0; i < words; i++) { - *(sect_buf + i) = *(addr); - sync(); - } +#define CONFIG_LED_STATUS_OFF 0 +#define CONFIG_LED_STATUS_ON 1 - *pFIO_FLAG_C = CF_PF1_PF0; - sync(); -} +static int gpio_setup; -void cf_outsw(unsigned short *addr, unsigned short *sect_buf, int words) +static void stamp_led_set(int LED1, int LED2, int LED3) { - int i; - - *pFIO_FLAG_S = CF_PF0; - *pFIO_FLAG_C = CF_PF1; - sync(); - - for (i = 0; i < words; i++) { - *(addr) = *(sect_buf + i); - sync(); + if (!gpio_setup) { + gpio_request(GPIO_PF2, "boot_progress"); + gpio_request(GPIO_PF3, "boot_progress"); + gpio_request(GPIO_PF4, "boot_progress"); + gpio_direction_output(GPIO_PF2, LED1); + gpio_direction_output(GPIO_PF3, LED2); + gpio_direction_output(GPIO_PF4, LED3); + gpio_setup = 1; + } else { + gpio_set_value(GPIO_PF2, LED1); + gpio_set_value(GPIO_PF3, LED2); + gpio_set_value(GPIO_PF4, LED3); } - - *pFIO_FLAG_C = CF_PF1_PF0; - sync(); -} -#endif - -void stamp_led_set(int LED1, int LED2, int LED3) -{ - *pFIO_INEN &= ~(PF2 | PF3 | PF4); - *pFIO_DIR |= (PF2 | PF3 | PF4); - - if (LED1 == STATUS_LED_OFF) - *pFIO_FLAG_S = PF2; - else - *pFIO_FLAG_C = PF2; - if (LED2 == STATUS_LED_OFF) - *pFIO_FLAG_S = PF3; - else - *pFIO_FLAG_C = PF3; - if (LED3 == STATUS_LED_OFF) - *pFIO_FLAG_S = PF4; - else - *pFIO_FLAG_C = PF4; - sync(); } void show_boot_progress(int status) { switch (status) { - case 1: - stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_ON); + case BOOTSTAGE_ID_CHECK_MAGIC: + stamp_led_set(CONFIG_LED_STATUS_OFF, CONFIG_LED_STATUS_OFF, + CONFIG_LED_STATUS_ON); break; - case 2: - stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_OFF); + case BOOTSTAGE_ID_CHECK_HEADER: + stamp_led_set(CONFIG_LED_STATUS_OFF, CONFIG_LED_STATUS_ON, + CONFIG_LED_STATUS_OFF); break; - case 3: - stamp_led_set(STATUS_LED_OFF, STATUS_LED_ON, STATUS_LED_ON); + case BOOTSTAGE_ID_CHECK_CHECKSUM: + stamp_led_set(CONFIG_LED_STATUS_OFF, CONFIG_LED_STATUS_ON, + CONFIG_LED_STATUS_ON); break; - case 4: - stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_OFF); + case BOOTSTAGE_ID_CHECK_ARCH: + stamp_led_set(CONFIG_LED_STATUS_ON, CONFIG_LED_STATUS_OFF, + CONFIG_LED_STATUS_OFF); break; - case 5: - case 6: - stamp_led_set(STATUS_LED_ON, STATUS_LED_OFF, STATUS_LED_ON); + case BOOTSTAGE_ID_CHECK_IMAGETYPE: + case BOOTSTAGE_ID_DECOMP_IMAGE: + stamp_led_set(CONFIG_LED_STATUS_ON, CONFIG_LED_STATUS_OFF, + CONFIG_LED_STATUS_ON); break; - case 7: - case 8: - stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_OFF); + case BOOTSTAGE_ID_KERNEL_LOADED: + case BOOTSTAGE_ID_CHECK_BOOT_OS: + stamp_led_set(CONFIG_LED_STATUS_ON, CONFIG_LED_STATUS_ON, + CONFIG_LED_STATUS_OFF); break; - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - stamp_led_set(STATUS_LED_OFF, STATUS_LED_OFF, STATUS_LED_OFF); + case BOOTSTAGE_ID_BOOT_OS_RETURNED: + case BOOTSTAGE_ID_RD_MAGIC: + case BOOTSTAGE_ID_RD_HDR_CHECKSUM: + case BOOTSTAGE_ID_RD_CHECKSUM: + case BOOTSTAGE_ID_RAMDISK: + case BOOTSTAGE_ID_NO_RAMDISK: + case BOOTSTAGE_ID_RUN_OS: + stamp_led_set(CONFIG_LED_STATUS_OFF, CONFIG_LED_STATUS_OFF, + CONFIG_LED_STATUS_OFF); break; default: - stamp_led_set(STATUS_LED_ON, STATUS_LED_ON, STATUS_LED_ON); + stamp_led_set(CONFIG_LED_STATUS_ON, CONFIG_LED_STATUS_ON, + CONFIG_LED_STATUS_ON); break; } } +#endif + +#ifdef CONFIG_SMC91111 +int board_eth_init(bd_t *bis) +{ + return smc91111_initialize(0, CONFIG_SMC91111_BASE); +} +#endif