Private
Public Access
2
0

mux: add mux interface

Add mux_init_reg interface with different mux modes for GPIO, UART, SPI,
I2C, PWM, AIO.

Signed-off-by: Le Jin <le.jin@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>
This commit is contained in:
Ivan Mikhaylov
2022-07-13 21:18:00 +00:00
committed by Tom Ingleby
parent 046bdd0adb
commit 307a6f3bdd
8 changed files with 105 additions and 3 deletions

View File

@@ -309,7 +309,12 @@ mraa_gpio_init(int pin)
return NULL;
}
}
if (board->adv_func->mux_init_reg) {
if(board->adv_func->mux_init_reg(pin, MUX_REGISTER_MODE_GPIO) != MRAA_SUCCESS) {
syslog(LOG_ERR, "gpio%i: init: unable to setup multiplex register", pin);
return NULL;
}
}
mraa_gpio_context r = mraa_gpio_init_internal(board->adv_func, board->pins[pin].gpio.pinmap);
if (r == NULL) {
@@ -408,6 +413,13 @@ mraa_gpio_chardev_init(int pins[], int num_pins)
}
}
if (board->adv_func->mux_init_reg) {
if(board->adv_func->mux_init_reg(pins[i], MUX_REGISTER_MODE_GPIO) != MRAA_SUCCESS) {
syslog(LOG_ERR, "[GPIOD_INTERFACE]: init: unable to setup mux register for pin %d", pins[i]);
mraa_gpio_close(dev);
return NULL;
}
}
chip_id = board->pins[pins[i]].gpio.gpio_chip;
line_offset = board->pins[pins[i]].gpio.gpio_line;