Re: [U-Boot] [PATCH] nios2: add gpio_is_valid
Added to: git://git.denx.de/u-boot-nios.git 'next' Thank you, --Scott Thomas Chou wrote: > Signed-off-by: Thomas Chou > --- > 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 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] nios2: add gpio_is_valid
On 12/27/2010 07:35 PM, Sergei Shtylyov wrote: > Hello. > > On 27-12-2010 5:46, Thomas Chou wrote: > >> Signed-off-by: Thomas Chou > [...] > >> 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; > > No need to have parens around '(unsigned)number'. > >> 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 > [...] >> @@ -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; > > Same here... > > WBR, Sergei > Hi Sergei, The casting is needed as the arg is type int, and we might use -1 to indicate no-such-gpio as they come from linux asm-generic/gpio.h. Best regards, Thomas /* * "valid" GPIO numbers are nonnegative and may be passed to * setup routines like gpio_request(). only some valid numbers * can successfully be requested and used. * * Invalid GPIO numbers are useful for indicating no-such-GPIO in * platform data and other tables. */ static inline int gpio_is_valid(int number) { return ((unsigned)number) < ARCH_NR_GPIOS; } ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH] nios2: add gpio_is_valid
Hello. On 27-12-2010 5:46, Thomas Chou wrote: > Signed-off-by: Thomas Chou [...] > 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; No need to have parens around '(unsigned)number'. > 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 [...] > @@ -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; Same here... WBR, Sergei ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH] nios2: add gpio_is_valid
Signed-off-by: Thomas Chou --- 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 -- 1.7.3.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot