Private
Public Access
2
0

spi.c: Initialization of spi is necessary on Beaglebone Black

Signed-off-by: Michael Ring <mail@michael-ring.org>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Michael Ring
2015-02-14 18:14:55 +01:00
committed by Brendan Le Foll
parent 78fe6f4270
commit 3a5b992524

View File

@@ -135,10 +135,29 @@ mraa_spi_init_raw(unsigned int bus, unsigned int cs)
free(dev); free(dev);
return NULL; return NULL;
} }
dev->bpw = 8;
int speed = 0;
if ((ioctl(dev->devfd, SPI_IOC_RD_MAX_SPEED_HZ, &speed) != -1) && (speed < 4000000)) {
dev->clock = speed;
}
else {
dev->clock = 4000000; dev->clock = 4000000;
dev->lsb = 0; }
dev->mode = 0;
if (mraa_spi_mode(dev, MRAA_SPI_MODE0) != MRAA_SUCCESS) {
free(dev);
return NULL;
};
if (mraa_spi_lsbmode(dev, 0) != MRAA_SUCCESS) {
free(dev);
return NULL;
};
if (mraa_spi_bit_per_word(dev, 8) != MRAA_SUCCESS) {
free(dev);
return NULL;
};
return dev; return dev;
} }
@@ -177,7 +196,14 @@ mraa_spi_mode(mraa_spi_context dev, mraa_spi_mode_t mode)
mraa_result_t mraa_result_t
mraa_spi_frequency(mraa_spi_context dev, int hz) mraa_spi_frequency(mraa_spi_context dev, int hz)
{ {
int speed = 0;
dev->clock = hz; dev->clock = hz;
if (ioctl(dev->devfd, SPI_IOC_RD_MAX_SPEED_HZ, &speed) != -1) {
if (speed < hz) {
dev->clock = speed;
syslog(LOG_WARNING, "spi: Selected speed reduced to max allowed speed");
}
}
return MRAA_SUCCESS; return MRAA_SUCCESS;
} }