forked from xuos/xiuos
Merge branch 'master' into LwIP_software
This commit is contained in:
@@ -44,7 +44,7 @@ static uint32 I2cDeviceWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
i2c_msg.retries = 1;
|
||||
i2c_msg.next = NONE;
|
||||
|
||||
return i2c_dev->i2c_dev_done->write(i2c_dev, &i2c_msg);
|
||||
return i2c_dev->i2c_dev_done->dev_write(i2c_dev, &i2c_msg);
|
||||
}
|
||||
|
||||
static uint32 I2cDeviceRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
@@ -62,7 +62,7 @@ static uint32 I2cDeviceRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
i2c_msg.retries = 1;
|
||||
i2c_msg.next = NONE;
|
||||
|
||||
return i2c_dev->i2c_dev_done->read(i2c_dev, &i2c_msg);
|
||||
return i2c_dev->i2c_dev_done->dev_read(i2c_dev, &i2c_msg);
|
||||
}
|
||||
|
||||
static const struct HalDevDone dev_done =
|
||||
|
||||
@@ -50,10 +50,10 @@ struct I2cHardwareDevice;
|
||||
|
||||
struct I2cDevDone
|
||||
{
|
||||
uint32 (*open) (struct I2cHardwareDevice *i2c_device);
|
||||
uint32 (*close) (struct I2cHardwareDevice *i2c_device);
|
||||
uint32 (*write) (struct I2cHardwareDevice *i2c_device, struct I2cDataStandard *msg);
|
||||
uint32 (*read) (struct I2cHardwareDevice *i2c_device, struct I2cDataStandard *msg);
|
||||
uint32 (*dev_open) (struct I2cHardwareDevice *i2c_device);
|
||||
uint32 (*dev_close) (struct I2cHardwareDevice *i2c_device);
|
||||
uint32 (*dev_write) (struct I2cHardwareDevice *i2c_device, struct I2cDataStandard *msg);
|
||||
uint32 (*dev_read) (struct I2cHardwareDevice *i2c_device, struct I2cDataStandard *msg);
|
||||
};
|
||||
|
||||
struct I2cHardwareDevice
|
||||
|
||||
@@ -102,10 +102,10 @@ struct SpiHardwareDevice;
|
||||
|
||||
struct SpiDevDone
|
||||
{
|
||||
uint32 (*open) (struct SpiHardwareDevice *dev);
|
||||
uint32 (*close) (struct SpiHardwareDevice *dev);
|
||||
uint32 (*write) (struct SpiHardwareDevice *dev, struct SpiDataStandard *msg);
|
||||
uint32 (*read) (struct SpiHardwareDevice *dev, struct SpiDataStandard *msg);
|
||||
uint32 (*dev_open) (struct SpiHardwareDevice *dev);
|
||||
uint32 (*dev_close) (struct SpiHardwareDevice *dev);
|
||||
uint32 (*dev_write) (struct SpiHardwareDevice *dev, struct SpiDataStandard *msg);
|
||||
uint32 (*dev_read) (struct SpiHardwareDevice *dev, struct SpiDataStandard *msg);
|
||||
};
|
||||
|
||||
struct SpiHardwareDevice
|
||||
|
||||
@@ -62,7 +62,7 @@ static uint32 SpiDeviceWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
spi_msg.spi_cs_release = 0;
|
||||
spi_msg.next = NONE;
|
||||
|
||||
return spi_dev->spi_dev_done->write(spi_dev, &spi_msg);
|
||||
return spi_dev->spi_dev_done->dev_write(spi_dev, &spi_msg);
|
||||
}
|
||||
|
||||
static uint32 SpiDeviceRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
@@ -80,7 +80,7 @@ static uint32 SpiDeviceRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
spi_msg.spi_cs_release = 0;
|
||||
spi_msg.next = NONE;
|
||||
|
||||
return spi_dev->spi_dev_done->read(spi_dev, &spi_msg);
|
||||
return spi_dev->spi_dev_done->dev_read(spi_dev, &spi_msg);
|
||||
}
|
||||
|
||||
static const struct HalDevDone dev_done =
|
||||
@@ -190,5 +190,5 @@ int SpiDevConfigureCs(struct HardwareDev *dev, uint8 spi_chip_select, uint8 spi_
|
||||
msg.spi_chip_select = spi_chip_select;
|
||||
msg.spi_cs_release = spi_cs_release;
|
||||
|
||||
return spi_dev->spi_dev_done->write(spi_dev, &msg);
|
||||
return spi_dev->spi_dev_done->dev_write(spi_dev, &msg);
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
* @date 2021-04-24
|
||||
*/
|
||||
|
||||
#include <bus_spi.h>
|
||||
#include <dev_spi.h>
|
||||
#include <flash_spi.h>
|
||||
|
||||
/**
|
||||
@@ -43,13 +45,20 @@ static uint32 SpiFlashWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
HardwareDevType haldev = (struct HardwareDev *)dev;
|
||||
struct SpiHardwareDevice *flash_dev;
|
||||
|
||||
struct BusBlockWriteParam *flash_write_param = (struct BusBlockWriteParam *)write_param->buffer;
|
||||
|
||||
flash_dev = CONTAINER_OF(haldev, struct SpiHardwareDevice, haldev);
|
||||
spi_flash_dev = CONTAINER_OF(flash_dev, struct SpiFlashDevice, flash_dev);
|
||||
sfud_flash_dev = (sfud_flash *)spi_flash_dev->flash_param.flash_private_data;
|
||||
|
||||
pos = write_param->pos * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
size = write_param->size * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
write_buffer = (uint8 *)write_param->buffer;
|
||||
pos = flash_write_param->pos;// * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
size = flash_write_param->size;// * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
write_buffer = (uint8 *)flash_write_param->buffer;
|
||||
|
||||
KPrintf("flash write pos %u sector_bytes %u size %u\n",
|
||||
flash_write_param->pos,
|
||||
spi_flash_dev->flash_param.flash_block_param.sector_bytes,
|
||||
flash_write_param->size);
|
||||
|
||||
ret = sfud_erase_write(sfud_flash_dev, pos, size, write_buffer);
|
||||
if (SFUD_SUCCESS != ret) {
|
||||
@@ -57,6 +66,8 @@ static uint32 SpiFlashWrite(void *dev, struct BusBlockWriteParam *write_param)
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
haldev->owner_bus->owner_haldev = haldev;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -82,13 +93,15 @@ static uint32 SpiFlashRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
HardwareDevType haldev = (struct HardwareDev *)dev;
|
||||
struct SpiHardwareDevice *flash_dev;
|
||||
|
||||
struct BusBlockReadParam *flash_read_param = (struct BusBlockReadParam *)read_param->buffer;
|
||||
|
||||
flash_dev = CONTAINER_OF(haldev, struct SpiHardwareDevice, haldev);
|
||||
spi_flash_dev = CONTAINER_OF(flash_dev, struct SpiFlashDevice, flash_dev);
|
||||
sfud_flash_dev = (sfud_flash *)spi_flash_dev->flash_param.flash_private_data;
|
||||
|
||||
pos = read_param->pos * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
size = read_param->size * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
read_buffer = (uint8 *)read_param->buffer;
|
||||
pos = flash_read_param->pos;// * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
size = flash_read_param->size;// * spi_flash_dev->flash_param.flash_block_param.sector_bytes;
|
||||
read_buffer = (uint8 *)flash_read_param->buffer;
|
||||
|
||||
ret = sfud_read(sfud_flash_dev, pos, size, read_buffer);
|
||||
if (SFUD_SUCCESS != ret) {
|
||||
@@ -96,6 +109,13 @@ static uint32 SpiFlashRead(void *dev, struct BusBlockReadParam *read_param)
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
flash_read_param->read_length = flash_read_param->size;
|
||||
read_param->read_length = flash_read_param->size;
|
||||
|
||||
haldev->owner_bus->owner_haldev = haldev;
|
||||
|
||||
KPrintf("SpiFlashRead read buffer done\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user