samples: up_squared/gpio_counter: update to new GPIO API

Update the gpio_counter sample app for the UP Squared board:
() Update configuration calls to use new flags.
() Separate pin configuration into setting it to input, and
   setting the pin for interrupt.
() Use gpio_pin_set() instead of gpio_pin_write().

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
Daniel Leung 2019-12-18 14:56:16 -08:00 committed by Carles Cufí
commit be8ca9da96

View file

@ -79,15 +79,9 @@ static volatile u32_t counter;
K_SEM_DEFINE(counter_sem, 0, 1); K_SEM_DEFINE(counter_sem, 0, 1);
#define INTR_PIN_FLAGS \
(GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE | GPIO_INT_ACTIVE_HIGH | \
GPIO_INT_DEBOUNCE | GPIO_PUD_PULL_DOWN)
#define NUM_PINS ARRAY_SIZE(counter_pins) #define NUM_PINS ARRAY_SIZE(counter_pins)
#define MASK (BIT(NUM_PINS) - 1) #define MASK (BIT(NUM_PINS) - 1)
#define GPIO_DEV DT_APL_GPIO_LABEL
void button_cb(struct device *gpiodev, struct gpio_callback *cb, u32_t pin) void button_cb(struct device *gpiodev, struct gpio_callback *cb, u32_t pin)
{ {
counter++; counter++;
@ -125,7 +119,7 @@ void main(void)
for (i = 0; i < NUM_PINS; i++) { for (i = 0; i < NUM_PINS; i++) {
ret = gpio_pin_configure(counter_pins[i].gpio_dev, ret = gpio_pin_configure(counter_pins[i].gpio_dev,
counter_pins[i].pin, counter_pins[i].pin,
GPIO_DIR_OUT); GPIO_OUTPUT_LOW);
if (ret) { if (ret) {
printk("ERROR: cannot set HAT pin %d to OUT (%d)\n", printk("ERROR: cannot set HAT pin %d to OUT (%d)\n",
counter_pins[i].hat_num, ret); counter_pins[i].hat_num, ret);
@ -135,17 +129,26 @@ void main(void)
/* Setup input pin */ /* Setup input pin */
ret = gpio_pin_configure(intr_pin.gpio_dev, intr_pin.pin, ret = gpio_pin_configure(intr_pin.gpio_dev, intr_pin.pin,
INTR_PIN_FLAGS); GPIO_INPUT);
if (ret) { if (ret) {
printk("ERROR: cannot set HAT pin %d to OUT (%d)\n", printk("ERROR: cannot set HAT pin %d to IN (%d)\n",
intr_pin.hat_num, ret); intr_pin.hat_num, ret);
return; return;
} }
/* Callback uses pin_mask, so need bit shifting */ /* Callback uses pin_mask, so need bit shifting */
gpio_init_callback(&gpio_cb, button_cb, (1 << intr_pin.pin)); gpio_init_callback(&gpio_cb, button_cb, (1 << intr_pin.pin));
gpio_add_callback(intr_pin.gpio_dev, &gpio_cb); gpio_add_callback(intr_pin.gpio_dev, &gpio_cb);
gpio_pin_enable_callback(intr_pin.gpio_dev, intr_pin.pin);
/* Setup input pin for interrupt */
ret = gpio_pin_interrupt_configure(intr_pin.gpio_dev, intr_pin.pin,
GPIO_INT_EDGE_RISING);
if (ret) {
printk("ERROR: cannot config interrupt on HAT pin %d (%d)\n",
intr_pin.hat_num, ret);
return;
}
/* main loop */ /* main loop */
val = 0U; val = 0U;
@ -153,9 +156,9 @@ void main(void)
printk("counter: 0x%x\n", val); printk("counter: 0x%x\n", val);
for (i = 0; i < NUM_PINS; i++) { for (i = 0; i < NUM_PINS; i++) {
ret = gpio_pin_write(counter_pins[i].gpio_dev, ret = gpio_pin_set(counter_pins[i].gpio_dev,
counter_pins[i].pin, counter_pins[i].pin,
(val & BIT(i))); (val & BIT(i)));
if (ret) { if (ret) {
printk("ERROR: cannot set HAT pin %d value (%d)\n", printk("ERROR: cannot set HAT pin %d value (%d)\n",
counter_pins[i].hat_num, ret); counter_pins[i].hat_num, ret);