86 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Blackfin POST code
 | |
|  *
 | |
|  * Copyright (c) 2005-2011 Analog Devices Inc.
 | |
|  *
 | |
|  * Licensed under the GPL-2 or later.
 | |
|  */
 | |
| 
 | |
| #include <common.h>
 | |
| #include <config.h>
 | |
| #include <post.h>
 | |
| 
 | |
| #include <asm/gpio.h>
 | |
| 
 | |
| #if CONFIG_POST & CONFIG_SYS_POST_BSPEC1
 | |
| int led_post_test(int flags)
 | |
| {
 | |
| 	unsigned leds[] = { CONFIG_POST_BSPEC1_GPIO_LEDS };
 | |
| 	int i;
 | |
| 
 | |
| 	/* First turn them all off */
 | |
| 	for (i = 0; i < ARRAY_SIZE(leds); ++i) {
 | |
| 		if (gpio_request(leds[i], "post")) {
 | |
| 			printf("could not request gpio %u\n", leds[i]);
 | |
| 			continue;
 | |
| 		}
 | |
| 		gpio_direction_output(leds[i], 0);
 | |
| 	}
 | |
| 
 | |
| 	/* Now turn them on one by one */
 | |
| 	for (i = 0; i < ARRAY_SIZE(leds); ++i) {
 | |
| 		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;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #if CONFIG_POST & CONFIG_SYS_POST_BSPEC2
 | |
| int button_post_test(int flags)
 | |
| {
 | |
| 	unsigned buttons[] = { CONFIG_POST_BSPEC2_GPIO_BUTTONS };
 | |
| 	unsigned int sws[] = { CONFIG_POST_BSPEC2_GPIO_NAMES };
 | |
| 	int i, delay = 5;
 | |
| 	unsigned short value = 0;
 | |
| 	int result = 0;
 | |
| 
 | |
| 	for (i = 0; i < ARRAY_SIZE(buttons); ++i) {
 | |
| 		if (gpio_request(buttons[i], "post")) {
 | |
| 			printf("could not request gpio %u\n", buttons[i]);
 | |
| 			continue;
 | |
| 		}
 | |
| 		gpio_direction_input(buttons[i]);
 | |
| 
 | |
| 		delay = 5;
 | |
| 		printf("\n--------Press SW%i: %2d ", sws[i], delay);
 | |
| 		while (delay--) {
 | |
| 			int j;
 | |
| 			for (j = 0; j < 100; j++) {
 | |
| 				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;
 | |
| }
 | |
| #endif
 |