summaryrefslogtreecommitdiff
path: root/board/altera/nios2-generic
diff options
context:
space:
mode:
authorJoachim Foerster <joachim.foerster@missinglinkelectronics.com>2011-10-21 15:48:50 +0200
committerThomas Chou <thomas@wytron.com.tw>2011-10-28 09:50:49 +0800
commit03d67e127685f65513e7b78dacbd4ccaf01053f6 (patch)
tree689e13ece8dd47b9c03354ac97fcd9d13127c756 /board/altera/nios2-generic
parentf956ad98b2ba10901b6ea04983e679bc5ddc4d7a (diff)
gpio: Add driver for Altera's PIO core
This driver may handle multiple PIO cores and thus needs to be setup by calling the altera_pio_init() function within the early board setup routine. The driver comes with some extras, see below the copyleft header. Signed-off-by: Joachim Foerster <joachim.foerster@missinglinkelectronics.com> Tested-by: Thomas Chou <thomas@wytron.com.tw> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Diffstat (limited to 'board/altera/nios2-generic')
-rw-r--r--board/altera/nios2-generic/custom_fpga.h1
-rw-r--r--board/altera/nios2-generic/nios2-generic.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/board/altera/nios2-generic/custom_fpga.h b/board/altera/nios2-generic/custom_fpga.h
index f7f38535fa..fd3ec9a8d8 100644
--- a/board/altera/nios2-generic/custom_fpga.h
+++ b/board/altera/nios2-generic/custom_fpga.h
@@ -51,6 +51,7 @@
/* led_pio.s1 is a altera_avalon_pio */
#define LED_PIO_BASE 0x82120870
#define LED_PIO_WIDTH 8
+#define LED_PIO_RSTVAL 0x0
/* high_res_timer.s1 is a altera_avalon_timer */
#define CONFIG_SYS_TIMER_BASE 0x82120820
diff --git a/board/altera/nios2-generic/nios2-generic.c b/board/altera/nios2-generic/nios2-generic.c
index 49ef80de96..0f882756f5 100644
--- a/board/altera/nios2-generic/nios2-generic.c
+++ b/board/altera/nios2-generic/nios2-generic.c
@@ -26,6 +26,7 @@
#include <netdev.h>
#include <mtd/cfi_flash.h>
#include <asm/io.h>
+#include <asm/gpio.h>
void text_base_hook(void); /* nop hook for text_base.S */
@@ -43,6 +44,13 @@ void early_flash_cmd_reset(void)
int board_early_init_f(void)
{
text_base_hook();
+#ifdef CONFIG_ALTERA_PIO
+#ifdef LED_PIO_BASE
+ altera_pio_init(LED_PIO_BASE, LED_PIO_WIDTH, 'o',
+ LED_PIO_RSTVAL, (1 << LED_PIO_WIDTH) - 1,
+ "led");
+#endif
+#endif
#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR)
early_flash_cmd_reset();
#endif