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
 |