diff options
author | Wolfgang Denk <wd@denx.de> | 2011-10-01 21:42:21 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-10-01 21:42:21 +0200 |
commit | 97d7ab8a8eb6dbf7c9e8096f31031dfed81db8f8 (patch) | |
tree | ee8afc46f2b1db1d875951f5641e4b917c85fe39 /board | |
parent | af708cbaae3c7254a50aee333b860dffc78db45d (diff) | |
parent | 90a75b050b8a23a6e8f558cc9a76658d8443509d (diff) |
Merge branch 'post' of git://git.denx.de/u-boot-blackfin
* 'post' of git://git.denx.de/u-boot-blackfin:
Blackfin: uart: implement loop callback for post
Blackfin: bf537-stamp/bf548-ezkit: update POST flash block range
Blackfin: post: generalize led/button tests with GPIOs
Blackfin: bf537-stamp: drop uart/flash post tests
Blackfin: post: drop custom test list
Blackfin: bf537-stamp: convert to gpio post hotkey
Diffstat (limited to 'board')
-rw-r--r-- | board/bf537-stamp/Makefile | 2 | ||||
-rw-r--r-- | board/bf537-stamp/post-memory.c | 63 | ||||
-rw-r--r-- | board/bf537-stamp/post.c | 174 |
3 files changed, 2 insertions, 237 deletions
diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile index 2b9328be32a..49e441472b4 100644 --- a/board/bf537-stamp/Makefile +++ b/board/bf537-stamp/Makefile @@ -31,7 +31,7 @@ LIB = $(obj)lib$(BOARD).o COBJS-y := $(BOARD).o COBJS-$(CONFIG_BFIN_IDE) += ide-cf.o -COBJS-$(CONFIG_HAS_POST) += post.o post-memory.o +COBJS-$(CONFIG_HAS_POST) += post-memory.o SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) OBJS := $(addprefix $(obj),$(COBJS-y)) diff --git a/board/bf537-stamp/post-memory.c b/board/bf537-stamp/post-memory.c index 49022dc9304..2dea92fbe9b 100644 --- a/board/bf537-stamp/post-memory.c +++ b/board/bf537-stamp/post-memory.c @@ -13,7 +13,6 @@ #define SCLK_NUM 3 void post_out_buff(char *buff); -int post_key_pressed(void); void post_init_pll(int mult, int div); int post_init_sdram(int sclk); void post_init_uart(int sclk); @@ -52,7 +51,7 @@ int memory_post_test(int flags) sclk_temp -= CONFIG_SCLK_DIV; sclk = sclk * 1000000; post_init_uart(sclk); - if (post_key_pressed() == 0) + if (post_hotkeys_pressed() == 0) return 0; for (m = 0; m < CCLK_NUM; m++) { @@ -130,66 +129,6 @@ void post_out_buff(char *buff) ; } -/* Using sw10-PF5 as the hotkey */ -#define KEY_LOOP 0x80000 -#define KEY_DELAY 0x80 -int post_key_pressed(void) -{ - int i, n; - unsigned short value; - - bfin_write_PORTF_FER(bfin_read_PORTF_FER() & ~PF5); - bfin_write_PORTFIO_DIR(bfin_read_PORTFIO_DIR() & ~PF5); - bfin_write_PORTFIO_INEN(bfin_read_PORTFIO_INEN() | PF5); - SSYNC(); - - post_out_buff("########Press SW10 to enter Memory POST########: 3\0"); - for (i = 0; i < KEY_LOOP; i++) { - value = bfin_read_PORTFIO() & PF5; - if (bfin_read_UART0_RBR() == 0x0D) { - value = 0; - goto key_pressed; - } - if (value != 0) - goto key_pressed; - for (n = 0; n < KEY_DELAY; n++) - asm("nop"); - } - post_out_buff("\b2\0"); - - for (i = 0; i < KEY_LOOP; i++) { - value = bfin_read_PORTFIO() & PF5; - if (bfin_read_UART0_RBR() == 0x0D) { - value = 0; - goto key_pressed; - } - if (value != 0) - goto key_pressed; - for (n = 0; n < KEY_DELAY; n++) - asm("nop"); - } - post_out_buff("\b1\0"); - - for (i = 0; i < KEY_LOOP; i++) { - value = bfin_read_PORTFIO() & PF5; - if (bfin_read_UART0_RBR() == 0x0D) { - value = 0; - goto key_pressed; - } - if (value != 0) - goto key_pressed; - for (n = 0; n < KEY_DELAY; n++) - asm("nop"); - } - key_pressed: - post_out_buff("\b0"); - post_out_buff("\n\r\0"); - if (value == 0) - return 0; - post_out_buff("Hotkey has been pressed, Enter POST . . . . . .\n\r\0"); - return 1; -} - void post_init_pll(int mult, int div) { diff --git a/board/bf537-stamp/post.c b/board/bf537-stamp/post.c deleted file mode 100644 index 60eed5f68a7..00000000000 --- a/board/bf537-stamp/post.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * BF537-STAMP POST code - * - * Enter bugs at http://blackfin.uclinux.org/ - * - * Copyright (c) 2005-2009 Analog Devices Inc. - * - * Licensed under the GPL-2 or later. - */ - -#include <common.h> -#include <config.h> -#include <command.h> -#include <asm/blackfin.h> -#include <asm/gpio.h> - -/* Using sw10-PF5 as the hotkey */ -int post_hotkeys_pressed(void) -{ - int delay = 3; - int i; - unsigned short value; - - gpio_request(GPIO_PF5, "post"); - gpio_direction_input(GPIO_PF5); - - printf("########Press SW10 to enter Memory POST########: %2d ", delay); - while (delay--) { - for (i = 0; i < 100; i++) { - value = gpio_get_value(GPIO_PF5); - if (value != 0) { - break; - } - udelay(10000); - } - printf("\b\b\b%2d ", delay); - } - printf("\b\b\b 0"); - printf("\n"); - if (value == 0) - return 0; - else { - printf("Hotkey has been pressed, Enter POST . . . . . .\n"); - return 1; - } - - gpio_free(GPIO_PF5); -} - -int uart_post_test(int flags) -{ - return 0; -} - -#define BLOCK_SIZE 0x10000 -#define VERIFY_ADDR 0x2000000 -extern int erase_block_flash(int); -extern int write_data(long lStart, long lCount, uchar * pnData); -int flash_post_test(int flags) -{ - unsigned short *pbuf, *temp; - int offset, n, i; - int value = 0; - int result = 0; - printf("\n"); - pbuf = (unsigned short *)VERIFY_ADDR; - temp = pbuf; - for (n = FLASH_START_POST_BLOCK; n < FLASH_END_POST_BLOCK; n++) { - offset = (n - 7) * BLOCK_SIZE; - printf("--------Erase block:%2d..", n); - erase_block_flash(n); - printf("OK\r"); - printf("--------Program block:%2d...", n); - write_data(CONFIG_SYS_FLASH_BASE + offset, BLOCK_SIZE, pbuf); - printf("OK\r"); - printf("--------Verify block:%2d...", n); - for (i = 0; i < BLOCK_SIZE; i += 2) { - if (*(unsigned short *)(CONFIG_SYS_FLASH_BASE + offset + i) != - *temp++) { - value = 1; - result = 1; - } - } - if (value) - printf("failed\n"); - else - printf("OK %3d%%\r", - (int)( - (n + 1 - - FLASH_START_POST_BLOCK) * - 100 / (FLASH_END_POST_BLOCK - - FLASH_START_POST_BLOCK))); - - temp = pbuf; - value = 0; - } - printf("\n"); - if (result) - return -1; - else - return 0; -} - -/**************************************************** - * LED1 ---- PF6 LED2 ---- PF7 * - * LED3 ---- PF8 LED4 ---- PF9 * - * LED5 ---- PF10 LED6 ---- PF11 * - ****************************************************/ -int led_post_test(int flags) -{ - unsigned int leds[] = { - GPIO_PF6, GPIO_PF7, GPIO_PF8, - GPIO_PF9, GPIO_PF10, GPIO_PF11, - }; - int i; - - for (i = 0; i < ARRAY_SIZE(leds); ++i) { - gpio_request(leds[i], "post"); - gpio_direction_output(leds[i], 0); - - printf("LED%i on", i + 1); - gpio_set_value(leds[i], 1); - udelay(1000000); - printf("\b\b\b\b\b\b\b"); - - gpio_free(leds[i]); - } - - return 0; -} - -/************************************************ - * SW10 ---- PF5 SW11 ---- PF4 * - * SW12 ---- PF3 SW13 ---- PF2 * - ************************************************/ -int button_post_test(int flags) -{ - unsigned int buttons[] = { - GPIO_PF2, GPIO_PF3, GPIO_PF4, GPIO_PF5, - }; - unsigned int sws[] = { 13, 12, 11, 10, }; - int i, delay = 5; - unsigned short value = 0; - int result = 0; - - for (i = 0; i < ARRAY_SIZE(buttons); ++i) { - gpio_request(buttons[i], "post"); - gpio_direction_input(buttons[i]); - - delay = 5; - printf("\n--------Press SW%i: %2d ", sws[i], delay); - while (delay--) { - for (i = 0; i < 100; i++) { - value = gpio_get_value(buttons[i]); - if (value != 0) - break; - udelay(10000); - } - printf("\b\b\b%2d ", delay); - } - if (value != 0) - puts("\b\bOK"); - else { - result = -1; - puts("\b\bfailed"); - } - - gpio_free(buttons[i]); - } - - puts("\n"); - - return result; -} |