mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-24 16:55:36 +03:00
Update flash drivers to support QuadSPI
- Update flash w25n01g driver to support QuadSPI. - flash_m25p16 update for QuadSPI support - w25m driver update for QuadSPI support - Use 100Mhz (ULTRAFAST) clock for QuadSPI w25n01 - Conditionalize QUADSPI code in w25n01g driver - Use handle instead of handle_u
This commit is contained in:
parent
c0ee056d68
commit
dcd138ae20
7 changed files with 385 additions and 148 deletions
|
@ -84,7 +84,7 @@ static bool w25m_isReady(flashDevice_t *fdevice)
|
|||
|
||||
for (int die = 0 ; die < dieCount ; die++) {
|
||||
if (dieDevice[die].couldBeBusy) {
|
||||
w25m_dieSelect(fdevice->busdev, die);
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, die);
|
||||
if (!dieDevice[die].vTable->isReady(&dieDevice[die])) {
|
||||
return false;
|
||||
}
|
||||
|
@ -115,8 +115,9 @@ bool w25m_detect(flashDevice_t *fdevice, uint32_t chipID)
|
|||
dieCount = 2;
|
||||
|
||||
for (int die = 0 ; die < dieCount ; die++) {
|
||||
w25m_dieSelect(fdevice->busdev, die);
|
||||
dieDevice[die].busdev = fdevice->busdev;
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, die);
|
||||
dieDevice[die].io.handle.busdev = fdevice->io.handle.busdev;
|
||||
dieDevice[die].io.mode = fdevice->io.mode;
|
||||
m25p16_detect(&dieDevice[die], JEDEC_ID_WINBOND_W25Q256);
|
||||
}
|
||||
|
||||
|
@ -147,7 +148,7 @@ void w25m_eraseSector(flashDevice_t *fdevice, uint32_t address)
|
|||
{
|
||||
int dieNumber = address / dieSize;
|
||||
|
||||
w25m_dieSelect(fdevice->busdev, dieNumber);
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, dieNumber);
|
||||
|
||||
dieDevice[dieNumber].vTable->eraseSector(&dieDevice[dieNumber], address % dieSize);
|
||||
}
|
||||
|
@ -155,7 +156,7 @@ void w25m_eraseSector(flashDevice_t *fdevice, uint32_t address)
|
|||
void w25m_eraseCompletely(flashDevice_t *fdevice)
|
||||
{
|
||||
for (int dieNumber = 0 ; dieNumber < dieCount ; dieNumber++) {
|
||||
w25m_dieSelect(fdevice->busdev, dieNumber);
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, dieNumber);
|
||||
dieDevice[dieNumber].vTable->eraseCompletely(&dieDevice[dieNumber]);
|
||||
}
|
||||
}
|
||||
|
@ -168,7 +169,7 @@ void w25m_pageProgramBegin(flashDevice_t *fdevice, uint32_t address)
|
|||
UNUSED(fdevice);
|
||||
|
||||
currentWriteDie = address / dieSize;
|
||||
w25m_dieSelect(fdevice->busdev, currentWriteDie);
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, currentWriteDie);
|
||||
currentWriteAddress = address % dieSize;
|
||||
dieDevice[currentWriteDie].vTable->pageProgramBegin(&dieDevice[currentWriteDie], currentWriteAddress);
|
||||
}
|
||||
|
@ -210,7 +211,7 @@ int w25m_readBytes(flashDevice_t *fdevice, uint32_t address, uint8_t *buffer, in
|
|||
uint32_t dieAddress = address % dieSize;
|
||||
tlen = MIN(dieAddress + rlen, dieSize) - dieAddress;
|
||||
|
||||
w25m_dieSelect(fdevice->busdev, dieNumber);
|
||||
w25m_dieSelect(fdevice->io.handle.busdev, dieNumber);
|
||||
|
||||
rbytes = dieDevice[dieNumber].vTable->readBytes(&dieDevice[dieNumber], dieAddress, buffer, tlen);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue