Commit 56343a3c authored by Kalle Valo's avatar Kalle Valo Committed by John W. Linville

wl12xx: allocate buffer spi read/write command buffer kzalloc()

Needed for DMA safe transfers.
Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8d47cdb6
...@@ -263,17 +263,19 @@ void wl12xx_spi_read(struct wl12xx *wl, int addr, void *buf, ...@@ -263,17 +263,19 @@ void wl12xx_spi_read(struct wl12xx *wl, int addr, void *buf,
struct spi_transfer t[3]; struct spi_transfer t[3];
struct spi_message m; struct spi_message m;
char busy_buf[TNETWIF_READ_OFFSET_BYTES]; char busy_buf[TNETWIF_READ_OFFSET_BYTES];
u32 cmd; u32 *cmd;
cmd = 0; cmd = &wl->buffer_cmd;
cmd |= WSPI_CMD_READ;
cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH; *cmd = 0;
cmd |= addr & WSPI_CMD_BYTE_ADDR; *cmd |= WSPI_CMD_READ;
*cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH;
*cmd |= addr & WSPI_CMD_BYTE_ADDR;
spi_message_init(&m); spi_message_init(&m);
memset(t, 0, sizeof(t)); memset(t, 0, sizeof(t));
t[0].tx_buf = &cmd; t[0].tx_buf = cmd;
t[0].len = 4; t[0].len = 4;
spi_message_add_tail(&t[0], &m); spi_message_add_tail(&t[0], &m);
...@@ -290,7 +292,7 @@ void wl12xx_spi_read(struct wl12xx *wl, int addr, void *buf, ...@@ -290,7 +292,7 @@ void wl12xx_spi_read(struct wl12xx *wl, int addr, void *buf,
/* FIXME: check busy words */ /* FIXME: check busy words */
wl12xx_dump(DEBUG_SPI, "spi_read cmd -> ", &cmd, sizeof(cmd)); wl12xx_dump(DEBUG_SPI, "spi_read cmd -> ", cmd, sizeof(*cmd));
wl12xx_dump(DEBUG_SPI, "spi_read buf <- ", buf, len); wl12xx_dump(DEBUG_SPI, "spi_read buf <- ", buf, len);
} }
...@@ -299,18 +301,20 @@ void wl12xx_spi_write(struct wl12xx *wl, int addr, void *buf, ...@@ -299,18 +301,20 @@ void wl12xx_spi_write(struct wl12xx *wl, int addr, void *buf,
{ {
struct spi_transfer t[2]; struct spi_transfer t[2];
struct spi_message m; struct spi_message m;
u32 cmd; u32 *cmd;
cmd = 0; cmd = &wl->buffer_cmd;
cmd |= WSPI_CMD_WRITE;
cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH; *cmd = 0;
cmd |= addr & WSPI_CMD_BYTE_ADDR; *cmd |= WSPI_CMD_WRITE;
*cmd |= (len << WSPI_CMD_BYTE_LENGTH_OFFSET) & WSPI_CMD_BYTE_LENGTH;
*cmd |= addr & WSPI_CMD_BYTE_ADDR;
spi_message_init(&m); spi_message_init(&m);
memset(t, 0, sizeof(t)); memset(t, 0, sizeof(t));
t[0].tx_buf = &cmd; t[0].tx_buf = cmd;
t[0].len = sizeof(cmd); t[0].len = sizeof(*cmd);
spi_message_add_tail(&t[0], &m); spi_message_add_tail(&t[0], &m);
t[1].tx_buf = buf; t[1].tx_buf = buf;
...@@ -319,7 +323,7 @@ void wl12xx_spi_write(struct wl12xx *wl, int addr, void *buf, ...@@ -319,7 +323,7 @@ void wl12xx_spi_write(struct wl12xx *wl, int addr, void *buf,
spi_sync(wl->spi, &m); spi_sync(wl->spi, &m);
wl12xx_dump(DEBUG_SPI, "spi_write cmd -> ", &cmd, sizeof(cmd)); wl12xx_dump(DEBUG_SPI, "spi_write cmd -> ", cmd, sizeof(*cmd));
wl12xx_dump(DEBUG_SPI, "spi_write buf -> ", buf, len); wl12xx_dump(DEBUG_SPI, "spi_write buf -> ", buf, len);
} }
......
...@@ -384,6 +384,7 @@ struct wl12xx { ...@@ -384,6 +384,7 @@ struct wl12xx {
struct wl12xx_debugfs debugfs; struct wl12xx_debugfs debugfs;
u32 buffer_32; u32 buffer_32;
u32 buffer_cmd;
}; };
int wl12xx_plt_start(struct wl12xx *wl); int wl12xx_plt_start(struct wl12xx *wl);
......
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