2020-07-18 20:25:34 -03:00
|
|
|
#include "common.h"
|
|
|
|
#include "arm.h"
|
|
|
|
#include "pxi.h"
|
2020-07-19 11:44:03 -03:00
|
|
|
#include "shmem.h"
|
2020-07-18 20:25:34 -03:00
|
|
|
|
|
|
|
bool spiflash_get_status(void)
|
|
|
|
{
|
|
|
|
return PXI_DoCMD(PXI_NVRAM_ONLINE, NULL, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool spiflash_read(u32 offset, u32 size, u8 *buf)
|
|
|
|
{
|
2020-07-19 11:44:03 -03:00
|
|
|
u32 args[2];
|
2020-07-18 20:25:34 -03:00
|
|
|
|
|
|
|
while(size > 0) {
|
2020-07-19 11:44:03 -03:00
|
|
|
u32 blksz = min(size, SPI_SHARED_BUFSZ);
|
2020-07-18 20:25:34 -03:00
|
|
|
|
|
|
|
args[0] = offset;
|
2020-07-19 11:44:03 -03:00
|
|
|
args[1] = blksz;
|
2020-07-18 20:25:34 -03:00
|
|
|
|
2020-07-19 11:44:03 -03:00
|
|
|
ARM_WbDC_Range(ARM_GetSHMEM()->spiBuffer, blksz);
|
|
|
|
PXI_DoCMD(PXI_NVRAM_READ, args, 2);
|
2020-08-24 21:27:19 -07:00
|
|
|
ARM_InvDC_Range(ARM_GetSHMEM()->spiBuffer, blksz);
|
2020-07-18 20:25:34 -03:00
|
|
|
ARM_DSB();
|
2020-07-19 11:44:03 -03:00
|
|
|
memcpy(buf, ARM_GetSHMEM()->spiBuffer, blksz);
|
2020-07-18 20:25:34 -03:00
|
|
|
|
|
|
|
buf += blksz;
|
|
|
|
size -= blksz;
|
|
|
|
offset += blksz;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|