From a702cdf4d58a2ef81f97f9e11730ff2f60ee57f3 Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Fri, 3 Jun 2016 01:11:34 +0000 Subject: [PATCH] ft4222: fixed pca9555 expander detection Signed-off-by: Mihai Tudor Panu Signed-off-by: Brendan Le Foll --- src/usb/ftdi_ft4222.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/usb/ftdi_ft4222.c b/src/usb/ftdi_ft4222.c index cb903e6..d3183cd 100644 --- a/src/usb/ftdi_ft4222.c +++ b/src/usb/ftdi_ft4222.c @@ -335,19 +335,22 @@ mraa_ftdi_ft4222_detect_io_expander() if (mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9672_ADDR, &data, 1) == 1) { gpio_expander_chip = IO_EXP_PCA9672; return PCA9672_PINS; - } else if (mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, &data, 1) == 1) { - gpio_expander_chip = IO_EXP_PCA9555; - uint8_t reg = PCA9555_OUTPUT_REG; - mraa_ftdi_ft4222_i2c_write_internal(ftHandleI2c, PCA9555_ADDR, ®, 1); - mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, (uint8_t*)&pca9555OutputValue, 2); - reg = PCA9555_DIRECTION_REG; - mraa_ftdi_ft4222_i2c_write_internal(ftHandleI2c, PCA9555_ADDR, ®, 1); - mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, (uint8_t*)&pca9555DirectionValue, 2); - return PCA9555_PINS; } else { - gpio_expander_chip = IO_EXP_NONE; - return 0; + uint8_t reg = PCA9555_INPUT_REG; + mraa_ftdi_ft4222_i2c_write_internal(ftHandleI2c, PCA9555_ADDR, ®, 1); + if (mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, &data, 1) == 1) { + gpio_expander_chip = IO_EXP_PCA9555; + reg = PCA9555_OUTPUT_REG; + mraa_ftdi_ft4222_i2c_write_internal(ftHandleI2c, PCA9555_ADDR, ®, 1); + mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, (uint8_t*)&pca9555OutputValue, 2); + reg = PCA9555_DIRECTION_REG; + mraa_ftdi_ft4222_i2c_write_internal(ftHandleI2c, PCA9555_ADDR, ®, 1); + mraa_ftdi_ft4222_i2c_read_internal(ftHandleI2c, PCA9555_ADDR, (uint8_t*)&pca9555DirectionValue, 2); + return PCA9555_PINS; + } } + gpio_expander_chip = IO_EXP_NONE; + return 0; }