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

@@ -81,6 +81,13 @@ mraa_spi_init(int bus)
}
}
if (pos >= 0 && plat->adv_func->mux_init_reg) {
if(plat->adv_func->mux_init_reg(pos, MUX_REGISTER_MODE_SPI) != MRAA_SUCCESS) {
syslog(LOG_ERR, "spi: failed to set-up spi sclk multiplex register");
return NULL;
}
}
pos = plat->spi_bus[bus].mosi;
if (pos >= 0 && plat->pins[pos].spi.mux_total > 0) {
if (mraa_setup_mux_mapped(plat->pins[pos].spi) != MRAA_SUCCESS) {
@@ -89,6 +96,13 @@ mraa_spi_init(int bus)
}
}
if (pos >= 0 && plat->adv_func->mux_init_reg) {
if(plat->adv_func->mux_init_reg(pos, MUX_REGISTER_MODE_SPI) != MRAA_SUCCESS) {
syslog(LOG_ERR, "spi: failed to set-up spi mosi multiplex register");
return NULL;
}
}
pos = plat->spi_bus[bus].miso;
if (pos >= 0 && plat->pins[pos].spi.mux_total > 0) {
if (mraa_setup_mux_mapped(plat->pins[pos].spi) != MRAA_SUCCESS) {
@@ -97,6 +111,13 @@ mraa_spi_init(int bus)
}
}
if (pos >= 0 && plat->adv_func->mux_init_reg) {
if(plat->adv_func->mux_init_reg(pos, MUX_REGISTER_MODE_SPI) != MRAA_SUCCESS) {
syslog(LOG_ERR, "spi: failed to set-up spi miso multiplex register");
return NULL;
}
}
pos = plat->spi_bus[bus].cs;
if (pos >= 0 && plat->pins[pos].spi.mux_total > 0) {
if (mraa_setup_mux_mapped(plat->pins[pos].spi) != MRAA_SUCCESS) {
@@ -104,6 +125,13 @@ mraa_spi_init(int bus)
return NULL;
}
}
if (pos >= 0 && plat->adv_func->mux_init_reg) {
if(plat->adv_func->mux_init_reg(pos, MUX_REGISTER_MODE_SPI) != MRAA_SUCCESS) {
syslog(LOG_ERR, "spi: failed to set-up spi cs multiplex register");
return NULL;
}
}
}
mraa_spi_context dev = mraa_spi_init_raw(plat->spi_bus[bus].bus_id, plat->spi_bus[bus].slave_s);