diff options
Diffstat (limited to 'drivers/staging/keucr/smilmain.c')
-rw-r--r-- | drivers/staging/keucr/smilmain.c | 1937 |
1 files changed, 436 insertions, 1501 deletions
diff --git a/drivers/staging/keucr/smilmain.c b/drivers/staging/keucr/smilmain.c index cc49038..2786808 100644 --- a/drivers/staging/keucr/smilmain.c +++ b/drivers/staging/keucr/smilmain.c @@ -4,204 +4,135 @@ #include "smcommon.h" #include "smil.h" -int Check_D_LogCHS (WORD *,BYTE *,BYTE *); -void Initialize_D_Media (void); -void PowerOff_D_Media (void); -int Check_D_MediaPower (void); -int Check_D_MediaExist (void); -int Check_D_MediaWP (void); -int Check_D_MediaFmt (struct us_data *); -int Check_D_MediaFmtForEraseAll (struct us_data *); -int Conv_D_MediaAddr (struct us_data *, DWORD); -int Inc_D_MediaAddr (struct us_data *); -int Check_D_FirstSect (void); -int Check_D_LastSect (void); -int Media_D_ReadOneSect (struct us_data *, WORD, BYTE *); -int Media_D_WriteOneSect (struct us_data *, WORD, BYTE *); -int Media_D_CopyBlockHead (struct us_data *); -int Media_D_CopyBlockTail (struct us_data *); -int Media_D_EraseOneBlock (void); -int Media_D_EraseAllBlock (void); - -int Copy_D_BlockAll (struct us_data *, DWORD); -int Copy_D_BlockHead (struct us_data *); -int Copy_D_BlockTail (struct us_data *); -int Reassign_D_BlockHead (struct us_data *); - -int Assign_D_WriteBlock (void); -int Release_D_ReadBlock (struct us_data *); -int Release_D_WriteBlock (struct us_data *); -int Release_D_CopySector (struct us_data *); - -int Copy_D_PhyOneSect (struct us_data *); -int Read_D_PhyOneSect (struct us_data *, WORD, BYTE *); -int Write_D_PhyOneSect (struct us_data *, WORD, BYTE *); -int Erase_D_PhyOneBlock (struct us_data *); - -int Set_D_PhyFmtValue (struct us_data *); -int Search_D_CIS (struct us_data *); -int Make_D_LogTable (struct us_data *); -void Check_D_BlockIsFull (void); - -int MarkFail_D_PhyOneBlock (struct us_data *); +int Check_D_LogCHS(WORD *, BYTE *, BYTE *); +void Initialize_D_Media(void); +void PowerOff_D_Media(void); +int Check_D_MediaPower(void); +int Check_D_MediaExist(void); +int Check_D_MediaWP(void); +int Check_D_MediaFmt(struct us_data *); +int Check_D_MediaFmtForEraseAll(struct us_data *); +int Conv_D_MediaAddr(struct us_data *, DWORD); +int Inc_D_MediaAddr(struct us_data *); +int Check_D_FirstSect(void); +int Check_D_LastSect(void); +int Media_D_ReadOneSect(struct us_data *, WORD, BYTE *); +int Media_D_WriteOneSect(struct us_data *, WORD, BYTE *); +int Media_D_CopyBlockHead(struct us_data *); +int Media_D_CopyBlockTail(struct us_data *); +int Media_D_EraseOneBlock(void); +int Media_D_EraseAllBlock(void); + +int Copy_D_BlockAll(struct us_data *, DWORD); +int Copy_D_BlockHead(struct us_data *); +int Copy_D_BlockTail(struct us_data *); +int Reassign_D_BlockHead(struct us_data *); + +int Assign_D_WriteBlock(void); +int Release_D_ReadBlock(struct us_data *); +int Release_D_WriteBlock(struct us_data *); +int Release_D_CopySector(struct us_data *); + +int Copy_D_PhyOneSect(struct us_data *); +int Read_D_PhyOneSect(struct us_data *, WORD, BYTE *); +int Write_D_PhyOneSect(struct us_data *, WORD, BYTE *); +int Erase_D_PhyOneBlock(struct us_data *); + +int Set_D_PhyFmtValue(struct us_data *); +int Search_D_CIS(struct us_data *); +int Make_D_LogTable(struct us_data *); +void Check_D_BlockIsFull(void); + +int MarkFail_D_PhyOneBlock(struct us_data *); DWORD ErrXDCode; DWORD ErrCode; -//BYTE SectBuf[SECTSIZE]; static BYTE WorkBuf[SECTSIZE]; static BYTE Redundant[REDTSIZE]; static BYTE WorkRedund[REDTSIZE]; -//WORD Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -static WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8]; +/* 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; */ +static WORD *Log2Phy[MAX_ZONENUM]; +static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM / 8]; static WORD AssignStart[MAX_ZONENUM]; WORD ReadBlock; WORD WriteBlock; DWORD MediaChange; static DWORD SectCopyMode; -//BIT Control Macro -static BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ; -#define Set_D_Bit(a,b) (a[(BYTE)((b)/8)]|= BitData[(b)%8]) -#define Clr_D_Bit(a,b) (a[(BYTE)((b)/8)]&=~BitData[(b)%8]) -#define Chk_D_Bit(a,b) (a[(BYTE)((b)/8)] & BitData[(b)%8]) +/* BIT Control Macro */ +static BYTE BitData[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; +#define Set_D_Bit(a, b) (a[(BYTE)((b) / 8)] |= BitData[(b) % 8]) +#define Clr_D_Bit(a, b) (a[(BYTE)((b) / 8)] &= ~BitData[(b) % 8]) +#define Chk_D_Bit(a, b) (a[(BYTE)((b) / 8)] & BitData[(b) % 8]) -//extern PBYTE SMHostAddr; BYTE IsSSFDCCompliance; BYTE IsXDCompliance; -// -////Power Control & Media Exist Check Function -////----- Init_D_SmartMedia() -------------------------------------------- -//int Init_D_SmartMedia(void) -//{ -// int i; -// -// EMCR_Print("Init_D_SmartMedia start\n"); -// for (i=0; i<MAX_ZONENUM; i++) -// { -// if (Log2Phy[i]!=NULL) -// { -// EMCR_Print("ExFreePool Zone = %x, Addr = %x\n", i, Log2Phy[i]); -// ExFreePool(Log2Phy[i]); -// Log2Phy[i] = NULL; -// } -// } -// -// Initialize_D_Media(); -// return(NO_ERROR); -//} - -//----- SM_FreeMem() ------------------------------------------------- +/* ----- SM_FreeMem() ------------------------------------------------- */ int SM_FreeMem(void) { int i; pr_info("SM_FreeMem start\n"); - for (i=0; i<MAX_ZONENUM; i++) - { - if (Log2Phy[i]!=NULL) - { + for (i = 0; i < MAX_ZONENUM; i++) { + if (Log2Phy[i] != NULL) { pr_info("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]); kfree(Log2Phy[i]); Log2Phy[i] = NULL; } } - return(NO_ERROR); + return NO_ERROR; } -////----- Pwoff_D_SmartMedia() ------------------------------------------- -//int Pwoff_D_SmartMedia(void) -//{ -// PowerOff_D_Media(); -// return(NO_ERROR); -//} -// -////----- Check_D_SmartMedia() ------------------------------------------- -//int Check_D_SmartMedia(void) -//{ -// if (Check_D_MediaExist()) -// return(ErrCode); -// -// return(NO_ERROR); -//} -// -////----- Check_D_Parameter() -------------------------------------------- -//int Check_D_Parameter(PFDO_DEVICE_EXTENSION fdoExt,WORD *pcyl,BYTE *phead,BYTE *psect) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmt(fdoExt)) -// return(ErrCode); -// -// if (Check_D_LogCHS(pcyl,phead,psect)) -// return(ErrCode); -// -// return(NO_ERROR); -//} - -//SmartMedia Read/Write/Erase Function -//----- Media_D_ReadSector() ------------------------------------------- -int Media_D_ReadSector(struct us_data *us, DWORD start,WORD count,BYTE *buf) +/* SmartMedia Read/Write/Erase Function */ +/* ----- Media_D_ReadSector() ------------------------------------------- */ +int Media_D_ReadSector(struct us_data *us, DWORD start, WORD count, BYTE *buf) { WORD len, bn; - //if (Check_D_MediaPower()) ; ¦b 6250 don't care - // return(ErrCode); - //if (Check_D_MediaFmt(fdoExt)) ; - // return(ErrCode); if (Conv_D_MediaAddr(us, start)) - return(ErrCode); + return ErrCode; - while(1) - { + while (1) { len = Ssfdc.MaxSectors - Media.Sector; if (count > len) bn = len; else bn = count; - //if (Media_D_ReadOneSect(fdoExt, SectBuf)) - //if (Media_D_ReadOneSect(fdoExt, count, buf)) - if (Media_D_ReadOneSect(us, bn, buf)) - { + + if (Media_D_ReadOneSect(us, bn, buf)) { ErrCode = ERR_EccReadErr; - return(ErrCode); + return ErrCode; } Media.Sector += bn; count -= bn; - if (count<=0) + if (count <= 0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) - return(ErrCode); + return ErrCode; } - return(NO_ERROR); + return NO_ERROR; } -// here -//----- Media_D_CopySector() ------------------------------------------ -int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) +/* here */ +/* ----- Media_D_CopySector() ------------------------------------------ */ +int Media_D_CopySector(struct us_data *us, DWORD start, WORD count, BYTE *buf) { - //DWORD mode; - //int i; WORD len, bn; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; /* pr_info("Media_D_CopySector !!!\n"); */ if (Conv_D_MediaAddr(us, start)) - return(ErrCode); + return ErrCode; - while(1) - { + while (1) { if (Assign_D_WriteBlock()) - return(ERROR); + return ERROR; len = Ssfdc.MaxSectors - Media.Sector; if (count > len) @@ -209,607 +140,137 @@ int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) else bn = count; - //if (Ssfdc_D_CopyBlock(fdoExt,count,buf,Redundant)) - if (Ssfdc_D_CopyBlock(us,bn,buf,Redundant)) - { + if (Ssfdc_D_CopyBlock(us, bn, buf, Redundant)) { ErrCode = ERR_WriteFault; - return(ErrCode); + return ErrCode; } Media.Sector = 0x1F; - //if (Release_D_ReadBlock(fdoExt)) - if (Release_D_CopySector(us)) - { - if (ErrCode==ERR_HwError) - { + if (Release_D_CopySector(us)) { + if (ErrCode == ERR_HwError) { ErrCode = ERR_WriteFault; - return(ErrCode); + return ErrCode; } } count -= bn; - if (count<=0) + if (count <= 0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) - return(ErrCode); + return ErrCode; } - return(NO_ERROR); + return NO_ERROR; } -//----- Release_D_CopySector() ------------------------------------------ +/* ----- Release_D_CopySector() ------------------------------------------ */ int Release_D_CopySector(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - Log2Phy[Media.Zone][Media.LogBlock]=WriteBlock; - Media.PhyBlock=ReadBlock; + Log2Phy[Media.Zone][Media.LogBlock] = WriteBlock; + Media.PhyBlock = ReadBlock; - if (Media.PhyBlock==NO_ASSIGN) - { - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + if (Media.PhyBlock == NO_ASSIGN) { + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } - Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); - Media.PhyBlock=WriteBlock; + Clr_D_Bit(Assign[Media.Zone], Media.PhyBlock); + Media.PhyBlock = WriteBlock; - return(SMSUCCESS); -} -/* -//----- Media_D_WriteSector() ------------------------------------------ -int Media_D_WriteSector(PFDO_DEVICE_EXTENSION fdoExt, DWORD start,WORD count,BYTE *buf) -{ - int i; - WORD len, bn; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - //if (Check_D_MediaPower()) - // return(ErrCode); - // - //if (Check_D_MediaFmt(fdoExt)) - // return(ErrCode); - // - //if (Check_D_MediaWP()) - // return(ErrCode); - - if (Conv_D_MediaAddr(fdoExt, start)) - return(ErrCode); - - //ENE_Print("Media_D_WriteSector --- Sector = %x\n", Media.Sector); - if (Check_D_FirstSect()) - { - if (Media_D_CopyBlockHead(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - } - - while(1) - { - if (!Check_D_FirstSect()) - { - if (Assign_D_WriteBlock()) - return(ErrCode); - } - - len = Ssfdc.MaxSectors - Media.Sector; - if (count > len) - bn = len; - else - bn = count; - //for(i=0;i<SECTSIZE;i++) - // SectBuf[i]=*buf++; - - //if (Media_D_WriteOneSect(fdoExt, SectBuf)) - if (Media_D_WriteOneSect(fdoExt, bn, buf)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - - Media.Sector += bn - 1; - - if (!Check_D_LastSect()) - { - if (Release_D_ReadBlock(fdoExt)) - - { if (ErrCode==ERR_HwError) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - } - } - - count -= bn; - - if (count<=0) - break; - - buf += bn * SECTSIZE; - - //if (--count<=0) - // break; - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - } - - if (!Check_D_LastSect()) - return(NO_ERROR); - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - - if (Media_D_CopyBlockTail(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - - return(NO_ERROR); + return SMSUCCESS; } -// -////----- Media_D_EraseBlock() ------------------------------------------- -//int Media_D_EraseBlock(PFDO_DEVICE_EXTENSION fdoExt, DWORD start,WORD count) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmt(fdoExt)) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// if (Conv_D_MediaAddr(start)) -// return(ErrCode); -// -// while(Check_D_FirstSect()) { -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (--count<=0) -// return(NO_ERROR); -// } -// -// while(1) { -// if (!Check_D_LastSect()) -// if (Media_D_EraseOneBlock()) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (--count<=0) -// return(NO_ERROR); -// } -//} -// -////----- Media_D_EraseAll() --------------------------------------------- -//int Media_D_EraseAll(PFDO_DEVICE_EXTENSION fdoExt) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmtForEraseAll(fdoExt)) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// if (Media_D_EraseAllBlock()) -// return(ErrCode); -// -// return(NO_ERROR); -//} - -//SmartMedia Write Function for One Sector Write Mode -//----- Media_D_OneSectWriteStart() ------------------------------------ -int Media_D_OneSectWriteStart(PFDO_DEVICE_EXTENSION fdoExt,DWORD start,BYTE *buf) -{ -// int i; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// //if (Check_D_MediaPower()) -// // return(ErrCode); -// //if (Check_D_MediaFmt(fdoExt)) -// // return(ErrCode); -// //if (Check_D_MediaWP()) -// // return(ErrCode); -// if (Conv_D_MediaAddr(fdoExt, start)) -// return(ErrCode); -// -// if (Check_D_FirstSect()) -// if (Media_D_CopyBlockHead(fdoExt)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_FirstSect()) -// if (Assign_D_WriteBlock()) -// return(ErrCode); -// -// //for(i=0;i<SECTSIZE;i++) -// // SectBuf[i]=*buf++; -// -// //if (Media_D_WriteOneSect(fdoExt, SectBuf)) -// if (Media_D_WriteOneSect(fdoExt, buf)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_LastSect()) -// { -// if (Release_D_ReadBlock(fdoExt)) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// } - - return(NO_ERROR); -} - -//----- Media_D_OneSectWriteNext() ------------------------------------- -int Media_D_OneSectWriteNext(PFDO_DEVICE_EXTENSION fdoExt, BYTE *buf) -{ -// int i; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (!Check_D_FirstSect()) -// if (Assign_D_WriteBlock()) -// return(ErrCode); -// -// //for(i=0;i<SECTSIZE;i++) -// // SectBuf[i]=*buf++; -// -// //if (Media_D_WriteOneSect(fdoExt, SectBuf)) -// if (Media_D_WriteOneSect(fdoExt, buf)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_LastSect()) -// { -// if (Release_D_ReadBlock(fdoExt)) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// } - - return(NO_ERROR); -} - -//----- Media_D_OneSectWriteFlush() ------------------------------------ -int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) -{ - if (!Check_D_LastSect()) - return(NO_ERROR); - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - - if (Media_D_CopyBlockTail(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - return(NO_ERROR); -} -// -////LED Tern On/Off Subroutine -////----- SM_EnableLED() ----------------------------------------------- -//void SM_EnableLED(PFDO_DEVICE_EXTENSION fdoExt, BOOLEAN enable) -//{ -// if (fdoExt->Drive_IsSWLED) -// { -// if (enable) -// Led_D_TernOn(); -// else -// Led_D_TernOff(); -// } -//} -// -////----- Led_D_TernOn() ------------------------------------------------- -//void Led_D_TernOn(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange=ERROR; -// -// Cnt_D_LedOn(); -//} -// -////----- Led_D_TernOff() ------------------------------------------------ -//void Led_D_TernOff(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange=ERROR; -// -// Cnt_D_LedOff(); -//} -// -////SmartMedia Logical Format Subroutine -////----- Check_D_LogCHS() ----------------------------------------------- -//int Check_D_LogCHS(WORD *c,BYTE *h,BYTE *s) -//{ -// switch(Ssfdc.Model) { -// case SSFDC1MB: *c=125; *h= 4; *s= 4; break; -// case SSFDC2MB: *c=125; *h= 4; *s= 8; break; -// case SSFDC4MB: *c=250; *h= 4; *s= 8; break; -// case SSFDC8MB: *c=250; *h= 4; *s=16; break; -// case SSFDC16MB: *c=500; *h= 4; *s=16; break; -// case SSFDC32MB: *c=500; *h= 8; *s=16; break; -// case SSFDC64MB: *c=500; *h= 8; *s=32; break; -// case SSFDC128MB: *c=500; *h=16; *s=32; break; -// default: *c= 0; *h= 0; *s= 0; ErrCode = ERR_NoSmartMedia; return(ERROR); -// } -// -// return(SMSUCCESS); -//} -// -////Power Control & Media Exist Check Subroutine -////----- Initialize_D_Media() ------------------------------------------- -//void Initialize_D_Media(void) -//{ -// ErrCode = NO_ERROR; -// MediaChange = ERROR; -// SectCopyMode = COMPLETED; -// Cnt_D_Reset(); -//} -// -////----- PowerOff_D_Media() --------------------------------------------- -//void PowerOff_D_Media(void) -//{ -// Cnt_D_PowerOff(); -//} -// -////----- Check_D_MediaPower() ------------------------------------------- -//int Check_D_MediaPower(void) -//{ -// //usleep(56*1024); -// if (Check_D_CardStsChg()) -// MediaChange = ERROR; -// //usleep(56*1024); -// if ((!Check_D_CntPower())&&(!MediaChange)) // ¦³ power & Media ¨S³Q change, «h return success -// return(SMSUCCESS); -// //usleep(56*1024); -// -// if (Check_D_CardExist()) // Check if card is not exist, return err -// { -// ErrCode = ERR_NoSmartMedia; -// MediaChange = ERROR; -// return(ERROR); -// } -// //usleep(56*1024); -// if (Cnt_D_PowerOn()) -// { -// ErrCode = ERR_NoSmartMedia; -// MediaChange = ERROR; -// return(ERROR); -// } -// //usleep(56*1024); -// Ssfdc_D_Reset(fdoExt); -// //usleep(56*1024); -// return(SMSUCCESS); -//} -// -////-----Check_D_MediaExist() -------------------------------------------- -//int Check_D_MediaExist(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange = ERROR; -// -// if (!Check_D_CardExist()) -// { -// if (!MediaChange) -// return(SMSUCCESS); -// -// ErrCode = ERR_ChangedMedia; -// return(ERROR); -// } -// -// ErrCode = ERR_NoSmartMedia; -// -// return(ERROR); -//} -// -////----- Check_D_MediaWP() ---------------------------------------------- -//int Check_D_MediaWP(void) -//{ -// if (Ssfdc.Attribute &MWP) -// { -// ErrCode = ERR_WrtProtect; -// return(ERROR); -// } -// -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Format Test Subroutine -//----- Check_D_MediaFmt() --------------------------------------------- +/* SmartMedia Physical Format Test Subroutine */ +/* ----- Check_D_MediaFmt() --------------------------------------------- */ int Check_D_MediaFmt(struct us_data *us) { pr_info("Check_D_MediaFmt\n"); - //ULONG i,j, result=FALSE, zone,block; - //usleep(56*1024); if (!MediaChange) - return(SMSUCCESS); + return SMSUCCESS; MediaChange = ERROR; SectCopyMode = COMPLETED; - //usleep(56*1024); - if (Set_D_PhyFmtValue(us)) - { + if (Set_D_PhyFmtValue(us)) { ErrCode = ERR_UnknownMedia; - return(ERROR); + return ERROR; } - - //usleep(56*1024); - if (Search_D_CIS(us)) - { + + if (Search_D_CIS(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } - - MediaChange = SMSUCCESS; - return(SMSUCCESS); + MediaChange = SMSUCCESS; + return SMSUCCESS; } -/* -////----- Check_D_BlockIsFull() ---------------------------------- -//void Check_D_BlockIsFull() -//{ -// ULONG i, block; -// -// if (IsXDCompliance || IsSSFDCCompliance) -// { -// // If the blocks are full then return write-protect. -// block = Ssfdc.MaxBlocks/8; -// for (Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) -// { -// if (Log2Phy[Media.Zone]==NULL) -// { -// if (Make_D_LogTable()) -// { -// ErrCode = ERR_IllegalFmt; -// return; -// } -// } -// -// for (i=0; i<block; i++) -// { -// if (Assign[Media.Zone][i] != 0xFF) -// return; -// } -// } -// Ssfdc.Attribute |= WP; -// } -//} -// -// -////----- Check_D_MediaFmtForEraseAll() ---------------------------------- -//int Check_D_MediaFmtForEraseAll(PFDO_DEVICE_EXTENSION fdoExt) -//{ -// MediaChange = ERROR; -// SectCopyMode = COMPLETED; -// -// if (Set_D_PhyFmtValue(fdoExt)) -// { -// ErrCode = ERR_UnknownMedia; -// return(ERROR); -// } -// -// if (Search_D_CIS(fdoExt)) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Address Control Subroutine -//----- Conv_D_MediaAddr() --------------------------------------------- + +/* SmartMedia Physical Address Control Subroutine */ +/* ----- Conv_D_MediaAddr() --------------------------------------------- */ int Conv_D_MediaAddr(struct us_data *us, DWORD addr) { DWORD temp; - //ULONG zz; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - temp = addr/Ssfdc.MaxSectors; - Media.Zone = (BYTE) (temp/Ssfdc.MaxLogBlocks); + temp = addr / Ssfdc.MaxSectors; + Media.Zone = (BYTE) (temp / Ssfdc.MaxLogBlocks); - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } - Media.Sector = (BYTE) (addr%Ssfdc.MaxSectors); - Media.LogBlock = (WORD) (temp%Ssfdc.MaxLogBlocks); + Media.Sector = (BYTE) (addr % Ssfdc.MaxSectors); + Media.LogBlock = (WORD) (temp % Ssfdc.MaxLogBlocks); - if (Media.Zone<Ssfdc.MaxZones) - { + if (Media.Zone < Ssfdc.MaxZones) { Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + return SMSUCCESS; } ErrCode = ERR_OutOfLBA; - return(ERROR); + return ERROR; } -//----- Inc_D_MediaAddr() ---------------------------------------------- +/* ----- Inc_D_MediaAddr() ---------------------------------------------- */ int Inc_D_MediaAddr(struct us_data *us) { WORD LogBlock = Media.LogBlock; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - if (++Media.Sector<Ssfdc.MaxSectors) - return(SMSUCCESS); + if (++Media.Sector < Ssfdc.MaxSectors) + return SMSUCCESS; - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } - Media.Sector=0; + Media.Sector = 0; Media.LogBlock = LogBlock; - if (++Media.LogBlock<Ssfdc.MaxLogBlocks) - { + if (++Media.LogBlock < Ssfdc.MaxLogBlocks) { Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); - Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; + return SMSUCCESS; } - Media.LogBlock=0; + Media.LogBlock = 0; - if (++Media.Zone<Ssfdc.MaxZones) - { - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (++Media.Zone < Ssfdc.MaxZones) { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } @@ -817,1034 +278,508 @@ int Inc_D_MediaAddr(struct us_data *us) Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); - Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; + return SMSUCCESS; } - Media.Zone=0; + Media.Zone = 0; ErrCode = ERR_OutOfLBA; - return(ERROR); + return ERROR; } -/* -//----- Check_D_FirstSect() -------------------------------------------- -int Check_D_FirstSect(void) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - if (!Media.Sector) - return(SMSUCCESS); - - return(ERROR); -} - -//----- Check_D_LastSect() --------------------------------------------- -int Check_D_LastSect(void) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - if (Media.Sector<(Ssfdc.MaxSectors-1)) - return(ERROR); - - return(SMSUCCESS); -} -*/ -//SmartMedia Read/Write Subroutine with Retry -//----- Media_D_ReadOneSect() ------------------------------------------ +/* SmartMedia Read/Write Subroutine with Retry */ +/* ----- Media_D_ReadOneSect() ------------------------------------------ */ int Media_D_ReadOneSect(struct us_data *us, WORD count, BYTE *buf) { DWORD err, retry; if (!Read_D_PhyOneSect(us, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - if (ErrCode==ERR_DataStatus) - return(ERROR); + return SMSUCCESS; + if (ErrCode == ERR_HwError) + return ERROR; + if (ErrCode == ERR_DataStatus) + return ERROR; #ifdef RDERR_REASSIGN - if (Ssfdc.Attribute &MWP) - { - if (ErrCode==ERR_CorReadErr) - return(SMSUCCESS); - return(ERROR); + if (Ssfdc.Attribute & MWP) { + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; + return ERROR; } - err=ErrCode; - for(retry=0; retry<2; retry++) - { - if (Copy_D_BlockAll(us, (err==ERR_EccReadErr)?REQ_FAIL:REQ_ERASE)) - { - if (ErrCode==ERR_HwError) - return(ERROR); + err = ErrCode; + for (retry = 0; retry < 2; retry++) { + if (Copy_D_BlockAll(us, + (err == ERR_EccReadErr) ? REQ_FAIL : REQ_ERASE)) { + if (ErrCode == ERR_HwError) + return ERROR; continue; } ErrCode = err; - if (ErrCode==ERR_CorReadErr) - return(SMSUCCESS); - return(ERROR); + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; + return ERROR; } MediaChange = ERROR; #else - if (ErrCode==ERR_CorReadErr) return(SMSUCCESS); + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; #endif - return(ERROR); -} -/* -//----- Media_D_WriteOneSect() ----------------------------------------- -int Media_D_WriteOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) -{ - DWORD retry; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - - for(retry=1; retry<2; retry++) - { - if (Reassign_D_BlockHead(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - continue; - } - - if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - MediaChange = ERROR; - return(ERROR); -} - -//SmartMedia Data Copy Subroutine with Retry -//----- Media_D_CopyBlockHead() ---------------------------------------- -int Media_D_CopyBlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD retry; - - for(retry=0; retry<2; retry++) - { - if (!Copy_D_BlockHead(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - MediaChange = ERROR; - return(ERROR); + return ERROR; } -//----- Media_D_CopyBlockTail() ---------------------------------------- -int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD retry; - - if (!Copy_D_BlockTail(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - - for(retry=1; retry<2; retry++) - { - if (Reassign_D_BlockHead(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - continue; - } - - if (!Copy_D_BlockTail(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - MediaChange = ERROR; - return(ERROR); -} -// -////----- Media_D_EraseOneBlock() ---------------------------------------- -//int Media_D_EraseOneBlock(void) -//{ -// WORD LogBlock = Media.LogBlock; -// WORD PhyBlock = Media.PhyBlock; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// if (Media.PhyBlock==NO_ASSIGN) -// return(SMSUCCESS); -// -// if (Log2Phy[Media.Zone]==NULL) -// { -// if (Make_D_LogTable()) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// } -// Media.LogBlock = LogBlock; -// Media.PhyBlock = PhyBlock; -// -// Log2Phy[Media.Zone][Media.LogBlock]=NO_ASSIGN; -// -// if (Erase_D_PhyOneBlock(fdoExt)) -// { -// if (ErrCode==ERR_HwError) -// return(ERROR); -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// -// ErrCode = ERR_WriteFault; -// return(ERROR); -// } -// -// Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); -// Media.PhyBlock=NO_ASSIGN; -// return(SMSUCCESS); -//} -// -////SmartMedia Erase Subroutine -////----- Media_D_EraseAllBlock() ---------------------------------------- -//int Media_D_EraseAllBlock(void) -//{ -// WORD cis=0; -// -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// MediaChange = ERROR; -// Media.Sector = 0; -// -// for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) -// for(Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) { -// if (Ssfdc_D_ReadRedtData(Redundant)) -// { -// Ssfdc_D_Reset(fdoExt); -// return(ERROR); -// } -// -// Ssfdc_D_Reset(fdoExt); -// if (!Check_D_FailBlock(Redundant)) -// { -// if (cis) -// { -// if (Ssfdc_D_EraseBlock(fdoExt)) -// { -// ErrCode = ERR_HwError; -// return(ERROR); -// } -// -// if (Ssfdc_D_CheckStatus()) -// { -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// } -// -// continue; -// } -// -// if (Media.PhyBlock!=CisArea.PhyBlock) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// -// cis++; -// } -// -// } -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Sector Data Copy Subroutine -//----- Copy_D_BlockAll() ---------------------------------------------- +/* SmartMedia Physical Sector Data Copy Subroutine */ +/* ----- Copy_D_BlockAll() ---------------------------------------------- */ int Copy_D_BlockAll(struct us_data *us, DWORD mode) { BYTE sect; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - sect=Media.Sector; + sect = Media.Sector; if (Assign_D_WriteBlock()) - return(ERROR); - if (mode==REQ_FAIL) - SectCopyMode=REQ_FAIL; - - for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Copy_D_PhyOneSect(us)) - { - if (ErrCode==ERR_HwError) - return(ERROR); + return ERROR; + if (mode == REQ_FAIL) + SectCopyMode = REQ_FAIL; + + for (Media.Sector = 0; Media.Sector < Ssfdc.MaxSectors; + Media.Sector++) { + if (Copy_D_PhyOneSect(us)) { + if (ErrCode == ERR_HwError) + return ERROR; if (Release_D_WriteBlock(us)) - return(ERROR); + return ERROR; ErrCode = ERR_WriteFault; - Media.PhyBlock=ReadBlock; - Media.Sector=sect; + Media.PhyBlock = ReadBlock; + Media.Sector = sect; - return(ERROR); + return ERROR; } } if (Release_D_ReadBlock(us)) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); -} -/* -//----- Copy_D_BlockHead() --------------------------------------------- -int Copy_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - sect=Media.Sector; - if (Assign_D_WriteBlock()) - return(ERROR); - - for(Media.Sector=0; Media.Sector<sect; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - Media.PhyBlock=ReadBlock; - Media.Sector=sect; - - return(ERROR); - } - } - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); -} + return ERROR; -//----- Copy_D_BlockTail() --------------------------------------------- -int Copy_D_BlockTail(PFDO_DEVICE_EXTENSION fdoExt) -{ - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - for(sect=Media.Sector; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - - return(ERROR); - } - } - - if (Release_D_ReadBlock(fdoExt)) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); + Media.PhyBlock = WriteBlock; + Media.Sector = sect; + return SMSUCCESS; } -//----- Reassign_D_BlockHead() ----------------------------------------- -int Reassign_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD mode; - WORD block; - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - mode=SectCopyMode; - block=ReadBlock; - sect=Media.Sector; - - if (Assign_D_WriteBlock()) - return(ERROR); - - SectCopyMode=REQ_FAIL; - - for(Media.Sector=0; Media.Sector<sect; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - SectCopyMode=mode; - WriteBlock=ReadBlock; - ReadBlock=block; - Media.Sector=sect; - Media.PhyBlock=WriteBlock; - - return(ERROR); - } - } - - if (Release_D_ReadBlock(fdoExt)) - return(ERROR); - - SectCopyMode=mode; - ReadBlock=block; - Media.Sector=sect; - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); -} -*/ -//SmartMedia Physical Block Assign/Release Subroutine -//----- Assign_D_WriteBlock() ------------------------------------------ +/* SmartMedia Physical Block Assign/Release Subroutine */ +/* ----- Assign_D_WriteBlock() ------------------------------------------ */ int Assign_D_WriteBlock(void) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - ReadBlock=Media.PhyBlock; - - for(WriteBlock=AssignStart[Media.Zone]; WriteBlock<Ssfdc.MaxBlocks; WriteBlock++) - { - if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) - { - Set_D_Bit(Assign[Media.Zone],WriteBlock); - AssignStart[Media.Zone]=WriteBlock+1; - Media.PhyBlock=WriteBlock; - SectCopyMode=REQ_ERASE; - //ErrXDCode = NO_ERROR; - return(SMSUCCESS); + ReadBlock = Media.PhyBlock; + + for (WriteBlock = AssignStart[Media.Zone]; + WriteBlock < Ssfdc.MaxBlocks; WriteBlock++) { + if (!Chk_D_Bit(Assign[Media.Zone], WriteBlock)) { + Set_D_Bit(Assign[Media.Zone], WriteBlock); + AssignStart[Media.Zone] = WriteBlock + 1; + Media.PhyBlock = WriteBlock; + SectCopyMode = REQ_ERASE; + return SMSUCCESS; } } - for(WriteBlock=0; WriteBlock<AssignStart[Media.Zone]; WriteBlock++) - { - if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) - { - Set_D_Bit(Assign[Media.Zone],WriteBlock); - AssignStart[Media.Zone]=WriteBlock+1; - Media.PhyBlock=WriteBlock; - SectCopyMode=REQ_ERASE; - //ErrXDCode = NO_ERROR; - return(SMSUCCESS); + for (WriteBlock = 0; + WriteBlock < AssignStart[Media.Zone]; WriteBlock++) { + if (!Chk_D_Bit(Assign[Media.Zone], WriteBlock)) { + Set_D_Bit(Assign[Media.Zone], WriteBlock); + AssignStart[Media.Zone] = WriteBlock + 1; + Media.PhyBlock = WriteBlock; + SectCopyMode = REQ_ERASE; + return SMSUCCESS; } } - WriteBlock=NO_ASSIGN; + WriteBlock = NO_ASSIGN; ErrCode = ERR_WriteFault; - // For xD test - //Ssfdc.Attribute |= WP; - //ErrXDCode = ERR_WrtProtect; - return(ERROR); + + return ERROR; } -//----- Release_D_ReadBlock() ------------------------------------------ +/* ----- Release_D_ReadBlock() ------------------------------------------ */ int Release_D_ReadBlock(struct us_data *us) { DWORD mode; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - mode=SectCopyMode; - SectCopyMode=COMPLETED; + mode = SectCopyMode; + SectCopyMode = COMPLETED; - if (mode==COMPLETED) - return(SMSUCCESS); + if (mode == COMPLETED) + return SMSUCCESS; - Log2Phy[Media.Zone][Media.LogBlock]=WriteBlock; - Media.PhyBlock=ReadBlock; + Log2Phy[Media.Zone][Media.LogBlock] = WriteBlock; + Media.PhyBlock = ReadBlock; - if (Media.PhyBlock==NO_ASSIGN) - { - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + if (Media.PhyBlock == NO_ASSIGN) { + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } - if (mode==REQ_ERASE) - { - if (Erase_D_PhyOneBlock(us)) - { - if (ErrCode==ERR_HwError) return(ERROR); - if (MarkFail_D_PhyOneBlock(us)) return(ERROR); - } - else - Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); - } - else if (MarkFail_D_PhyOneBlock(us)) - return(ERROR); + if (mode == REQ_ERASE) { + if (Erase_D_PhyOneBlock(us)) { + if (ErrCode == ERR_HwError) + return ERROR; + if (MarkFail_D_PhyOneBlock(us)) + return ERROR; + } else + Clr_D_Bit(Assign[Media.Zone], Media.PhyBlock); + } else if (MarkFail_D_PhyOneBlock(us)) + return ERROR; - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } -//----- Release_D_WriteBlock() ----------------------------------------- +/* ----- Release_D_WriteBlock() ----------------------------------------- */ int Release_D_WriteBlock(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - SectCopyMode=COMPLETED; - Media.PhyBlock=WriteBlock; + SectCopyMode = COMPLETED; + Media.PhyBlock = WriteBlock; if (MarkFail_D_PhyOneBlock(us)) - return(ERROR); + return ERROR; - Media.PhyBlock=ReadBlock; - return(SMSUCCESS); + Media.PhyBlock = ReadBlock; + return SMSUCCESS; } -//SmartMedia Physical Sector Data Copy Subroutine -//----- Copy_D_PhyOneSect() -------------------------------------------- +/* SmartMedia Physical Sector Data Copy Subroutine */ +/* ----- Copy_D_PhyOneSect() -------------------------------------------- */ int Copy_D_PhyOneSect(struct us_data *us) { int i; DWORD err, retry; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; /* pr_info("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector); */ - if (ReadBlock!=NO_ASSIGN) - { - Media.PhyBlock=ReadBlock; - for(retry=0; retry<2; retry++) - { - if (retry!=0) - { + if (ReadBlock != NO_ASSIGN) { + Media.PhyBlock = ReadBlock; + for (retry = 0; retry < 2; retry++) { + if (retry != 0) { Ssfdc_D_Reset(us); - if (Ssfdc_D_ReadCisSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Ssfdc_D_ReadCisSect(us, WorkBuf, + WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } - if (Check_D_CISdata(WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Check_D_CISdata(WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + } + + if (Ssfdc_D_ReadSect(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_DataStatus(WorkRedund)) { + err = ERROR; + break; + } + if (!Check_D_ReadError(WorkRedund)) { + err = SMSUCCESS; + break; + } + if (!Check_D_Correct(WorkBuf, WorkRedund)) { + err = SMSUCCESS; + break; } - if (Ssfdc_D_ReadSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_DataStatus(WorkRedund)) - { err=ERROR; break; } - if (!Check_D_ReadError(WorkRedund)) - { err=SMSUCCESS; break; } - if (!Check_D_Correct(WorkBuf,WorkRedund)) - { err=SMSUCCESS; break; } - - err=ERROR; - SectCopyMode=REQ_FAIL; + err = ERROR; + SectCopyMode = REQ_FAIL; } - } - else - { - err=SMSUCCESS; - for(i=0; i<SECTSIZE; i++) - WorkBuf[i]=DUMMY_DATA; + } else { + err = SMSUCCESS; + for (i = 0; i < SECTSIZE; i++) + WorkBuf[i] = DUMMY_DATA; Clr_D_RedundantData(WorkRedund); } Set_D_LogBlockAddr(WorkRedund); - if (err==ERROR) - { + if (err == ERROR) { Set_D_RightECC(WorkRedund); Set_D_DataStaus(WorkRedund); } - Media.PhyBlock=WriteBlock; + Media.PhyBlock = WriteBlock; - if (Ssfdc_D_WriteSectForCopy(us, WorkBuf, WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } + if (Ssfdc_D_WriteSectForCopy(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Ssfdc_D_CheckStatus()) { + ErrCode = ERR_WriteFault; + return ERROR; + } - Media.PhyBlock=ReadBlock; - return(SMSUCCESS); + Media.PhyBlock = ReadBlock; + return SMSUCCESS; } -//SmartMedia Physical Sector Read/Write/Erase Subroutine -//----- Read_D_PhyOneSect() -------------------------------------------- +/* SmartMedia Physical Sector Read/Write/Erase Subroutine */ +/* ----- Read_D_PhyOneSect() -------------------------------------------- */ int Read_D_PhyOneSect(struct us_data *us, WORD count, BYTE *buf) { int i; DWORD retry; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - if (Media.PhyBlock==NO_ASSIGN) - { - for(i=0; i<SECTSIZE; i++) - *buf++=DUMMY_DATA; - return(SMSUCCESS); + + if (Media.PhyBlock == NO_ASSIGN) { + for (i = 0; i < SECTSIZE; i++) + *buf++ = DUMMY_DATA; + return SMSUCCESS; } - for(retry=0; retry<2; retry++) - { - if (retry!=0) - { + for (retry = 0; retry < 2; retry++) { + if (retry != 0) { Ssfdc_D_Reset(us); - if (Ssfdc_D_ReadCisSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_CISdata(WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Ssfdc_D_ReadCisSect(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_CISdata(WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } } - //if (Ssfdc_D_ReadSect(fdoExt,buf,Redundant)) - if (Ssfdc_D_ReadBlock(us,count,buf,Redundant)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_DataStatus(Redundant)) - { ErrCode = ERR_DataStatus; return(ERROR); } + if (Ssfdc_D_ReadBlock(us, count, buf, Redundant)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_DataStatus(Redundant)) { + ErrCode = ERR_DataStatus; + return ERROR; + } if (!Check_D_ReadError(Redundant)) - return(SMSUCCESS); + return SMSUCCESS; - if (!Check_D_Correct(buf,Redundant)) - { ErrCode = ERR_CorReadErr; return(ERROR); } + if (!Check_D_Correct(buf, Redundant)) { + ErrCode = ERR_CorReadErr; + return ERROR; + } } ErrCode = ERR_EccReadErr; - return(ERROR); + return ERROR; } -/* -//----- Write_D_PhyOneSect() ------------------------------------------- -int Write_D_PhyOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - //if (Ssfdc_D_WriteSect(fdoExt,buf,Redundant)) - if (Ssfdc_D_WriteBlock(fdoExt,count,buf,Redundant)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } - return(SMSUCCESS); -} -*/ -//----- Erase_D_PhyOneBlock() ------------------------------------------ +/* ----- Erase_D_PhyOneBlock() ------------------------------------------ */ int Erase_D_PhyOneBlock(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - if (Ssfdc_D_EraseBlock(us)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } + if (Ssfdc_D_EraseBlock(us)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Ssfdc_D_CheckStatus()) { + ErrCode = ERR_WriteFault; + return ERROR; + } - return(SMSUCCESS); + return SMSUCCESS; } -//SmartMedia Physical Format Check Local Subroutine -//----- Set_D_PhyFmtValue() -------------------------------------------- +/* SmartMedia Physical Format Check Local Subroutine */ +/* ----- Set_D_PhyFmtValue() -------------------------------------------- */ int Set_D_PhyFmtValue(struct us_data *us) { -// PPDO_DEVICE_EXTENSION pdoExt; -// BYTE idcode[4]; -// DWORD UserDefData_1, UserDefData_2, Data, mask; -// -// //if (!fdoExt->ChildDeviceObject) return(ERROR); -// //pdoExt = fdoExt->ChildDeviceObject->DeviceExtension; -// -// Ssfdc_D_ReadID(idcode, READ_ID_1); -// - //if (Set_D_SsfdcModel(idcode[1])) - if (Set_D_SsfdcModel(us->SM_DeviceID)) - return(ERROR); - -// //Use Multi-function pin to differentiate SM and xD. -// UserDefData_1 = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, fdoExt->FuncID, PCI_REG_USER_DEF) & 0x80; -// if (UserDefData_1) -// { -// if ( READ_PORT_BYTE(SM_REG_INT_STATUS) & 0x80 ) fdoExt->DiskType = DISKTYPE_XD; -// if ( READ_PORT_BYTE(SM_REG_INT_STATUS) & 0x40 ) fdoExt->DiskType = DISKTYPE_SM; -// -// if ( IsXDCompliance && (fdoExt->DiskType == DISKTYPE_XD) ) -// { -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// if (idcode[2] != 0xB5) -// return(ERROR); -// } -// } -// -// //Use GPIO to differentiate SM and xD. -// UserDefData_2 = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, fdoExt->FuncID, PCI_REG_USER_DEF) >> 8; -// if ( UserDefData_2 ) -// { -// Data = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, 0, 0xAC); -// -// mask = 1 << (UserDefData_2-1); -// // 1 : xD , 0 : SM -// if ( Data & mask) -// fdoExt->DiskType = DISKTYPE_XD; -// else -// fdoExt->DiskType = DISKTYPE_SM; -// -// if ( IsXDCompliance && (fdoExt->DiskType == DISKTYPE_XD) ) -// { -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// if (idcode[2] != 0xB5) -// return(ERROR); -// } -// } -// -// if ( !(UserDefData_1 | UserDefData_2) ) -// { -// // Use UserDefine Register to differentiate SM and xD. -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// -// if (idcode[2] == 0xB5) -// fdoExt->DiskType = DISKTYPE_XD; -// else -// { -// if (!IsXDCompliance) -// fdoExt->DiskType = DISKTYPE_SM; -// else -// return(ERROR); -// } -// -// if (fdoExt->UserDef_DiskType == 0x04) fdoExt->DiskType = DISKTYPE_XD; -// if (fdoExt->UserDef_DiskType == 0x08) fdoExt->DiskType = DISKTYPE_SM; -// } -// -// if (!fdoExt->UserDef_DisableWP) -// { -// if (fdoExt->DiskType == DISKTYPE_SM) -// { -// if (Check_D_SsfdcWP()) -// Ssfdc.Attribute|=WP; -// } -// } - - return(SMSUCCESS); + if (Set_D_SsfdcModel(us->SM_DeviceID)) + return ERROR; + + return SMSUCCESS; } -//----- Search_D_CIS() ------------------------------------------------- +/* ----- Search_D_CIS() ------------------------------------------------- */ int Search_D_CIS(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - Media.Zone=0; Media.Sector=0; + Media.Zone = 0; + Media.Sector = 0; - for (Media.PhyBlock=0; Media.PhyBlock<(Ssfdc.MaxBlocks-Ssfdc.MaxLogBlocks-1); Media.PhyBlock++) - { - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { + for (Media.PhyBlock = 0; + Media.PhyBlock < (Ssfdc.MaxBlocks - Ssfdc.MaxLogBlocks - 1); + Media.PhyBlock++) { + if (Ssfdc_D_ReadRedtData(us, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } if (!Check_D_FailBlock(Redundant)) break; } - if (Media.PhyBlock==(Ssfdc.MaxBlocks-Ssfdc.MaxLogBlocks-1)) - { + if (Media.PhyBlock == (Ssfdc.MaxBlocks - Ssfdc.MaxLogBlocks - 1)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - while (Media.Sector<CIS_SEARCH_SECT) - { - if (Media.Sector) - { - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { + while (Media.Sector < CIS_SEARCH_SECT) { + if (Media.Sector) { + if (Ssfdc_D_ReadRedtData(us, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } } - if (!Check_D_DataStatus(Redundant)) - { - if (Ssfdc_D_ReadSect(us,WorkBuf,Redundant)) - { + if (!Check_D_DataStatus(Redundant)) { + if (Ssfdc_D_ReadSect(us, WorkBuf, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - if (Check_D_CISdata(WorkBuf,Redundant)) - { + if (Check_D_CISdata(WorkBuf, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - CisArea.PhyBlock=Media.PhyBlock; - CisArea.Sector=Media.Sector; + CisArea.PhyBlock = Media.PhyBlock; + CisArea.Sector = Media.Sector; Ssfdc_D_Reset(us); - return(SMSUCCESS); + return SMSUCCESS; } Media.Sector++; } Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } -//----- Make_D_LogTable() ---------------------------------------------- +/* ----- Make_D_LogTable() ---------------------------------------------- */ int Make_D_LogTable(struct us_data *us) { - WORD phyblock,logblock; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; + WORD phyblock, logblock; - if (Log2Phy[Media.Zone]==NULL) - { - Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK*sizeof(WORD), GFP_KERNEL); + if (Log2Phy[Media.Zone] == NULL) { + Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK * sizeof(WORD), + GFP_KERNEL); /* pr_info("ExAllocatePool Zone = %x, Addr = %x\n", Media.Zone, Log2Phy[Media.Zone]); */ - if (Log2Phy[Media.Zone]==NULL) - return(ERROR); + if (Log2Phy[Media.Zone] == NULL) + return ERROR; } - Media.Sector=0; - - //for(Media.Zone=0; Media.Zone<MAX_ZONENUM; Media.Zone++) - //for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) - { - /* pr_info("Make_D_LogTable --- MediaZone = 0x%x\n", - Media.Zone); */ - for(Media.LogBlock=0; Media.LogBlock<Ssfdc.MaxLogBlocks; Media.LogBlock++) - Log2Phy[Media.Zone][Media.LogBlock]=NO_ASSIGN; - - for(Media.PhyBlock=0; Media.PhyBlock<(MAX_BLOCKNUM/8); Media.PhyBlock++) - Assign[Media.Zone][Media.PhyBlock]=0x00; - - for(Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) - { - if ((!Media.Zone) && (Media.PhyBlock<=CisArea.PhyBlock)) - { - Set_D_Bit(Assign[Media.Zone],Media.PhyBlock); - continue; - } + Media.Sector = 0; + + /* pr_info("Make_D_LogTable --- MediaZone = 0x%x\n", + Media.Zone); */ + for (Media.LogBlock = 0; Media.LogBlock < Ssfdc.MaxLogBlocks; + Media.LogBlock++) + Log2Phy[Media.Zone][Media.LogBlock] = NO_ASSIGN; + + for (Media.PhyBlock = 0; Media.PhyBlock < (MAX_BLOCKNUM / 8); + Media.PhyBlock++) + Assign[Media.Zone][Media.PhyBlock] = 0x00; + + for (Media.PhyBlock = 0; Media.PhyBlock < Ssfdc.MaxBlocks; + Media.PhyBlock++) { + if ((!Media.Zone) && (Media.PhyBlock <= CisArea.PhyBlock)) { + Set_D_Bit(Assign[Media.Zone], Media.PhyBlock); + continue; + } + + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; + } + + if (!Check_D_DataBlank(Redundant)) + continue; + + Set_D_Bit(Assign[Media.Zone], Media.PhyBlock); - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } + if (Check_D_FailBlock(Redundant)) + continue; - if (!Check_D_DataBlank(Redundant)) - continue; + if (Load_D_LogBlockAddr(Redundant)) + continue; - Set_D_Bit(Assign[Media.Zone],Media.PhyBlock); + if (Media.LogBlock >= Ssfdc.MaxLogBlocks) + continue; - if (Check_D_FailBlock(Redundant)) - continue; + if (Log2Phy[Media.Zone][Media.LogBlock] == NO_ASSIGN) { + Log2Phy[Media.Zone][Media.LogBlock] = Media.PhyBlock; + continue; + } - //if (Check_D_DataStatus(Redundant)) - // continue; + phyblock = Media.PhyBlock; + logblock = Media.LogBlock; + Media.Sector = (BYTE)(Ssfdc.MaxSectors - 1); - if (Load_D_LogBlockAddr(Redundant)) - continue; + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; + } - if (Media.LogBlock>=Ssfdc.MaxLogBlocks) - continue; + if (!Load_D_LogBlockAddr(Redundant) && + (Media.LogBlock == logblock)) { + Media.PhyBlock = Log2Phy[Media.Zone][logblock]; - if (Log2Phy[Media.Zone][Media.LogBlock]==NO_ASSIGN) - { - Log2Phy[Media.Zone][Media.LogBlock]=Media.PhyBlock; - continue; + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; } - phyblock = Media.PhyBlock; - logblock = Media.LogBlock; - Media.Sector = (BYTE)(Ssfdc.MaxSectors-1); - - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } - - if (!Load_D_LogBlockAddr(Redundant)) - { - if (Media.LogBlock==logblock) - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } - - Media.PhyBlock=phyblock; - - if (!Load_D_LogBlockAddr(Redundant)) - { - if (Media.LogBlock!=logblock) - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - Log2Phy[Media.Zone][logblock]=phyblock; - } - } - else - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - Log2Phy[Media.Zone][logblock]=phyblock; - } + Media.PhyBlock = phyblock; + + if (!Load_D_LogBlockAddr(Redundant)) { + if (Media.LogBlock != logblock) { + Media.PhyBlock = + Log2Phy[Media.Zone][logblock]; + Log2Phy[Media.Zone][logblock] = + phyblock; } + } else { + Media.PhyBlock = Log2Phy[Media.Zone][logblock]; + Log2Phy[Media.Zone][logblock] = phyblock; } + } + + Media.Sector = 0; + Media.PhyBlock = phyblock; + + AssignStart[Media.Zone] = 0; - Media.Sector=0; - -// here Not yet -//#ifdef L2P_ERR_ERASE -// if (!(Ssfdc.Attribute &MWP)) -// { -// Ssfdc_D_Reset(fdoExt); -// if (Ssfdc_D_EraseBlock(fdoExt)) -// return(ERROR); -// -// if (Ssfdc_D_CheckStatus()) -// { -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// } -// else -// Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); -// } -//#else -// Ssfdc.Attribute|=MWP; -//#endif - Media.PhyBlock=phyblock; - - } // End for (Media.PhyBlock<Ssfdc.MaxBlocks) - - AssignStart[Media.Zone]=0; - - } // End for (Media.Zone<MAX_ZONENUM) + } /* End for (Media.Zone<MAX_ZONENUM) */ Ssfdc_D_Reset(us); - return(SMSUCCESS); + return SMSUCCESS; } -//----- MarkFail_D_PhyOneBlock() --------------------------------------- +/* ----- MarkFail_D_PhyOneBlock() --------------------------------------- */ int MarkFail_D_PhyOneBlock(struct us_data *us) { BYTE sect; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - sect=Media.Sector; + sect = Media.Sector; Set_D_FailBlock(WorkRedund); - //Ssfdc_D_WriteRedtMode(); - for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Ssfdc_D_WriteRedtData(us, WorkRedund)) - { + for (Media.Sector = 0; Media.Sector < Ssfdc.MaxSectors; + Media.Sector++) { + if (Ssfdc_D_WriteRedtData(us, WorkRedund)) { Ssfdc_D_Reset(us); Media.Sector = sect; ErrCode = ERR_HwError; MediaChange = ERROR; - return(ERROR); - } // NO Status Check + return ERROR; + } /* NO Status Check */ } Ssfdc_D_Reset(us); - Media.Sector=sect; - return(SMSUCCESS); + Media.Sector = sect; + return SMSUCCESS; } -/* -// -////----- SM_Init() ---------------------------------------------------- -//void SM_Init(void) -//{ -// _Hw_D_ClrIntCardChg(); -// _Hw_D_SetIntMask(); -// // For DMA Interrupt -// _Hw_D_ClrDMAIntCardChg(); -// _Hw_D_SetDMAIntMask(); -//} -// -////----- Media_D_EraseAllRedtData() ----------------------------------- -//int Media_D_EraseAllRedtData(DWORD Index, BOOLEAN CheckBlock) -//{ -// BYTE i; -// -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// for (i=0; i<REDTSIZE; i++) -// WorkRedund[i] = 0xFF; -// -// Media.Zone = (BYTE)Index; -// for (Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) -// { -// if ((!Media.Zone) && (Media.PhyBlock<=CisArea.PhyBlock)) -// continue; -// -// if (Ssfdc_D_EraseBlock(fdoExt)) -// { -// ErrCode = ERR_HwError; -// return(ERROR); -// } -// -// for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) -// { -// Ssfdc_D_WriteRedtMode(); -// -// if (Ssfdc_D_WriteRedtData(WorkRedund)) -// { -// Ssfdc_D_Reset(fdoExt); -// ErrCode = ERR_HwError; -// MediaChange = ERROR; -// return(ERROR); -// } // NO Status Check -// } -// -// Ssfdc_D_Reset(fdoExt); -// } -// -// Ssfdc_D_Reset(fdoExt); -// -// return(SMSUCCESS); -//} -// -////----- Media_D_GetMediaInfo() --------------------------------------- -//DWORD Media_D_GetMediaInfo(PFDO_DEVICE_EXTENSION fdoExt, PIOCTL_MEDIA_INFO_IN pParamIn, PIOCTL_MEDIA_INFO_OUT pParamOut) -//{ -// pParamOut->ErrCode = STATUS_CMD_FAIL; -// -// Init_D_SmartMedia(); -// -// if (Check_D_MediaPower()) -// return (ErrCode==ERR_NoSmartMedia) ? STATUS_CMD_NO_MEDIA : STATUS_CMD_FAIL; -// -// if (Set_D_PhyFmtValue(fdoExt)) -// return STATUS_CMD_FAIL; -// -// //usleep(56*1024); -// if (Search_D_CIS(fdoExt)) -// return STATUS_CMD_FAIL; -// -// if (Check_D_MediaWP()) -// return STATUS_CMD_MEDIA_WP; -// -// pParamOut->PageSize = Ssfdc.MaxSectors; -// pParamOut->BlockSize = Ssfdc.MaxBlocks; -// pParamOut->ZoneSize = Ssfdc.MaxZones; -// -// return STATUS_CMD_SUCCESS; -//}*/ |