Skip to content

Commit c29e5f0

Browse files
author
liuyi
committed
1.correct grow partition size error
2.correct backup gpt error 3.add set fixed partition uuid function with parameter_gpt.txt Signed-off-by: liuyi <[email protected]>
1 parent bc45532 commit c29e5f0

File tree

4 files changed

+243
-27
lines changed

4 files changed

+243
-27
lines changed

RKComm.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ void CRKUsbComm::InitializeCBW(PCBW pCBW, USB_OPERATION_CODE code)
223223
case WRITE_EFUSE:
224224
case WRITE_SPI_FLASH:
225225
case WRITE_NEW_EFUSE:
226+
case ERASE_LBA:
226227
pCBW->ucCBWFlags = DIRECTION_OUT;
227228
pCBW->ucCBWCBLength = 0x0a;
228229
break;
@@ -591,6 +592,41 @@ int CRKUsbComm::RKU_WriteLBA(DWORD dwPos, DWORD dwCount, BYTE* lpBuffer, BYTE by
591592

592593
return ERR_SUCCESS;
593594
}
595+
int CRKUsbComm::RKU_EraseLBA(DWORD dwPos, DWORD dwCount)
596+
{
597+
if ((m_deviceDesc.emUsbType != RKUSB_LOADER) && (m_deviceDesc.emUsbType != RKUSB_MASKROM)) {
598+
if (m_log) {
599+
m_log->Record("Error:RKU_WriteLBA failed,device not support");
600+
}
601+
return ERR_DEVICE_NOT_SUPPORT;
602+
}
603+
CBW cbw;
604+
CSW csw;
605+
USHORT usCount;
606+
usCount = dwCount;
607+
608+
609+
InitializeCBW(&cbw, ERASE_LBA);
610+
cbw.cbwcb.dwAddress = EndianU32_LtoB(dwPos);
611+
cbw.cbwcb.usLength = EndianU16_LtoB(usCount);
612+
613+
if(!RKU_Write( (BYTE *)&cbw, sizeof(CBW))) {
614+
return ERR_DEVICE_WRITE_FAILED;
615+
}
616+
617+
if(!RKU_Read( (BYTE *)&csw, sizeof(CSW))) {
618+
return ERR_DEVICE_READ_FAILED;
619+
}
620+
621+
if( !UFI_CHECK_SIGN(cbw, csw) )
622+
return ERR_CMD_NOTMATCH;
623+
624+
if(csw.ucCSWStatus == 1)
625+
return ERR_FAILED;
626+
627+
return ERR_SUCCESS;
628+
}
629+
594630
int CRKUsbComm::RKU_WriteSector(DWORD dwPos, DWORD dwCount, BYTE *lpBuffer)
595631
{
596632
if ((m_deviceDesc.emUsbType != RKUSB_LOADER) && (m_deviceDesc.emUsbType != RKUSB_MASKROM)) {

RKComm.h

+3
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ typedef enum {
4848
WRITE_SPI_FLASH = 0x22,
4949
WRITE_NEW_EFUSE = 0x23,
5050
READ_NEW_EFUSE = 0x24,
51+
ERASE_LBA=0x25,
5152
DEVICE_RESET = 0xFF
5253
} USB_OPERATION_CODE;
5354

@@ -125,6 +126,7 @@ class CRKComm
125126
virtual int RKU_DeviceRequest(DWORD dwRequest, BYTE *lpBuffer, DWORD dwDataSize) = 0;
126127
virtual bool Reset_Usb_Config(STRUCT_RKDEVICE_DESC devDesc) = 0;
127128
virtual bool Reset_Usb_Device() = 0;
129+
virtual int RKU_EraseLBA(DWORD dwPos,DWORD dwCount)=0;
128130
CRKComm(CRKLog *pLog);
129131
virtual ~CRKComm();
130132
protected:
@@ -151,6 +153,7 @@ class CRKUsbComm:public CRKComm
151153
virtual ~CRKUsbComm();
152154
virtual bool Reset_Usb_Config(STRUCT_RKDEVICE_DESC devDesc);
153155
virtual bool Reset_Usb_Device();
156+
virtual int RKU_EraseLBA(DWORD dwPos,DWORD dwCount);
154157
private:
155158
void *m_pUsbHandle;
156159
unsigned char m_pipeBulkIn;

0 commit comments

Comments
 (0)