diff --git a/include/mraa_adv_func.h b/include/mraa_adv_func.h index 2bd0ffd..710aa21 100644 --- a/include/mraa_adv_func.h +++ b/include/mraa_adv_func.h @@ -32,7 +32,7 @@ #define IS_FUNC_DEFINED(dev, func) (dev != NULL && dev->advance_func != NULL && dev->advance_func->func != NULL) typedef struct { - mraa_result_t (*gpio_init_internal_replace) (int pin); + mraa_result_t (*gpio_init_internal_replace) (mraa_gpio_context dev, int pin); mraa_result_t (*gpio_init_pre) (int pin); mraa_result_t (*gpio_init_post) (mraa_gpio_context dev); diff --git a/src/gpio/gpio.c b/src/gpio/gpio.c index c354aac..411a02a 100644 --- a/src/gpio/gpio.c +++ b/src/gpio/gpio.c @@ -72,7 +72,7 @@ mraa_gpio_init_internal(mraa_adv_func_t* func_table, int pin) dev->pin = pin; if (IS_FUNC_DEFINED(dev, gpio_init_internal_replace)) { - status = dev->advance_func->gpio_init_internal_replace(pin); + status = dev->advance_func->gpio_init_internal_replace(dev, pin); if (status == MRAA_SUCCESS) return dev; else @@ -165,7 +165,8 @@ mraa_gpio_init(int pin) syslog(LOG_CRIT, "gpio: mraa_gpio_init_raw(%d) returned error", pin); return NULL; } - r->phy_pin = pin; + if (r->phy_pin == -1) + r->phy_pin = pin; if (IS_FUNC_DEFINED(r, gpio_init_post)) { mraa_result_t ret = r->advance_func->gpio_init_post(r); diff --git a/src/usb/ftdi_ft4222.c b/src/usb/ftdi_ft4222.c index b88294a..91e6e8d 100644 --- a/src/usb/ftdi_ft4222.c +++ b/src/usb/ftdi_ft4222.c @@ -400,7 +400,7 @@ mraa_ftdi_ft4222_i2c_stop(mraa_i2c_context dev) /******************* GPIO functions *******************/ static mraa_result_t -mraa_ftdi_ft4222_gpio_init_internal_replace(int pin) +mraa_ftdi_ft4222_gpio_init_internal_replace(mraa_gpio_context dev, int pin) { if ((pin - numI2cGpioExpanderPins) == 0 || (pin - numI2cGpioExpanderPins) == 1) { syslog(LOG_NOTICE, "Closing I2C interface to enable GPIO%d\n", pin);