10
#include <framework/mod/options.h>
12
#include <drivers/spi.h>
15
#include "lsm6dsl_transfer.h"
17
#define LSM6DSL_SPI_BUS OPTION_GET(NUMBER, spi_bus)
19
#define LSM6DSL_SPI_READ 0x80
20
#define LSM6DSL_SPI_WRITE 0x00
24
struct spi_device *spi_dev;
27
struct lsm6dsl_dev lsm6dsl_dev0 = {
28
.spi_bus = LSM6DSL_SPI_BUS,
31
int lsm6dsl_readb(struct lsm6dsl_dev *dev, int offset, uint8_t *ret) {
35
in[0] = offset | LSM6DSL_SPI_READ;
37
if (spi_transfer(dev->spi_dev, in, out, 2) < 0) {
46
int lsm6dsl_writeb(struct lsm6dsl_dev *dev,
47
int offset, uint8_t val) {
51
in[0] = offset | LSM6DSL_SPI_WRITE;
53
if (spi_transfer(dev->spi_dev, in, out, 2) < 0) {
60
int lsm6dsl_hw_init(struct lsm6dsl_dev *dev) {
61
dev->spi_dev = spi_dev_by_id(dev->spi_bus);
65
spi_set_master_mode(dev->spi_dev);
67
spi_select(dev->spi_dev, 0);
69
dev->spi_dev->flags |= SPI_CS_ACTIVE;
70
dev->spi_dev->flags |= SPI_CS_INACTIVE;