|  | /* | 
|  | * 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 |