GPIO driver: register all pintypes as generic /dev/gpioN

This commit is contained in:
Jari van Ewijk
2021-12-09 20:05:20 +01:00
committed by Xiang Xiao
parent efc949bceb
commit 2e47ef32cf
9 changed files with 142 additions and 96 deletions
@@ -282,6 +282,7 @@ static int gpint_enable(FAR struct gpio_dev_s *dev, bool enable)
int esp32c3_gpio_init(void)
{
int pincount = 0;
int i;
#if BOARD_NGPIOOUT > 0
@@ -292,7 +293,7 @@ int esp32c3_gpio_init(void)
g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
g_gpout[i].gpio.gp_ops = &gpout_ops;
g_gpout[i].id = i;
gpio_pin_register(&g_gpout[i].gpio, i);
gpio_pin_register(&g_gpout[i].gpio, pincount);
/* Configure the pins that will be used as output */
@@ -300,6 +301,8 @@ int esp32c3_gpio_init(void)
esp32c3_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_1 |
INPUT_FUNCTION_1);
esp32c3_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
#endif
@@ -311,11 +314,13 @@ int esp32c3_gpio_init(void)
g_gpint[i].esp32c3gpio.gpio.gp_pintype = GPIO_INTERRUPT_PIN;
g_gpint[i].esp32c3gpio.gpio.gp_ops = &gpint_ops;
g_gpint[i].esp32c3gpio.id = i;
gpio_pin_register(&g_gpint[i].esp32c3gpio.gpio, i);
gpio_pin_register(&g_gpint[i].esp32c3gpio.gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32c3_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_1 | PULLDOWN);
pincount++;
}
#endif
@@ -326,6 +326,7 @@ static int gpint_enable(FAR struct gpio_dev_s *dev, bool enable)
int esp32_gpio_init(void)
{
int pincount = 0;
int i;
#if BOARD_NGPIOOUT > 0
@@ -336,7 +337,7 @@ int esp32_gpio_init(void)
g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
g_gpout[i].gpio.gp_ops = &gpout_ops;
g_gpout[i].id = i;
gpio_pin_register(&g_gpout[i].gpio, i);
gpio_pin_register(&g_gpout[i].gpio, pincount);
/* Configure the pins that will be used as output */
@@ -344,6 +345,8 @@ int esp32_gpio_init(void)
esp32_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_3 |
INPUT_FUNCTION_3);
esp32_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
#endif
@@ -355,11 +358,13 @@ int esp32_gpio_init(void)
g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN;
g_gpin[i].gpio.gp_ops = &gpin_ops;
g_gpin[i].id = i;
gpio_pin_register(&g_gpin[i].gpio, i);
gpio_pin_register(&g_gpin[i].gpio, pincount);
/* Configure the pins that will be used as INPUT */
esp32_configgpio(g_gpioinputs[i], INPUT_FUNCTION_3);
pincount++;
}
#endif
@@ -371,11 +376,13 @@ int esp32_gpio_init(void)
g_gpint[i].esp32gpio.gpio.gp_pintype = GPIO_INTERRUPT_PIN;
g_gpint[i].esp32gpio.gpio.gp_ops = &gpint_ops;
g_gpint[i].esp32gpio.id = i;
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, i);
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_3 | PULLDOWN);
pincount++;
}
#endif
@@ -326,6 +326,7 @@ static int gpint_enable(FAR struct gpio_dev_s *dev, bool enable)
int esp32_gpio_init(void)
{
int pincount = 0;
int i;
#if BOARD_NGPIOOUT > 0
@@ -336,7 +337,7 @@ int esp32_gpio_init(void)
g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
g_gpout[i].gpio.gp_ops = &gpout_ops;
g_gpout[i].id = i;
gpio_pin_register(&g_gpout[i].gpio, i);
gpio_pin_register(&g_gpout[i].gpio, pincount);
/* Configure the pins that will be used as output */
@@ -344,6 +345,8 @@ int esp32_gpio_init(void)
esp32_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_3 |
INPUT_FUNCTION_3);
esp32_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
#endif
@@ -355,11 +358,13 @@ int esp32_gpio_init(void)
g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN;
g_gpin[i].gpio.gp_ops = &gpin_ops;
g_gpin[i].id = i;
gpio_pin_register(&g_gpin[i].gpio, i);
gpio_pin_register(&g_gpin[i].gpio, pincount);
/* Configure the pins that will be used as INPUT */
esp32_configgpio(g_gpioinputs[i], INPUT_FUNCTION_3);
pincount++;
}
#endif
@@ -371,11 +376,13 @@ int esp32_gpio_init(void)
g_gpint[i].esp32gpio.gpio.gp_pintype = GPIO_INTERRUPT_PIN;
g_gpint[i].esp32gpio.gpio.gp_ops = &gpint_ops;
g_gpint[i].esp32gpio.id = i;
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, i);
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_3 | PULLDOWN);
pincount++;
}
#endif
@@ -326,6 +326,7 @@ static int gpint_enable(FAR struct gpio_dev_s *dev, bool enable)
int esp32_gpio_init(void)
{
int pincount = 0;
int i;
#if BOARD_NGPIOOUT > 0
@@ -336,7 +337,7 @@ int esp32_gpio_init(void)
g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
g_gpout[i].gpio.gp_ops = &gpout_ops;
g_gpout[i].id = i;
gpio_pin_register(&g_gpout[i].gpio, i);
gpio_pin_register(&g_gpout[i].gpio, pincount);
/* Configure the pins that will be used as output */
@@ -344,6 +345,8 @@ int esp32_gpio_init(void)
esp32_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_3 |
INPUT_FUNCTION_3);
esp32_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
#endif
@@ -355,11 +358,13 @@ int esp32_gpio_init(void)
g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN;
g_gpin[i].gpio.gp_ops = &gpin_ops;
g_gpin[i].id = i;
gpio_pin_register(&g_gpin[i].gpio, i);
gpio_pin_register(&g_gpin[i].gpio, pincount);
/* Configure the pins that will be used as INPUT */
esp32_configgpio(g_gpioinputs[i], INPUT_FUNCTION_3);
pincount++;
}
#endif
@@ -371,11 +376,13 @@ int esp32_gpio_init(void)
g_gpint[i].esp32gpio.gpio.gp_pintype = GPIO_INTERRUPT_PIN;
g_gpint[i].esp32gpio.gpio.gp_ops = &gpint_ops;
g_gpint[i].esp32gpio.id = i;
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, i);
gpio_pin_register(&g_gpint[i].esp32gpio.gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_3 | PULLDOWN);
pincount++;
}
#endif
@@ -404,6 +404,8 @@ static int gpint_enable(FAR struct gpio_dev_s *dev, bool enable)
int esp32s2_gpio_init(void)
{
int pincount = 0;
#if BOARD_NGPIOOUT > 0
for (int i = 0; i < BOARD_NGPIOOUT; i++)
{
@@ -412,7 +414,7 @@ int esp32s2_gpio_init(void)
g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
g_gpout[i].gpio.gp_ops = &gpout_ops;
g_gpout[i].id = i;
gpio_pin_register(&g_gpout[i].gpio, i);
gpio_pin_register(&g_gpout[i].gpio, pincount);
/* Configure the pins that will be used as output */
@@ -420,6 +422,8 @@ int esp32s2_gpio_init(void)
esp32s2_configgpio(g_gpiooutputs[i], OUTPUT_FUNCTION_1 |
INPUT_FUNCTION_1);
esp32s2_gpiowrite(g_gpiooutputs[i], 0);
pincount++;
}
#endif
@@ -431,11 +435,13 @@ int esp32s2_gpio_init(void)
g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN_PULLDOWN;
g_gpin[i].gpio.gp_ops = &gpin_ops;
g_gpin[i].id = i;
gpio_pin_register(&g_gpin[i].gpio, i);
gpio_pin_register(&g_gpin[i].gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32s2_configgpio(g_gpioinputs[i], INPUT_FUNCTION_1 | PULLDOWN);
pincount++;
}
#endif
@@ -447,11 +453,13 @@ int esp32s2_gpio_init(void)
g_gpint[i].esp32s2gpio.gpio.gp_pintype = GPIO_INTERRUPT_PIN;
g_gpint[i].esp32s2gpio.gpio.gp_ops = &gpint_ops;
g_gpint[i].esp32s2gpio.id = i;
gpio_pin_register(&g_gpint[i].esp32s2gpio.gpio, i);
gpio_pin_register(&g_gpint[i].esp32s2gpio.gpio, pincount);
/* Configure the pins that will be used as interrupt input */
esp32s2_configgpio(g_gpiointinputs[i], INPUT_FUNCTION_1 | PULLDOWN);
pincount++;
}
#endif