nios2: add gpio_is_valid
PATCH 1/1 nios2: add gpio_is_valid
--- 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(-)
arch/nios2/include/asm/gpio.h +6 -0
@@ -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_ */
board/altera/nios2-generic/custom_fpga.h +1 -0
@@ -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
board/altera/nios2-generic/gpio.c +6 -0
@@ -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
Signature · 1 line
1.7.3.4
PATCH 1/1 nios2: add gpio_is_valid
Hello.
Quoted 1 line · Thomas Chou
Signed-off-by Thomas Chou<[email protected]>
[...]
arch/nios2/include/asm/gpio.h static inline void gpio_set_value(unsigned gpio, int value) · line 58
Quoted 12 lines
arch/nios2/include/asm/gpio.h +4
-0@@ -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'.
Quoted 4 lines
board/altera/nios2-generic/gpio.c +0
-0
[...]
board/altera/nios2-generic/gpio.c void gpio_set_value(unsigned gpio, int value) · line 69
Quoted 8 lines
board/altera/nios2-generic/gpio.c +4
-0@@ -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
PATCH 1/1 nios2: add gpio_is_valid
Quoted 41 lines · Sergei Shtylyov
Hello.
Quoted 1 line · Thomas Chou
Signed-off-by Thomas Chou<[email protected]>[...]
Quoted 6 lines
arch/nios2/include/asm/gpio.h +0
-0arch/nios2/include/asm/gpio.h static inline void gpio_set_value(unsigned gpio, · line 59
Quoted 8 lines
arch/nios2/include/asm/gpio.h +4
-0@@ -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'.
Quoted 5 lines
board/altera/nios2-generic/gpio.c +0
-0[...]
board/altera/nios2-generic/gpio.c void gpio_set_value(unsigned gpio, int value) · line 69
Quoted 8 lines
board/altera/nios2-generic/gpio.c +4
-0@@ -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...
Quoted 2 lines
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;
}PATCH 1/1 nios2: add gpio_is_valid
In reply to Thomas ChouAdded to: git://git.denx.de/u-boot-nios.git 'next'
Thank you,
--Scott
Quoted 65 lines · Thomas Chou
Signed-off-by Thomas Chou <[email protected]>--- 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(-)arch/nios2/include/asm/gpio.h +6
-0@@ -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_ */ board/altera/nios2-generic/custom_fpga.h +1
-0@@ -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 0x82120820board/altera/nios2-generic/gpio.c +6
-0@@ -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