[U-Boot] [PATCH] nios2: add gpio_is_valid
Scott McNutt
smcnutt at psyent.com
Tue Jan 18 18:19:14 CET 2011
Added to: git://git.denx.de/u-boot-nios.git 'next'
Thank you,
--Scott
Thomas Chou wrote:
> Signed-off-by: Thomas Chou <thomas at wytron.com.tw>
> ---
> arch/nios2/include/asm/gpio.h | 6 ++++++
> board/altera/nios2-generic/custom_fpga.h | 1 +
> board/altera/nios2-generic/gpio.c | 6 ++++++
> 3 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/arch/nios2/include/asm/gpio.h b/arch/nios2/include/asm/gpio.h
> index 36a7132..4b21c8f 100644
> --- a/arch/nios2/include/asm/gpio.h
> +++ b/arch/nios2/include/asm/gpio.h
> @@ -52,6 +52,11 @@ static inline void gpio_set_value(unsigned gpio, int value)
> {
> writel(value ? 3 : 2, CONFIG_SYS_GPIO_BASE + (gpio << 2));
> }
> +
> +static inline int gpio_is_valid(int number)
> +{
> + return ((unsigned)number) < CONFIG_SYS_GPIO_WIDTH;
> +}
> #else
> extern int gpio_request(unsigned gpio, const char *label);
> extern int gpio_free(unsigned gpio);
> @@ -59,6 +64,7 @@ extern int gpio_direction_input(unsigned gpio);
> extern int gpio_direction_output(unsigned gpio, int value);
> extern int gpio_get_value(unsigned gpio);
> extern void gpio_set_value(unsigned gpio, int value);
> +extern int gpio_is_valid(int number);
> #endif /* CONFIG_SYS_GPIO_BASE */
>
> #endif /* _ASM_NIOS2_GPIO_H_ */
> diff --git a/board/altera/nios2-generic/custom_fpga.h b/board/altera/nios2-generic/custom_fpga.h
> index a11add5..f7f3853 100644
> --- a/board/altera/nios2-generic/custom_fpga.h
> +++ b/board/altera/nios2-generic/custom_fpga.h
> @@ -50,6 +50,7 @@
>
> /* led_pio.s1 is a altera_avalon_pio */
> #define LED_PIO_BASE 0x82120870
> +#define LED_PIO_WIDTH 8
>
> /* high_res_timer.s1 is a altera_avalon_timer */
> #define CONFIG_SYS_TIMER_BASE 0x82120820
> diff --git a/board/altera/nios2-generic/gpio.c b/board/altera/nios2-generic/gpio.c
> index 8c639ce..4a30564 100644
> --- a/board/altera/nios2-generic/gpio.c
> +++ b/board/altera/nios2-generic/gpio.c
> @@ -10,6 +10,7 @@
> #ifndef CONFIG_SYS_GPIO_BASE
>
> #define ALTERA_PIO_BASE LED_PIO_BASE
> +#define ALTERA_PIO_WIDTH LED_PIO_WIDTH
> #define ALTERA_PIO_DATA (ALTERA_PIO_BASE + 0)
> #define ALTERA_PIO_DIR (ALTERA_PIO_BASE + 4)
> static u32 pio_data_reg;
> @@ -62,4 +63,9 @@ void gpio_set_value(unsigned gpio, int value)
> pio_data_reg &= ~mask;
> writel(pio_data_reg, ALTERA_PIO_DATA);
> }
> +
> +int gpio_is_valid(int number)
> +{
> + return ((unsigned)number) < ALTERA_PIO_WIDTH;
> +}
> #endif
More information about the U-Boot
mailing list