summaryrefslogtreecommitdiff
path: root/drivers/bus/softqspi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/bus/softqspi.c')
-rw-r--r--drivers/bus/softqspi.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/bus/softqspi.c b/drivers/bus/softqspi.c
index 10c599246..71ab55976 100644
--- a/drivers/bus/softqspi.c
+++ b/drivers/bus/softqspi.c
@@ -168,9 +168,10 @@ STATIC void mp_soft_qspi_write_cmd_data(void *self_in, uint8_t cmd, size_t len,
STATIC void mp_soft_qspi_write_cmd_addr_data(void *self_in, uint8_t cmd, uint32_t addr, size_t len, const uint8_t *src) {
mp_soft_qspi_obj_t *self = (mp_soft_qspi_obj_t*)self_in;
- uint8_t cmd_buf[4] = {cmd, addr >> 16, addr >> 8, addr};
+ uint8_t cmd_buf[5] = {cmd};
+ uint8_t addr_len = mp_spi_set_addr_buff(&cmd_buf[1], addr);
CS_LOW(self);
- mp_soft_qspi_transfer(self, 4, cmd_buf, NULL);
+ mp_soft_qspi_transfer(self, addr_len + 1, cmd_buf, NULL);
mp_soft_qspi_transfer(self, len, src, NULL);
CS_HIGH(self);
}
@@ -186,10 +187,11 @@ STATIC uint32_t mp_soft_qspi_read_cmd(void *self_in, uint8_t cmd, size_t len) {
STATIC void mp_soft_qspi_read_cmd_qaddr_qdata(void *self_in, uint8_t cmd, uint32_t addr, size_t len, uint8_t *dest) {
mp_soft_qspi_obj_t *self = (mp_soft_qspi_obj_t*)self_in;
- uint8_t cmd_buf[7] = {cmd, addr >> 16, addr >> 8, addr};
+ uint8_t cmd_buf[7] = {cmd};
+ uint8_t addr_len = mp_spi_set_addr_buff(&cmd_buf[1], addr);
CS_LOW(self);
mp_soft_qspi_transfer(self, 1, cmd_buf, NULL);
- mp_soft_qspi_qwrite(self, 6, &cmd_buf[1]); // 3 addr bytes, 1 extra byte (0), 2 dummy bytes (4 dummy cycles)
+ mp_soft_qspi_qwrite(self, addr_len + 3, &cmd_buf[1]); // 3/4 addr bytes, 1 extra byte (0), 2 dummy bytes (4 dummy cycles)
mp_soft_qspi_qread(self, len, dest);
CS_HIGH(self);
}