diff --git a/drivers/bl702_driver/hal_drv/src/hal_spi.c b/drivers/bl702_driver/hal_drv/src/hal_spi.c index 9d3055b2..251f9a16 100644 --- a/drivers/bl702_driver/hal_drv/src/hal_spi.c +++ b/drivers/bl702_driver/hal_drv/src/hal_spi.c @@ -261,34 +261,18 @@ int spi_write(struct device *dev, uint32_t pos, const void *buffer, uint32_t siz } return 0; + } else if (dev->oflag & DEVICE_OFLAG_INT_TX) { + return -1; } else { - // if (spi_device->datasize == SPI_DATASIZE_32BIT) { - // SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); - // return 0; - // } else if (spi_device->datasize == SPI_DATASIZE_24BIT) { - // } else if (spi_device->datasize == SPI_DATASIZE_16BIT) { - // uint32_t residue32 = size % 2; - // uint32_t trade32 = size / 2; - // SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, trade32, SPI_TIMEOUT_DISABLE); - // buffer += sizeof(uint32_t) * trade32; - // SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, residue32, SPI_TIMEOUT_DISABLE); - // return 0; - // } else if (spi_device->datasize == SPI_DATASIZE_8BIT) { - // uint32_t residue32 = size % 4; - // uint32_t trade32 = size / 4; - // SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, trade32, SPI_TIMEOUT_DISABLE); - // buffer += sizeof(uint32_t) * trade32; - - // uint32_t residue16 = residue32 % 2; - // uint32_t trade16 = residue32 / 2; - // SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, trade16, SPI_TIMEOUT_DISABLE); - // buffer += sizeof(uint16_t) * trade16; - - // SPI_Send_8bits(spi_device->id, (uint8_t *)buffer, residue16, SPI_TIMEOUT_DISABLE); - // return 0; - // } - - return -2; + if (spi_device->datasize == SPI_DATASIZE_8BIT) { + return SPI_Send_8bits(spi_device->id, (uint8_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else if (spi_device->datasize == SPI_DATASIZE_16BIT) { + return SPI_Send_16bits(spi_device->id, (uint16_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else if (spi_device->datasize == SPI_DATASIZE_24BIT) { + return SPI_Send_24bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else { + return SPI_Send_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } } } /** @@ -317,8 +301,18 @@ int spi_read(struct device *dev, uint32_t pos, void *buffer, uint32_t size) } return 0; + } else if (dev->oflag & DEVICE_OFLAG_INT_TX) { + return -1; } else { - return -2; + if (spi_device->datasize == SPI_DATASIZE_8BIT) { + return SPI_Recv_8bits(spi_device->id, (uint8_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else if (spi_device->datasize == SPI_DATASIZE_16BIT) { + return SPI_Recv_16bits(spi_device->id, (uint16_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else if (spi_device->datasize == SPI_DATASIZE_24BIT) { + return SPI_Recv_24bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } else { + return SPI_Recv_32bits(spi_device->id, (uint32_t *)buffer, size, SPI_TIMEOUT_DISABLE); + } } } /**