diff --git a/api/maa.h b/api/maa.h index 7ae72ca..ffd64c6 100644 --- a/api/maa.h +++ b/api/maa.h @@ -208,9 +208,9 @@ unsigned int maa_check_i2c(); /** Check spi interface, sets up multiplexer on device. * - * @return unsigned int if using /dev/spi-1.0 returned would be 1.0 + * @return spi bus type */ -double maa_check_spi(); +maa_spi_bus_t* maa_check_spi(int bus); /** Check PWM * diff --git a/src/maa.c b/src/maa.c index 2f87123..6810c8a 100644 --- a/src/maa.c +++ b/src/maa.c @@ -31,7 +31,7 @@ #include "gpio.h" #include "version.h" -static maa_pininfo_t* pindata; +//static maa_pininfo_t* pindata; static maa_board_t* plat = NULL; const char * @@ -144,34 +144,38 @@ maa_check_i2c(int bus_s) return plat->i2c_bus[bus].bus_id; } -double -maa_check_spi(int bus_s) +maa_spi_bus_t* +maa_check_spi(int bus) { if (plat == NULL) - return -3; + return NULL; - if (plat->i2c_bus_count >! 0) { + if (plat->spi_bus_count >! 0) { fprintf(stderr, "No spi buses defined in platform"); - return -1; + return NULL; + } + if (bus >= plat->spi_bus_count) { + fprintf(stderr, "Above spi bus count"); + return NULL; } - int bus = 0; - int pos = plat->spi_bus[0].sclk; + int pos = plat->spi_bus[bus].sclk; if (plat->pins[pos].spi.mux_total > 0) if (maa_setup_mux_mapped(plat->pins[pos].spi) != MAA_SUCCESS) - return -2; + return NULL; - pos = plat->spi_bus[0].mosi; + pos = plat->spi_bus[bus].mosi; if (plat->pins[pos].spi.mux_total > 0) if (maa_setup_mux_mapped(plat->pins[pos].spi) != MAA_SUCCESS) - return -2; + return NULL; - pos = plat->spi_bus[0].miso; + pos = plat->spi_bus[bus].miso; if (plat->pins[pos].spi.mux_total > 0) if (maa_setup_mux_mapped(plat->pins[pos].spi) != MAA_SUCCESS) - return -2; + return NULL; - return plat->spi_bus[bus].bus_id; + maa_spi_bus_t *spi = &(plat->spi_bus[bus]); + return spi; } maa_pin_t* diff --git a/src/spi/spi.c b/src/spi/spi.c index b58c014..d73b819 100644 --- a/src/spi/spi.c +++ b/src/spi/spi.c @@ -44,9 +44,9 @@ struct _spi { }; maa_spi_context -maa_spi_init() +maa_spi_init(int bus) { - double bus = maa_check_spi(); + maa_spi_bus_t *spi = maa_check_spi(bus); if(bus < 0) { fprintf(stderr, "Failed. SPI platform Error\n"); return NULL; @@ -55,7 +55,7 @@ maa_spi_init() memset(dev, 0, sizeof(struct _spi)); char path[MAX_SIZE]; - sprintf(path, "/dev/spidev%.1f", bus); + sprintf(path, "/dev/spidev%u.%u", spi->bus_id, spi->slave_s); dev->devfd = open(path, O_RDWR); if (dev->devfd < 0) {