/* * Blackfin POST code * * Copyright (c) 2005-2011 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ #include #include #include #include #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