samples: wifi: winc1500: Don't assume all GPIO pins on same controller

Change the sample to use a different controller device name per pin.  We
shouldn't assume that on a given board that all the pins we are using
will be on the same GPIO controller device.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2018-11-13 07:51:37 -06:00 committed by Anas Nashif
commit 0324423de6
2 changed files with 13 additions and 11 deletions

View file

@ -22,7 +22,4 @@
#define DT_WINC1500_GPIO_RESET_N_DRV_NAME DT_SNPS_DESIGNWARE_SPI_B0001400_ATMEL_WINC1500_0_RESET_GPIOS_CONTROLLER
#define DT_WINC1500_GPIO_RESET_N DT_SNPS_DESIGNWARE_SPI_B0001400_ATMEL_WINC1500_0_RESET_GPIOS_PIN
/* For now we assume that all the GPIOs are on the same controller */
#define DT_WINC1500_GPIO_DRV_NAME DT_WINC1500_GPIO_CHIP_EN_DRV_NAME
#endif /* CONFIG_BOARD_QUARK_SE_C1000_DEVBOARD */

View file

@ -26,20 +26,25 @@ struct winc1500_gpio_configuration *winc1500_configure_gpios(void)
GPIO_INT_ACTIVE_LOW | GPIO_INT_DEBOUNCE |
GPIO_INT_EDGE);
const int flags_noint_out = GPIO_DIR_OUT;
struct device *gpio;
struct device *gpio_en, *gpio_irq, *gpio_reset;
gpio = device_get_binding(DT_WINC1500_GPIO_DRV_NAME);
gpio_en = device_get_binding(DT_WINC1500_GPIO_CHIP_EN_DRV_NAME);
gpio_irq = device_get_binding(DT_WINC1500_GPIO_IRQN_DRV_NAME);
gpio_reset = device_get_binding(DT_WINC1500_GPIO_RESET_N_DRV_NAME);
gpio_pin_configure(gpio, winc1500_gpios[WINC1500_GPIO_IDX_CHIP_EN].pin,
gpio_pin_configure(gpio_en,
winc1500_gpios[WINC1500_GPIO_IDX_CHIP_EN].pin,
flags_noint_out);
gpio_pin_configure(gpio, winc1500_gpios[WINC1500_GPIO_IDX_IRQN].pin,
gpio_pin_configure(gpio_irq,
winc1500_gpios[WINC1500_GPIO_IDX_IRQN].pin,
flags_int_in);
gpio_pin_configure(gpio, winc1500_gpios[WINC1500_GPIO_IDX_RESET_N].pin,
gpio_pin_configure(gpio_reset,
winc1500_gpios[WINC1500_GPIO_IDX_RESET_N].pin,
flags_noint_out);
winc1500_gpios[WINC1500_GPIO_IDX_CHIP_EN].dev = gpio;
winc1500_gpios[WINC1500_GPIO_IDX_IRQN].dev = gpio;
winc1500_gpios[WINC1500_GPIO_IDX_RESET_N].dev = gpio;
winc1500_gpios[WINC1500_GPIO_IDX_CHIP_EN].dev = gpio_en;
winc1500_gpios[WINC1500_GPIO_IDX_IRQN].dev = gpio_irq;
winc1500_gpios[WINC1500_GPIO_IDX_RESET_N].dev = gpio_reset;
return winc1500_gpios;
}