Commit 1ad18b77 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski Committed by Alessandro Rubini

gpio.c: dummy SPI transfer after the real one to ensure high state on all CS lines

parent 206ec171
...@@ -236,6 +236,7 @@ enum fd_acam_modes { ...@@ -236,6 +236,7 @@ enum fd_acam_modes {
#define ACAM_MASK ((1<<29) - 1) /* 28 bits */ #define ACAM_MASK ((1<<29) - 1) /* 28 bits */
/* SPI Bus chip selects */ /* SPI Bus chip selects */
#define FD_CS_NONE 0 /* Nothing */
#define FD_CS_PLL 1 /* AD9516 PLL */ #define FD_CS_PLL 1 /* AD9516 PLL */
#define FD_CS_GPIO 2 /* MCP23S17 GPIO */ #define FD_CS_GPIO 2 /* MCP23S17 GPIO */
......
...@@ -18,8 +18,13 @@ ...@@ -18,8 +18,13 @@
static int gpio_writel(struct spec_fd *fd, int val, int reg) static int gpio_writel(struct spec_fd *fd, int val, int reg)
{ {
return fd_spi_xfer(fd, FD_CS_GPIO, 24, int rval = fd_spi_xfer(fd, FD_CS_GPIO, 24,
0x4e0000 | (reg << 8) | val, NULL); 0x4e0000 | (reg << 8) | val, NULL);
fd_spi_xfer(fd, FD_CS_NONE, 24,
0, NULL);
return rval;
} }
static int gpio_readl(struct spec_fd *fd, int reg) static int gpio_readl(struct spec_fd *fd, int reg)
...@@ -29,6 +34,10 @@ static int gpio_readl(struct spec_fd *fd, int reg) ...@@ -29,6 +34,10 @@ static int gpio_readl(struct spec_fd *fd, int reg)
err = fd_spi_xfer(fd, FD_CS_GPIO, 24, err = fd_spi_xfer(fd, FD_CS_GPIO, 24,
0x4f0000 | (reg << 8), &ret); 0x4f0000 | (reg << 8), &ret);
fd_spi_xfer(fd, FD_CS_NONE, 24,
0, NULL);
if (err < 0) if (err < 0)
return err; return err;
return ret & 0xff; return ret & 0xff;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment