From 065d70ac4dbada1de414b8460063c6b0e7167a51 Mon Sep 17 00:00:00 2001 From: Joakim Gebart Date: Mon, 23 Mar 2015 22:46:34 +0100 Subject: [PATCH] lis3dh: Add missing spi_release in error cases. --- drivers/lis3dh/lis3dh.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/lis3dh/lis3dh.c b/drivers/lis3dh/lis3dh.c index a77d11ba14..2b11cd81ea 100644 --- a/drivers/lis3dh/lis3dh.c +++ b/drivers/lis3dh/lis3dh.c @@ -76,6 +76,9 @@ int lis3dh_read_xyz(const lis3dh_t *dev, lis3dh_data_t *acc_data) if (spi_transfer_regs(dev->spi, addr, NULL, (char *)acc_data, sizeof(lis3dh_data_t)) != sizeof(lis3dh_data_t)) { /* Transfer error */ + gpio_set(dev->cs); + /* Release the bus for other threads. */ + spi_release(dev->spi); return -1; } @@ -189,6 +192,9 @@ static int lis3dh_read_regs(const lis3dh_t *dev, const lis3dh_reg_t reg, const u if (spi_transfer_regs(dev->spi, addr, NULL, (char *)buf, len) < 0) { /* Transfer error */ + gpio_set(dev->cs); + /* Release the bus for other threads. */ + spi_release(dev->spi); return -1; } @@ -220,6 +226,9 @@ static int lis3dh_write_reg(const lis3dh_t *dev, const lis3dh_reg_t reg, const u if (spi_transfer_reg(dev->spi, addr, value, NULL) < 0) { /* Transfer error */ + gpio_set(dev->cs); + /* Release the bus for other threads. */ + spi_release(dev->spi); return -1; }