diff options
Diffstat (limited to 'drivers/staging/keucr')
-rw-r--r-- | drivers/staging/keucr/common.h | 2 | ||||
-rw-r--r-- | drivers/staging/keucr/init.c | 3 | ||||
-rw-r--r-- | drivers/staging/keucr/init.h | 10 | ||||
-rw-r--r-- | drivers/staging/keucr/ms.c | 698 | ||||
-rw-r--r-- | drivers/staging/keucr/ms.h | 338 | ||||
-rw-r--r-- | drivers/staging/keucr/msscsi.c | 250 | ||||
-rw-r--r-- | drivers/staging/keucr/scsiglue.c | 192 | ||||
-rw-r--r-- | drivers/staging/keucr/smcommon.h | 2 | ||||
-rw-r--r-- | drivers/staging/keucr/smil.h | 309 | ||||
-rw-r--r-- | drivers/staging/keucr/smilecc.c | 314 | ||||
-rw-r--r-- | drivers/staging/keucr/smilmain.c | 144 | ||||
-rw-r--r-- | drivers/staging/keucr/smilsub.c | 66 | ||||
-rw-r--r-- | drivers/staging/keucr/smscsi.c | 2 | ||||
-rw-r--r-- | drivers/staging/keucr/transport.c | 531 | ||||
-rw-r--r-- | drivers/staging/keucr/transport.h | 84 | ||||
-rw-r--r-- | drivers/staging/keucr/usb.c | 95 |
16 files changed, 1639 insertions, 1401 deletions
diff --git a/drivers/staging/keucr/common.h b/drivers/staging/keucr/common.h index b87dc7a8901d..cf347ccd6a6e 100644 --- a/drivers/staging/keucr/common.h +++ b/drivers/staging/keucr/common.h @@ -9,5 +9,7 @@ typedef u16 *PWORD; typedef u32 DWORD; typedef u32 *PDWORD; +#define BYTE_MASK 0xff + #endif diff --git a/drivers/staging/keucr/init.c b/drivers/staging/keucr/init.c index 8af7c84daee2..b5a89375df22 100644 --- a/drivers/staging/keucr/init.c +++ b/drivers/staging/keucr/init.c @@ -11,9 +11,6 @@ #include "transport.h" #include "init.h" -BYTE IsSSFDCCompliance; -BYTE IsXDCompliance; - /* * ENE_InitMedia(): */ diff --git a/drivers/staging/keucr/init.h b/drivers/staging/keucr/init.h index 953a31e9d5f0..f709055ae146 100644 --- a/drivers/staging/keucr/init.h +++ b/drivers/staging/keucr/init.h @@ -4,7 +4,7 @@ extern DWORD MediaChange; extern int Check_D_MediaFmt(struct us_data *); -BYTE MS_Init[] = { +static BYTE MS_Init[] = { 0x90, 0xF0, 0x15, 0xE0, 0xF5, 0x1C, 0x11, 0x2C, 0x90, 0xFF, 0x09, 0xE0, 0x30, 0xE1, 0x06, 0x90, 0xFF, 0x23, 0x74, 0x80, 0xF0, 0x90, 0xFF, 0x09, @@ -262,7 +262,7 @@ BYTE MS_Init[] = { 0x4D, 0x53, 0x2D, 0x49, 0x6E, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30 }; -BYTE MSP_Rdwr[] = { +static BYTE MSP_Rdwr[] = { 0x90, 0xF0, 0x10, 0xE0, 0x90, 0xEA, 0x46, 0xF0, 0xB4, 0x04, 0x03, 0x02, 0xE1, 0x1E, 0x90, 0xFF, 0x09, 0xE0, 0x30, 0xE1, 0x06, 0x90, 0xFF, 0x23, @@ -520,7 +520,7 @@ BYTE MSP_Rdwr[] = { 0x4D, 0x53, 0x50, 0x2D, 0x52, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30 }; -BYTE MS_Rdwr[] = { +static BYTE MS_Rdwr[] = { 0x90, 0xF0, 0x10, 0xE0, 0x90, 0xEA, 0x46, 0xF0, 0xB4, 0x02, 0x02, 0x80, 0x36, 0x90, 0xF0, 0x11, 0xE0, 0xF5, 0x17, 0x90, 0xF0, 0x12, 0xE0, 0xF5, @@ -778,7 +778,7 @@ BYTE MS_Rdwr[] = { 0x4D, 0x53, 0x2D, 0x52, 0x57, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30 }; -BYTE SM_Init[] = { +static BYTE SM_Init[] = { 0x7B, 0x09, 0x7C, 0xF0, 0x7D, 0x10, 0x7E, 0xE9, 0x7F, 0xCC, 0x12, 0x2F, 0x71, 0x90, 0xE9, 0xCC, 0xE0, 0xB4, 0x07, 0x12, 0x90, 0xFF, 0x09, 0xE0, @@ -1036,7 +1036,7 @@ BYTE SM_Init[] = { 0x58, 0x44, 0x2D, 0x49, 0x6E, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x30, 0x30, 0x31 }; -BYTE SM_Rdwr[] = { +static BYTE SM_Rdwr[] = { 0x7B, 0x0C, 0x7C, 0xF0, 0x7D, 0x10, 0x7E, 0xE9, 0x7F, 0xCC, 0x12, 0x2F, 0x71, 0x90, 0xE9, 0xC3, 0xE0, 0xB4, 0x73, 0x04, 0x74, 0x40, 0x80, 0x09, diff --git a/drivers/staging/keucr/ms.c b/drivers/staging/keucr/ms.c index a7137217cf86..087ad73ff70f 100644 --- a/drivers/staging/keucr/ms.c +++ b/drivers/staging/keucr/ms.c @@ -6,13 +6,17 @@ #include "transport.h" #include "ms.h" -//----- MS_ReaderCopyBlock() ------------------------------------------ -int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, WORD newphy, WORD PhyBlockAddr, BYTE PageNum, PBYTE buf, WORD len) +/* + * MS_ReaderCopyBlock() + */ +int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, WORD newphy, + WORD PhyBlockAddr, BYTE PageNum, PBYTE buf, WORD len) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; - //printk("MS_ReaderCopyBlock --- PhyBlockAddr = %x, PageNum = %x\n", PhyBlockAddr, PageNum); + /* printk(KERN_INFO "MS_ReaderCopyBlock --- PhyBlockAddr = %x, + PageNum = %x\n", PhyBlockAddr, PageNum); */ result = ENE_LoadBinCode(us, MS_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; @@ -25,10 +29,10 @@ int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, WORD newphy, WORD PhyBlo bcb->CDB[1] = 0x08; bcb->CDB[4] = (BYTE)(oldphy); bcb->CDB[3] = (BYTE)(oldphy>>8); - bcb->CDB[2] = (BYTE)(oldphy>>16); + bcb->CDB[2] = 0; /* (BYTE)(oldphy>>16) */ bcb->CDB[7] = (BYTE)(newphy); bcb->CDB[6] = (BYTE)(newphy>>8); - bcb->CDB[5] = (BYTE)(newphy>>16); + bcb->CDB[5] = 0; /* (BYTE)(newphy>>16) */ bcb->CDB[9] = (BYTE)(PhyBlockAddr); bcb->CDB[8] = (BYTE)(PhyBlockAddr>>8); bcb->CDB[10] = PageNum; @@ -40,21 +44,25 @@ int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, WORD newphy, WORD PhyBlo return USB_STOR_TRANSPORT_GOOD; } -//----- MS_ReaderReadPage() ------------------------------------------ -int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, PDWORD PageBuf, MS_LibTypeExtdat *ExtraDat) +/* + * MS_ReaderReadPage() + */ +int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, + BYTE PageNum, PDWORD PageBuf, MS_LibTypeExtdat *ExtraDat) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; BYTE ExtBuf[4]; DWORD bn = PhyBlockAddr * 0x20 + PageNum; - //printk("MS --- MS_ReaderReadPage, PhyBlockAddr = %x, PageNum = %x\n", PhyBlockAddr, PageNum); + /* printk(KERN_INFO "MS --- MS_ReaderReadPage, + PhyBlockAddr = %x, PageNum = %x\n", PhyBlockAddr, PageNum); */ result = ENE_LoadBinCode(us, MS_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; - // Read Page Data + /* Read Page Data */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = 0x200; @@ -65,12 +73,12 @@ int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, PDWO bcb->CDB[4] = (BYTE)(bn>>8); bcb->CDB[3] = (BYTE)(bn>>16); bcb->CDB[2] = (BYTE)(bn>>24); - + result = ENE_SendScsiCmd(us, FDIR_READ, PageBuf, 0); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; - // Read Extra Data + /* Read Extra Data */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = 0x4; @@ -88,9 +96,9 @@ int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, PDWO return USB_STOR_TRANSPORT_ERROR; ExtraDat->reserved = 0; - ExtraDat->intr = 0x80; // Not yet, 安砞, 单 fireware support - ExtraDat->status0 = 0x10; // Not yet, 安砞, 单 fireware support - ExtraDat->status1 = 0x00; // Not yet, 安砞, 单 fireware support + ExtraDat->intr = 0x80; /* Not yet,fireware support */ + ExtraDat->status0 = 0x10; /* Not yet,fireware support */ + ExtraDat->status1 = 0x00; /* Not yet,fireware support */ ExtraDat->ovrflg = ExtBuf[0]; ExtraDat->mngflg = ExtBuf[1]; ExtraDat->logadr = MemStickLogAddr(ExtBuf[2], ExtBuf[3]); @@ -98,14 +106,17 @@ int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, PDWO return USB_STOR_TRANSPORT_GOOD; } -//----- MS_ReaderEraseBlock() ---------------------------------------- +/* + * MS_ReaderEraseBlock() + */ int MS_ReaderEraseBlock(struct us_data *us, DWORD PhyBlockAddr) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; DWORD bn = PhyBlockAddr; - //printk("MS --- MS_ReaderEraseBlock, PhyBlockAddr = %x\n", PhyBlockAddr); + /* printk(KERN_INFO "MS --- MS_ReaderEraseBlock, + PhyBlockAddr = %x\n", PhyBlockAddr); */ result = ENE_LoadBinCode(us, MS_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; @@ -119,7 +130,7 @@ int MS_ReaderEraseBlock(struct us_data *us, DWORD PhyBlockAddr) bcb->CDB[4] = (BYTE)(bn); bcb->CDB[3] = (BYTE)(bn>>8); bcb->CDB[2] = (BYTE)(bn>>16); - + result = ENE_SendScsiCmd(us, FDIR_READ, NULL, 0); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; @@ -127,23 +138,25 @@ int MS_ReaderEraseBlock(struct us_data *us, DWORD PhyBlockAddr) return USB_STOR_TRANSPORT_GOOD; } -//----- MS_CardInit() ------------------------------------------------ +/* + * MS_CardInit() + */ int MS_CardInit(struct us_data *us) { - DWORD result=0; + DWORD result = 0; WORD TmpBlock; PBYTE PageBuffer0 = NULL, PageBuffer1 = NULL; MS_LibTypeExtdat extdat; WORD btBlk1st, btBlk2nd; DWORD btBlk1stErred; - printk("MS_CardInit start\n"); + printk(KERN_INFO "MS_CardInit start\n"); MS_LibFreeAllocatedArea(us); - if (((PageBuffer0 = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL)) == NULL) || - ((PageBuffer1 = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL)) == NULL)) - { + PageBuffer0 = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL); + PageBuffer1 = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL); + if ((PageBuffer0 == NULL) || (PageBuffer1 == NULL)) { result = MS_NO_MEMORY_ERROR; goto exit; } @@ -151,16 +164,16 @@ int MS_CardInit(struct us_data *us) btBlk1st = btBlk2nd = MS_LB_NOT_USED; btBlk1stErred = 0; - for (TmpBlock=0; TmpBlock < MS_MAX_INITIAL_ERROR_BLOCKS+2; TmpBlock++) - { - switch (MS_ReaderReadPage(us, TmpBlock, 0, (DWORD *)PageBuffer0, &extdat)) - { - case MS_STATUS_SUCCESS: + for (TmpBlock = 0; TmpBlock < MS_MAX_INITIAL_ERROR_BLOCKS+2; + TmpBlock++) { + switch (MS_ReaderReadPage(us, TmpBlock, 0, + (DWORD *)PageBuffer0, &extdat)) { + case MS_STATUS_SUCCESS: break; - case MS_STATUS_INT_ERROR: + case MS_STATUS_INT_ERROR: break; - case MS_STATUS_ERROR: - default: + case MS_STATUS_ERROR: + default: continue; } @@ -173,38 +186,37 @@ int MS_CardInit(struct us_data *us) (((MemStickBootBlockPage0 *)PageBuffer0)->header.bNumberOfDataEntry != MS_BOOT_BLOCK_DATA_ENTRIES)) continue; - if (btBlk1st != MS_LB_NOT_USED) - { + if (btBlk1st != MS_LB_NOT_USED) { btBlk2nd = TmpBlock; break; } btBlk1st = TmpBlock; memcpy(PageBuffer1, PageBuffer0, MS_BYTES_PER_PAGE); - if (extdat.status1 & (MS_REG_ST1_DTER | MS_REG_ST1_EXER | MS_REG_ST1_FGER)) + if (extdat.status1 & + (MS_REG_ST1_DTER | MS_REG_ST1_EXER | MS_REG_ST1_FGER)) btBlk1stErred = 1; } - if (btBlk1st == MS_LB_NOT_USED) - { + if (btBlk1st == MS_LB_NOT_USED) { result = MS_STATUS_ERROR; goto exit; } - // write protect + /* write protect */ if ((extdat.status0 & MS_REG_ST0_WP) == MS_REG_ST0_WP_ON) MS_LibCtrlSet(us, MS_LIB_CTRL_WRPROTECT); result = MS_STATUS_ERROR; - // 1st Boot Block + /* 1st Boot Block */ if (btBlk1stErred == 0) - result = MS_LibProcessBootBlock(us, btBlk1st, PageBuffer1); // 1st - // 2nd Boot Block + result = MS_LibProcessBootBlock(us, btBlk1st, PageBuffer1); + /* 1st */ + /* 2nd Boot Block */ if (result && (btBlk2nd != MS_LB_NOT_USED)) result = MS_LibProcessBootBlock(us, btBlk2nd, PageBuffer0); - if (result) - { + if (result) { result = MS_STATUS_ERROR; goto exit; } @@ -214,8 +226,7 @@ int MS_CardInit(struct us_data *us) us->MS_Lib.Phy2LogMap[btBlk1st] = MS_LB_BOOT_BLOCK; - if (btBlk2nd != MS_LB_NOT_USED) - { + if (btBlk2nd != MS_LB_NOT_USED) { for (TmpBlock = btBlk1st + 1; TmpBlock < btBlk2nd; TmpBlock++) us->MS_Lib.Phy2LogMap[TmpBlock] = MS_LB_INITIAL_ERROR; us->MS_Lib.Phy2LogMap[btBlk2nd] = MS_LB_BOOT_BLOCK; @@ -225,18 +236,17 @@ int MS_CardInit(struct us_data *us) if (result) goto exit; - for (TmpBlock=MS_PHYSICAL_BLOCKS_PER_SEGMENT; TmpBlock<us->MS_Lib.NumberOfPhyBlock; TmpBlock+=MS_PHYSICAL_BLOCKS_PER_SEGMENT) - { - if (MS_CountFreeBlock(us, TmpBlock) == 0) - { + for (TmpBlock = MS_PHYSICAL_BLOCKS_PER_SEGMENT; + TmpBlock < us->MS_Lib.NumberOfPhyBlock; + TmpBlock += MS_PHYSICAL_BLOCKS_PER_SEGMENT) { + if (MS_CountFreeBlock(us, TmpBlock) == 0) { MS_LibCtrlSet(us, MS_LIB_CTRL_WRPROTECT); break; } } - // write - if (MS_LibAllocWriteBuf(us)) - { + /* write */ + if (MS_LibAllocWriteBuf(us)) { result = MS_NO_MEMORY_ERROR; goto exit; } @@ -245,46 +255,48 @@ int MS_CardInit(struct us_data *us) exit: kfree(PageBuffer1); - kfree(PageBuffer0); + kfree(PageBuffer0); - printk("MS_CardInit end\n"); + printk(KERN_INFO "MS_CardInit end\n"); return result; } -//----- MS_LibCheckDisableBlock() ------------------------------------ +/* + * MS_LibCheckDisableBlock() + */ int MS_LibCheckDisableBlock(struct us_data *us, WORD PhyBlock) { - PWORD PageBuf=NULL; - DWORD result=MS_STATUS_SUCCESS; - DWORD blk, index=0; + PWORD PageBuf = NULL; + DWORD result = MS_STATUS_SUCCESS; + DWORD blk, index = 0; MS_LibTypeExtdat extdat; - if (((PageBuf = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL)) == NULL)) - { + PageBuf = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL); + if (PageBuf == NULL) { result = MS_NO_MEMORY_ERROR; goto exit; } MS_ReaderReadPage(us, PhyBlock, 1, (DWORD *)PageBuf, &extdat); - do - { + do { blk = be16_to_cpu(PageBuf[index]); if (blk == MS_LB_NOT_USED) break; - if (blk == us->MS_Lib.Log2PhyMap[0]) - { + if (blk == us->MS_Lib.Log2PhyMap[0]) { result = MS_ERROR_FLASH_READ; break; } index++; - } while(1); + } while (1); exit: kfree(PageBuf); return result; } -//----- MS_LibFreeAllocatedArea() ------------------------------------ +/* + * MS_LibFreeAllocatedArea() + */ void MS_LibFreeAllocatedArea(struct us_data *us) { MS_LibFreeWriteBuf(us); @@ -302,26 +314,31 @@ void MS_LibFreeAllocatedArea(struct us_data *us) us->MS_Lib.NumberOfLogBlock = 0; } -//----- MS_LibFreeWriteBuf() ----------------------------------------- +/* + * MS_LibFreeWriteBuf() + */ void MS_LibFreeWriteBuf(struct us_data *us) { - us->MS_Lib.wrtblk = (WORD)-1; //set to -1 - MS_LibClearPageMap(us); // memset((fdoExt)->MS_Lib.pagemap, 0, sizeof((fdoExt)->MS_Lib.pagemap)) + us->MS_Lib.wrtblk = (WORD)-1; /* set to -1 */ - if (us->MS_Lib.blkpag) - { - kfree((BYTE *)(us->MS_Lib.blkpag)); // Arnold test ... + /* memset((fdoExt)->MS_Lib.pagemap, 0, + sizeof((fdoExt)->MS_Lib.pagemap)) */ + MS_LibClearPageMap(us); + + if (us->MS_Lib.blkpag) { + kfree((BYTE *)(us->MS_Lib.blkpag)); /* Arnold test ... */ us->MS_Lib.blkpag = NULL; } - if (us->MS_Lib.blkext) - { - kfree((BYTE *)(us->MS_Lib.blkext)); // Arnold test ... + if (us->MS_Lib.blkext) { + kfree((BYTE *)(us->MS_Lib.blkext)); /* Arnold test ... */ us->MS_Lib.blkext = NULL; } } -//----- MS_LibFreeLogicalMap() --------------------------------------- +/* + * MS_LibFreeLogicalMap() + */ int MS_LibFreeLogicalMap(struct us_data *us) { kfree(us->MS_Lib.Phy2LogMap); @@ -330,10 +347,12 @@ int MS_LibFreeLogicalMap(struct us_data *us) kfree(us->MS_Lib.Log2PhyMap); us->MS_Lib.Log2PhyMap = NULL; - return 0; + return 0; } -//----- MS_LibProcessBootBlock() ------------------------------------- +/* + * MS_LibProcessBootBlock() + */ int MS_LibProcessBootBlock(struct us_data *us, WORD PhyBlock, BYTE *PageData) { MemStickBootBlockSysEnt *SysEntry; @@ -343,144 +362,165 @@ int MS_LibProcessBootBlock(struct us_data *us, WORD PhyBlock, BYTE *PageData) BYTE *PageBuffer; MS_LibTypeExtdat ExtraData; - if ((PageBuffer = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL))==NULL) + + PageBuffer = kmalloc(MS_BYTES_PER_PAGE, GFP_KERNEL); + if (PageBuffer == NULL) return (DWORD)-1; result = (DWORD)-1; - SysInfo= &(((MemStickBootBlockPage0 *)PageData)->sysinf); + SysInfo = &(((MemStickBootBlockPage0 *)PageData)->sysinf); - if ((SysInfo->bMsClass != MS_SYSINF_MSCLASS_TYPE_1) || - (be16_to_cpu(SysInfo->wPageSize) != MS_SYSINF_PAGE_SIZE) || + if ((SysInfo->bMsClass != MS_SYSINF_MSCLASS_TYPE_1) || + (be16_to_cpu(SysInfo->wPageSize) != MS_SYSINF_PAGE_SIZE) || ((SysInfo->bSecuritySupport & MS_SYSINF_SECURITY) == MS_SYSINF_SECURITY_SUPPORT) || - (SysInfo->bReserved1 != MS_SYSINF_RESERVED1) || - (SysInfo->bReserved2 != MS_SYSINF_RESERVED2) || - (SysInfo->bFormatType!= MS_SYSINF_FORMAT_FAT) || + (SysInfo->bReserved1 != MS_SYSINF_RESERVED1) || + (SysInfo->bReserved2 != MS_SYSINF_RESERVED2) || + (SysInfo->bFormatType != MS_SYSINF_FORMAT_FAT) || (SysInfo->bUsage != MS_SYSINF_USAGE_GENERAL)) goto exit; - switch (us->MS_Lib.cardType = SysInfo->bCardType) - { - case MS_SYSINF_CARDTYPE_RDONLY: - MS_LibCtrlSet(us, MS_LIB_CTRL_RDONLY); - break; - case MS_SYSINF_CARDTYPE_RDWR: - MS_LibCtrlReset(us, MS_LIB_CTRL_RDONLY); - break; - case MS_SYSINF_CARDTYPE_HYBRID: - default: - goto exit; + switch (us->MS_Lib.cardType = SysInfo->bCardType) { + case MS_SYSINF_CARDTYPE_RDONLY: + MS_LibCtrlSet(us, MS_LIB_CTRL_RDONLY); + break; + case MS_SYSINF_CARDTYPE_RDWR: + MS_LibCtrlReset(us, MS_LIB_CTRL_RDONLY); + break; + case MS_SYSINF_CARDTYPE_HYBRID: + default: + goto exit; } us->MS_Lib.blockSize = be16_to_cpu(SysInfo->wBlockSize); us->MS_Lib.NumberOfPhyBlock = be16_to_cpu(SysInfo->wBlockNumber); - us->MS_Lib.NumberOfLogBlock = be16_to_cpu(SysInfo->wTotalBlockNumber) - 2; - us->MS_Lib.PagesPerBlock = us->MS_Lib.blockSize * SIZE_OF_KIRO / MS_BYTES_PER_PAGE; - us->MS_Lib.NumberOfSegment = us->MS_Lib.NumberOfPhyBlock / MS_PHYSICAL_BLOCKS_PER_SEGMENT; + us->MS_Lib.NumberOfLogBlock = be16_to_cpu(SysInfo->wTotalBlockNumber) + -2; + us->MS_Lib.PagesPerBlock = us->MS_Lib.blockSize * SIZE_OF_KIRO / + MS_BYTES_PER_PAGE; + us->MS_Lib.NumberOfSegment = us->MS_Lib.NumberOfPhyBlock / + MS_PHYSICAL_BLOCKS_PER_SEGMENT; us->MS_Model = be16_to_cpu(SysInfo->wMemorySize); - if (MS_LibAllocLogicalMap(us)) //Allocate to all number of logicalblock and physicalblock + /*Allocate to all number of logicalblock and physicalblock */ + if (MS_LibAllocLogicalMap(us)) goto exit; - MS_LibSetBootBlockMark(us, PhyBlock); //Mark the book block + /* Mark the book block */ + MS_LibSetBootBlockMark(us, PhyBlock); SysEntry = &(((MemStickBootBlockPage0 *)PageData)->sysent); - for (i=0; i<MS_NUMBER_OF_SYSTEM_ENTRY; i++) - { + for (i = 0; i < MS_NUMBER_OF_SYSTEM_ENTRY; i++) { DWORD EntryOffset, EntrySize; - if ((EntryOffset = be32_to_cpu(SysEntry->entry[i].dwStart)) == 0xffffff) + EntryOffset = be32_to_cpu(SysEntry->entry[i].dwStart); + + if (EntryOffset == 0xffffff) continue; + EntrySize = be32_to_cpu(SysEntry->entry[i].dwSize); - if ((EntrySize = be32_to_cpu(SysEntry->entry[i].dwSize)) == 0) + if (EntrySize == 0) continue; - if (EntryOffset + MS_BYTES_PER_PAGE + EntrySize > us->MS_Lib.blockSize * (DWORD)SIZE_OF_KIRO) + if (EntryOffset + MS_BYTES_PER_PAGE + EntrySize > + us->MS_Lib.blockSize * (DWORD)SIZE_OF_KIRO) continue; - if (i == 0) - { + if (i == 0) { BYTE PrevPageNumber = 0; WORD phyblk; - if (SysEntry->entry[i].bType != MS_SYSENT_TYPE_INVALID_BLOCK) + if (SysEntry->entry[i].bType != + MS_SYSENT_TYPE_INVALID_BLOCK) goto exit; - while (EntrySize > 0) - { - if ((PageNumber = (BYTE)(EntryOffset / MS_BYTES_PER_PAGE + 1)) != PrevPageNumber) - { - switch (MS_ReaderReadPage(us, PhyBlock, PageNumber, (DWORD *)PageBuffer, &ExtraData)) - { - case MS_STATUS_SUCCESS: - break; - case MS_STATUS_WRITE_PROTECT: - case MS_ERROR_FLASH_READ: - case MS_STATUS_ERROR: - default: - goto exit; + while (EntrySize > 0) { + + PageNumber = (BYTE)(EntryOffset / + MS_BYTES_PER_PAGE + 1); + if (PageNumber != PrevPageNumber) { + switch (MS_ReaderReadPage(us, PhyBlock, + PageNumber, (DWORD *)PageBuffer, + &ExtraData)) { + case MS_STATUS_SUCCESS: + break; + case MS_STATUS_WRITE_PROTECT: + case MS_ERROR_FLASH_READ: + case MS_STATUS_ERROR: + default: + goto exit; } PrevPageNumber = PageNumber; } - if ((phyblk = be16_to_cpu(*(WORD *)(PageBuffer + (EntryOffset % MS_BYTES_PER_PAGE)))) < 0x0fff) + phyblk = be16_to_cpu(*(WORD *)(PageBuffer + + (EntryOffset % MS_BYTES_PER_PAGE))); + if (phyblk < 0x0fff) MS_LibSetInitialErrorBlock(us, phyblk); EntryOffset += 2; EntrySize -= 2; } - } - else if (i == 1) - { // CIS/IDI + } else if (i == 1) { /* CIS/IDI */ MemStickBootBlockIDI *idi; if (SysEntry->entry[i].bType != MS_SYSENT_TYPE_CIS_IDI) goto exit; - switch (MS_ReaderReadPage(us, PhyBlock, (BYTE)(EntryOffset / MS_BYTES_PER_PAGE + 1), (DWORD *)PageBuffer, &ExtraData)) - { - case MS_STATUS_SUCCESS: - break; - case MS_STATUS_WRITE_PROTECT: - case MS_ERROR_FLASH_READ: - case MS_STATUS_ERROR: - default: - goto exit; + switch (MS_ReaderReadPage(us, PhyBlock, + (BYTE)(EntryOffset / MS_BYTES_PER_PAGE + 1), + (DWORD *)PageBuffer, &ExtraData)) { + case MS_STATUS_SUCCESS: + break; + case MS_STATUS_WRITE_PROTECT: + case MS_ERROR_FLASH_READ: + case MS_STATUS_ERROR: + default: + goto exit; } - idi = &((MemStickBootBlockCIS_IDI *)(PageBuffer + (EntryOffset % MS_BYTES_PER_PAGE)))->idi.idi; - if (le16_to_cpu(idi->wIDIgeneralConfiguration) != MS_IDI_GENERAL_CONF) + idi = &((MemStickBootBlockCIS_IDI *)(PageBuffer + + (EntryOffset % MS_BYTES_PER_PAGE)))->idi.idi; + if (le16_to_cpu(idi->wIDIgeneralConfiguration) != + MS_IDI_GENERAL_CONF) goto exit; - us->MS_Lib.BytesPerSector = le16_to_cpu(idi->wIDIbytesPerSector); + us->MS_Lib.BytesPerSector = + le16_to_cpu(idi->wIDIbytesPerSector); if (us->MS_Lib.BytesPerSector != MS_BYTES_PER_PAGE) goto exit; } - } // End for .. + } /* End for .. */ result = 0; exit: - if (result) MS_LibFreeLogicalMap(us); + if (result) + MS_LibFreeLogicalMap(us); + kfree(PageBuffer); result = 0; return result; } -//----- MS_LibAllocLogicalMap() -------------------------------------- +/* + * MS_LibAllocLogicalMap() + */ int MS_LibAllocLogicalMap(struct us_data *us) { DWORD i; - us->MS_Lib.Phy2LogMap = kmalloc(us->MS_Lib.NumberOfPhyBlock * sizeof(WORD), GFP_KERNEL); - us->MS_Lib.Log2PhyMap = kmalloc(us->MS_Lib.NumberOfLogBlock * sizeof(WORD), GFP_KERNEL); + us->MS_Lib.Phy2LogMap = kmalloc(us->MS_Lib.NumberOfPhyBlock * + sizeof(WORD), GFP_KERNEL); + us->MS_Lib.Log2PhyMap = kmalloc(us->MS_Lib.NumberOfLogBlock * + sizeof(WORD), GFP_KERNEL); - if ((us->MS_Lib.Phy2LogMap == NULL) || (us->MS_Lib.Log2PhyMap == NULL)) - { + if ((us->MS_Lib.Phy2LogMap == NULL) || + (us->MS_Lib.Log2PhyMap == NULL)) { MS_LibFreeLogicalMap(us); return (DWORD)-1; } @@ -489,128 +529,142 @@ int MS_LibAllocLogicalMap(struct us_data *us) us->MS_Lib.Phy2LogMap[i] = MS_LB_NOT_USED; for (i = 0; i < us->MS_Lib.NumberOfLogBlock; i++) - us->MS_Lib.Log2PhyMap[i] = MS_LB_NOT_USED; + us->MS_Lib.Log2PhyMap[i] = MS_LB_NOT_USED; return 0; } -//----- MS_LibSetBootBlockMark() ------------------------------------- +/* + * MS_LibSetBootBlockMark() + */ int MS_LibSetBootBlockMark(struct us_data *us, WORD phyblk) { - return MS_LibSetLogicalBlockMark(us, phyblk, MS_LB_BOOT_BLOCK); + return MS_LibSetLogicalBlockMark(us, phyblk, MS_LB_BOOT_BLOCK); } -//----- MS_LibSetLogicalBlockMark() ---------------------------------- +/* + * MS_LibSetLogicalBlockMark() + */ int MS_LibSetLogicalBlockMark(struct us_data *us, WORD phyblk, WORD mark) { - if (phyblk >= us->MS_Lib.NumberOfPhyBlock) - return (DWORD)-1; + if (phyblk >= us->MS_Lib.NumberOfPhyBlock) + return (DWORD)-1; - us->MS_Lib.Phy2LogMap[phyblk] = mark; + us->MS_Lib.Phy2LogMap[phyblk] = mark; - return 0; + return 0; } -//----- MS_LibSetInitialErrorBlock() --------------------------------- +/* + * MS_LibSetInitialErrorBlock() + */ int MS_LibSetInitialErrorBlock(struct us_data *us, WORD phyblk) { - return MS_LibSetLogicalBlockMark(us, phyblk, MS_LB_INITIAL_ERROR); + return MS_LibSetLogicalBlockMark(us, phyblk, MS_LB_INITIAL_ERROR); } -//----- MS_LibScanLogicalBlockNumber() ------------------------------- +/* + * MS_LibScanLogicalBlockNumber() + */ int MS_LibScanLogicalBlockNumber(struct us_data *us, WORD btBlk1st) { WORD PhyBlock, newblk, i; WORD LogStart, LogEnde; MS_LibTypeExtdat extdat; BYTE buf[0x200]; - DWORD count=0, index=0; + DWORD count = 0, index = 0; - for (PhyBlock = 0; PhyBlock < us->MS_Lib.NumberOfPhyBlock;) - { + for (PhyBlock = 0; PhyBlock < us->MS_Lib.NumberOfPhyBlock;) { MS_LibPhy2LogRange(PhyBlock, &LogStart, &LogEnde); - for (i=0; i<MS_PHYSICAL_BLOCKS_PER_SEGMENT; i++, PhyBlock++) - { - switch (MS_LibConv2Logical(us, PhyBlock)) - { - case MS_STATUS_ERROR: - continue; - default: - break; + for (i = 0; i < MS_PHYSICAL_BLOCKS_PER_SEGMENT; + i++, PhyBlock++) { + switch (MS_LibConv2Logical(us, PhyBlock)) { + case MS_STATUS_ERROR: + continue; + default: + break; } - if (count == PhyBlock) - { - MS_LibReadExtraBlock(us, PhyBlock, 0, 0x80, &buf); + if (count == PhyBlock) { + MS_LibReadExtraBlock(us, PhyBlock, + 0, 0x80, &buf); count += 0x80; } index = (PhyBlock % 0x80) * 4; extdat.ovrflg = buf[index]; extdat.mngflg = buf[index+1]; - extdat.logadr = MemStickLogAddr(buf[index+2], buf[index+3]); + extdat.logadr = MemStickLogAddr(buf[index+2], + buf[index+3]); - if ((extdat.ovrflg & MS_REG_OVR_BKST) != MS_REG_OVR_BKST_OK) - { + if ((extdat.ovrflg & MS_REG_OVR_BKST) != + MS_REG_OVR_BKST_OK) { MS_LibSetAcquiredErrorBlock(us, PhyBlock); continue; } - if ((extdat.mngflg & MS_REG_MNG_ATFLG) == MS_REG_MNG_ATFLG_ATTBL) - { + if ((extdat.mngflg & MS_REG_MNG_ATFLG) == + MS_REG_MNG_ATFLG_ATTBL) { MS_LibErasePhyBlock(us, PhyBlock); continue; } - if (extdat.logadr != MS_LB_NOT_USED) - { - if ((extdat.logadr < LogStart) || (LogEnde <= extdat.logadr)) - { + if (extdat.logadr != MS_LB_NOT_USED) { + if ((extdat.logadr < LogStart) || + (LogEnde <= extdat.logadr)) { MS_LibErasePhyBlock(us, PhyBlock); continue; } - if ((newblk = MS_LibConv2Physical(us, extdat.logadr)) != MS_LB_NOT_USED) - { - if (extdat.logadr==0) - { - MS_LibSetLogicalPair(us, extdat.logadr, PhyBlock); - if ( MS_LibCheckDisableBlock(us, btBlk1st) ) - { - MS_LibSetLogicalPair(us, extdat.logadr, newblk); + newblk = MS_LibConv2Physical(us, extdat.logadr); + + if (newblk != MS_LB_NOT_USED) { + if (extdat.logadr == 0) { + MS_LibSetLogicalPair(us, + extdat.logadr, + PhyBlock); + if (MS_LibCheckDisableBlock(us, + btBlk1st)) { + MS_LibSetLogicalPair(us, + extdat.logadr, newblk); continue; } } MS_LibReadExtra(us, newblk, 0, &extdat); - if ((extdat.ovrflg & MS_REG_OVR_UDST) == MS_REG_OVR_UDST_UPDATING) - { - MS_LibErasePhyBlock(us, PhyBlock); + if ((extdat.ovrflg & MS_REG_OVR_UDST) == + MS_REG_OVR_UDST_UPDATING) { + MS_LibErasePhyBlock(us, + PhyBlock); continue; - } - else + } else { MS_LibErasePhyBlock(us, newblk); + } } - MS_LibSetLogicalPair(us, extdat.logadr, PhyBlock); + MS_LibSetLogicalPair(us, extdat.logadr, + PhyBlock); } } - } //End for ... + } /* End for ... */ return MS_STATUS_SUCCESS; } -//----- MS_LibAllocWriteBuf() ---------------------------------------- +/* + * MS_LibAllocWriteBuf() + */ int MS_LibAllocWriteBuf(struct us_data *us) { us->MS_Lib.wrtblk = (WORD)-1; - us->MS_Lib.blkpag = kmalloc(us->MS_Lib.PagesPerBlock * us->MS_Lib.BytesPerSector, GFP_KERNEL); - us->MS_Lib.blkext = kmalloc(us->MS_Lib.PagesPerBlock * sizeof(MS_LibTypeExtdat), GFP_KERNEL); + us->MS_Lib.blkpag = kmalloc(us->MS_Lib.PagesPerBlock * + us->MS_Lib.BytesPerSector, GFP_KERNEL); + us->MS_Lib.blkext = kmalloc(us->MS_Lib.PagesPerBlock * + sizeof(MS_LibTypeExtdat), GFP_KERNEL); - if ((us->MS_Lib.blkpag == NULL) || (us->MS_Lib.blkext == NULL)) - { + if ((us->MS_Lib.blkpag == NULL) || (us->MS_Lib.blkext == NULL)) { MS_LibFreeWriteBuf(us); return (DWORD)-1; } @@ -620,7 +674,9 @@ int MS_LibAllocWriteBuf(struct us_data *us) return 0; } -//----- MS_LibClearWriteBuf() ---------------------------------------- +/* + * MS_LibClearWriteBuf() + */ void MS_LibClearWriteBuf(struct us_data *us) { int i; @@ -629,12 +685,11 @@ void MS_LibClearWriteBuf(struct us_data *us) MS_LibClearPageMap(us); if (us->MS_Lib.blkpag) - memset(us->MS_Lib.blkpag, 0xff, us->MS_Lib.PagesPerBlock * us->MS_Lib.BytesPerSector); + memset(us->MS_Lib.blkpag, 0xff, + us->MS_Lib.PagesPerBlock * us->MS_Lib.BytesPerSector); - if (us->MS_Lib.blkext) - { - for (i = 0; i < us->MS_Lib.PagesPerBlock; i++) - { + if (us->MS_Lib.blkext) { + for (i = 0; i < us->MS_Lib.PagesPerBlock; i++) { us->MS_Lib.blkext[i].status1 = MS_REG_ST1_DEFAULT; us->MS_Lib.blkext[i].ovrflg = MS_REG_OVR_DEFAULT; us->MS_Lib.blkext[i].mngflg = MS_REG_MNG_DEFAULT; @@ -643,32 +698,36 @@ void MS_LibClearWriteBuf(struct us_data *us) } } -//----- MS_LibPhy2LogRange() ----------------------------------------- +/* + * MS_LibPhy2LogRange() + */ void MS_LibPhy2LogRange(WORD PhyBlock, WORD *LogStart, WORD *LogEnde) { PhyBlock /= MS_PHYSICAL_BLOCKS_PER_SEGMENT; - if (PhyBlock) - { - *LogStart = MS_LOGICAL_BLOCKS_IN_1ST_SEGMENT + (PhyBlock - 1) * MS_LOGICAL_BLOCKS_PER_SEGMENT;//496 - *LogEnde = *LogStart + MS_LOGICAL_BLOCKS_PER_SEGMENT;//496 - } - else - { + if (PhyBlock) { + *LogStart = MS_LOGICAL_BLOCKS_IN_1ST_SEGMENT + + (PhyBlock - 1) * MS_LOGICAL_BLOCKS_PER_SEGMENT;/*496*/ + *LogEnde = *LogStart + MS_LOGICAL_BLOCKS_PER_SEGMENT;/*496*/ + } else { *LogStart = 0; - *LogEnde = MS_LOGICAL_BLOCKS_IN_1ST_SEGMENT;//494 + *LogEnde = MS_LOGICAL_BLOCKS_IN_1ST_SEGMENT;/*494*/ } } -//----- MS_LibReadExtraBlock() -------------------------------------------- -int MS_LibReadExtraBlock(struct us_data *us, DWORD PhyBlock, BYTE PageNum, BYTE blen, void *buf) +/* + * MS_LibReadExtraBlock() + */ +int MS_LibReadExtraBlock(struct us_data *us, DWORD PhyBlock, + BYTE PageNum, BYTE blen, void *buf) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; - //printk("MS_LibReadExtraBlock --- PhyBlock = %x, PageNum = %x, blen = %x\n", PhyBlock, PageNum, blen); + /* printk("MS_LibReadExtraBlock --- PhyBlock = %x, + PageNum = %x, blen = %x\n", PhyBlock, PageNum, blen); */ - // Read Extra Data + /* Read Extra Data */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = 0x4 * blen; @@ -688,14 +747,18 @@ int MS_LibReadExtraBlock(struct us_data *us, DWORD PhyBlock, BYTE PageNum, BYTE return USB_STOR_TRANSPORT_GOOD; } -//----- MS_LibReadExtra() -------------------------------------------- -int MS_LibReadExtra(struct us_data *us, DWORD PhyBlock, BYTE PageNum, MS_LibTypeExtdat *ExtraDat) +/* + * MS_LibReadExtra() + */ +int MS_LibReadExtra(struct us_data *us, DWORD PhyBlock, + BYTE PageNum, MS_LibTypeExtdat *ExtraDat) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; BYTE ExtBuf[4]; - //printk("MS_LibReadExtra --- PhyBlock = %x, PageNum = %x\n", PhyBlock, PageNum); + /* printk("MS_LibReadExtra --- PhyBlock = %x, PageNum = %x\n" + , PhyBlock, PageNum); */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = 0x4; @@ -707,23 +770,25 @@ int MS_LibReadExtra(struct us_data *us, DWORD PhyBlock, BYTE PageNum, MS_LibType bcb->CDB[3] = (BYTE)(PhyBlock>>8); bcb->CDB[2] = (BYTE)(PhyBlock>>16); bcb->CDB[6] = 0x01; - + result = ENE_SendScsiCmd(us, FDIR_READ, &ExtBuf, 0); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; ExtraDat->reserved = 0; - ExtraDat->intr = 0x80; // Not yet, waiting for fireware support - ExtraDat->status0 = 0x10; // Not yet, waiting for fireware support - ExtraDat->status1 = 0x00; // Not yet, waiting for fireware support + ExtraDat->intr = 0x80; /* Not yet, waiting for fireware support */ + ExtraDat->status0 = 0x10; /* Not yet, waiting for fireware support */ + ExtraDat->status1 = 0x00; /* Not yet, waiting for fireware support */ ExtraDat->ovrflg = ExtBuf[0]; ExtraDat->mngflg = ExtBuf[1]; ExtraDat->logadr = MemStickLogAddr(ExtBuf[2], ExtBuf[3]); - + return USB_STOR_TRANSPORT_GOOD; } -//----- MS_LibSetAcquiredErrorBlock() -------------------------------- +/* + * MS_LibSetAcquiredErrorBlock() + */ int MS_LibSetAcquiredErrorBlock(struct us_data *us, WORD phyblk) { WORD log; @@ -731,7 +796,9 @@ int MS_LibSetAcquiredErrorBlock(struct us_data *us, WORD phyblk) if (phyblk >= us->MS_Lib.NumberOfPhyBlock) return (DWORD)-1; - if ((log = us->MS_Lib.Phy2LogMap[phyblk]) < us->MS_Lib.NumberOfLogBlock) + log = us->MS_Lib.Phy2LogMap[phyblk]; + + if (log < us->MS_Lib.NumberOfLogBlock) us->MS_Lib.Log2PhyMap[log] = MS_LB_NOT_USED; if (us->MS_Lib.Phy2LogMap[phyblk] != MS_LB_INITIAL_ERROR) @@ -740,7 +807,9 @@ int MS_LibSetAcquiredErrorBlock(struct us_data *us, WORD phyblk) return 0; } -//----- MS_LibErasePhyBlock() ---------------------------------------- +/* + * MS_LibErasePhyBlock() + */ int MS_LibErasePhyBlock(struct us_data *us, WORD phyblk) { WORD log; @@ -748,27 +817,27 @@ int MS_LibErasePhyBlock(struct us_data *us, WORD phyblk) if (phyblk >= us->MS_Lib.NumberOfPhyBlock) return MS_STATUS_ERROR; - if ((log = us->MS_Lib.Phy2LogMap[phyblk]) < us->MS_Lib.NumberOfLogBlock) + log = us->MS_Lib.Phy2LogMap[phyblk]; + + if (log < us->MS_Lib.NumberOfLogBlock) us->MS_Lib.Log2PhyMap[log] = MS_LB_NOT_USED; us->MS_Lib.Phy2LogMap[phyblk] = MS_LB_NOT_USED; - if (MS_LibIsWritable(us)) - { - switch (MS_ReaderEraseBlock(us, phyblk)) - { - case MS_STATUS_SUCCESS: - us->MS_Lib.Phy2LogMap[phyblk] = MS_LB_NOT_USED_ERASED; - return MS_STATUS_SUCCESS; - case MS_ERROR_FLASH_ERASE: - case MS_STATUS_INT_ERROR : - MS_LibErrorPhyBlock(us, phyblk); - return MS_ERROR_FLASH_ERASE; - case MS_STATUS_ERROR: - default: - MS_LibCtrlSet(us, MS_LIB_CTRL_RDONLY); - MS_LibSetAcquiredErrorBlock(us, phyblk); - return MS_STATUS_ERROR; + if (MS_LibIsWritable(us)) { + switch (MS_ReaderEraseBlock(us, phyblk)) { + case MS_STATUS_SUCCESS: + us->MS_Lib.Phy2LogMap[phyblk] = MS_LB_NOT_USED_ERASED; + return MS_STATUS_SUCCESS; + case MS_ERROR_FLASH_ERASE: + case MS_STATUS_INT_ERROR: + MS_LibErrorPhyBlock(us, phyblk); + return MS_ERROR_FLASH_ERASE; + case MS_STATUS_ERROR: + default: + MS_LibCtrlSet(us, MS_LIB_CTRL_RDONLY); + MS_LibSetAcquiredErrorBlock(us, phyblk); + return MS_STATUS_ERROR; } } @@ -777,28 +846,35 @@ int MS_LibErasePhyBlock(struct us_data *us, WORD phyblk) return MS_STATUS_SUCCESS; } -//----- MS_LibErrorPhyBlock() ---------------------------------------- +/* + * MS_LibErrorPhyBlock() + */ int MS_LibErrorPhyBlock(struct us_data *us, WORD phyblk) { - if (phyblk >= us->MS_Lib.NumberOfPhyBlock) - return MS_STATUS_ERROR; + if (phyblk >= us->MS_Lib.NumberOfPhyBlock) + return MS_STATUS_ERROR; - MS_LibSetAcquiredErrorBlock(us, phyblk); + MS_LibSetAcquiredErrorBlock(us, phyblk); - if (MS_LibIsWritable(us)) - return MS_LibOverwriteExtra(us, phyblk, 0, (BYTE)(~MS_REG_OVR_BKST)); + if (MS_LibIsWritable(us)) + return MS_LibOverwriteExtra(us, phyblk, 0, + (BYTE)(~MS_REG_OVR_BKST & BYTE_MASK)); - return MS_STATUS_SUCCESS; + return MS_STATUS_SUCCESS; } -//----- MS_LibOverwriteExtra() --------------------------------------- -int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, BYTE OverwriteFlag) +/* + * MS_LibOverwriteExtra() + */ +int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, + BYTE PageNum, BYTE OverwriteFlag) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; - //printk("MS --- MS_LibOverwriteExtra, PhyBlockAddr = %x, PageNum = %x\n", PhyBlockAddr, PageNum); + /* printk("MS --- MS_LibOverwriteExtra, \ + PhyBlockAddr = %x, PageNum = %x\n", PhyBlockAddr, PageNum); */ result = ENE_LoadBinCode(us, MS_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; @@ -817,7 +893,7 @@ int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, B bcb->CDB[7] = 0xFF; bcb->CDB[8] = 0xFF; bcb->CDB[9] = 0xFF; - + result = ENE_SendScsiCmd(us, FDIR_READ, NULL, 0); if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; @@ -825,13 +901,16 @@ int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, B return USB_STOR_TRANSPORT_GOOD; } -//----- MS_LibForceSetLogicalPair() ---------------------------------- +/* + * MS_LibForceSetLogicalPair() + */ int MS_LibForceSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk) { if (logblk == MS_LB_NOT_USED) return 0; - if ((logblk >= us->MS_Lib.NumberOfLogBlock) || (phyblk >= us->MS_Lib.NumberOfPhyBlock)) + if ((logblk >= us->MS_Lib.NumberOfLogBlock) || + (phyblk >= us->MS_Lib.NumberOfPhyBlock)) return (DWORD)-1; us->MS_Lib.Phy2LogMap[phyblk] = logblk; @@ -840,10 +919,13 @@ int MS_LibForceSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk) return 0; } -//----- MS_LibSetLogicalPair() --------------------------------------- +/* + * MS_LibSetLogicalPair() + */ int MS_LibSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk) { - if ((logblk >= us->MS_Lib.NumberOfLogBlock) || (phyblk >= us->MS_Lib.NumberOfPhyBlock)) + if ((logblk >= us->MS_Lib.NumberOfLogBlock) || + (phyblk >= us->MS_Lib.NumberOfPhyBlock)) return (DWORD)-1; us->MS_Lib.Phy2LogMap[phyblk] = logblk; @@ -852,28 +934,30 @@ int MS_LibSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk) return 0; } -//----- MS_CountFreeBlock() ------------------------------------------ +/* + * MS_CountFreeBlock() + */ int MS_CountFreeBlock(struct us_data *us, WORD PhyBlock) { DWORD Ende, Count; Ende = PhyBlock + MS_PHYSICAL_BLOCKS_PER_SEGMENT; - for (Count = 0; PhyBlock < Ende; PhyBlock++) - { - switch (us->MS_Lib.Phy2LogMap[PhyBlock]) - { - case MS_LB_NOT_USED: - case MS_LB_NOT_USED_ERASED: - Count++; - default: - break; + for (Count = 0; PhyBlock < Ende; PhyBlock++) { + switch (us->MS_Lib.Phy2LogMap[PhyBlock]) { + case MS_LB_NOT_USED: + case MS_LB_NOT_USED_ERASED: + Count++; + default: + break; } } return Count; } -//----- MS_LibSearchBlockFromPhysical() ------------------------------ +/* + * MS_LibSearchBlockFromPhysical() + */ int MS_LibSearchBlockFromPhysical(struct us_data *us, WORD phyblk) { WORD Newblk; @@ -883,70 +967,68 @@ int MS_LibSearchBlockFromPhysical(struct us_data *us, WORD phyblk) if (phyblk >= us->MS_Lib.NumberOfPhyBlock) return MS_LB_ERROR; - for (blk = phyblk + 1; blk != phyblk; blk++) - { + for (blk = phyblk + 1; blk != phyblk; blk++) { if ((blk & MS_PHYSICAL_BLOCKS_PER_SEGMENT_MASK) == 0) blk -= MS_PHYSICAL_BLOCKS_PER_SEGMENT; Newblk = us->MS_Lib.Phy2LogMap[blk]; if (us->MS_Lib.Phy2LogMap[blk] == MS_LB_NOT_USED_ERASED) return blk; - else if (us->MS_Lib.Phy2LogMap[blk] == MS_LB_NOT_USED) - { - switch (MS_LibReadExtra(us, blk, 0, &extdat)) - { - case MS_STATUS_SUCCESS : - case MS_STATUS_SUCCESS_WITH_ECC: - break; - case MS_NOCARD_ERROR: - return MS_NOCARD_ERROR; - case MS_STATUS_INT_ERROR: - return MS_LB_ERROR; - case MS_ERROR_FLASH_READ: - default: - MS_LibSetAcquiredErrorBlock(us, blk); // MS_LibErrorPhyBlock(fdoExt, blk); - continue; - } // End switch + else if (us->MS_Lib.Phy2LogMap[blk] == MS_LB_NOT_USED) { + switch (MS_LibReadExtra(us, blk, 0, &extdat)) { + case MS_STATUS_SUCCESS: + case MS_STATUS_SUCCESS_WITH_ECC: + break; + case MS_NOCARD_ERROR: + return MS_NOCARD_ERROR; + case MS_STATUS_INT_ERROR: + return MS_LB_ERROR; + case MS_ERROR_FLASH_READ: + default: + MS_LibSetAcquiredErrorBlock(us, blk); + /* MS_LibErrorPhyBlock(fdoExt, blk); */ + continue; + } /* End switch */ - if ((extdat.ovrflg & MS_REG_OVR_BKST) != MS_REG_OVR_BKST_OK) - { + if ((extdat.ovrflg & MS_REG_OVR_BKST) != + MS_REG_OVR_BKST_OK) { MS_LibSetAcquiredErrorBlock(us, blk); continue; } - switch (MS_LibErasePhyBlock(us, blk)) - { - case MS_STATUS_SUCCESS: - return blk; - case MS_STATUS_ERROR: - return MS_LB_ERROR; - case MS_ERROR_FLASH_ERASE: - default: - MS_LibErrorPhyBlock(us, blk); - break; + switch (MS_LibErasePhyBlock(us, blk)) { + case MS_STATUS_SUCCESS: + return blk; + case MS_STATUS_ERROR: + return MS_LB_ERROR; + case MS_ERROR_FLASH_ERASE: + default: + MS_LibErrorPhyBlock(us, blk); + break; } } - } // End for + } /* End for */ return MS_LB_ERROR; } -//----- MS_LibSearchBlockFromLogical() ------------------------------- +/* + * MS_LibSearchBlockFromLogical() + */ int MS_LibSearchBlockFromLogical(struct us_data *us, WORD logblk) { WORD phyblk; - if ((phyblk=MS_LibConv2Physical(us, logblk)) >= MS_LB_ERROR) - { + phyblk = MS_LibConv2Physical(us, logblk); + if (phyblk >= MS_LB_ERROR) { if (logblk >= us->MS_Lib.NumberOfLogBlock) return MS_LB_ERROR; - phyblk = (logblk + MS_NUMBER_OF_BOOT_BLOCK) / MS_LOGICAL_BLOCKS_PER_SEGMENT; + phyblk = (logblk + MS_NUMBER_OF_BOOT_BLOCK) / + MS_LOGICAL_BLOCKS_PER_SEGMENT; phyblk *= MS_PHYSICAL_BLOCKS_PER_SEGMENT; phyblk += MS_PHYSICAL_BLOCKS_PER_SEGMENT - 1; } return MS_LibSearchBlockFromPhysical(us, phyblk); } - - diff --git a/drivers/staging/keucr/ms.h b/drivers/staging/keucr/ms.h index 4509db79298a..a3da4be3f556 100644 --- a/drivers/staging/keucr/ms.h +++ b/drivers/staging/keucr/ms.h @@ -4,41 +4,41 @@ #include <linux/blkdev.h> #include "common.h" -// MemoryStick Register -// Status Register 0 -#define MS_REG_ST0_MB 0x80 // media busy -#define MS_REG_ST0_FB0 0x40 // flush busy 0 -#define MS_REG_ST0_BE 0x20 // buffer empty -#define MS_REG_ST0_BF 0x10 // buffer full -#define MS_REG_ST0_SL 0x02 // sleep -#define MS_REG_ST0_WP 0x01 // write protected +/* MemoryStick Register */ +/* Status Register 0 */ +#define MS_REG_ST0_MB 0x80 /* media busy */ +#define MS_REG_ST0_FB0 0x40 /* flush busy 0 */ +#define MS_REG_ST0_BE 0x20 /* buffer empty */ +#define MS_REG_ST0_BF 0x10 /* buffer full */ +#define MS_REG_ST0_SL 0x02 /* sleep */ +#define MS_REG_ST0_WP 0x01 /* write protected */ #define MS_REG_ST0_WP_ON MS_REG_ST0_WP #define MS_REG_ST0_WP_OFF 0x00 -// Status Register 1 -#define MS_REG_ST1_MB 0x80 // media busy -#define MS_REG_ST1_FB1 0x40 // flush busy 1 -#define MS_REG_ST1_DTER 0x20 // error on data(corrected) -#define MS_REG_ST1_UCDT 0x10 // unable to correct data -#define MS_REG_ST1_EXER 0x08 // error on extra(corrected) -#define MS_REG_ST1_UCEX 0x04 // unable to correct extra -#define MS_REG_ST1_FGER 0x02 // error on overwrite flag(corrected) -#define MS_REG_ST1_UCFG 0x01 // unable to correct overwrite flag -#define MS_REG_ST1_DEFAULT (MS_REG_ST1_MB | MS_REG_ST1_FB1 | \ - MS_REG_ST1_DTER | MS_REG_ST1_UCDT | \ - MS_REG_ST1_EXER | MS_REG_ST1_UCEX | \ - MS_REG_ST1_FGER | MS_REG_ST1_UCFG) - -// System Parameter -#define MS_REG_SYSPAR_BAMD 0x80 // block address mode -#define MS_REG_SYSPAR_BAND_LINEAR MS_REG_SYSPAR_BAMD // linear mode -#define MS_REG_SYSPAR_BAND_CHIP 0x00 // chip mode -#define MS_REG_SYSPAR_ATEN 0x40 // attribute ROM enable -#define MS_REG_SYSPAR_ATEN_ENABLE MS_REG_SYSPAR_ATEN // enable -#define MS_REG_SYSPAR_ATEN_DISABLE 0x00 // disable +/* Status Register 1 */ +#define MS_REG_ST1_MB 0x80 /* media busy */ +#define MS_REG_ST1_FB1 0x40 /* flush busy 1 */ +#define MS_REG_ST1_DTER 0x20 /* error on data(corrected) */ +#define MS_REG_ST1_UCDT 0x10 /* unable to correct data */ +#define MS_REG_ST1_EXER 0x08 /* error on extra(corrected) */ +#define MS_REG_ST1_UCEX 0x04 /* unable to correct extra */ +#define MS_REG_ST1_FGER 0x02 /* error on overwrite flag(corrected) */ +#define MS_REG_ST1_UCFG 0x01 /* unable to correct overwrite flag */ +#define MS_REG_ST1_DEFAULT (MS_REG_ST1_MB | MS_REG_ST1_FB1 | \ + MS_REG_ST1_DTER | MS_REG_ST1_UCDT | \ + MS_REG_ST1_EXER | MS_REG_ST1_UCEX | \ + MS_REG_ST1_FGER | MS_REG_ST1_UCFG) + +/* System Parameter */ +#define MS_REG_SYSPAR_BAMD 0x80 /* block address mode */ +#define MS_REG_SYSPAR_BAND_LINEAR MS_REG_SYSPAR_BAMD /* linear mode */ +#define MS_REG_SYSPAR_BAND_CHIP 0x00 /* chip mode */ +#define MS_REG_SYSPAR_ATEN 0x40 /* attribute ROM enable */ +#define MS_REG_SYSPAR_ATEN_ENABLE MS_REG_SYSPAR_ATEN /* enable */ +#define MS_REG_SYSPAR_ATEN_DISABLE 0x00 /* disable */ #define MS_REG_SYSPAR_RESERVED 0x2f -// Command Parameter +/* Command Parameter */ #define MS_REG_CMDPAR_CP2 0x80 #define MS_REG_CMDPAR_CP1 0x40 #define MS_REG_CMDPAR_CP0 0x20 @@ -48,44 +48,44 @@ #define MS_REG_CMDPAR_OVERWRITE MS_REG_CMDPAR_CP2 #define MS_REG_CMDPAR_RESERVED 0x1f -// Overwrite Area -#define MS_REG_OVR_BKST 0x80 // block status -#define MS_REG_OVR_BKST_OK MS_REG_OVR_BKST // OK -#define MS_REG_OVR_BKST_NG 0x00 // NG -#define MS_REG_OVR_PGST0 0x40 // page status +/* Overwrite Area */ +#define MS_REG_OVR_BKST 0x80 /* block status */ +#define MS_REG_OVR_BKST_OK MS_REG_OVR_BKST /* OK */ +#define MS_REG_OVR_BKST_NG 0x00 /* NG */ +#define MS_REG_OVR_PGST0 0x40 /* page status */ #define MS_REG_OVR_PGST1 0x20 -#define MS_REG_OVR_PGST_MASK (MS_REG_OVR_PGST0 | MS_REG_OVR_PGST1) -#define MS_REG_OVR_PGST_OK (MS_REG_OVR_PGST0 | MS_REG_OVR_PGST1) // OK -#define MS_REG_OVR_PGST_NG MS_REG_OVR_PGST1 // NG -#define MS_REG_OVR_PGST_DATA_ERROR 0x00 // data error -#define MS_REG_OVR_UDST 0x10 // update status -#define MS_REG_OVR_UDST_UPDATING 0x00 // updating +#define MS_REG_OVR_PGST_MASK (MS_REG_OVR_PGST0 | MS_REG_OVR_PGST1) +#define MS_REG_OVR_PGST_OK (MS_REG_OVR_PGST0 | MS_REG_OVR_PGST1) /* OK */ +#define MS_REG_OVR_PGST_NG MS_REG_OVR_PGST1 /* NG */ +#define MS_REG_OVR_PGST_DATA_ERROR 0x00 /* data error */ +#define MS_REG_OVR_UDST 0x10 /* update status */ +#define MS_REG_OVR_UDST_UPDATING 0x00 /* updating */ #define MS_REG_OVR_UDST_NO_UPDATE MS_REG_OVR_UDST #define MS_REG_OVR_RESERVED 0x08 #define MS_REG_OVR_DEFAULT (MS_REG_OVR_BKST_OK | \ - MS_REG_OVR_PGST_OK | \ - MS_REG_OVR_UDST_NO_UPDATE | \ - MS_REG_OVR_RESERVED) -// Management Flag -#define MS_REG_MNG_SCMS0 0x20 // serial copy management system + MS_REG_OVR_PGST_OK | \ + MS_REG_OVR_UDST_NO_UPDATE | \ + MS_REG_OVR_RESERVED) +/* Management Flag */ +#define MS_REG_MNG_SCMS0 0x20 /* serial copy management system */ #define MS_REG_MNG_SCMS1 0x10 -#define MS_REG_MNG_SCMS_MASK (MS_REG_MNG_SCMS0 | MS_REG_MNG_SCMS1) -#define MS_REG_MNG_SCMS_COPY_OK (MS_REG_MNG_SCMS0 | MS_REG_MNG_SCMS1) +#define MS_REG_MNG_SCMS_MASK (MS_REG_MNG_SCMS0 | MS_REG_MNG_SCMS1) +#define MS_REG_MNG_SCMS_COPY_OK (MS_REG_MNG_SCMS0 | MS_REG_MNG_SCMS1) #define MS_REG_MNG_SCMS_ONE_COPY MS_REG_MNG_SCMS1 #define MS_REG_MNG_SCMS_NO_COPY 0x00 -#define MS_REG_MNG_ATFLG 0x08 // address transfer table flag -#define MS_REG_MNG_ATFLG_OTHER MS_REG_MNG_ATFLG // other -#define MS_REG_MNG_ATFLG_ATTBL 0x00 // address transfer table -#define MS_REG_MNG_SYSFLG 0x04 // system flag -#define MS_REG_MNG_SYSFLG_USER MS_REG_MNG_SYSFLG // user block -#define MS_REG_MNG_SYSFLG_BOOT 0x00 // system block +#define MS_REG_MNG_ATFLG 0x08 /* address transfer table flag */ +#define MS_REG_MNG_ATFLG_OTHER MS_REG_MNG_ATFLG /* other */ +#define MS_REG_MNG_ATFLG_ATTBL 0x00 /* address transfer table */ +#define MS_REG_MNG_SYSFLG 0x04 /* system flag */ +#define MS_REG_MNG_SYSFLG_USER MS_REG_MNG_SYSFLG /* user block */ +#define MS_REG_MNG_SYSFLG_BOOT 0x00 /* system block */ #define MS_REG_MNG_RESERVED 0xc3 #define MS_REG_MNG_DEFAULT (MS_REG_MNG_SCMS_COPY_OK | \ MS_REG_MNG_ATFLG_OTHER | \ MS_REG_MNG_SYSFLG_USER | \ MS_REG_MNG_RESERVED) -// Error codes +/* Error codes */ #define MS_STATUS_SUCCESS 0x0000 #define MS_ERROR_OUT_OF_SPACE 0x0103 #define MS_STATUS_WRITE_PROTECT 0x0106 @@ -110,29 +110,41 @@ #define MS_LB_ACQUIRED_ERROR 0xfff4 #define MS_LB_NOT_USED_ERASED 0xfff5 -#define MS_LibConv2Physical(pdx, LogBlock) (((LogBlock) >= (pdx)->MS_Lib.NumberOfLogBlock) ? MS_STATUS_ERROR : (pdx)->MS_Lib.Log2PhyMap[LogBlock]) -#define MS_LibConv2Logical(pdx, PhyBlock) (((PhyBlock) >= (pdx)->MS_Lib.NumberOfPhyBlock) ? MS_STATUS_ERROR : (pdx)->MS_Lib.Phy2LogMap[PhyBlock]) //琩phy->log table +#define MS_LibConv2Physical(pdx, LogBlock) \ + (((LogBlock) >= (pdx)->MS_Lib.NumberOfLogBlock) ? \ + MS_STATUS_ERROR : (pdx)->MS_Lib.Log2PhyMap[LogBlock]) +#define MS_LibConv2Logical(pdx, PhyBlock) \ + (((PhyBlock) >= (pdx)->MS_Lib.NumberOfPhyBlock) ? \ + MS_STATUS_ERROR : (pdx)->MS_Lib.Phy2LogMap[PhyBlock]) + /*dphy->log table */ #define MS_LIB_CTRL_RDONLY 0 #define MS_LIB_CTRL_WRPROTECT 1 -#define MS_LibCtrlCheck(pdx, Flag) ((pdx)->MS_Lib.flags & (1 << (Flag))) +#define MS_LibCtrlCheck(pdx, Flag) ((pdx)->MS_Lib.flags & (1 << (Flag))) -#define MS_LibCtrlSet(pdx, Flag) (pdx)->MS_Lib.flags |= (1 << (Flag)) -#define MS_LibCtrlReset(pdx, Flag) (pdx)->MS_Lib.flags &= ~(1 << (Flag)) -#define MS_LibIsWritable(pdx) ((MS_LibCtrlCheck((pdx), MS_LIB_CTRL_RDONLY) == 0) && (MS_LibCtrlCheck(pdx, MS_LIB_CTRL_WRPROTECT) == 0)) +#define MS_LibCtrlSet(pdx, Flag) ((pdx)->MS_Lib.flags |= (1 << (Flag))) +#define MS_LibCtrlReset(pdx, Flag) ((pdx)->MS_Lib.flags &= ~(1 << (Flag))) +#define MS_LibIsWritable(pdx) \ + ((MS_LibCtrlCheck((pdx), MS_LIB_CTRL_RDONLY) == 0) && \ + (MS_LibCtrlCheck(pdx, MS_LIB_CTRL_WRPROTECT) == 0)) #define MS_MAX_PAGES_PER_BLOCK 32 #define MS_LIB_BITS_PER_BYTE 8 -#define MS_LibPageMapIdx(n) ((n) / MS_LIB_BITS_PER_BYTE) -#define MS_LibPageMapBit(n) (1 << ((n) % MS_LIB_BITS_PER_BYTE)) -#define MS_LibCheckPageMapBit(pdx, n) ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] & MS_LibPageMapBit(n)) -#define MS_LibSetPageMapBit(pdx, n) ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] |= MS_LibPageMapBit(n)) -#define MS_LibResetPageMapBit(pdx, n) ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] &= ~MS_LibPageMapBit(n)) -#define MS_LibClearPageMap(pdx) memset((pdx)->MS_Lib.pagemap, 0, sizeof((pdx)->MS_Lib.pagemap)) +#define MS_LibPageMapIdx(n) ((n) / MS_LIB_BITS_PER_BYTE) +#define MS_LibPageMapBit(n) (1 << ((n) % MS_LIB_BITS_PER_BYTE)) +#define MS_LibCheckPageMapBit(pdx, n) \ + ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] & MS_LibPageMapBit(n)) +#define MS_LibSetPageMapBit(pdx, n) \ + ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] |= MS_LibPageMapBit(n)) +#define MS_LibResetPageMapBit(pdx, n) \ + ((pdx)->MS_Lib.pagemap[MS_LibPageMapIdx(n)] &= ~MS_LibPageMapBit(n)) +#define MS_LibClearPageMap(pdx) \ + memset((pdx)->MS_Lib.pagemap, 0, sizeof((pdx)->MS_Lib.pagemap)) -#define MemStickLogAddr(logadr1, logadr0) ((((WORD)(logadr1)) << 8) | (logadr0)) +#define MemStickLogAddr(logadr1, logadr0) \ + ((((WORD)(logadr1)) << 8) | (logadr0)) #define MS_BYTES_PER_PAGE 512 @@ -144,7 +156,7 @@ #define MS_NUMBER_OF_SYSTEM_BLOCK 4 #define MS_LOGICAL_BLOCKS_PER_SEGMENT 496 #define MS_LOGICAL_BLOCKS_IN_1ST_SEGMENT 494 -#define MS_PHYSICAL_BLOCKS_PER_SEGMENT 0x200 // 512 +#define MS_PHYSICAL_BLOCKS_PER_SEGMENT 0x200 /* 512 */ #define MS_PHYSICAL_BLOCKS_PER_SEGMENT_MASK 0x1ff #define MS_SECTOR_SIZE 512 @@ -165,51 +177,53 @@ #define MS_SYSINF_SECURITY 0x01 #define MS_SYSINF_SECURITY_NO_SUPPORT MS_SYSINF_SECURITY #define MS_SYSINF_SECURITY_SUPPORT 0 -#define MS_SYSINF_FORMAT_MAT 0 // ? +#define MS_SYSINF_FORMAT_MAT 0 /* ? */ #define MS_SYSINF_FORMAT_FAT 1 #define MS_SYSINF_USAGE_GENERAL 0 -#define MS_SYSINF_PAGE_SIZE MS_BYTES_PER_PAGE // fixed +#define MS_SYSINF_PAGE_SIZE MS_BYTES_PER_PAGE /* fixed */ #define MS_SYSINF_RESERVED1 1 #define MS_SYSINF_RESERVED2 1 #define MS_SYSENT_TYPE_INVALID_BLOCK 0x01 -#define MS_SYSENT_TYPE_CIS_IDI 0x0a // CIS/IDI +#define MS_SYSENT_TYPE_CIS_IDI 0x0a /* CIS/IDI */ #define SIZE_OF_KIRO 1024 -// BOOT BLOCK +/* BOOT BLOCK */ #define MS_NUMBER_OF_SYSTEM_ENTRY 4 -//----- MemStickRegisters -------------------------------------------- -// Status registers (16 bytes) +/* + * MemStickRegisters + */ +/* Status registers (16 bytes) */ typedef struct { - BYTE Reserved0; // 00 - BYTE INTRegister; // 01 - BYTE StatusRegister0; // 02 - BYTE StatusRegister1; // 03 - BYTE Reserved1[12]; // 04-0F + BYTE Reserved0; /* 00 */ + BYTE INTRegister; /* 01 */ + BYTE StatusRegister0; /* 02 */ + BYTE StatusRegister1; /* 03 */ + BYTE Reserved1[12]; /* 04-0F */ } MemStickStatusRegisters; -// Parameter registers (6 bytes) +/* Parameter registers (6 bytes) */ typedef struct { - BYTE SystemParameter; // 10 - BYTE BlockAddress2; // 11 - BYTE BlockAddress1; // 12 - BYTE BlockAddress0; // 13 - BYTE CMDParameter; // 14 - BYTE PageAddress; // 15 + BYTE SystemParameter; /* 10 */ + BYTE BlockAddress2; /* 11 */ + BYTE BlockAddress1; /* 12 */ + BYTE BlockAddress0; /* 13 */ + BYTE CMDParameter; /* 14 */ + BYTE PageAddress; /* 15 */ } MemStickParameterRegisters; -// Extra registers (9 bytes) +/* Extra registers (9 bytes) */ typedef struct { - BYTE OverwriteFlag; // 16 - BYTE ManagementFlag; // 17 - BYTE LogicalAddress1; // 18 - BYTE LogicalAddress0; // 19 - BYTE ReservedArea[5]; // 1A-1E + BYTE OverwriteFlag; /* 16 */ + BYTE ManagementFlag; /* 17 */ + BYTE LogicalAddress1; /* 18 */ + BYTE LogicalAddress0; /* 19 */ + BYTE ReservedArea[5]; /* 1A-1E */ } MemStickExtraDataRegisters; -// All registers in Memory Stick (32 bytes, includes 1 byte padding) +/* All registers in Memory Stick (32 bytes, includes 1 byte padding) */ typedef struct { MemStickStatusRegisters status; MemStickParameterRegisters param; @@ -217,7 +231,9 @@ typedef struct { BYTE padding; } MemStickRegisters, *PMemStickRegisters; -//----- MemStickBootBlockPage0 --------------------------------------- +/* + * MemStickBootBlockPage0 + */ typedef struct { WORD wBlockID; WORD wFormatVersion; @@ -238,13 +254,13 @@ typedef struct { } MemStickBootBlockSysEnt; typedef struct { - BYTE bMsClass; // must be 1 - BYTE bCardType; // see below - WORD wBlockSize; // n KB - WORD wBlockNumber; // number of physical block - WORD wTotalBlockNumber; // number of logical block - WORD wPageSize; // must be 0x200 - BYTE bExtraSize; // 0x10 + BYTE bMsClass; /* must be 1 */ + BYTE bCardType; /* see below */ + WORD wBlockSize; /* n KB */ + WORD wBlockNumber; /* number of physical block */ + WORD wTotalBlockNumber; /* number of logical block */ + WORD wPageSize; /* must be 0x200 */ + BYTE bExtraSize; /* 0x10 */ BYTE bSecuritySupport; BYTE bAssemblyDate[8]; BYTE bFactoryArea[4]; @@ -258,10 +274,10 @@ typedef struct { BYTE bVCC; BYTE bVPP; WORD wControllerChipNumber; - WORD wControllerFunction; // New MS - BYTE bReserved3[9]; // New MS - BYTE bParallelSupport; // New MS - WORD wFormatValue; // New MS + WORD wControllerFunction; /* New MS */ + BYTE bReserved3[9]; /* New MS */ + BYTE bParallelSupport; /* New MS */ + WORD wFormatValue; /* New MS */ BYTE bFormatType; BYTE bUsage; BYTE bDeviceType; @@ -277,60 +293,62 @@ typedef struct { MemStickBootBlockSysInf sysinf; } MemStickBootBlockPage0; -//----- MemStickBootBlockCIS_IDI ------------------------------------- +/* + * MemStickBootBlockCIS_IDI + */ typedef struct { - BYTE bCistplDEVICE[6]; // 0 - BYTE bCistplDEVICE0C[6]; // 6 - BYTE bCistplJEDECC[4]; // 12 - BYTE bCistplMANFID[6]; // 16 - BYTE bCistplVER1[32]; // 22 - BYTE bCistplFUNCID[4]; // 54 - BYTE bCistplFUNCE0[4]; // 58 - BYTE bCistplFUNCE1[5]; // 62 - BYTE bCistplCONF[7]; // 67 - BYTE bCistplCFTBLENT0[10]; // 74 - BYTE bCistplCFTBLENT1[8]; // 84 - BYTE bCistplCFTBLENT2[12]; // 92 - BYTE bCistplCFTBLENT3[8]; // 104 - BYTE bCistplCFTBLENT4[17]; // 112 - BYTE bCistplCFTBLENT5[8]; // 129 - BYTE bCistplCFTBLENT6[17]; // 137 - BYTE bCistplCFTBLENT7[8]; // 154 - BYTE bCistplNOLINK[3]; // 162 + BYTE bCistplDEVICE[6]; /* 0 */ + BYTE bCistplDEVICE0C[6]; /* 6 */ + BYTE bCistplJEDECC[4]; /* 12 */ + BYTE bCistplMANFID[6]; /* 16 */ + BYTE bCistplVER1[32]; /* 22 */ + BYTE bCistplFUNCID[4]; /* 54 */ + BYTE bCistplFUNCE0[4]; /* 58 */ + BYTE bCistplFUNCE1[5]; /* 62 */ + BYTE bCistplCONF[7]; /* 67 */ + BYTE bCistplCFTBLENT0[10]; /* 74 */ + BYTE bCistplCFTBLENT1[8]; /* 84 */ + BYTE bCistplCFTBLENT2[12]; /* 92 */ + BYTE bCistplCFTBLENT3[8]; /* 104 */ + BYTE bCistplCFTBLENT4[17]; /* 112 */ + BYTE bCistplCFTBLENT5[8]; /* 129 */ + BYTE bCistplCFTBLENT6[17]; /* 137 */ + BYTE bCistplCFTBLENT7[8]; /* 154 */ + BYTE bCistplNOLINK[3]; /* 162 */ } MemStickBootBlockCIS; typedef struct { #define MS_IDI_GENERAL_CONF 0x848A - WORD wIDIgeneralConfiguration; // 0 - WORD wIDInumberOfCylinder; // 1 - WORD wIDIreserved0; // 2 - WORD wIDInumberOfHead; // 3 - WORD wIDIbytesPerTrack; // 4 - WORD wIDIbytesPerSector; // 5 - WORD wIDIsectorsPerTrack; // 6 - WORD wIDItotalSectors[2]; // 7-8 high,low - WORD wIDIreserved1[11]; // 9-19 - WORD wIDIbufferType; // 20 - WORD wIDIbufferSize; // 21 - WORD wIDIlongCmdECC; // 22 - WORD wIDIfirmVersion[4]; // 23-26 - WORD wIDImodelName[20]; // 27-46 - WORD wIDIreserved2; // 47 - WORD wIDIlongWordSupported; // 48 - WORD wIDIdmaSupported; // 49 - WORD wIDIreserved3; // 50 - WORD wIDIpioTiming; // 51 - WORD wIDIdmaTiming; // 52 - WORD wIDItransferParameter; // 53 - WORD wIDIformattedCylinder; // 54 - WORD wIDIformattedHead; // 55 - WORD wIDIformattedSectorsPerTrack; // 56 - WORD wIDIformattedTotalSectors[2]; // 57-58 - WORD wIDImultiSector; // 59 - WORD wIDIlbaSectors[2]; // 60-61 - WORD wIDIsingleWordDMA; // 62 - WORD wIDImultiWordDMA; // 63 - WORD wIDIreserved4[192]; // 64-255 + WORD wIDIgeneralConfiguration; /* 0 */ + WORD wIDInumberOfCylinder; /* 1 */ + WORD wIDIreserved0; /* 2 */ + WORD wIDInumberOfHead; /* 3 */ + WORD wIDIbytesPerTrack; /* 4 */ + WORD wIDIbytesPerSector; /* 5 */ + WORD wIDIsectorsPerTrack; /* 6 */ + WORD wIDItotalSectors[2]; /* 7-8 high,low */ + WORD wIDIreserved1[11]; /* 9-19 */ + WORD wIDIbufferType; /* 20 */ + WORD wIDIbufferSize; /* 21 */ + WORD wIDIlongCmdECC; /* 22 */ + WORD wIDIfirmVersion[4]; /* 23-26 */ + WORD wIDImodelName[20]; /* 27-46 */ + WORD wIDIreserved2; /* 47 */ + WORD wIDIlongWordSupported; /* 48 */ + WORD wIDIdmaSupported; /* 49 */ + WORD wIDIreserved3; /* 50 */ + WORD wIDIpioTiming; /* 51 */ + WORD wIDIdmaTiming; /* 52 */ + WORD wIDItransferParameter; /* 53 */ + WORD wIDIformattedCylinder; /* 54 */ + WORD wIDIformattedHead; /* 55 */ + WORD wIDIformattedSectorsPerTrack; /* 56 */ + WORD wIDIformattedTotalSectors[2]; /* 57-58 */ + WORD wIDImultiSector; /* 59 */ + WORD wIDIlbaSectors[2]; /* 60-61 */ + WORD wIDIsingleWordDMA; /* 62 */ + WORD wIDImultiWordDMA; /* 63 */ + WORD wIDIreserved4[192]; /* 64-255 */ } MemStickBootBlockIDI; typedef struct { @@ -346,7 +364,9 @@ typedef struct { } MemStickBootBlockCIS_IDI; -//----- MS_LibControl ------------------------------------------------ +/* + * MS_LibControl + */ typedef struct { BYTE reserved; BYTE intr; @@ -362,14 +382,14 @@ typedef struct { DWORD BytesPerSector; DWORD NumberOfCylinder; DWORD SectorsPerCylinder; - WORD cardType; // R/W, RO, Hybrid + WORD cardType; /* R/W, RO, Hybrid */ WORD blockSize; WORD PagesPerBlock; WORD NumberOfPhyBlock; WORD NumberOfLogBlock; WORD NumberOfSegment; - WORD *Phy2LogMap; // phy2log table - WORD *Log2PhyMap; // log2phy table + WORD *Phy2LogMap; /* phy2log table */ + WORD *Log2PhyMap; /* log2phy table */ WORD wrtblk; BYTE pagemap[(MS_MAX_PAGES_PER_BLOCK + (MS_LIB_BITS_PER_BYTE-1)) / MS_LIB_BITS_PER_BYTE]; diff --git a/drivers/staging/keucr/msscsi.c b/drivers/staging/keucr/msscsi.c index cb92d25acee0..cb7190e0e18a 100644 --- a/drivers/staging/keucr/msscsi.c +++ b/drivers/staging/keucr/msscsi.c @@ -1,3 +1,5 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include <linux/sched.h> #include <linux/errno.h> #include <linux/slab.h> @@ -10,68 +12,48 @@ #include "scsiglue.h" #include "transport.h" -int MS_SCSI_Test_Unit_Ready (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Inquiry (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Mode_Sense (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Start_Stop (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Read_Capacity (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Read (struct us_data *us, struct scsi_cmnd *srb); -int MS_SCSI_Write (struct us_data *us, struct scsi_cmnd *srb); - -//----- MS_SCSIIrp() -------------------------------------------------- -int MS_SCSIIrp(struct us_data *us, struct scsi_cmnd *srb) -{ - int result; - - us->SrbStatus = SS_SUCCESS; - switch (srb->cmnd[0]) - { - case TEST_UNIT_READY : result = MS_SCSI_Test_Unit_Ready (us, srb); break; //0x00 - case INQUIRY : result = MS_SCSI_Inquiry (us, srb); break; //0x12 - case MODE_SENSE : result = MS_SCSI_Mode_Sense (us, srb); break; //0x1A - case READ_CAPACITY : result = MS_SCSI_Read_Capacity (us, srb); break; //0x25 - case READ_10 : result = MS_SCSI_Read (us, srb); break; //0x28 - case WRITE_10 : result = MS_SCSI_Write (us, srb); break; //0x2A - - default: - us->SrbStatus = SS_ILLEGAL_REQUEST; - result = USB_STOR_TRANSPORT_FAILED; - break; - } - return result; -} - -//----- MS_SCSI_Test_Unit_Ready() -------------------------------------------------- +/* + * MS_SCSI_Test_Unit_Ready() + */ int MS_SCSI_Test_Unit_Ready(struct us_data *us, struct scsi_cmnd *srb) { - //printk("MS_SCSI_Test_Unit_Ready\n"); + /* pr_info("MS_SCSI_Test_Unit_Ready\n"); */ if (us->MS_Status.Insert && us->MS_Status.Ready) return USB_STOR_TRANSPORT_GOOD; - else - { + else { ENE_MSInit(us); return USB_STOR_TRANSPORT_GOOD; } - + return USB_STOR_TRANSPORT_GOOD; } -//----- MS_SCSI_Inquiry() -------------------------------------------------- +/* + * MS_SCSI_Inquiry() + */ int MS_SCSI_Inquiry(struct us_data *us, struct scsi_cmnd *srb) { - //printk("MS_SCSI_Inquiry\n"); - BYTE data_ptr[36] = {0x00, 0x80, 0x02, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x55, 0x53, 0x42, 0x32, 0x2E, 0x30, 0x20, 0x20, 0x43, 0x61, 0x72, 0x64, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x31, 0x30, 0x30}; + /* pr_info("MS_SCSI_Inquiry\n"); */ + BYTE data_ptr[36] = {0x00, 0x80, 0x02, 0x00, 0x1F, 0x00, + 0x00, 0x00, 0x55, 0x53, 0x42, 0x32, + 0x2E, 0x30, 0x20, 0x20, 0x43, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x30, 0x31, 0x30, 0x30}; usb_stor_set_xfer_buf(us, data_ptr, 36, srb, TO_XFER_BUF); return USB_STOR_TRANSPORT_GOOD; } - -//----- MS_SCSI_Mode_Sense() -------------------------------------------------- +/* + * MS_SCSI_Mode_Sense() + */ int MS_SCSI_Mode_Sense(struct us_data *us, struct scsi_cmnd *srb) { - BYTE mediaNoWP[12] = {0x0b,0x00,0x00,0x08,0x00,0x00,0x71,0xc0,0x00,0x00,0x02,0x00}; - BYTE mediaWP[12] = {0x0b,0x00,0x80,0x08,0x00,0x00,0x71,0xc0,0x00,0x00,0x02,0x00}; + BYTE mediaNoWP[12] = {0x0b, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x02, 0x00}; + BYTE mediaWP[12] = {0x0b, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x02, 0x00}; if (us->MS_Status.WtP) usb_stor_set_xfer_buf(us, mediaWP, 12, srb, TO_XFER_BUF); @@ -82,7 +64,9 @@ int MS_SCSI_Mode_Sense(struct us_data *us, struct scsi_cmnd *srb) return USB_STOR_TRANSPORT_GOOD; } -//----- MS_SCSI_Read_Capacity() -------------------------------------------------- +/* + * MS_SCSI_Read_Capacity() + */ int MS_SCSI_Read_Capacity(struct us_data *us, struct scsi_cmnd *srb) { unsigned int offset = 0; @@ -91,60 +75,65 @@ int MS_SCSI_Read_Capacity(struct us_data *us, struct scsi_cmnd *srb) WORD bl_len; BYTE buf[8]; - printk("MS_SCSI_Read_Capacity\n"); + pr_info("MS_SCSI_Read_Capacity\n"); bl_len = 0x200; - if ( us->MS_Status.IsMSPro ) + if (us->MS_Status.IsMSPro) bl_num = us->MSP_TotalBlock - 1; else - bl_num = us->MS_Lib.NumberOfLogBlock * us->MS_Lib.blockSize * 2 - 1; + bl_num = us->MS_Lib.NumberOfLogBlock * + us->MS_Lib.blockSize * 2 - 1; us->bl_num = bl_num; - printk("bl_len = %x\n", bl_len); - printk("bl_num = %x\n", bl_num); - - //srb->request_bufflen = 8; - buf[0] = (bl_num>>24) & 0xff; - buf[1] = (bl_num>>16) & 0xff; - buf[2] = (bl_num>> 8) & 0xff; - buf[3] = (bl_num>> 0) & 0xff; - buf[4] = (bl_len>>24) & 0xff; - buf[5] = (bl_len>>16) & 0xff; - buf[6] = (bl_len>> 8) & 0xff; - buf[7] = (bl_len>> 0) & 0xff; - + pr_info("bl_len = %x\n", bl_len); + pr_info("bl_num = %x\n", bl_num); + + /* srb->request_bufflen = 8; */ + buf[0] = (bl_num >> 24) & 0xff; + buf[1] = (bl_num >> 16) & 0xff; + buf[2] = (bl_num >> 8) & 0xff; + buf[3] = (bl_num >> 0) & 0xff; + buf[4] = (bl_len >> 24) & 0xff; + buf[5] = (bl_len >> 16) & 0xff; + buf[6] = (bl_len >> 8) & 0xff; + buf[7] = (bl_len >> 0) & 0xff; + usb_stor_access_xfer_buf(us, buf, 8, srb, &sg, &offset, TO_XFER_BUF); - //usb_stor_set_xfer_buf(us, buf, srb->request_bufflen, srb, TO_XFER_BUF); + /* usb_stor_set_xfer_buf(us, buf, srb->request_bufflen, + srb, TO_XFER_BUF); */ return USB_STOR_TRANSPORT_GOOD; } -//----- MS_SCSI_Read() -------------------------------------------------- +/* + * MS_SCSI_Read() + */ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; - int result=0; + int result = 0; PBYTE Cdb = srb->cmnd; - DWORD bn = ((Cdb[2]<<24) & 0xff000000) | ((Cdb[3]<<16) & 0x00ff0000) | - ((Cdb[4]<< 8) & 0x0000ff00) | ((Cdb[5]<< 0) & 0x000000ff); - WORD blen = ((Cdb[7]<< 8) & 0xff00) | ((Cdb[8]<< 0) & 0x00ff); + DWORD bn = ((Cdb[2] << 24) & 0xff000000) | + ((Cdb[3] << 16) & 0x00ff0000) | + ((Cdb[4] << 8) & 0x0000ff00) | + ((Cdb[5] << 0) & 0x000000ff); + WORD blen = ((Cdb[7] << 8) & 0xff00) | ((Cdb[8] << 0) & 0x00ff); DWORD blenByte = blen * 0x200; - //printk("SCSIOP_READ --- bn = %X, blen = %X, srb->use_sg = %X\n", bn, blen, srb->use_sg); - + /* pr_info("SCSIOP_READ --- bn = %X, blen = %X, srb->use_sg = %X\n", + bn, blen, srb->use_sg); */ + if (bn > us->bl_num) return USB_STOR_TRANSPORT_ERROR; - if (us->MS_Status.IsMSPro) - { + if (us->MS_Status.IsMSPro) { result = ENE_LoadBinCode(us, MSP_RW_PATTERN); - if (result != USB_STOR_XFER_GOOD) - { - printk("Load MSP RW pattern Fail !!\n"); + if (result != USB_STOR_XFER_GOOD) { + pr_info("Load MSP RW pattern Fail !!\n"); return USB_STOR_TRANSPORT_ERROR; } - // set up the command wrapper + /* set up the command wrapper */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = blenByte; @@ -157,11 +146,9 @@ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) bcb->CDB[2] = (BYTE)(bn>>24); result = ENE_SendScsiCmd(us, FDIR_READ, scsi_sglist(srb), 1); - } - else - { + } else { void *buf; - int offset=0; + int offset = 0; WORD phyblk, logblk; BYTE PageNum; WORD len; @@ -172,9 +159,8 @@ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) return USB_STOR_TRANSPORT_ERROR; result = ENE_LoadBinCode(us, MS_RW_PATTERN); - if (result != USB_STOR_XFER_GOOD) - { - printk("Load MS RW pattern Fail !!\n"); + if (result != USB_STOR_XFER_GOOD) { + pr_info("Load MS RW pattern Fail !!\n"); result = USB_STOR_TRANSPORT_ERROR; goto exit; } @@ -182,9 +168,8 @@ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) logblk = (WORD)(bn / us->MS_Lib.PagesPerBlock); PageNum = (BYTE)(bn % us->MS_Lib.PagesPerBlock); - while(1) - { - if (blen > (us->MS_Lib.PagesPerBlock-PageNum) ) + while (1) { + if (blen > (us->MS_Lib.PagesPerBlock-PageNum)) len = us->MS_Lib.PagesPerBlock-PageNum; else len = blen; @@ -192,7 +177,7 @@ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) phyblk = MS_LibConv2Physical(us, logblk); blkno = phyblk * 0x20 + PageNum; - // set up the command wrapper + /* set up the command wrapper */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = 0x200 * len; @@ -205,15 +190,15 @@ int MS_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) bcb->CDB[2] = (BYTE)(blkno>>24); result = ENE_SendScsiCmd(us, FDIR_READ, buf+offset, 0); - if (result != USB_STOR_XFER_GOOD) - { - printk("MS_SCSI_Read --- result = %x\n", result); + if (result != USB_STOR_XFER_GOOD) { + pr_info("MS_SCSI_Read --- result = %x\n", + result); result = USB_STOR_TRANSPORT_ERROR; goto exit; } blen -= len; - if (blen<=0) + if (blen <= 0) break; logblk++; PageNum = 0; @@ -226,30 +211,32 @@ exit: return result; } -//----- MS_SCSI_Write() -------------------------------------------------- +/* + * MS_SCSI_Write() + */ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; - int result=0; + int result = 0; PBYTE Cdb = srb->cmnd; - DWORD bn = ((Cdb[2]<<24) & 0xff000000) | ((Cdb[3]<<16) & 0x00ff0000) | - ((Cdb[4]<< 8) & 0x0000ff00) | ((Cdb[5]<< 0) & 0x000000ff); - WORD blen = ((Cdb[7]<< 8) & 0xff00) | ((Cdb[8]<< 0) & 0x00ff); + DWORD bn = ((Cdb[2] << 24) & 0xff000000) | + ((Cdb[3] << 16) & 0x00ff0000) | + ((Cdb[4] << 8) & 0x0000ff00) | + ((Cdb[5] << 0) & 0x000000ff); + WORD blen = ((Cdb[7] << 8) & 0xff00) | ((Cdb[8] << 0) & 0x00ff); DWORD blenByte = blen * 0x200; if (bn > us->bl_num) return USB_STOR_TRANSPORT_ERROR; - if (us->MS_Status.IsMSPro) - { + if (us->MS_Status.IsMSPro) { result = ENE_LoadBinCode(us, MSP_RW_PATTERN); - if (result != USB_STOR_XFER_GOOD) - { - printk("Load MSP RW pattern Fail !!\n"); + if (result != USB_STOR_XFER_GOOD) { + pr_info("Load MSP RW pattern Fail !!\n"); return USB_STOR_TRANSPORT_ERROR; } - // set up the command wrapper + /* set up the command wrapper */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); bcb->DataTransferLength = blenByte; @@ -262,11 +249,9 @@ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) bcb->CDB[2] = (BYTE)(bn>>24); result = ENE_SendScsiCmd(us, FDIR_WRITE, scsi_sglist(srb), 1); - } - else - { + } else { void *buf; - int offset=0; + int offset = 0; WORD PhyBlockAddr; BYTE PageNum; DWORD result; @@ -278,9 +263,8 @@ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) usb_stor_set_xfer_buf(us, buf, blenByte, srb, FROM_XFER_BUF); result = ENE_LoadBinCode(us, MS_RW_PATTERN); - if (result != USB_STOR_XFER_GOOD) - { - printk("Load MS RW pattern Fail !!\n"); + if (result != USB_STOR_XFER_GOOD) { + pr_info("Load MS RW pattern Fail !!\n"); result = USB_STOR_TRANSPORT_ERROR; goto exit; } @@ -288,9 +272,8 @@ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) PhyBlockAddr = (WORD)(bn / us->MS_Lib.PagesPerBlock); PageNum = (BYTE)(bn % us->MS_Lib.PagesPerBlock); - while(1) - { - if (blen > (us->MS_Lib.PagesPerBlock-PageNum) ) + while (1) { + if (blen > (us->MS_Lib.PagesPerBlock-PageNum)) len = us->MS_Lib.PagesPerBlock-PageNum; else len = blen; @@ -298,10 +281,12 @@ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) oldphy = MS_LibConv2Physical(us, PhyBlockAddr); newphy = MS_LibSearchBlockFromLogical(us, PhyBlockAddr); - result = MS_ReaderCopyBlock(us, oldphy, newphy, PhyBlockAddr, PageNum, buf+offset, len); - if (result != USB_STOR_XFER_GOOD) - { - printk("MS_SCSI_Write --- result = %x\n", result); + result = MS_ReaderCopyBlock(us, oldphy, newphy, + PhyBlockAddr, PageNum, + buf+offset, len); + if (result != USB_STOR_XFER_GOOD) { + pr_info("MS_SCSI_Write --- result = %x\n", + result); result = USB_STOR_TRANSPORT_ERROR; goto exit; } @@ -310,7 +295,7 @@ int MS_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) MS_LibForceSetLogicalPair(us, PhyBlockAddr, newphy); blen -= len; - if (blen<=0) + if (blen <= 0) break; PhyBlockAddr++; PageNum = 0; @@ -322,3 +307,38 @@ exit: return result; } +/* + * MS_SCSIIrp() + */ +int MS_SCSIIrp(struct us_data *us, struct scsi_cmnd *srb) +{ + int result; + + us->SrbStatus = SS_SUCCESS; + switch (srb->cmnd[0]) { + case TEST_UNIT_READY: + result = MS_SCSI_Test_Unit_Ready(us, srb); + break; /* 0x00 */ + case INQUIRY: + result = MS_SCSI_Inquiry(us, srb); + break; /* 0x12 */ + case MODE_SENSE: + result = MS_SCSI_Mode_Sense(us, srb); + break; /* 0x1A */ + case READ_CAPACITY: + result = MS_SCSI_Read_Capacity(us, srb); + break; /* 0x25 */ + case READ_10: + result = MS_SCSI_Read(us, srb); + break; /* 0x28 */ + case WRITE_10: + result = MS_SCSI_Write(us, srb); + break; /* 0x2A */ + default: + us->SrbStatus = SS_ILLEGAL_REQUEST; + result = USB_STOR_TRANSPORT_FAILED; + break; + } + return result; +} + diff --git a/drivers/staging/keucr/scsiglue.c b/drivers/staging/keucr/scsiglue.c index da4f42af3838..135f7f21dfde 100644 --- a/drivers/staging/keucr/scsiglue.c +++ b/drivers/staging/keucr/scsiglue.c @@ -1,3 +1,5 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include <linux/slab.h> #include <linux/module.h> #include <linux/mutex.h> @@ -13,19 +15,23 @@ #include "transport.h" /* Host functions */ -//----- host_info() --------------------- -static const char* host_info(struct Scsi_Host *host) +/* + * host_info() + */ +static const char *host_info(struct Scsi_Host *host) { - //printk("scsiglue --- host_info\n"); + /* pr_info("scsiglue --- host_info\n"); */ return "SCSI emulation for USB Mass Storage devices"; } -//----- slave_alloc() --------------------- +/* + * slave_alloc() + */ static int slave_alloc(struct scsi_device *sdev) { struct us_data *us = host_to_us(sdev->host); - //printk("scsiglue --- slave_alloc\n"); + /* pr_info("scsiglue --- slave_alloc\n"); */ sdev->inquiry_len = 36; blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1)); @@ -36,14 +42,15 @@ static int slave_alloc(struct scsi_device *sdev) return 0; } -//----- slave_configure() --------------------- +/* + * slave_configure() + */ static int slave_configure(struct scsi_device *sdev) { struct us_data *us = host_to_us(sdev->host); - //printk("scsiglue --- slave_configure\n"); - if (us->fflags & (US_FL_MAX_SECTORS_64 | US_FL_MAX_SECTORS_MIN)) - { + /* pr_info("scsiglue --- slave_configure\n"); */ + if (us->fflags & (US_FL_MAX_SECTORS_64 | US_FL_MAX_SECTORS_MIN)) { unsigned int max_sectors = 64; if (us->fflags & US_FL_MAX_SECTORS_MIN) @@ -53,9 +60,9 @@ static int slave_configure(struct scsi_device *sdev) max_sectors); } - if (sdev->type == TYPE_DISK) - { - if (us->subclass != USB_SC_SCSI && us->subclass != USB_SC_CYP_ATACB) + if (sdev->type == TYPE_DISK) { + if (us->subclass != USB_SC_SCSI && + us->subclass != USB_SC_CYP_ATACB) sdev->use_10_for_ms = 1; sdev->use_192_bytes_for_3f = 1; if (us->fflags & US_FL_NO_WP_DETECT) @@ -70,13 +77,12 @@ static int slave_configure(struct scsi_device *sdev) sdev->retry_hwerror = 1; sdev->allow_restart = 1; sdev->last_sector_bug = 1; - } - else - { + } else { sdev->use_10_for_ms = 1; } - if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_CBI) && sdev->scsi_level == SCSI_UNKNOWN) + if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_CBI) && + sdev->scsi_level == SCSI_UNKNOWN) us->max_lun = 0; if (us->fflags & US_FL_NOT_LOCKABLE) @@ -86,24 +92,26 @@ static int slave_configure(struct scsi_device *sdev) } /* This is always called with scsi_lock(host) held */ -//----- queuecommand() --------------------- -static int queuecommand_lck(struct scsi_cmnd *srb, void (*done)(struct scsi_cmnd *)) +/* + * queuecommand() + */ +static int queuecommand_lck(struct scsi_cmnd *srb, + void (*done)(struct scsi_cmnd *)) { struct us_data *us = host_to_us(srb->device->host); - //printk("scsiglue --- queuecommand\n"); + /* pr_info("scsiglue --- queuecommand\n"); */ /* check for state-transition errors */ - if (us->srb != NULL) - { - printk("Error in %s: us->srb = %p\n", __FUNCTION__, us->srb); + if (us->srb != NULL) { + /* pr_info("Error in %s: us->srb = %p\n" + __FUNCTION__, us->srb); */ return SCSI_MLQUEUE_HOST_BUSY; } /* fail the command if we are disconnecting */ - if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) - { - printk("Fail command during disconnect\n"); + if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { + pr_info("Fail command during disconnect\n"); srb->result = DID_NO_CONNECT << 16; done(srb); return 0; @@ -124,24 +132,24 @@ static DEF_SCSI_QCMD(queuecommand) ***********************************************************************/ /* Command timeout and abort */ -//----- command_abort() --------------------- +/* + * command_abort() + */ static int command_abort(struct scsi_cmnd *srb) { struct us_data *us = host_to_us(srb->device->host); - //printk("scsiglue --- command_abort\n"); + /* pr_info("scsiglue --- command_abort\n"); */ scsi_lock(us_to_host(us)); - if (us->srb != srb) - { + if (us->srb != srb) { scsi_unlock(us_to_host(us)); printk ("-- nothing to abort\n"); return FAILED; } set_bit(US_FLIDX_TIMED_OUT, &us->dflags); - if (!test_bit(US_FLIDX_RESETTING, &us->dflags)) - { + if (!test_bit(US_FLIDX_RESETTING, &us->dflags)) { set_bit(US_FLIDX_ABORTING, &us->dflags); usb_stor_stop_transport(us); } @@ -152,14 +160,18 @@ static int command_abort(struct scsi_cmnd *srb) return SUCCESS; } -/* This invokes the transport reset mechanism to reset the state of the device */ -//----- device_reset() --------------------- +/* This invokes the transport reset mechanism to reset the state of the + * device. + */ +/* + * device_reset() + */ static int device_reset(struct scsi_cmnd *srb) { struct us_data *us = host_to_us(srb->device->host); int result; - //printk("scsiglue --- device_reset\n"); + /* pr_info("scsiglue --- device_reset\n"); */ /* lock the device pointers and do the reset */ mutex_lock(&(us->dev_mutex)); @@ -169,38 +181,43 @@ static int device_reset(struct scsi_cmnd *srb) return result < 0 ? FAILED : SUCCESS; } -//----- bus_reset() --------------------- +/* + * bus_reset() + */ static int bus_reset(struct scsi_cmnd *srb) { struct us_data *us = host_to_us(srb->device->host); int result; - //printk("scsiglue --- bus_reset\n"); + /* pr_info("scsiglue --- bus_reset\n"); */ result = usb_stor_port_reset(us); return result < 0 ? FAILED : SUCCESS; } -//----- usb_stor_report_device_reset() --------------------- +/* + * usb_stor_report_device_reset() + */ void usb_stor_report_device_reset(struct us_data *us) { int i; struct Scsi_Host *host = us_to_host(us); - //printk("scsiglue --- usb_stor_report_device_reset\n"); + /* pr_info("scsiglue --- usb_stor_report_device_reset\n"); */ scsi_report_device_reset(host, 0, 0); - if (us->fflags & US_FL_SCM_MULT_TARG) - { + if (us->fflags & US_FL_SCM_MULT_TARG) { for (i = 1; i < host->max_id; ++i) scsi_report_device_reset(host, 0, i); } } -//----- usb_stor_report_bus_reset() --------------------- +/* + * usb_stor_report_bus_reset() + */ void usb_stor_report_bus_reset(struct us_data *us) { struct Scsi_Host *host = us_to_host(us); - //printk("scsiglue --- usb_stor_report_bus_reset\n"); + /* pr_info("scsiglue --- usb_stor_report_bus_reset\n"); */ scsi_lock(host); scsi_report_bus_reset(host, 0); scsi_unlock(host); @@ -215,14 +232,17 @@ void usb_stor_report_bus_reset(struct us_data *us) #define SPRINTF(args...) \ do { if (pos < buffer+length) pos += sprintf(pos, ## args); } while (0) -//----- proc_info() --------------------- -static int proc_info (struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) +/* + * proc_info() + */ +static int proc_info(struct Scsi_Host *host, char *buffer, char **start, + off_t offset, int length, int inout) { struct us_data *us = host_to_us(host); char *pos = buffer; const char *string; - //printk("scsiglue --- proc_info\n"); + /* pr_info("scsiglue --- proc_info\n"); */ if (inout) return length; @@ -255,8 +275,7 @@ static int proc_info (struct Scsi_Host *host, char *buffer, char **start, off_t SPRINTF(" Transport: %s\n", us->transport_name); /* show the device flags */ - if (pos < buffer + length) - { + if (pos < buffer + length) { pos += sprintf(pos, " Quirks:"); #define US_FLAG(name, value) \ @@ -271,11 +290,11 @@ US_DO_ALL_FLAGS *start = buffer + offset; if ((pos - buffer) < offset) - return (0); + return 0; else if ((pos - buffer - offset) < length) - return (pos - buffer - offset); + return pos - buffer - offset; else - return (length); + return length; } /*********************************************************************** @@ -283,29 +302,35 @@ US_DO_ALL_FLAGS ***********************************************************************/ /* Output routine for the sysfs max_sectors file */ -//----- show_max_sectors() --------------------- -static ssize_t show_max_sectors(struct device *dev, struct device_attribute *attr, char *buf) +/* + * show_max_sectors() + */ +static ssize_t show_max_sectors(struct device *dev, + struct device_attribute *attr, char *buf) { struct scsi_device *sdev = to_scsi_device(dev); - //printk("scsiglue --- ssize_t show_max_sectors\n"); + /* pr_info("scsiglue --- ssize_t show_max_sectors\n"); */ return sprintf(buf, "%u\n", queue_max_sectors(sdev->request_queue)); } /* Input routine for the sysfs max_sectors file */ -//----- store_max_sectors() --------------------- -static ssize_t store_max_sectors(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) +/* + * store_max_sectors() + */ +static ssize_t store_max_sectors(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) { struct scsi_device *sdev = to_scsi_device(dev); unsigned short ms; - //printk("scsiglue --- ssize_t store_max_sectors\n"); - if (sscanf(buf, "%hu", &ms) > 0 && ms <= SCSI_DEFAULT_MAX_SECTORS) - { + /* pr_info("scsiglue --- ssize_t store_max_sectors\n"); */ + if (sscanf(buf, "%hu", &ms) > 0 && ms <= SCSI_DEFAULT_MAX_SECTORS) { blk_queue_max_hw_sectors(sdev->request_queue, ms); return strlen(buf); } - return -EINVAL; + return -EINVAL; } static DEVICE_ATTR(max_sectors, S_IRUGO | S_IWUSR, show_max_sectors, store_max_sectors); @@ -313,7 +338,9 @@ static struct device_attribute *sysfs_device_attr_list[] = {&dev_attr_max_sector /* this defines our host template, with which we'll allocate hosts */ -//----- usb_stor_host_template() --------------------- +/* + * usb_stor_host_template() + */ struct scsi_host_template usb_stor_host_template = { /* basic userland interface stuff */ .name = "eucr-storage", @@ -376,42 +403,41 @@ unsigned char usb_stor_sense_invalidCDB[18] = { * Scatter-gather transfer buffer access routines ***********************************************************************/ -//----- usb_stor_access_xfer_buf() --------------------- +/* + * usb_stor_access_xfer_buf() + */ unsigned int usb_stor_access_xfer_buf(struct us_data *us, unsigned char *buffer, unsigned int buflen, struct scsi_cmnd *srb, struct scatterlist **sgptr, unsigned int *offset, enum xfer_buf_dir dir) { unsigned int cnt; - //printk("transport --- usb_stor_access_xfer_buf\n"); + /* pr_info("transport --- usb_stor_access_xfer_buf\n"); */ struct scatterlist *sg = *sgptr; if (!sg) sg = scsi_sglist(srb); cnt = 0; - while (cnt < buflen && sg) - { - struct page *page = sg_page(sg) + ((sg->offset + *offset) >> PAGE_SHIFT); + while (cnt < buflen && sg) { + struct page *page = sg_page(sg) + + ((sg->offset + *offset) >> PAGE_SHIFT); unsigned int poff = (sg->offset + *offset) & (PAGE_SIZE-1); unsigned int sglen = sg->length - *offset; - if (sglen > buflen - cnt) - { + if (sglen > buflen - cnt) { /* Transfer ends within this s-g entry */ sglen = buflen - cnt; *offset += sglen; - } - else - { + } else { /* Transfer continues to next s-g entry */ *offset = 0; sg = sg_next(sg); } - while (sglen > 0) - { - unsigned int plen = min(sglen, (unsigned int)PAGE_SIZE - poff); + while (sglen > 0) { + unsigned int plen = min(sglen, + (unsigned int)PAGE_SIZE - poff); unsigned char *ptr = kmap(page); if (dir == TO_XFER_BUF) @@ -433,18 +459,24 @@ unsigned int usb_stor_access_xfer_buf(struct us_data *us, unsigned char *buffer, return cnt; } -/* Store the contents of buffer into srb's transfer buffer and set the SCSI residue. */ -//----- usb_stor_set_xfer_buf() --------------------- -void usb_stor_set_xfer_buf(struct us_data *us, unsigned char *buffer, unsigned int buflen, struct scsi_cmnd *srb, - unsigned int dir) +/* + * Store the contents of buffer into srb's transfer + * buffer and set the SCSI residue. + */ +/* + * usb_stor_set_xfer_buf() + */ +void usb_stor_set_xfer_buf(struct us_data *us, unsigned char *buffer, + unsigned int buflen, struct scsi_cmnd *srb, unsigned int dir) { unsigned int offset = 0; struct scatterlist *sg = NULL; - //printk("transport --- usb_stor_set_xfer_buf\n"); - // TO_XFER_BUF = 0, FROM_XFER_BUF = 1 + /* pr_info("transport --- usb_stor_set_xfer_buf\n"); */ + /* TO_XFER_BUF = 0, FROM_XFER_BUF = 1 */ buflen = min(buflen, scsi_bufflen(srb)); - buflen = usb_stor_access_xfer_buf(us, buffer, buflen, srb, &sg, &offset, dir); + buflen = usb_stor_access_xfer_buf(us, buffer, buflen, srb, + &sg, &offset, dir); if (buflen < scsi_bufflen(srb)) scsi_set_resid(srb, scsi_bufflen(srb) - buflen); } diff --git a/drivers/staging/keucr/smcommon.h b/drivers/staging/keucr/smcommon.h index 00064cabf4ed..278bdb871129 100644 --- a/drivers/staging/keucr/smcommon.h +++ b/drivers/staging/keucr/smcommon.h @@ -6,7 +6,7 @@ /*************************************************************************** Define Difinetion ***************************************************************************/ -#define SUCCESS 0x0000 /* SUCCESS */ +#define SMSUCCESS 0x0000 /* SUCCESS */ #define ERROR 0xFFFF /* ERROR */ #define CORRECT 0x0001 /* CORRECTABLE */ diff --git a/drivers/staging/keucr/smil.h b/drivers/staging/keucr/smil.h index 4226813ba588..b5a8fa7c7989 100644 --- a/drivers/staging/keucr/smil.h +++ b/drivers/staging/keucr/smil.h @@ -44,21 +44,22 @@ Retry Counter Definition /*************************************************************************** Hardware ECC Definition ***************************************************************************/ -#define HW_ECC_SUPPORTED 1 /* Hardware ECC Supported */ /* No difinition for Software ECC */ +#define HW_ECC_SUPPORTED 1 /* Hardware ECC Supported */ +/* No difinition for Software ECC */ /*************************************************************************** SmartMedia Command & Status Definition ***************************************************************************/ /* SmartMedia Command */ #define WRDATA 0x80 -//#define READ 0x00 +/* #define READ 0x00 */ #define READ_REDT 0x50 -//#define WRITE 0x10 +/* #define WRITE 0x10 */ #define RDSTATUS 0x70 -#define READ1 0x00 //NO -#define READ2 0x01 //NO -#define READ3 0x50 //NO +#define READ1 0x00 /* NO */ +#define READ2 0x01 /* NO */ +#define READ3 0x50 /* NO */ #define RST_CHIP 0xFF #define ERASE1 0x60 #define ERASE2 0xD0 @@ -67,19 +68,19 @@ SmartMedia Command & Status Definition #define READ_ID_3 0x9A /* 712 SmartMedia Command */ -#define SM_CMD_RESET 0x00 // 0xFF -#define SM_CMD_READ_ID_1 0x10 // 0x90 -#define SM_CMD_READ_ID_2 0x20 // 0x91 -#define SM_CMD_READ_STAT 0x30 // 0x70 -#define SM_CMD_RDMULTPL_STAT 0x40 // 0x71 -#define SM_CMD_READ_1 0x50 // 0x00 -#define SM_CMD_READ_2 0x60 // 0x01 -#define SM_CMD_READ_3 0x70 // 0x50 -#define SM_CMD_PAGPRGM_TRUE 0x80 // {0x80, 0x10} -#define SM_CMD_PAGPRGM_DUMY 0x90 // {0x80, 0x11} -#define SM_CMD_PAGPRGM_MBLK 0xA0 // {0x80, 0x15} -#define SM_CMD_BLKERASE 0xB0 // {0x60, 0xD0} -#define SM_CMD_BLKERASE_MULTPL 0xC0 // {0x60-0x60, 0xD0} +#define SM_CMD_RESET 0x00 /* 0xFF */ +#define SM_CMD_READ_ID_1 0x10 /* 0x90 */ +#define SM_CMD_READ_ID_2 0x20 /* 0x91 */ +#define SM_CMD_READ_STAT 0x30 /* 0x70 */ +#define SM_CMD_RDMULTPL_STAT 0x40 /* 0x71 */ +#define SM_CMD_READ_1 0x50 /* 0x00 */ +#define SM_CMD_READ_2 0x60 /* 0x01 */ +#define SM_CMD_READ_3 0x70 /* 0x50 */ +#define SM_CMD_PAGPRGM_TRUE 0x80 /* {0x80, 0x10} */ +#define SM_CMD_PAGPRGM_DUMY 0x90 /* {0x80, 0x11} */ +#define SM_CMD_PAGPRGM_MBLK 0xA0 /* {0x80, 0x15} */ +#define SM_CMD_BLKERASE 0xB0 /* {0x60, 0xD0} */ +#define SM_CMD_BLKERASE_MULTPL 0xC0 /* {0x60-0x60, 0xD0} */ #define SM_CRADDTCT_DEBNCETIMER_EN 0x02 #define SM_CMD_START_BIT 0x01 @@ -87,27 +88,31 @@ SmartMedia Command & Status Definition #define SM_WaitCmdDone { while (!SM_CmdDone); } #define SM_WaitDmaDone { while (!SM_DmaDone); } -// SmartMedia Status -#define WR_FAIL 0x01 // 0:Pass, 1:Fail -#define SUSPENDED 0x20 // 0:Not Suspended, 1:Suspended -#define READY 0x40 // 0:Busy, 1:Ready -#define WR_PRTCT 0x80 // 0:Protect, 1:Not Protect - -// SmartMedia Busy Time (1bit:0.1ms) -#define BUSY_PROG 200 // tPROG : 20ms ----- Program Time old : 200 -#define BUSY_ERASE 4000 // tBERASE : 400ms ----- Block Erase Time old : 4000 -//for 712 Test -//#define BUSY_READ 1 // tR : 100us ----- Data transfer Time old : 1 -//#define BUSY_READ 10 // tR : 100us ----- Data transfer Time old : 1 -#define BUSY_READ 200 // tR : 20ms ----- Data transfer Time old : 1 -//#define BUSY_RESET 60 // tRST : 6ms ----- Device Resetting Time old : 60 -#define BUSY_RESET 600 // tRST : 60ms ----- Device Resetting Time old : 60 - -// Hardware Timer (1bit:0.1ms) -#define TIME_PON 3000 // 300ms ------ Power On Wait Time -#define TIME_CDCHK 200 // 20ms ------ Card Check Interval Timer -#define TIME_WPCHK 50 // 5ms ------ WP Check Interval Timer -#define TIME_5VCHK 10 // 1ms ------ 5V Check Interval Timer +/* SmartMedia Status */ +#define WR_FAIL 0x01 /* 0:Pass, 1:Fail */ +#define SUSPENDED 0x20 /* 0:Not Suspended, 1:Suspended */ +#define READY 0x40 /* 0:Busy, 1:Ready */ +#define WR_PRTCT 0x80 /* 0:Protect, 1:Not Protect */ + +/* SmartMedia Busy Time (1bit:0.1ms) */ +#define BUSY_PROG 200 /* tPROG : 20ms ----- Program Time old : 200 */ +#define BUSY_ERASE 4000 /* tBERASE : 400ms ----- Block Erase Time old : 4000 */ + +/*for 712 Test */ +/* #define BUSY_READ 1 *//* tR : 100us ----- Data transfer Time old : 1 */ +/* #define BUSY_READ 10 *//* tR : 100us ----- Data transfer Time old : 1 */ + +#define BUSY_READ 200 /* tR : 20ms ----- Data transfer Time old : 1 */ + +/* #define BUSY_RESET 60 *//* tRST : 6ms ----- Device Resetting Time old : 60 */ + +#define BUSY_RESET 600 /* tRST : 60ms ----- Device Resetting Time old : 60 */ + +/* Hardware Timer (1bit:0.1ms) */ +#define TIME_PON 3000 /* 300ms ------ Power On Wait Time */ +#define TIME_CDCHK 200 /* 20ms ------ Card Check Interval Timer */ +#define TIME_WPCHK 50 /* 5ms ------ WP Check Interval Timer */ +#define TIME_5VCHK 10 /* 1ms ------ 5V Check Interval Timer */ /*************************************************************************** Redundant Data @@ -129,32 +134,32 @@ Redundant Data SmartMedia Model & Attribute ***************************************************************************/ /* SmartMedia Attribute */ -#define NOWP 0x00 // 0... .... No Write Protect -#define WP 0x80 // 1... .... Write Protected -#define MASK 0x00 // .00. .... NAND MASK ROM Model -#define FLASH 0x20 // .01. .... NAND Flash ROM Model -#define AD3CYC 0x00 // ...0 .... Address 3-cycle -#define AD4CYC 0x10 // ...1 .... Address 4-cycle -#define BS16 0x00 // .... 00.. 16page/block -#define BS32 0x04 // .... 01.. 32page/block -#define PS256 0x00 // .... ..00 256byte/page -#define PS512 0x01 // .... ..01 512byte/page -#define MWP 0x80 // WriteProtect mask -#define MFLASH 0x60 // Flash Rom mask -#define MADC 0x10 // Address Cycle -#define MBS 0x0C // BlockSize mask -#define MPS 0x03 // PageSize mask +#define NOWP 0x00 /* 0... .... No Write Protect */ +#define WP 0x80 /* 1... .... Write Protected */ +#define MASK 0x00 /* .00. .... NAND MASK ROM Model */ +#define FLASH 0x20 /* .01. .... NAND Flash ROM Model */ +#define AD3CYC 0x00 /* ...0 .... Address 3-cycle */ +#define AD4CYC 0x10 /* ...1 .... Address 4-cycle */ +#define BS16 0x00 /* .... 00.. 16page/block */ +#define BS32 0x04 /* .... 01.. 32page/block */ +#define PS256 0x00 /* .... ..00 256byte/page */ +#define PS512 0x01 /* .... ..01 512byte/page */ +#define MWP 0x80 /* WriteProtect mask */ +#define MFLASH 0x60 /* Flash Rom mask */ +#define MADC 0x10 /* Address Cycle */ +#define MBS 0x0C /* BlockSize mask */ +#define MPS 0x03 /* PageSize mask */ /* SmartMedia Model */ -#define NOSSFDC 0x00 // NO SmartMedia -#define SSFDC1MB 0x01 // 1MB SmartMedia -#define SSFDC2MB 0x02 // 2MB SmartMedia -#define SSFDC4MB 0x03 // 4MB SmartMedia -#define SSFDC8MB 0x04 // 8MB SmartMedia -#define SSFDC16MB 0x05 // 16MB SmartMedia -#define SSFDC32MB 0x06 // 32MB SmartMedia -#define SSFDC64MB 0x07 // 64MB SmartMedia -#define SSFDC128MB 0x08 //128MB SmartMedia +#define NOSSFDC 0x00 /* NO SmartMedia */ +#define SSFDC1MB 0x01 /* 1MB SmartMedia */ +#define SSFDC2MB 0x02 /* 2MB SmartMedia */ +#define SSFDC4MB 0x03 /* 4MB SmartMedia */ +#define SSFDC8MB 0x04 /* 8MB SmartMedia */ +#define SSFDC16MB 0x05 /* 16MB SmartMedia */ +#define SSFDC32MB 0x06 /* 32MB SmartMedia */ +#define SSFDC64MB 0x07 /* 64MB SmartMedia */ +#define SSFDC128MB 0x08 /*128MB SmartMedia */ #define SSFDC256MB 0x09 #define SSFDC512MB 0x0A #define SSFDC1GB 0x0B @@ -163,8 +168,7 @@ SmartMedia Model & Attribute /*************************************************************************** Struct Definition ***************************************************************************/ -struct SSFDCTYPE -{ +struct SSFDCTYPE { BYTE Model; BYTE Attribute; BYTE MaxZones; @@ -183,8 +187,7 @@ typedef struct SSFDCTYPE_T WORD MaxLogBlocks; } *SSFDCTYPE_T; -struct ADDRESS -{ +struct ADDRESS { BYTE Zone; /* Zone Number */ BYTE Sector; /* Sector(512byte) Number on Block */ WORD PhyBlock; /* Physical Block Number on Zone */ @@ -199,92 +202,112 @@ typedef struct ADDRESS_T WORD LogBlock; /* Logical Block Number of Zone */ } *ADDRESS_T; -struct CIS_AREA -{ +struct CIS_AREA { BYTE Sector; /* Sector(512byte) Number on Block */ WORD PhyBlock; /* Physical Block Number on Zone 0 */ }; -//----- SMILMain.c --------------------------------------------------- -/******************************************/ -int Init_D_SmartMedia (void); -int Pwoff_D_SmartMedia (void); -int Check_D_SmartMedia (void); -int Check_D_Parameter (struct us_data *,WORD *,BYTE *,BYTE *); -int Media_D_ReadSector (struct us_data *,DWORD,WORD,BYTE *); -int Media_D_WriteSector (struct us_data *,DWORD,WORD,BYTE *); -int Media_D_CopySector (struct us_data *,DWORD,WORD,BYTE *); -int Media_D_EraseBlock (struct us_data *,DWORD,WORD); -int Media_D_EraseAll (struct us_data *); -/******************************************/ -int Media_D_OneSectWriteStart (struct us_data *,DWORD,BYTE *); -int Media_D_OneSectWriteNext (struct us_data *,BYTE *); -int Media_D_OneSectWriteFlush (struct us_data *); +extern BYTE IsSSFDCCompliance; +extern BYTE IsXDCompliance; -/******************************************/ -void SM_EnableLED (struct us_data *,BOOLEAN); -void Led_D_TernOn (void); -void Led_D_TernOff (void); +extern DWORD ErrXDCode; +extern DWORD ErrCode; +extern WORD ReadBlock; +extern WORD WriteBlock; +extern DWORD MediaChange; -int Media_D_EraseAllRedtData (DWORD Index, BOOLEAN CheckBlock); -//DWORD Media_D_GetMediaInfo (struct us_data * fdoExt, PIOCTL_MEDIA_INFO_IN pParamIn, PIOCTL_MEDIA_INFO_OUT pParamOut); +extern struct SSFDCTYPE Ssfdc; +extern struct ADDRESS Media; +extern struct CIS_AREA CisArea; -//----- SMILSub.c ---------------------------------------------------- +/* + * SMILMain.c + */ /******************************************/ -int Check_D_DataBlank (BYTE *); -int Check_D_FailBlock (BYTE *); -int Check_D_DataStatus (BYTE *); -int Load_D_LogBlockAddr (BYTE *); -void Clr_D_RedundantData (BYTE *); -void Set_D_LogBlockAddr (BYTE *); -void Set_D_FailBlock (BYTE *); -void Set_D_DataStaus (BYTE *); - +int Init_D_SmartMedia(void); +int Pwoff_D_SmartMedia(void); +int Check_D_SmartMedia(void); +int Check_D_Parameter(struct us_data *, WORD *, BYTE *, BYTE *); +int Media_D_ReadSector(struct us_data *, DWORD, WORD, BYTE *); +int Media_D_WriteSector(struct us_data *, DWORD, WORD, BYTE *); +int Media_D_CopySector(struct us_data *, DWORD, WORD, BYTE *); +int Media_D_EraseBlock(struct us_data *, DWORD, WORD); +int Media_D_EraseAll(struct us_data *); /******************************************/ -void Ssfdc_D_Reset (struct us_data *); -int Ssfdc_D_ReadCisSect (struct us_data *, BYTE *,BYTE *); -void Ssfdc_D_WriteRedtMode (void); -void Ssfdc_D_ReadID (BYTE *, BYTE); -int Ssfdc_D_ReadSect (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_ReadBlock (struct us_data *, WORD, BYTE *,BYTE *); -int Ssfdc_D_WriteSect (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_WriteBlock (struct us_data *, WORD, BYTE *,BYTE *); -int Ssfdc_D_CopyBlock (struct us_data *, WORD, BYTE *,BYTE *); -int Ssfdc_D_WriteSectForCopy (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_EraseBlock (struct us_data *); -int Ssfdc_D_ReadRedtData (struct us_data *, BYTE *); -int Ssfdc_D_WriteRedtData (struct us_data *, BYTE *); -int Ssfdc_D_CheckStatus (void); -int Set_D_SsfdcModel (BYTE); -void Cnt_D_Reset (void); -int Cnt_D_PowerOn (void); -void Cnt_D_PowerOff (void); -void Cnt_D_LedOn (void); -void Cnt_D_LedOff (void); -int Check_D_CntPower (void); -int Check_D_CardExist (void); -int Check_D_CardStsChg (void); -int Check_D_SsfdcWP (void); -int SM_ReadBlock (struct us_data *, BYTE *,BYTE *); - -int Ssfdc_D_ReadSect_DMA (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_ReadSect_PIO (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_WriteSect_DMA (struct us_data *, BYTE *,BYTE *); -int Ssfdc_D_WriteSect_PIO (struct us_data *, BYTE *,BYTE *); +int Media_D_OneSectWriteStart(struct us_data *, DWORD, BYTE *); +int Media_D_OneSectWriteNext(struct us_data *, BYTE *); +int Media_D_OneSectWriteFlush(struct us_data *); /******************************************/ -int Check_D_ReadError (BYTE *); -int Check_D_Correct (BYTE *,BYTE *); -int Check_D_CISdata (BYTE *,BYTE *); -void Set_D_RightECC (BYTE *); - -//----- SMILECC.c ---------------------------------------------------- -void calculate_ecc (BYTE *, BYTE *, BYTE *, BYTE *, BYTE *); -BYTE correct_data (BYTE *, BYTE *, BYTE, BYTE, BYTE); -int _Correct_D_SwECC (BYTE *,BYTE *,BYTE *); -void _Calculate_D_SwECC (BYTE *,BYTE *); +extern int SM_FreeMem(void); /* ENE SM function */ +void SM_EnableLED(struct us_data *, BOOLEAN); +void Led_D_TernOn(void); +void Led_D_TernOff(void); + +int Media_D_EraseAllRedtData(DWORD Index, BOOLEAN CheckBlock); +/*DWORD Media_D_GetMediaInfo(struct us_data * fdoExt, + PIOCTL_MEDIA_INFO_IN pParamIn, PIOCTL_MEDIA_INFO_OUT pParamOut); */ + +/* + * SMILSub.c + */ +/******************************************/ +int Check_D_DataBlank(BYTE *); +int Check_D_FailBlock(BYTE *); +int Check_D_DataStatus(BYTE *); +int Load_D_LogBlockAddr(BYTE *); +void Clr_D_RedundantData(BYTE *); +void Set_D_LogBlockAddr(BYTE *); +void Set_D_FailBlock(BYTE *); +void Set_D_DataStaus(BYTE *); -void SM_Init (void); +/******************************************/ +void Ssfdc_D_Reset(struct us_data *); +int Ssfdc_D_ReadCisSect(struct us_data *, BYTE *, BYTE *); +void Ssfdc_D_WriteRedtMode(void); +void Ssfdc_D_ReadID(BYTE *, BYTE); +int Ssfdc_D_ReadSect(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_ReadBlock(struct us_data *, WORD, BYTE *, BYTE *); +int Ssfdc_D_WriteSect(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_WriteBlock(struct us_data *, WORD, BYTE *, BYTE *); +int Ssfdc_D_CopyBlock(struct us_data *, WORD, BYTE *, BYTE *); +int Ssfdc_D_WriteSectForCopy(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_EraseBlock(struct us_data *); +int Ssfdc_D_ReadRedtData(struct us_data *, BYTE *); +int Ssfdc_D_WriteRedtData(struct us_data *, BYTE *); +int Ssfdc_D_CheckStatus(void); +int Set_D_SsfdcModel(BYTE); +void Cnt_D_Reset(void); +int Cnt_D_PowerOn(void); +void Cnt_D_PowerOff(void); +void Cnt_D_LedOn(void); +void Cnt_D_LedOff(void); +int Check_D_CntPower(void); +int Check_D_CardExist(void); +int Check_D_CardStsChg(void); +int Check_D_SsfdcWP(void); +int SM_ReadBlock(struct us_data *, BYTE *, BYTE *); + +int Ssfdc_D_ReadSect_DMA(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_ReadSect_PIO(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_WriteSect_DMA(struct us_data *, BYTE *, BYTE *); +int Ssfdc_D_WriteSect_PIO(struct us_data *, BYTE *, BYTE *); -#endif // already included +/******************************************/ +int Check_D_ReadError(BYTE *); +int Check_D_Correct(BYTE *, BYTE *); +int Check_D_CISdata(BYTE *, BYTE *); +void Set_D_RightECC(BYTE *); + +/* + * SMILECC.c + */ +void calculate_ecc(BYTE *, BYTE *, BYTE *, BYTE *, BYTE *); +BYTE correct_data(BYTE *, BYTE *, BYTE, BYTE, BYTE); +int _Correct_D_SwECC(BYTE *, BYTE *, BYTE *); +void _Calculate_D_SwECC(BYTE *, BYTE *); + +void SM_Init(void); + +#endif /* already included */ diff --git a/drivers/staging/keucr/smilecc.c b/drivers/staging/keucr/smilecc.c index 5659dea7b701..3085f1d4a4eb 100644 --- a/drivers/staging/keucr/smilecc.c +++ b/drivers/staging/keucr/smilecc.c @@ -1,39 +1,42 @@ #include "usb.h" #include "scsiglue.h" #include "transport.h" -//#include "stdlib.h" -//#include "EUCR6SK.h" +/* #include "stdlib.h" */ +/* #include "EUCR6SK.h" */ #include "smcommon.h" #include "smil.h" -//#include <stdio.h> -//#include <stdlib.h> -//#include <string.h> -//#include <dos.h> -// -//#include "EMCRIOS.h" +/* #include <stdio.h> */ +/* #include <stdlib.h> */ +/* #include <string.h> */ +/* #include <dos.h> */ +/* #include "EMCRIOS.h" */ -// CP0-CP5 code table +/* CP0-CP5 code table */ static BYTE ecctable[256] = { -0x00,0x55,0x56,0x03,0x59,0x0C,0x0F,0x5A,0x5A,0x0F,0x0C,0x59,0x03,0x56,0x55,0x00, -0x65,0x30,0x33,0x66,0x3C,0x69,0x6A,0x3F,0x3F,0x6A,0x69,0x3C,0x66,0x33,0x30,0x65, -0x66,0x33,0x30,0x65,0x3F,0x6A,0x69,0x3C,0x3C,0x69,0x6A,0x3F,0x65,0x30,0x33,0x66, -0x03,0x56,0x55,0x00,0x5A,0x0F,0x0C,0x59,0x59,0x0C,0x0F,0x5A,0x00,0x55,0x56,0x03, -0x69,0x3C,0x3F,0x6A,0x30,0x65,0x66,0x33,0x33,0x66,0x65,0x30,0x6A,0x3F,0x3C,0x69, -0x0C,0x59,0x5A,0x0F,0x55,0x00,0x03,0x56,0x56,0x03,0x00,0x55,0x0F,0x5A,0x59,0x0C, -0x0F,0x5A,0x59,0x0C,0x56,0x03,0x00,0x55,0x55,0x00,0x03,0x56,0x0C,0x59,0x5A,0x0F, -0x6A,0x3F,0x3C,0x69,0x33,0x66,0x65,0x30,0x30,0x65,0x66,0x33,0x69,0x3C,0x3F,0x6A, -0x6A,0x3F,0x3C,0x69,0x33,0x66,0x65,0x30,0x30,0x65,0x66,0x33,0x69,0x3C,0x3F,0x6A, -0x0F,0x5A,0x59,0x0C,0x56,0x03,0x00,0x55,0x55,0x00,0x03,0x56,0x0C,0x59,0x5A,0x0F, -0x0C,0x59,0x5A,0x0F,0x55,0x00,0x03,0x56,0x56,0x03,0x00,0x55,0x0F,0x5A,0x59,0x0C, -0x69,0x3C,0x3F,0x6A,0x30,0x65,0x66,0x33,0x33,0x66,0x65,0x30,0x6A,0x3F,0x3C,0x69, -0x03,0x56,0x55,0x00,0x5A,0x0F,0x0C,0x59,0x59,0x0C,0x0F,0x5A,0x00,0x55,0x56,0x03, -0x66,0x33,0x30,0x65,0x3F,0x6A,0x69,0x3C,0x3C,0x69,0x6A,0x3F,0x65,0x30,0x33,0x66, -0x65,0x30,0x33,0x66,0x3C,0x69,0x6A,0x3F,0x3F,0x6A,0x69,0x3C,0x66,0x33,0x30,0x65, -0x00,0x55,0x56,0x03,0x59,0x0C,0x0F,0x5A,0x5A,0x0F,0x0C,0x59,0x03,0x56,0x55,0x00 +0x00, 0x55, 0x56, 0x03, 0x59, 0x0C, 0x0F, 0x5A, 0x5A, 0x0F, 0x0C, 0x59, 0x03, +0x56, 0x55, 0x00, 0x65, 0x30, 0x33, 0x66, 0x3C, 0x69, 0x6A, 0x3F, 0x3F, 0x6A, +0x69, 0x3C, 0x66, 0x33, 0x30, 0x65, 0x66, 0x33, 0x30, 0x65, 0x3F, 0x6A, 0x69, +0x3C, 0x3C, 0x69, 0x6A, 0x3F, 0x65, 0x30, 0x33, 0x66, 0x03, 0x56, 0x55, 0x00, +0x5A, 0x0F, 0x0C, 0x59, 0x59, 0x0C, 0x0F, 0x5A, 0x00, 0x55, 0x56, 0x03, 0x69, +0x3C, 0x3F, 0x6A, 0x30, 0x65, 0x66, 0x33, 0x33, 0x66, 0x65, 0x30, 0x6A, 0x3F, +0x3C, 0x69, 0x0C, 0x59, 0x5A, 0x0F, 0x55, 0x00, 0x03, 0x56, 0x56, 0x03, 0x00, +0x55, 0x0F, 0x5A, 0x59, 0x0C, 0x0F, 0x5A, 0x59, 0x0C, 0x56, 0x03, 0x00, 0x55, +0x55, 0x00, 0x03, 0x56, 0x0C, 0x59, 0x5A, 0x0F, 0x6A, 0x3F, 0x3C, 0x69, 0x33, +0x66, 0x65, 0x30, 0x30, 0x65, 0x66, 0x33, 0x69, 0x3C, 0x3F, 0x6A, 0x6A, 0x3F, +0x3C, 0x69, 0x33, 0x66, 0x65, 0x30, 0x30, 0x65, 0x66, 0x33, 0x69, 0x3C, 0x3F, +0x6A, 0x0F, 0x5A, 0x59, 0x0C, 0x56, 0x03, 0x00, 0x55, 0x55, 0x00, 0x03, 0x56, +0x0C, 0x59, 0x5A, 0x0F, 0x0C, 0x59, 0x5A, 0x0F, 0x55, 0x00, 0x03, 0x56, 0x56, +0x03, 0x00, 0x55, 0x0F, 0x5A, 0x59, 0x0C, 0x69, 0x3C, 0x3F, 0x6A, 0x30, 0x65, +0x66, 0x33, 0x33, 0x66, 0x65, 0x30, 0x6A, 0x3F, 0x3C, 0x69, 0x03, 0x56, 0x55, +0x00, 0x5A, 0x0F, 0x0C, 0x59, 0x59, 0x0C, 0x0F, 0x5A, 0x00, 0x55, 0x56, 0x03, +0x66, 0x33, 0x30, 0x65, 0x3F, 0x6A, 0x69, 0x3C, 0x3C, 0x69, 0x6A, 0x3F, 0x65, +0x30, 0x33, 0x66, 0x65, 0x30, 0x33, 0x66, 0x3C, 0x69, 0x6A, 0x3F, 0x3F, 0x6A, +0x69, 0x3C, 0x66, 0x33, 0x30, 0x65, 0x00, 0x55, 0x56, 0x03, 0x59, 0x0C, 0x0F, +0x5A, 0x5A, 0x0F, 0x0C, 0x59, 0x03, 0x56, 0x55, 0x00 }; -static void trans_result (BYTE, BYTE, BYTE *, BYTE *); +static void trans_result(BYTE, BYTE, BYTE *, BYTE *); #define BIT7 0x80 #define BIT6 0x40 @@ -48,139 +51,144 @@ static void trans_result (BYTE, BYTE, BYTE *, BYTE *); #define MASK_CPS 0x3f #define CORRECTABLE 0x00555554L -static void trans_result(reg2,reg3,ecc1,ecc2) -BYTE reg2; // LP14,LP12,LP10,... -BYTE reg3; // LP15,LP13,LP11,... -BYTE *ecc1; // LP15,LP14,LP13,... -BYTE *ecc2; // LP07,LP06,LP05,... +/* + * reg2; * LP14,LP12,LP10,... + * reg3; * LP15,LP13,LP11,... + * *ecc1; * LP15,LP14,LP13,... + * *ecc2; * LP07,LP06,LP05,... + */ +static void trans_result(BYTE reg2, BYTE reg3, BYTE *ecc1, BYTE *ecc2) { - BYTE a; // Working for reg2,reg3 - BYTE b; // Working for ecc1,ecc2 - BYTE i; // For counting - - a=BIT7; b=BIT7; // 80h=10000000b - *ecc1=*ecc2=0; // Clear ecc1,ecc2 - for(i=0; i<4; ++i) { - if ((reg3&a)!=0) - *ecc1|=b; // LP15,13,11,9 -> ecc1 - b=b>>1; // Right shift - if ((reg2&a)!=0) - *ecc1|=b; // LP14,12,10,8 -> ecc1 - b=b>>1; // Right shift - a=a>>1; // Right shift - } - - b=BIT7; // 80h=10000000b - for(i=0; i<4; ++i) { - if ((reg3&a)!=0) - *ecc2|=b; // LP7,5,3,1 -> ecc2 - b=b>>1; // Right shift - if ((reg2&a)!=0) - *ecc2|=b; // LP6,4,2,0 -> ecc2 - b=b>>1; // Right shift - a=a>>1; // Right shift - } + BYTE a; /* Working for reg2,reg3 */ + BYTE b; /* Working for ecc1,ecc2 */ + BYTE i; /* For counting */ + + a = BIT7; b = BIT7; /* 80h=10000000b */ + *ecc1 = *ecc2 = 0; /* Clear ecc1,ecc2 */ + for (i = 0; i < 4; ++i) { + if ((reg3&a) != 0) + *ecc1 |= b; /* LP15,13,11,9 -> ecc1 */ + b = b>>1; /* Right shift */ + if ((reg2&a) != 0) + *ecc1 |= b; /* LP14,12,10,8 -> ecc1 */ + b = b>>1; /* Right shift */ + a = a>>1; /* Right shift */ + } + + b = BIT7; /* 80h=10000000b */ + for (i = 0; i < 4; ++i) { + if ((reg3&a) != 0) + *ecc2 |= b; /* LP7,5,3,1 -> ecc2 */ + b = b>>1; /* Right shift */ + if ((reg2&a) != 0) + *ecc2 |= b; /* LP6,4,2,0 -> ecc2 */ + b = b>>1; /* Right shift */ + a = a>>1; /* Right shift */ + } } -//static void calculate_ecc(table,data,ecc1,ecc2,ecc3) -void calculate_ecc(table,data,ecc1,ecc2,ecc3) -BYTE *table; // CP0-CP5 code table -BYTE *data; // DATA -BYTE *ecc1; // LP15,LP14,LP13,... -BYTE *ecc2; // LP07,LP06,LP05,... -BYTE *ecc3; // CP5,CP4,CP3,...,"1","1" +/*static void calculate_ecc(table,data,ecc1,ecc2,ecc3) */ +/* + * *table; * CP0-CP5 code table + * *data; * DATA + * *ecc1; * LP15,LP14,LP13,... + * *ecc2; * LP07,LP06,LP05,... + * *ecc3; * CP5,CP4,CP3,...,"1","1" + */ +void calculate_ecc(BYTE *table, BYTE *data, BYTE *ecc1, BYTE *ecc2, BYTE *ecc3) { - DWORD i; // For counting - BYTE a; // Working for table - BYTE reg1; // D-all,CP5,CP4,CP3,... - BYTE reg2; // LP14,LP12,L10,... - BYTE reg3; // LP15,LP13,L11,... - - reg1=reg2=reg3=0; // Clear parameter - for(i=0; i<256; ++i) { - a=table[data[i]]; // Get CP0-CP5 code from table - reg1^=(a&MASK_CPS); // XOR with a - if ((a&BIT6)!=0) - { // If D_all(all bit XOR) = 1 - reg3^=(BYTE)i; // XOR with counter - reg2^=~((BYTE)i); // XOR with inv. of counter - } - } - - // Trans LP14,12,10,... & LP15,13,11,... -> LP15,14,13,... & LP7,6,5,.. - trans_result(reg2,reg3,ecc1,ecc2); - *ecc1=~(*ecc1); *ecc2=~(*ecc2); // Inv. ecc2 & ecc3 - *ecc3=((~reg1)<<2)|BIT1BIT0; // Make TEL format + DWORD i; /* For counting */ + BYTE a; /* Working for table */ + BYTE reg1; /* D-all,CP5,CP4,CP3,... */ + BYTE reg2; /* LP14,LP12,L10,... */ + BYTE reg3; /* LP15,LP13,L11,... */ + + reg1 = reg2 = reg3 = 0; /* Clear parameter */ + for (i = 0; i < 256; ++i) { + a = table[data[i]]; /* Get CP0-CP5 code from table */ + reg1 ^= (a&MASK_CPS); /* XOR with a */ + if ((a&BIT6) != 0) { /* If D_all(all bit XOR) = 1 */ + reg3 ^= (BYTE)i; /* XOR with counter */ + reg2 ^= ~((BYTE)i); /* XOR with inv. of counter */ + } + } + + /* Trans LP14,12,10,... & LP15,13,11,... -> + LP15,14,13,... & LP7,6,5,.. */ + trans_result(reg2, reg3, ecc1, ecc2); + *ecc1 = ~(*ecc1); *ecc2 = ~(*ecc2); /* Inv. ecc2 & ecc3 */ + *ecc3 = ((~reg1)<<2)|BIT1BIT0; /* Make TEL format */ } -BYTE correct_data(data,eccdata,ecc1,ecc2,ecc3) -BYTE *data; // DATA -BYTE *eccdata; // ECC DATA -BYTE ecc1; // LP15,LP14,LP13,... -BYTE ecc2; // LP07,LP06,LP05,... -BYTE ecc3; // CP5,CP4,CP3,...,"1","1" +/* + * *data; * DATA + * *eccdata; * ECC DATA + * ecc1; * LP15,LP14,LP13,... + * ecc2; * LP07,LP06,LP05,... + * ecc3; * CP5,CP4,CP3,...,"1","1" + */ +BYTE correct_data(BYTE *data, BYTE *eccdata, BYTE ecc1, BYTE ecc2, BYTE ecc3) { - DWORD l; // Working to check d - DWORD d; // Result of comparison - DWORD i; // For counting - BYTE d1,d2,d3; // Result of comparison - BYTE a; // Working for add - BYTE add; // Byte address of cor. DATA - BYTE b; // Working for bit - BYTE bit; // Bit address of cor. DATA - - d1=ecc1^eccdata[1]; d2=ecc2^eccdata[0]; // Compare LP's - d3=ecc3^eccdata[2]; // Comapre CP's - d=((DWORD)d1<<16) // Result of comparison - +((DWORD)d2<<8) - +(DWORD)d3; - - if (d==0) return(0); // If No error, return - - if (((d^(d>>1))&CORRECTABLE)==CORRECTABLE) - { // If correctable - l=BIT23; - add=0; // Clear parameter - a=BIT7; - - for(i=0; i<8; ++i) { // Checking 8 bit - if ((d&l)!=0) add|=a; // Make byte address from LP's - l>>=2; a>>=1; // Right Shift - } - - bit=0; // Clear parameter - b=BIT2; - for(i=0; i<3; ++i) { // Checking 3 bit - if ((d&l)!=0) bit|=b; // Make bit address from CP's - l>>=2; b>>=1; // Right shift - } - - b=BIT0; - data[add]^=(b<<bit); // Put corrected data - return(1); - } - - i=0; // Clear count - d&=0x00ffffffL; // Masking - - while(d) { // If d=0 finish counting - if (d&BIT0) ++i; // Count number of 1 bit - d>>=1; // Right shift - } - - if (i==1) - { // If ECC error - eccdata[1]=ecc1; eccdata[0]=ecc2; // Put right ECC code - eccdata[2]=ecc3; - return(2); - } - return(3); // Uncorrectable error + DWORD l; /* Working to check d */ + DWORD d; /* Result of comparison */ + DWORD i; /* For counting */ + BYTE d1, d2, d3; /* Result of comparison */ + BYTE a; /* Working for add */ + BYTE add; /* Byte address of cor. DATA */ + BYTE b; /* Working for bit */ + BYTE bit; /* Bit address of cor. DATA */ + + d1 = ecc1^eccdata[1]; d2 = ecc2^eccdata[0]; /* Compare LP's */ + d3 = ecc3^eccdata[2]; /* Comapre CP's */ + d = ((DWORD)d1<<16) /* Result of comparison */ + +((DWORD)d2<<8) + +(DWORD)d3; + + if (d == 0) + return 0; /* If No error, return */ + + if (((d^(d>>1))&CORRECTABLE) == CORRECTABLE) { /* If correctable */ + l = BIT23; + add = 0; /* Clear parameter */ + a = BIT7; + + for (i = 0; i < 8; ++i) { /* Checking 8 bit */ + if ((d&l) != 0) + add |= a; /* Make byte address from LP's */ + l >>= 2; a >>= 1; /* Right Shift */ + } + + bit = 0; /* Clear parameter */ + b = BIT2; + for (i = 0; i < 3; ++i) { /* Checking 3 bit */ + if ((d&l) != 0) + bit |= b; /* Make bit address from CP's */ + l >>= 2; b >>= 1; /* Right shift */ + } + + b = BIT0; + data[add] ^= (b<<bit); /* Put corrected data */ + return 1; + } + + i = 0; /* Clear count */ + d &= 0x00ffffffL; /* Masking */ + + while (d) { /* If d=0 finish counting */ + if (d&BIT0) + ++i; /* Count number of 1 bit */ + d >>= 1; /* Right shift */ + } + + if (i == 1) { /* If ECC error */ + eccdata[1] = ecc1; eccdata[0] = ecc2; /* Put right ECC code */ + eccdata[2] = ecc3; + return 2; + } + return 3; /* Uncorrectable error */ } -int _Correct_D_SwECC(buf,redundant_ecc,calculate_ecc) -BYTE *buf; -BYTE *redundant_ecc; -BYTE *calculate_ecc; +int _Correct_D_SwECC(BYTE *buf, BYTE *redundant_ecc, BYTE *calculate_ecc) { DWORD err; @@ -195,11 +203,9 @@ BYTE *calculate_ecc; return -1; } -void _Calculate_D_SwECC(buf,ecc) -BYTE *buf; -BYTE *ecc; +void _Calculate_D_SwECC(BYTE *buf, BYTE *ecc) { - calculate_ecc(ecctable,buf,ecc+1,ecc+0,ecc+2); + calculate_ecc(ecctable, buf, ecc+1, ecc+0, ecc+2); } diff --git a/drivers/staging/keucr/smilmain.c b/drivers/staging/keucr/smilmain.c index 95c688a5c95a..31f7813cab0d 100644 --- a/drivers/staging/keucr/smilmain.c +++ b/drivers/staging/keucr/smilmain.c @@ -48,31 +48,27 @@ int MarkFail_D_PhyOneBlock (struct us_data *); DWORD ErrXDCode; DWORD ErrCode; //BYTE SectBuf[SECTSIZE]; -BYTE WorkBuf[SECTSIZE]; -BYTE Redundant[REDTSIZE]; -BYTE WorkRedund[REDTSIZE]; +static BYTE WorkBuf[SECTSIZE]; +static BYTE Redundant[REDTSIZE]; +static BYTE WorkRedund[REDTSIZE]; //WORD Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8]; -WORD AssignStart[MAX_ZONENUM]; +static WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; +static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8]; +static WORD AssignStart[MAX_ZONENUM]; WORD ReadBlock; WORD WriteBlock; DWORD MediaChange; -DWORD SectCopyMode; - -extern struct SSFDCTYPE Ssfdc; -extern struct ADDRESS Media; -extern struct CIS_AREA CisArea; +static DWORD SectCopyMode; //BIT Control Macro -BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ; +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; -extern BYTE IsSSFDCCompliance; -extern BYTE IsXDCompliance; +BYTE IsSSFDCCompliance; +BYTE IsXDCompliance; // @@ -102,12 +98,12 @@ int SM_FreeMem(void) { int i; - printk("SM_FreeMem start\n"); + pr_info("SM_FreeMem start\n"); for (i=0; i<MAX_ZONENUM; i++) { if (Log2Phy[i]!=NULL) { - printk("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]); + pr_info("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]); kfree(Log2Phy[i]); Log2Phy[i] = NULL; } @@ -198,7 +194,7 @@ int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; //ADDRESS_T bb = (ADDRESS_T) &Media; - //printk("Media_D_CopySector !!!\n"); + /* pr_info("Media_D_CopySector !!!\n"); */ if (Conv_D_MediaAddr(us, start)) return(ErrCode); @@ -256,13 +252,13 @@ int Release_D_CopySector(struct us_data *us) if (Media.PhyBlock==NO_ASSIGN) { Media.PhyBlock=WriteBlock; - return(SUCCESS); + return(SMSUCCESS); } Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); Media.PhyBlock=WriteBlock; - return(SUCCESS); + return(SMSUCCESS); } /* //----- Media_D_WriteSector() ------------------------------------------ @@ -572,7 +568,7 @@ int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) // default: *c= 0; *h= 0; *s= 0; ErrCode = ERR_NoSmartMedia; return(ERROR); // } // -// return(SUCCESS); +// return(SMSUCCESS); //} // ////Power Control & Media Exist Check Subroutine @@ -599,7 +595,7 @@ int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) // MediaChange = ERROR; // //usleep(56*1024); // if ((!Check_D_CntPower())&&(!MediaChange)) // Τ power & Media ⊿砆 change, 玥 return success -// return(SUCCESS); +// return(SMSUCCESS); // //usleep(56*1024); // // if (Check_D_CardExist()) // Check if card is not exist, return err @@ -618,7 +614,7 @@ int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) // //usleep(56*1024); // Ssfdc_D_Reset(fdoExt); // //usleep(56*1024); -// return(SUCCESS); +// return(SMSUCCESS); //} // ////-----Check_D_MediaExist() -------------------------------------------- @@ -630,7 +626,7 @@ int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) // if (!Check_D_CardExist()) // { // if (!MediaChange) -// return(SUCCESS); +// return(SMSUCCESS); // // ErrCode = ERR_ChangedMedia; // return(ERROR); @@ -650,19 +646,19 @@ int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) // return(ERROR); // } // -// return(SUCCESS); +// return(SMSUCCESS); //} */ //SmartMedia Physical Format Test Subroutine //----- Check_D_MediaFmt() --------------------------------------------- int Check_D_MediaFmt(struct us_data *us) { - printk("Check_D_MediaFmt\n"); + pr_info("Check_D_MediaFmt\n"); //ULONG i,j, result=FALSE, zone,block; //usleep(56*1024); if (!MediaChange) - return(SUCCESS); + return(SMSUCCESS); MediaChange = ERROR; SectCopyMode = COMPLETED; @@ -682,8 +678,8 @@ int Check_D_MediaFmt(struct us_data *us) } - MediaChange = SUCCESS; - return(SUCCESS); + MediaChange = SMSUCCESS; + return(SMSUCCESS); } /* ////----- Check_D_BlockIsFull() ---------------------------------- @@ -735,7 +731,7 @@ int Check_D_MediaFmt(struct us_data *us) // return(ERROR); // } // -// return(SUCCESS); +// return(SMSUCCESS); //} */ //SmartMedia Physical Address Control Subroutine @@ -767,7 +763,7 @@ int Conv_D_MediaAddr(struct us_data *us, DWORD addr) Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; - return(SUCCESS); + return(SMSUCCESS); } ErrCode = ERR_OutOfLBA; @@ -782,7 +778,7 @@ int Inc_D_MediaAddr(struct us_data *us) //ADDRESS_T bb = (ADDRESS_T) &Media; if (++Media.Sector<Ssfdc.MaxSectors) - return(SUCCESS); + return(SMSUCCESS); if (Log2Phy[Media.Zone]==NULL) { @@ -801,7 +797,7 @@ int Inc_D_MediaAddr(struct us_data *us) Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SUCCESS); + return(SMSUCCESS); } Media.LogBlock=0; @@ -822,7 +818,7 @@ int Inc_D_MediaAddr(struct us_data *us) Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SUCCESS); + return(SMSUCCESS); } Media.Zone=0; @@ -838,7 +834,7 @@ int Check_D_FirstSect(void) ADDRESS_T bb = (ADDRESS_T) &Media; if (!Media.Sector) - return(SUCCESS); + return(SMSUCCESS); return(ERROR); } @@ -852,7 +848,7 @@ int Check_D_LastSect(void) if (Media.Sector<(Ssfdc.MaxSectors-1)) return(ERROR); - return(SUCCESS); + return(SMSUCCESS); } */ //SmartMedia Read/Write Subroutine with Retry @@ -862,7 +858,7 @@ int Media_D_ReadOneSect(struct us_data *us, WORD count, BYTE *buf) DWORD err, retry; if (!Read_D_PhyOneSect(us, count, buf)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); if (ErrCode==ERR_DataStatus) @@ -872,7 +868,7 @@ int Media_D_ReadOneSect(struct us_data *us, WORD count, BYTE *buf) if (Ssfdc.Attribute &MWP) { if (ErrCode==ERR_CorReadErr) - return(SUCCESS); + return(SMSUCCESS); return(ERROR); } @@ -888,13 +884,13 @@ int Media_D_ReadOneSect(struct us_data *us, WORD count, BYTE *buf) ErrCode = err; if (ErrCode==ERR_CorReadErr) - return(SUCCESS); + return(SMSUCCESS); return(ERROR); } MediaChange = ERROR; #else - if (ErrCode==ERR_CorReadErr) return(SUCCESS); + if (ErrCode==ERR_CorReadErr) return(SMSUCCESS); #endif return(ERROR); @@ -908,7 +904,7 @@ int Media_D_WriteOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) ADDRESS_T bb = (ADDRESS_T) &Media; if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); @@ -922,7 +918,7 @@ int Media_D_WriteOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) } if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); } @@ -944,7 +940,7 @@ int Media_D_CopyBlockHead(PFDO_DEVICE_EXTENSION fdoExt) for(retry=0; retry<2; retry++) { if (!Copy_D_BlockHead(fdoExt)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); } @@ -959,7 +955,7 @@ int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) DWORD retry; if (!Copy_D_BlockTail(fdoExt)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); @@ -973,7 +969,7 @@ int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) } if (!Copy_D_BlockTail(fdoExt)) - return(SUCCESS); + return(SMSUCCESS); if (ErrCode==ERR_HwError) return(ERROR); } @@ -995,7 +991,7 @@ int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) // ADDRESS_T bb = (ADDRESS_T) &Media; // // if (Media.PhyBlock==NO_ASSIGN) -// return(SUCCESS); +// return(SMSUCCESS); // // if (Log2Phy[Media.Zone]==NULL) // { @@ -1023,7 +1019,7 @@ int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) // // Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); // Media.PhyBlock=NO_ASSIGN; -// return(SUCCESS); +// return(SMSUCCESS); //} // ////SmartMedia Erase Subroutine @@ -1076,7 +1072,7 @@ int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) // } // // } -// return(SUCCESS); +// return(SMSUCCESS); //} */ //SmartMedia Physical Sector Data Copy Subroutine @@ -1116,7 +1112,7 @@ int Copy_D_BlockAll(struct us_data *us, DWORD mode) Media.PhyBlock=WriteBlock; Media.Sector=sect; - return(SUCCESS); + return(SMSUCCESS); } /* //----- Copy_D_BlockHead() --------------------------------------------- @@ -1149,7 +1145,7 @@ int Copy_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) Media.PhyBlock=WriteBlock; Media.Sector=sect; - return(SUCCESS); + return(SMSUCCESS); } //----- Copy_D_BlockTail() --------------------------------------------- @@ -1178,7 +1174,7 @@ int Copy_D_BlockTail(PFDO_DEVICE_EXTENSION fdoExt) Media.PhyBlock=WriteBlock; Media.Sector=sect; - return(SUCCESS); + return(SMSUCCESS); } //----- Reassign_D_BlockHead() ----------------------------------------- @@ -1226,7 +1222,7 @@ int Reassign_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) ReadBlock=block; Media.Sector=sect; Media.PhyBlock=WriteBlock; - return(SUCCESS); + return(SMSUCCESS); } */ //SmartMedia Physical Block Assign/Release Subroutine @@ -1246,7 +1242,7 @@ int Assign_D_WriteBlock(void) Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; //ErrXDCode = NO_ERROR; - return(SUCCESS); + return(SMSUCCESS); } } @@ -1259,7 +1255,7 @@ int Assign_D_WriteBlock(void) Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; //ErrXDCode = NO_ERROR; - return(SUCCESS); + return(SMSUCCESS); } } @@ -1282,7 +1278,7 @@ int Release_D_ReadBlock(struct us_data *us) SectCopyMode=COMPLETED; if (mode==COMPLETED) - return(SUCCESS); + return(SMSUCCESS); Log2Phy[Media.Zone][Media.LogBlock]=WriteBlock; Media.PhyBlock=ReadBlock; @@ -1290,7 +1286,7 @@ int Release_D_ReadBlock(struct us_data *us) if (Media.PhyBlock==NO_ASSIGN) { Media.PhyBlock=WriteBlock; - return(SUCCESS); + return(SMSUCCESS); } if (mode==REQ_ERASE) @@ -1307,7 +1303,7 @@ int Release_D_ReadBlock(struct us_data *us) return(ERROR); Media.PhyBlock=WriteBlock; - return(SUCCESS); + return(SMSUCCESS); } //----- Release_D_WriteBlock() ----------------------------------------- @@ -1322,7 +1318,7 @@ int Release_D_WriteBlock(struct us_data *us) return(ERROR); Media.PhyBlock=ReadBlock; - return(SUCCESS); + return(SMSUCCESS); } //SmartMedia Physical Sector Data Copy Subroutine @@ -1334,7 +1330,7 @@ int Copy_D_PhyOneSect(struct us_data *us) //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; //ADDRESS_T bb = (ADDRESS_T) &Media; - //printk("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector); + /* pr_info("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector); */ if (ReadBlock!=NO_ASSIGN) { Media.PhyBlock=ReadBlock; @@ -1355,9 +1351,9 @@ int Copy_D_PhyOneSect(struct us_data *us) if (Check_D_DataStatus(WorkRedund)) { err=ERROR; break; } if (!Check_D_ReadError(WorkRedund)) - { err=SUCCESS; break; } + { err=SMSUCCESS; break; } if (!Check_D_Correct(WorkBuf,WorkRedund)) - { err=SUCCESS; break; } + { err=SMSUCCESS; break; } err=ERROR; SectCopyMode=REQ_FAIL; @@ -1365,7 +1361,7 @@ int Copy_D_PhyOneSect(struct us_data *us) } else { - err=SUCCESS; + err=SMSUCCESS; for(i=0; i<SECTSIZE; i++) WorkBuf[i]=DUMMY_DATA; Clr_D_RedundantData(WorkRedund); @@ -1386,7 +1382,7 @@ int Copy_D_PhyOneSect(struct us_data *us) { ErrCode = ERR_WriteFault; return(ERROR); } Media.PhyBlock=ReadBlock; - return(SUCCESS); + return(SMSUCCESS); } //SmartMedia Physical Sector Read/Write/Erase Subroutine @@ -1402,7 +1398,7 @@ int Read_D_PhyOneSect(struct us_data *us, WORD count, BYTE *buf) { for(i=0; i<SECTSIZE; i++) *buf++=DUMMY_DATA; - return(SUCCESS); + return(SMSUCCESS); } for(retry=0; retry<2; retry++) @@ -1424,7 +1420,7 @@ int Read_D_PhyOneSect(struct us_data *us, WORD count, BYTE *buf) { ErrCode = ERR_DataStatus; return(ERROR); } if (!Check_D_ReadError(Redundant)) - return(SUCCESS); + return(SMSUCCESS); if (!Check_D_Correct(buf,Redundant)) { ErrCode = ERR_CorReadErr; return(ERROR); } @@ -1446,7 +1442,7 @@ int Write_D_PhyOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) if (Ssfdc_D_CheckStatus()) { ErrCode = ERR_WriteFault; return(ERROR); } - return(SUCCESS); + return(SMSUCCESS); } */ //----- Erase_D_PhyOneBlock() ------------------------------------------ @@ -1460,7 +1456,7 @@ int Erase_D_PhyOneBlock(struct us_data *us) if (Ssfdc_D_CheckStatus()) { ErrCode = ERR_WriteFault; return(ERROR); } - return(SUCCESS); + return(SMSUCCESS); } //SmartMedia Physical Format Check Local Subroutine @@ -1544,7 +1540,7 @@ int Set_D_PhyFmtValue(struct us_data *us) // } // } - return(SUCCESS); + return(SMSUCCESS); } //----- Search_D_CIS() ------------------------------------------------- @@ -1600,7 +1596,7 @@ int Search_D_CIS(struct us_data *us) CisArea.PhyBlock=Media.PhyBlock; CisArea.Sector=Media.Sector; Ssfdc_D_Reset(us); - return(SUCCESS); + return(SMSUCCESS); } Media.Sector++; @@ -1620,7 +1616,8 @@ int Make_D_LogTable(struct us_data *us) if (Log2Phy[Media.Zone]==NULL) { Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK*sizeof(WORD), GFP_KERNEL); - //printk("ExAllocatePool Zone = %x, Addr = %x\n", Media.Zone, Log2Phy[Media.Zone]); + /* pr_info("ExAllocatePool Zone = %x, Addr = %x\n", + Media.Zone, Log2Phy[Media.Zone]); */ if (Log2Phy[Media.Zone]==NULL) return(ERROR); } @@ -1630,7 +1627,8 @@ int Make_D_LogTable(struct us_data *us) //for(Media.Zone=0; Media.Zone<MAX_ZONENUM; Media.Zone++) //for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) { - //printk("Make_D_LogTable --- MediaZone = 0x%x\n", 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; @@ -1735,7 +1733,7 @@ int Make_D_LogTable(struct us_data *us) } // End for (Media.Zone<MAX_ZONENUM) Ssfdc_D_Reset(us); - return(SUCCESS); + return(SMSUCCESS); } //----- MarkFail_D_PhyOneBlock() --------------------------------------- @@ -1763,7 +1761,7 @@ int MarkFail_D_PhyOneBlock(struct us_data *us) Ssfdc_D_Reset(us); Media.Sector=sect; - return(SUCCESS); + return(SMSUCCESS); } /* // @@ -1821,7 +1819,7 @@ int MarkFail_D_PhyOneBlock(struct us_data *us) // // Ssfdc_D_Reset(fdoExt); // -// return(SUCCESS); +// return(SMSUCCESS); //} // ////----- Media_D_GetMediaInfo() --------------------------------------- diff --git a/drivers/staging/keucr/smilsub.c b/drivers/staging/keucr/smilsub.c index 4fe47422eb79..b315d5f8e197 100644 --- a/drivers/staging/keucr/smilsub.c +++ b/drivers/staging/keucr/smilsub.c @@ -42,10 +42,8 @@ struct SSFDCTYPE Ssfdc; struct ADDRESS Media; struct CIS_AREA CisArea; -BYTE EccBuf[6]; +static BYTE EccBuf[6]; extern PBYTE SMHostAddr; -extern BYTE IsSSFDCCompliance; -extern BYTE IsXDCompliance; extern DWORD ErrXDCode; extern WORD ReadBlock; @@ -67,7 +65,7 @@ int Check_D_DataBlank(BYTE *redundant) if (*redundant++!=0xFF) return(ERROR); - return(SUCCESS); + return(SMSUCCESS); } //----- Check_D_FailBlock() -------------------------------------------- @@ -76,13 +74,13 @@ int Check_D_FailBlock(BYTE *redundant) redundant+=REDT_BLOCK; if (*redundant==0xFF) - return(SUCCESS); + return(SMSUCCESS); if (!*redundant) return(ERROR); if (hweight8(*redundant)<7) return(ERROR); - return(SUCCESS); + return(SMSUCCESS); } //----- Check_D_DataStatus() ------------------------------------------- @@ -91,7 +89,7 @@ int Check_D_DataStatus(BYTE *redundant) redundant+=REDT_DATA; if (*redundant==0xFF) - return(SUCCESS); + return(SMSUCCESS); if (!*redundant) { ErrXDCode = ERR_DataStatus; @@ -103,7 +101,7 @@ int Check_D_DataStatus(BYTE *redundant) if (hweight8(*redundant)<5) return(ERROR); - return(SUCCESS); + return(SMSUCCESS); } //----- Load_D_LogBlockAddr() ------------------------------------------ @@ -118,17 +116,17 @@ int Load_D_LogBlockAddr(BYTE *redundant) if (addr1==addr2) if ((addr1 &0xF000)==0x1000) - { Media.LogBlock=(addr1 &0x0FFF)/2; return(SUCCESS); } + { Media.LogBlock=(addr1 &0x0FFF)/2; return(SMSUCCESS); } if (hweight16((WORD)(addr1^addr2))!=0x01) return(ERROR); if ((addr1 &0xF000)==0x1000) if (!(hweight16(addr1) &0x01)) - { Media.LogBlock=(addr1 &0x0FFF)/2; return(SUCCESS); } + { Media.LogBlock=(addr1 &0x0FFF)/2; return(SMSUCCESS); } if ((addr2 &0xF000)==0x1000) if (!(hweight16(addr2) &0x01)) - { Media.LogBlock=(addr2 &0x0FFF)/2; return(SUCCESS); } + { Media.LogBlock=(addr2 &0x0FFF)/2; return(SMSUCCESS); } return(ERROR); } @@ -222,7 +220,7 @@ int Ssfdc_D_ReadCisSect(struct us_data *us, BYTE *buf,BYTE *redundant) } Media.Zone=zone; Media.PhyBlock=block; Media.Sector=sector; - return(SUCCESS); + return(SMSUCCESS); } /* ////----- Ssfdc_D_WriteRedtMode() ---------------------------------------- @@ -428,7 +426,7 @@ int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf,BYTE *redundant) // // if (!_Hw_D_ChkCardIn()) // return(ERROR); -// return(SUCCESS); +// return(SMSUCCESS); //} // ////----- Ssfdc_D_ReadSect_PIO() --------------------------------------------- @@ -451,7 +449,7 @@ int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf,BYTE *redundant) // // _Calc_D_ECCdata(buf); // _Set_D_SsfdcRdStandby(); -// return(SUCCESS); +// return(SMSUCCESS); //} // 6250 CMD 3 @@ -509,7 +507,7 @@ int Ssfdc_D_WriteSect(PFDO_DEVICE_EXTENSION fdoExt, BYTE *buf,BYTE *redundant) // ENE_Print("Error\n"); // } - return(SUCCESS); + return(SMSUCCESS); } */ //----- Ssfdc_D_CopyBlock() -------------------------------------------- @@ -614,7 +612,7 @@ int Ssfdc_D_WriteBlock(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf,BYTE // ENE_Print("Error\n"); // } - return(SUCCESS); + return(SMSUCCESS); } // ////----- Ssfdc_D_WriteSect_DMA() -------------------------------------------- @@ -704,7 +702,7 @@ int Ssfdc_D_WriteBlock(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf,BYTE // if (!_Hw_D_ChkCardIn()) // return(ERROR); // -// return(SUCCESS); +// return(SMSUCCESS); //} // ////----- Ssfdc_D_WriteSect_PIO() -------------------------------------------- @@ -729,7 +727,7 @@ int Ssfdc_D_WriteBlock(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf,BYTE // // _Set_D_SsfdcWrStandby(); // _Set_D_SsfdcRdStandby(); -// return(SUCCESS); +// return(SMSUCCESS); //} */ //----- Ssfdc_D_WriteSectForCopy() ------------------------------------- @@ -893,14 +891,14 @@ int Ssfdc_D_WriteRedtData(struct us_data *us, BYTE *redundant) int Ssfdc_D_CheckStatus(void) { // Driver ぃ暗 - return(SUCCESS); + return(SMSUCCESS); //_Set_D_SsfdcRdCmd(RDSTATUS); // //if (_Check_D_SsfdcStatus()) //{ _Set_D_SsfdcRdStandby(); return(ERROR); } // //_Set_D_SsfdcRdStandby(); - //return(SUCCESS); + //return(SMSUCCESS); } /* ////NAND Memory (SmartMedia) Control Subroutine for Read Data @@ -1095,7 +1093,7 @@ int Ssfdc_D_CheckStatus(void) // // do { // if (!_Hw_D_ChkBusy()) -// return(SUCCESS); +// return(SMSUCCESS); // EDelay(100); // count++; // } while (count<=time); @@ -1109,7 +1107,7 @@ int Ssfdc_D_CheckStatus(void) // if (_Hw_D_InData() & WR_FAIL) // return(ERROR); // -// return(SUCCESS); +// return(SMSUCCESS); //} // //// For 712 @@ -1339,7 +1337,7 @@ int Set_D_SsfdcModel(BYTE dcode) return(ERROR); } - return(SUCCESS); + return(SMSUCCESS); } //----- _Check_D_DevCode() --------------------------------------------- @@ -1388,7 +1386,7 @@ BYTE _Check_D_DevCode(BYTE dcode) // if (_Hw_D_ChkPower()) // { // _Hw_D_EnableOB(); // Set SM_REG_CTRL_5 Reg. to 0x83 -// return(SUCCESS); +// return(SMSUCCESS); // } // // _Hw_D_SetVccOff(); @@ -1419,7 +1417,7 @@ BYTE _Check_D_DevCode(BYTE dcode) //int Check_D_CntPower(void) //{ // if (_Hw_D_ChkPower()) -// return(SUCCESS); // Power On +// return(SMSUCCESS); // Power On // // return(ERROR); // Power Off //} @@ -1431,7 +1429,7 @@ BYTE _Check_D_DevCode(BYTE dcode) // // if (!_Hw_D_ChkStatus()) // Not Status Change // if (_Hw_D_ChkCardIn()) -// return(SUCCESS); // Card exist in Slot +// return(SMSUCCESS); // Card exist in Slot // // for(i=0,j=0,k=0; i<16; i++) { // if (_Hw_D_ChkCardIn()) // Status Change @@ -1444,7 +1442,7 @@ BYTE _Check_D_DevCode(BYTE dcode) // } // // if (j>3) -// return(SUCCESS); // Card exist in Slot +// return(SMSUCCESS); // Card exist in Slot // if (k>3) // return(ERROR); // NO Card exist in Slot // @@ -1460,12 +1458,12 @@ BYTE _Check_D_DevCode(BYTE dcode) // if (_Hw_D_ChkStatus()) // return(ERROR); // Status Change // -// return(SUCCESS); // Not Status Change +// return(SMSUCCESS); // Not Status Change //} // ////----- Check_D_SsfdcWP() ---------------------------------------------- //int Check_D_SsfdcWP(void) -//{ // ERROR: WP, SUCCESS: Not WP +//{ // ERROR: WP, SMSUCCESS: Not WP // char i; // // for(i=0; i<8; i++) { @@ -1474,7 +1472,7 @@ BYTE _Check_D_DevCode(BYTE dcode) // _Wait_D_Timer(TIME_WPCHK); // } // -// return(SUCCESS); +// return(SMSUCCESS); //} // */ @@ -1482,13 +1480,13 @@ BYTE _Check_D_DevCode(BYTE dcode) //----- Check_D_ReadError() ---------------------------------------------- int Check_D_ReadError(BYTE *redundant) { - return SUCCESS; + return SMSUCCESS; } //----- Check_D_Correct() ---------------------------------------------- int Check_D_Correct(BYTE *buf,BYTE *redundant) { - return SUCCESS; + return SMSUCCESS; } //----- Check_D_CISdata() ---------------------------------------------- @@ -1500,7 +1498,7 @@ int Check_D_CISdata(BYTE *buf, BYTE *redundant) int cis_len = sizeof(cis); if (!IsSSFDCCompliance && !IsXDCompliance) - return SUCCESS; + return SMSUCCESS; if (!memcmp(redundant + 0x0D, EccBuf, 3)) return memcmp(buf, cis, cis_len); @@ -1599,5 +1597,5 @@ int SM_ReadBlock(PFDO_DEVICE_EXTENSION fdoExt, BYTE *buf,BYTE *redundant) if (!NT_SUCCESS(ntStatus)) return(ERROR); - return(SUCCESS); + return(SMSUCCESS); }*/ diff --git a/drivers/staging/keucr/smscsi.c b/drivers/staging/keucr/smscsi.c index 62116869b38a..a6fa77f9c48e 100644 --- a/drivers/staging/keucr/smscsi.c +++ b/drivers/staging/keucr/smscsi.c @@ -20,8 +20,6 @@ int SM_SCSI_Read_Capacity (struct us_data *us, struct scsi_cmnd *srb); int SM_SCSI_Read (struct us_data *us, struct scsi_cmnd *srb); int SM_SCSI_Write (struct us_data *us, struct scsi_cmnd *srb); -extern struct SSFDCTYPE Ssfdc; -extern struct ADDRESS Media; extern PBYTE SMHostAddr; extern DWORD ErrXDCode; diff --git a/drivers/staging/keucr/transport.c b/drivers/staging/keucr/transport.c index a53402f36044..0274cb0edd01 100644 --- a/drivers/staging/keucr/transport.c +++ b/drivers/staging/keucr/transport.c @@ -1,3 +1,5 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #include <linux/sched.h> #include <linux/errno.h> #include <linux/slab.h> @@ -13,23 +15,27 @@ /*********************************************************************** * Data transfer routines ***********************************************************************/ -//----- usb_stor_blocking_completion() --------------------- +/* + * usb_stor_blocking_completion() + */ static void usb_stor_blocking_completion(struct urb *urb) { struct completion *urb_done_ptr = urb->context; - //printk("transport --- usb_stor_blocking_completion\n"); + /* pr_info("transport --- usb_stor_blocking_completion\n"); */ complete(urb_done_ptr); } -//----- usb_stor_msg_common() --------------------- +/* + * usb_stor_msg_common() + */ static int usb_stor_msg_common(struct us_data *us, int timeout) { struct completion urb_done; long timeleft; int status; - //printk("transport --- usb_stor_msg_common\n"); + /* pr_info("transport --- usb_stor_msg_common\n"); */ if (test_bit(US_FLIDX_ABORTING, &us->dflags)) return -EIO; @@ -52,35 +58,36 @@ static int usb_stor_msg_common(struct us_data *us, int timeout) set_bit(US_FLIDX_URB_ACTIVE, &us->dflags); - if (test_bit(US_FLIDX_ABORTING, &us->dflags)) - { - if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) - { - //printk("-- cancelling URB\n"); + if (test_bit(US_FLIDX_ABORTING, &us->dflags)) { + if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) { + /* pr_info("-- cancelling URB\n"); */ usb_unlink_urb(us->current_urb); } } - timeleft = wait_for_completion_interruptible_timeout(&urb_done, timeout ? : MAX_SCHEDULE_TIMEOUT); + timeleft = wait_for_completion_interruptible_timeout(&urb_done, + timeout ? : MAX_SCHEDULE_TIMEOUT); clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags); - if (timeleft <= 0) - { - //printk("%s -- cancelling URB\n", timeleft == 0 ? "Timeout" : "Signal"); + if (timeleft <= 0) { + /* pr_info("%s -- cancelling URB\n", + timeleft == 0 ? "Timeout" : "Signal"); */ usb_kill_urb(us->current_urb); } return us->current_urb->status; } -//----- usb_stor_control_msg() --------------------- +/* + * usb_stor_control_msg() + */ int usb_stor_control_msg(struct us_data *us, unsigned int pipe, u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size, int timeout) { int status; - //printk("transport --- usb_stor_control_msg\n"); + /* pr_info("transport --- usb_stor_control_msg\n"); */ /* fill in the devrequest structure */ us->cr->bRequestType = requesttype; @@ -91,7 +98,7 @@ int usb_stor_control_msg(struct us_data *us, unsigned int pipe, /* fill and submit the URB */ usb_fill_control_urb(us->current_urb, us->pusb_dev, pipe, - (unsigned char*) us->cr, data, size, + (unsigned char *) us->cr, data, size, usb_stor_blocking_completion, NULL); status = usb_stor_msg_common(us, timeout); @@ -101,14 +108,16 @@ int usb_stor_control_msg(struct us_data *us, unsigned int pipe, return status; } -//----- usb_stor_clear_halt() --------------------- +/* + * usb_stor_clear_halt() + */ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe) { int result; int endp = usb_pipeendpoint(pipe); - //printk("transport --- usb_stor_clear_halt\n"); - if (usb_pipein (pipe)) + /* pr_info("transport --- usb_stor_clear_halt\n"); */ + if (usb_pipein(pipe)) endp |= USB_DIR_IN; result = usb_stor_control_msg(us, us->send_ctrl_pipe, @@ -118,103 +127,109 @@ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe) /* reset the endpoint toggle */ if (result >= 0) - //usb_settoggle(us->pusb_dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 0); - usb_reset_endpoint(us->pusb_dev, endp); + /* usb_settoggle(us->pusb_dev, usb_pipeendpoint(pipe), + usb_pipeout(pipe), 0); */ + usb_reset_endpoint(us->pusb_dev, endp); return result; } -//----- interpret_urb_result() --------------------- +/* + * interpret_urb_result() + */ static int interpret_urb_result(struct us_data *us, unsigned int pipe, unsigned int length, int result, unsigned int partial) { - //printk("transport --- interpret_urb_result\n"); + /* pr_info("transport --- interpret_urb_result\n"); */ switch (result) { /* no error code; did we send all the data? */ case 0: - if (partial != length) - { - //printk("-- short transfer\n"); + if (partial != length) { + /* pr_info("-- short transfer\n"); */ return USB_STOR_XFER_SHORT; } - //printk("-- transfer complete\n"); + /* pr_info("-- transfer complete\n"); */ return USB_STOR_XFER_GOOD; case -EPIPE: - if (usb_pipecontrol(pipe)) - { - //printk("-- stall on control pipe\n"); + if (usb_pipecontrol(pipe)) { + /* pr_info("-- stall on control pipe\n"); */ return USB_STOR_XFER_STALLED; } - //printk("clearing endpoint halt for pipe 0x%x\n", pipe); + /* pr_info("clearing endpoint halt for pipe 0x%x\n", pipe); */ if (usb_stor_clear_halt(us, pipe) < 0) return USB_STOR_XFER_ERROR; return USB_STOR_XFER_STALLED; case -EOVERFLOW: - //printk("-- babble\n"); + /* pr_info("-- babble\n"); */ return USB_STOR_XFER_LONG; case -ECONNRESET: - //printk("-- transfer cancelled\n"); + /* pr_info("-- transfer cancelled\n"); */ return USB_STOR_XFER_ERROR; case -EREMOTEIO: - //printk("-- short read transfer\n"); + /* pr_info("-- short read transfer\n"); */ return USB_STOR_XFER_SHORT; case -EIO: - //printk("-- abort or disconnect in progress\n"); + /* pr_info("-- abort or disconnect in progress\n"); */ return USB_STOR_XFER_ERROR; default: - //printk("-- unknown error\n"); + /* pr_info("-- unknown error\n"); */ return USB_STOR_XFER_ERROR; } } -//----- usb_stor_bulk_transfer_buf() --------------------- +/* + * usb_stor_bulk_transfer_buf() + */ int usb_stor_bulk_transfer_buf(struct us_data *us, unsigned int pipe, void *buf, unsigned int length, unsigned int *act_len) { int result; - //printk("transport --- usb_stor_bulk_transfer_buf\n"); + /* pr_info("transport --- usb_stor_bulk_transfer_buf\n"); */ /* fill and submit the URB */ - usb_fill_bulk_urb(us->current_urb, us->pusb_dev, pipe, buf, length, usb_stor_blocking_completion, NULL); + usb_fill_bulk_urb(us->current_urb, us->pusb_dev, pipe, buf, + length, usb_stor_blocking_completion, NULL); result = usb_stor_msg_common(us, 0); /* store the actual length of the data transferred */ if (act_len) *act_len = us->current_urb->actual_length; - return interpret_urb_result(us, pipe, length, result, us->current_urb->actual_length); + return interpret_urb_result(us, pipe, length, result, + us->current_urb->actual_length); } -//----- usb_stor_bulk_transfer_sglist() --------------------- +/* + * usb_stor_bulk_transfer_sglist() + */ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe, struct scatterlist *sg, int num_sg, unsigned int length, unsigned int *act_len) { int result; - //printk("transport --- usb_stor_bulk_transfer_sglist\n"); + /* pr_info("transport --- usb_stor_bulk_transfer_sglist\n"); */ if (test_bit(US_FLIDX_ABORTING, &us->dflags)) return USB_STOR_XFER_ERROR; /* initialize the scatter-gather request block */ - result = usb_sg_init(&us->current_sg, us->pusb_dev, pipe, 0, sg, num_sg, length, GFP_NOIO); - if (result) - { - //printk("usb_sg_init returned %d\n", result); + result = usb_sg_init(&us->current_sg, us->pusb_dev, pipe, 0, + sg, num_sg, length, GFP_NOIO); + if (result) { + /* pr_info("usb_sg_init returned %d\n", result); */ return USB_STOR_XFER_ERROR; } - /* since the block has been initialized successfully, it's now okay to cancel it */ + /* since the block has been initialized successfully, + it's now okay to cancel it */ set_bit(US_FLIDX_SG_ACTIVE, &us->dflags); /* did an abort/disconnect occur during the submission? */ - if (test_bit(US_FLIDX_ABORTING, &us->dflags)) - { + if (test_bit(US_FLIDX_ABORTING, &us->dflags)) { /* cancel the request, if it hasn't been cancelled already */ - if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) - { - //printk("-- cancelling sg request\n"); + if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) { + /* pr_info("-- cancelling sg request\n"); */ usb_sg_cancel(&us->current_sg); } } @@ -227,11 +242,15 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe, if (act_len) *act_len = us->current_sg.bytes; - return interpret_urb_result(us, pipe, length, result, us->current_sg.bytes); + return interpret_urb_result(us, pipe, length, + result, us->current_sg.bytes); } -//----- usb_stor_bulk_srb() --------------------- -int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe, struct scsi_cmnd* srb) +/* + * usb_stor_bulk_srb() + */ +int usb_stor_bulk_srb(struct us_data *us, unsigned int pipe, + struct scsi_cmnd *srb) { unsigned int partial; int result = usb_stor_bulk_transfer_sglist(us, pipe, scsi_sglist(srb), @@ -242,27 +261,27 @@ int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe, struct scsi_cmnd* s return result; } -//----- usb_stor_bulk_transfer_sg() --------------------- -int usb_stor_bulk_transfer_sg(struct us_data* us, unsigned int pipe, +/* + * usb_stor_bulk_transfer_sg() + */ +int usb_stor_bulk_transfer_sg(struct us_data *us, unsigned int pipe, void *buf, unsigned int length_left, int use_sg, int *residual) { int result; unsigned int partial; - //printk("transport --- usb_stor_bulk_transfer_sg\n"); + /* pr_info("transport --- usb_stor_bulk_transfer_sg\n"); */ /* are we scatter-gathering? */ - if (use_sg) - { + if (use_sg) { /* use the usb core scatter-gather primitives */ result = usb_stor_bulk_transfer_sglist(us, pipe, (struct scatterlist *) buf, use_sg, length_left, &partial); length_left -= partial; - } - else - { + } else { /* no scatter-gather, just make the request */ - result = usb_stor_bulk_transfer_buf(us, pipe, buf, length_left, &partial); + result = usb_stor_bulk_transfer_buf(us, pipe, buf, + length_left, &partial); length_left -= partial; } @@ -275,37 +294,37 @@ int usb_stor_bulk_transfer_sg(struct us_data* us, unsigned int pipe, /*********************************************************************** * Transport routines ***********************************************************************/ -//----- usb_stor_invoke_transport() --------------------- +/* + * usb_stor_invoke_transport() + */ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) { int need_auto_sense; int result; - //printk("transport --- usb_stor_invoke_transport\n"); + /* pr_info("transport --- usb_stor_invoke_transport\n"); */ usb_stor_print_cmd(srb); /* send the command to the transport layer */ scsi_set_resid(srb, 0); - result = us->transport(srb, us); //usb_stor_Bulk_transport; - - /* if the command gets aborted by the higher layers, we need to short-circuit all other processing */ - if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) - { - //printk("-- command was aborted\n"); + result = us->transport(srb, us); /* usb_stor_Bulk_transport; */ + + /* if the command gets aborted by the higher layers, + we need to short-circuit all other processing */ + if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { + /* pr_info("-- command was aborted\n"); */ srb->result = DID_ABORT << 16; goto Handle_Errors; } /* if there is a transport error, reset and don't auto-sense */ - if (result == USB_STOR_TRANSPORT_ERROR) - { - //printk("-- transport indicates error, resetting\n"); + if (result == USB_STOR_TRANSPORT_ERROR) { + /* pr_info("-- transport indicates error, resetting\n"); */ srb->result = DID_ERROR << 16; goto Handle_Errors; } /* if the transport provided its own sense data, don't auto-sense */ - if (result == USB_STOR_TRANSPORT_NO_SENSE) - { + if (result == USB_STOR_TRANSPORT_NO_SENSE) { srb->result = SAM_STAT_CHECK_CONDITION; return; } @@ -315,34 +334,34 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) /* Determine if we need to auto-sense */ need_auto_sense = 0; - if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_DPCM_USB) && srb->sc_data_direction != DMA_FROM_DEVICE) - { - //printk("-- CB transport device requiring auto-sense\n"); + if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_DPCM_USB) && + srb->sc_data_direction != DMA_FROM_DEVICE) { + /* pr_info("-- CB transport device requiring auto-sense\n"); */ need_auto_sense = 1; } - if (result == USB_STOR_TRANSPORT_FAILED) - { - //printk("-- transport indicates command failure\n"); + if (result == USB_STOR_TRANSPORT_FAILED) { + /* pr_info("-- transport indicates command failure\n"); */ need_auto_sense = 1; } /* Now, if we need to do the auto-sense, let's do it */ - if (need_auto_sense) - { + if (need_auto_sense) { int temp_result; struct scsi_eh_save ses; - printk("Issuing auto-REQUEST_SENSE\n"); + pr_info("Issuing auto-REQUEST_SENSE\n"); scsi_eh_prep_cmnd(srb, &ses, NULL, 0, US_SENSE_SIZE); /* we must do the protocol translation here */ - if (us->subclass == USB_SC_RBC || us->subclass == USB_SC_SCSI || us->subclass == USB_SC_CYP_ATACB) + if (us->subclass == USB_SC_RBC || + us->subclass == USB_SC_SCSI || + us->subclass == USB_SC_CYP_ATACB) { srb->cmd_len = 6; - else + } else { srb->cmd_len = 12; - + } /* issue the auto-sense command */ scsi_set_resid(srb, 0); temp_result = us->transport(us->srb, us); @@ -350,15 +369,13 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) /* let's clean up right away */ scsi_eh_restore_cmnd(srb, &ses); - if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) - { - //printk("-- auto-sense aborted\n"); + if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { + /* pr_info("-- auto-sense aborted\n"); */ srb->result = DID_ABORT << 16; goto Handle_Errors; } - if (temp_result != USB_STOR_TRANSPORT_GOOD) - { - //printk("-- auto-sense failure\n"); + if (temp_result != USB_STOR_TRANSPORT_GOOD) { + /* pr_info("-- auto-sense failure\n"); */ srb->result = DID_ERROR << 16; if (!(us->fflags & US_FL_SCM_MULT_TARG)) goto Handle_Errors; @@ -371,16 +388,17 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) if (result == USB_STOR_TRANSPORT_GOOD && (srb->sense_buffer[2] & 0xaf) == 0 && srb->sense_buffer[12] == 0 && - srb->sense_buffer[13] == 0) - { + srb->sense_buffer[13] == 0) { srb->result = SAM_STAT_GOOD; srb->sense_buffer[0] = 0x0; } } /* Did we transfer less than the minimum amount required? */ - if (srb->result == SAM_STAT_GOOD && scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow) - srb->result = (DID_ERROR << 16);//v02 | (SUGGEST_RETRY << 24); + if (srb->result == SAM_STAT_GOOD && scsi_bufflen(srb) - + scsi_get_resid(srb) < srb->underflow) + srb->result = (DID_ERROR << 16); + /* v02 | (SUGGEST_RETRY << 24); */ return; @@ -394,8 +412,7 @@ Handle_Errors: result = usb_stor_port_reset(us); mutex_lock(&us->dev_mutex); - if (result < 0) - { + if (result < 0) { scsi_lock(us_to_host(us)); usb_stor_report_device_reset(us); scsi_unlock(us_to_host(us)); @@ -404,61 +421,64 @@ Handle_Errors: clear_bit(US_FLIDX_RESETTING, &us->dflags); } -//----- ENE_stor_invoke_transport() --------------------- +/* + * ENE_stor_invoke_transport() + */ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) { - int result=0; + int result = 0; - //printk("transport --- ENE_stor_invoke_transport\n"); + /* pr_info("transport --- ENE_stor_invoke_transport\n"); */ usb_stor_print_cmd(srb); /* send the command to the transport layer */ scsi_set_resid(srb, 0); if (!(us->MS_Status.Ready || us->SM_Status.Ready)) result = ENE_InitMedia(us); - + if (us->Power_IsResum == true) { result = ENE_InitMedia(us); - us->Power_IsResum = false; - } - - if (us->MS_Status.Ready) result = MS_SCSIIrp(us, srb); - if (us->SM_Status.Ready) result = SM_SCSIIrp(us, srb); - - /* if the command gets aborted by the higher layers, we need to short-circuit all other processing */ - if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) - { - //printk("-- command was aborted\n"); + us->Power_IsResum = false; + } + + if (us->MS_Status.Ready) + result = MS_SCSIIrp(us, srb); + if (us->SM_Status.Ready) + result = SM_SCSIIrp(us, srb); + + /* if the command gets aborted by the higher layers, + we need to short-circuit all other processing */ + if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { + /* pr_info("-- command was aborted\n"); */ srb->result = DID_ABORT << 16; goto Handle_Errors; } /* if there is a transport error, reset and don't auto-sense */ - if (result == USB_STOR_TRANSPORT_ERROR) - { - //printk("-- transport indicates error, resetting\n"); + if (result == USB_STOR_TRANSPORT_ERROR) { + /* pr_info("-- transport indicates error, resetting\n"); */ srb->result = DID_ERROR << 16; goto Handle_Errors; } /* if the transport provided its own sense data, don't auto-sense */ - if (result == USB_STOR_TRANSPORT_NO_SENSE) - { + if (result == USB_STOR_TRANSPORT_NO_SENSE) { srb->result = SAM_STAT_CHECK_CONDITION; return; } srb->result = SAM_STAT_GOOD; - if (result == USB_STOR_TRANSPORT_FAILED) - { - //printk("-- transport indicates command failure\n"); - //need_auto_sense = 1; + if (result == USB_STOR_TRANSPORT_FAILED) { + /* pr_info("-- transport indicates command failure\n"); */ + /* need_auto_sense = 1; */ BuildSenseBuffer(srb, us->SrbStatus); srb->result = SAM_STAT_CHECK_CONDITION; } /* Did we transfer less than the minimum amount required? */ - if (srb->result == SAM_STAT_GOOD && scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow) - srb->result = (DID_ERROR << 16);//v02 | (SUGGEST_RETRY << 24); + if (srb->result == SAM_STAT_GOOD && scsi_bufflen(srb) - + scsi_get_resid(srb) < srb->underflow) + srb->result = (DID_ERROR << 16); + /* v02 | (SUGGEST_RETRY << 24); */ return; @@ -472,8 +492,7 @@ Handle_Errors: result = usb_stor_port_reset(us); mutex_lock(&us->dev_mutex); - if (result < 0) - { + if (result < 0) { scsi_lock(us_to_host(us)); usb_stor_report_device_reset(us); scsi_unlock(us_to_host(us)); @@ -482,52 +501,63 @@ Handle_Errors: clear_bit(US_FLIDX_RESETTING, &us->dflags); } -//----- BuildSenseBuffer() ------------------------------------------- +/* + * BuildSenseBuffer() + */ void BuildSenseBuffer(struct scsi_cmnd *srb, int SrbStatus) { - BYTE *buf = srb->sense_buffer; - BYTE asc; - - printk("transport --- BuildSenseBuffer\n"); - switch (SrbStatus) - { - case SS_NOT_READY: asc = 0x3a; break; // sense key = 0x02 - case SS_MEDIUM_ERR: asc = 0x0c; break; // sense key = 0x03 - case SS_ILLEGAL_REQUEST: asc = 0x20; break; // sense key = 0x05 - default: asc = 0x00; break; // ?? - } - - memset(buf, 0, 18); - buf[0x00] = 0xf0; - buf[0x02] = SrbStatus; - buf[0x07] = 0x0b; - buf[0x0c] = asc; + BYTE *buf = srb->sense_buffer; + BYTE asc; + + pr_info("transport --- BuildSenseBuffer\n"); + switch (SrbStatus) { + case SS_NOT_READY: + asc = 0x3a; + break; /* sense key = 0x02 */ + case SS_MEDIUM_ERR: + asc = 0x0c; + break; /* sense key = 0x03 */ + case SS_ILLEGAL_REQUEST: + asc = 0x20; + break; /* sense key = 0x05 */ + default: + asc = 0x00; + break; /* ?? */ + } + + memset(buf, 0, 18); + buf[0x00] = 0xf0; + buf[0x02] = SrbStatus; + buf[0x07] = 0x0b; + buf[0x0c] = asc; } -//----- usb_stor_stop_transport() --------------------- +/* + * usb_stor_stop_transport() + */ void usb_stor_stop_transport(struct us_data *us) { - //printk("transport --- usb_stor_stop_transport\n"); + /* pr_info("transport --- usb_stor_stop_transport\n"); */ - if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) - { - //printk("-- cancelling URB\n"); + if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) { + /* pr_info("-- cancelling URB\n"); */ usb_unlink_urb(us->current_urb); } - if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) - { - //printk("-- cancelling sg request\n"); + if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) { + /* pr_info("-- cancelling sg request\n"); */ usb_sg_cancel(&us->current_sg); } } -//----- usb_stor_Bulk_max_lun() --------------------- +/* + * usb_stor_Bulk_max_lun() + */ int usb_stor_Bulk_max_lun(struct us_data *us) { int result; - //printk("transport --- usb_stor_Bulk_max_lun\n"); + /* pr_info("transport --- usb_stor_Bulk_max_lun\n"); */ /* issue the command */ us->iobuf[0] = 0; result = usb_stor_control_msg(us, us->recv_ctrl_pipe, @@ -536,7 +566,8 @@ int usb_stor_Bulk_max_lun(struct us_data *us) USB_RECIP_INTERFACE, 0, us->ifnum, us->iobuf, 1, HZ); - //printk("GetMaxLUN command result is %d, data is %d\n", result, us->iobuf[0]); + /* pr_info("GetMaxLUN command result is %d, data is %d\n", + result, us->iobuf[0]); */ /* if we have a successful request, return the result */ if (result > 0) @@ -545,7 +576,9 @@ int usb_stor_Bulk_max_lun(struct us_data *us) return 0; } -//----- usb_stor_Bulk_transport() --------------------- +/* + * usb_stor_Bulk_transport() + */ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; @@ -557,10 +590,9 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) unsigned int cswlen; unsigned int cbwlen = US_BULK_CB_WRAP_LEN; - //printk("transport --- usb_stor_Bulk_transport\n"); + /* pr_info("transport --- usb_stor_Bulk_transport\n"); */ /* Take care of BULK32 devices; set extra byte to 0 */ - if (unlikely(us->fflags & US_FL_BULK32)) - { + if (unlikely(us->fflags & US_FL_BULK32)) { cbwlen = 32; us->iobuf[31] = 0; } @@ -579,27 +611,32 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) memset(bcb->CDB, 0, sizeof(bcb->CDB)); memcpy(bcb->CDB, srb->cmnd, bcb->Length); - // send command + /* send command */ /* send it to out endpoint */ - /*printk("Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n", + /* pr_info("Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n", le32_to_cpu(bcb->Signature), bcb->Tag, le32_to_cpu(bcb->DataTransferLength), bcb->Flags, (bcb->Lun >> 4), (bcb->Lun & 0x0F), - bcb->Length);*/ - result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb, cbwlen, NULL); - //printk("Bulk command transfer result=%d\n", result); + bcb->Length); */ + result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, + bcb, cbwlen, NULL); + /* pr_info("Bulk command transfer result=%d\n", result); */ if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; if (unlikely(us->fflags & US_FL_GO_SLOW)) udelay(125); - // R/W data - if (transfer_length) - { - unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? us->recv_bulk_pipe : us->send_bulk_pipe; + /* R/W data */ + if (transfer_length) { + unsigned int pipe; + if (srb->sc_data_direction == DMA_FROM_DEVICE) + pipe = us->recv_bulk_pipe; + else + pipe = us->send_bulk_pipe; + result = usb_stor_bulk_srb(us, pipe, srb); - //printk("Bulk data transfer result 0x%x\n", result); + /* pr_info("Bulk data transfer result 0x%x\n", result); */ if (result == USB_STOR_XFER_ERROR) return USB_STOR_TRANSPORT_ERROR; @@ -608,55 +645,56 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) } /* get CSW for device status */ - //printk("Attempting to get CSW...\n"); - result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen); + /* pr_info("Attempting to get CSW...\n"); */ + result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, + US_BULK_CS_WRAP_LEN, &cswlen); - if (result == USB_STOR_XFER_SHORT && cswlen == 0) - { - //printk("Received 0-length CSW; retrying...\n"); - result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen); + if (result == USB_STOR_XFER_SHORT && cswlen == 0) { + /* pr_info("Received 0-length CSW; retrying...\n"); */ + result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, + US_BULK_CS_WRAP_LEN, &cswlen); } /* did the attempt to read the CSW fail? */ - if (result == USB_STOR_XFER_STALLED) - { + if (result == USB_STOR_XFER_STALLED) { /* get the status again */ - //printk("Attempting to get CSW (2nd try)...\n"); - result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, NULL); + /* pr_info("Attempting to get CSW (2nd try)...\n"); */ + result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, + US_BULK_CS_WRAP_LEN, NULL); } /* if we still have a failure at this point, we're in trouble */ - //printk("Bulk status result = %d\n", result); + /* pr_info("Bulk status result = %d\n", result); */ if (result != USB_STOR_XFER_GOOD) return USB_STOR_TRANSPORT_ERROR; /* check bulk status */ residue = le32_to_cpu(bcs->Residue); - //printk("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", le32_to_cpu(bcs->Signature), bcs->Tag, residue, bcs->Status); - if (!(bcs->Tag == us->tag || (us->fflags & US_FL_BULK_IGNORE_TAG)) || bcs->Status > US_BULK_STAT_PHASE) - { - //printk("Bulk logical error\n"); + /* pr_info("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", + le32_to_cpu(bcs->Signature), + bcs->Tag, residue, bcs->Status); */ + if (!(bcs->Tag == us->tag || + (us->fflags & US_FL_BULK_IGNORE_TAG)) || + bcs->Status > US_BULK_STAT_PHASE) { + /* pr_info("Bulk logical error\n"); */ return USB_STOR_TRANSPORT_ERROR; } - if (!us->bcs_signature) - { + if (!us->bcs_signature) { us->bcs_signature = bcs->Signature; - //if (us->bcs_signature != cpu_to_le32(US_BULK_CS_SIGN)) - // printk("Learnt BCS signature 0x%08X\n", le32_to_cpu(us->bcs_signature)); - } - else if (bcs->Signature != us->bcs_signature) - { - /*printk("Signature mismatch: got %08X, expecting %08X\n", + /* if (us->bcs_signature != cpu_to_le32(US_BULK_CS_SIGN)) */ + /* pr_info("Learnt BCS signature 0x%08X\n", + le32_to_cpu(us->bcs_signature)); */ + } else if (bcs->Signature != us->bcs_signature) { + /* pr_info("Signature mismatch: got %08X, expecting %08X\n", le32_to_cpu(bcs->Signature), - le32_to_cpu(us->bcs_signature));*/ + le32_to_cpu(us->bcs_signature)); */ return USB_STOR_TRANSPORT_ERROR; } /* try to compute the actual residue, based on how much data * was really transferred and what the device tells us */ - if (residue && !(us->fflags & US_FL_IGNORE_RESIDUE)) - { + if (residue && !(us->fflags & US_FL_IGNORE_RESIDUE)) { /* Heuristically detect devices that generate bogus residues * by seeing what happens with INQUIRY and READ CAPACITY @@ -667,34 +705,31 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) ((srb->cmnd[0] == INQUIRY && transfer_length == 36) || (srb->cmnd[0] == READ_CAPACITY && - transfer_length == 8))) - { + transfer_length == 8))) { us->fflags |= US_FL_IGNORE_RESIDUE; - } - else - { + } else { residue = min(residue, transfer_length); - scsi_set_resid(srb, max(scsi_get_resid(srb), (int) residue)); + scsi_set_resid(srb, max(scsi_get_resid(srb), + (int) residue)); } } /* based on the status code, we report good or bad */ - switch (bcs->Status) - { - case US_BULK_STAT_OK: - if (fake_sense) - { - memcpy(srb->sense_buffer, usb_stor_sense_invalidCDB, sizeof(usb_stor_sense_invalidCDB)); - return USB_STOR_TRANSPORT_NO_SENSE; - } - return USB_STOR_TRANSPORT_GOOD; - - case US_BULK_STAT_FAIL: - return USB_STOR_TRANSPORT_FAILED; - - case US_BULK_STAT_PHASE: - return USB_STOR_TRANSPORT_ERROR; + switch (bcs->Status) { + case US_BULK_STAT_OK: + if (fake_sense) { + memcpy(srb->sense_buffer, usb_stor_sense_invalidCDB, + sizeof(usb_stor_sense_invalidCDB)); + return USB_STOR_TRANSPORT_NO_SENSE; + } + return USB_STOR_TRANSPORT_GOOD; + + case US_BULK_STAT_FAIL: + return USB_STOR_TRANSPORT_FAILED; + + case US_BULK_STAT_PHASE: + return USB_STOR_TRANSPORT_ERROR; } return USB_STOR_TRANSPORT_ERROR; } @@ -702,7 +737,9 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) /*********************************************************************** * Reset routines ***********************************************************************/ -//----- usb_stor_reset_common() --------------------- +/* + * usb_stor_reset_common() + */ static int usb_stor_reset_common(struct us_data *us, u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size) @@ -710,69 +747,75 @@ static int usb_stor_reset_common(struct us_data *us, int result; int result2; - //printk("transport --- usb_stor_reset_common\n"); - if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) - { - //printk("No reset during disconnect\n"); + /* pr_info("transport --- usb_stor_reset_common\n"); */ + if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { + /* pr_info("No reset during disconnect\n"); */ return -EIO; } - result = usb_stor_control_msg(us, us->send_ctrl_pipe, request, requesttype, value, index, data, size, 5*HZ); - if (result < 0) - { - //printk("Soft reset failed: %d\n", result); + result = usb_stor_control_msg(us, us->send_ctrl_pipe, + request, requesttype, value, index, data, size, 5*HZ); + + if (result < 0) { + /* pr_info("Soft reset failed: %d\n", result); */ return result; } - wait_event_interruptible_timeout(us->delay_wait, test_bit(US_FLIDX_DISCONNECTING, &us->dflags), HZ*6); - if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) - { - //printk("Reset interrupted by disconnect\n"); + wait_event_interruptible_timeout(us->delay_wait, + test_bit(US_FLIDX_DISCONNECTING, &us->dflags), HZ*6); + + if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { + /* pr_info("Reset interrupted by disconnect\n"); */ return -EIO; } - //printk("Soft reset: clearing bulk-in endpoint halt\n"); + /* pr_info("Soft reset: clearing bulk-in endpoint halt\n"); */ result = usb_stor_clear_halt(us, us->recv_bulk_pipe); - //printk("Soft reset: clearing bulk-out endpoint halt\n"); + /* pr_info("Soft reset: clearing bulk-out endpoint halt\n"); */ result2 = usb_stor_clear_halt(us, us->send_bulk_pipe); /* return a result code based on the result of the clear-halts */ if (result >= 0) result = result2; - //if (result < 0) - // printk("Soft reset failed\n"); - //else - // printk("Soft reset done\n"); + /* if (result < 0) */ + /* pr_info("Soft reset failed\n"); */ + /* else */ + /* pr_info("Soft reset done\n"); */ return result; } -//----- usb_stor_Bulk_reset() --------------------- +/* + * usb_stor_Bulk_reset() + */ int usb_stor_Bulk_reset(struct us_data *us) { - //printk("transport --- usb_stor_Bulk_reset\n"); + /* pr_info("transport --- usb_stor_Bulk_reset\n"); */ return usb_stor_reset_common(us, US_BULK_RESET_REQUEST, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, us->ifnum, NULL, 0); } -//----- usb_stor_port_reset() --------------------- +/* + * usb_stor_port_reset() + */ int usb_stor_port_reset(struct us_data *us) { int result; - //printk("transport --- usb_stor_port_reset\n"); + /* pr_info("transport --- usb_stor_port_reset\n"); */ result = usb_lock_device_for_reset(us->pusb_dev, us->pusb_intf); if (result < 0) - printk("unable to lock device for reset: %d\n", result); + pr_info("unable to lock device for reset: %d\n", result); else { /* Were we disconnected while waiting for the lock? */ if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { result = -EIO; - //printk("No reset during disconnect\n"); + /* pr_info("No reset during disconnect\n"); */ } else { result = usb_reset_device(us->pusb_dev); - //printk("usb_reset_composite_device returns %d\n", result); + /* pr_info("usb_reset_composite_device returns %d\n", + result); */ } usb_unlock_device(us->pusb_dev); } diff --git a/drivers/staging/keucr/transport.h b/drivers/staging/keucr/transport.h index 565d98c98454..75296152af76 100644 --- a/drivers/staging/keucr/transport.h +++ b/drivers/staging/keucr/transport.h @@ -8,7 +8,7 @@ /* command block wrapper */ struct bulk_cb_wrap { __le32 Signature; /* contains 'USBC' */ - __u32 Tag; /* unique per command id */ + __u32 Tag; /* unique per command id */ __le32 DataTransferLength; /* size of data */ __u8 Flags; /* direction in bit 0 */ __u8 Lun; /* LUN normally 0 */ @@ -49,9 +49,9 @@ struct bulk_cs_wrap { /* Transport return codes */ #define USB_STOR_TRANSPORT_GOOD 0 /* Transport good, command good */ -#define USB_STOR_TRANSPORT_FAILED 1 /* Transport good, command failed */ -#define USB_STOR_TRANSPORT_NO_SENSE 2 /* Command failed, no auto-sense */ -#define USB_STOR_TRANSPORT_ERROR 3 /* Transport bad (i.e. device dead) */ +#define USB_STOR_TRANSPORT_FAILED 1 /* Transport good, command failed */ +#define USB_STOR_TRANSPORT_NO_SENSE 2 /* Command failed, no auto-sense */ +#define USB_STOR_TRANSPORT_ERROR 3 /* Transport bad (i.e. device dead) */ /* * We used to have USB_STOR_XFER_ABORTED and USB_STOR_TRANSPORT_ABORTED @@ -64,11 +64,11 @@ struct bulk_cs_wrap { /* CBI accept device specific command */ #define US_CBI_ADSC 0 extern int usb_stor_Bulk_transport(struct scsi_cmnd *, struct us_data*); -extern int usb_stor_Bulk_max_lun(struct us_data*); -extern int usb_stor_Bulk_reset(struct us_data*); +extern int usb_stor_Bulk_max_lun(struct us_data *); +extern int usb_stor_Bulk_reset(struct us_data *); extern void usb_stor_print_cmd(struct scsi_cmnd *); extern void usb_stor_invoke_transport(struct scsi_cmnd *, struct us_data*); -extern void usb_stor_stop_transport(struct us_data*); +extern void usb_stor_stop_transport(struct us_data *); extern int usb_stor_control_msg(struct us_data *us, unsigned int pipe, u8 request, u8 requesttype, u16 value, u16 index, void *data, u16 size, int timeout); @@ -77,23 +77,26 @@ extern int usb_stor_bulk_transfer_buf(struct us_data *us, unsigned int pipe, void *buf, unsigned int length, unsigned int *act_len); extern int usb_stor_bulk_transfer_sg(struct us_data *us, unsigned int pipe, void *buf, unsigned int length, int use_sg, int *residual); -extern int usb_stor_bulk_srb(struct us_data* us, unsigned int pipe, - struct scsi_cmnd* srb); +extern int usb_stor_bulk_srb(struct us_data *us, unsigned int pipe, + struct scsi_cmnd *srb); extern int usb_stor_port_reset(struct us_data *us); /* Protocol handling routines */ enum xfer_buf_dir {TO_XFER_BUF, FROM_XFER_BUF}; -extern unsigned int usb_stor_access_xfer_buf(struct us_data*, unsigned char *buffer, - unsigned int buflen, struct scsi_cmnd *srb, struct scatterlist **, - unsigned int *offset, enum xfer_buf_dir dir); -extern void usb_stor_set_xfer_buf(struct us_data*, unsigned char *buffer, unsigned int buflen, struct scsi_cmnd *srb, +extern unsigned int usb_stor_access_xfer_buf(struct us_data*, + unsigned char *buffer, unsigned int buflen, struct scsi_cmnd *srb, + struct scatterlist **, unsigned int *offset, enum xfer_buf_dir dir); +extern void usb_stor_set_xfer_buf(struct us_data*, unsigned char *buffer, + unsigned int buflen, struct scsi_cmnd *srb, unsigned int dir); -// ENE scsi function -extern void ENE_stor_invoke_transport(struct scsi_cmnd *, struct us_data*); -extern int ENE_InitMedia(struct us_data*); -extern int ENE_MSInit(struct us_data*); -extern int ENE_SMInit(struct us_data*); +/* + * ENE scsi function + */ +extern void ENE_stor_invoke_transport(struct scsi_cmnd *, struct us_data *); +extern int ENE_InitMedia(struct us_data *); +extern int ENE_MSInit(struct us_data *); +extern int ENE_SMInit(struct us_data *); extern int ENE_SendScsiCmd(struct us_data*, BYTE, void*, int); extern int ENE_LoadBinCode(struct us_data*, BYTE); extern int ENE_Read_BYTE(struct us_data*, WORD index, void *buf); @@ -101,41 +104,54 @@ extern int ENE_Read_Data(struct us_data*, void *buf, unsigned int length); extern int ENE_Write_Data(struct us_data*, void *buf, unsigned int length); extern void BuildSenseBuffer(struct scsi_cmnd *, int); -// ENE scsi function +/* + * ENE scsi function + */ extern int MS_SCSIIrp(struct us_data *us, struct scsi_cmnd *srb); extern int SM_SCSIIrp(struct us_data *us, struct scsi_cmnd *srb); -// ENE MS function -extern int MS_CardInit(struct us_data *us); +/* + * ENE MS function + */ +extern int MS_CardInit(struct us_data *us); extern void MS_LibFreeAllocatedArea(struct us_data *us); extern void MS_LibFreeWriteBuf(struct us_data *us); extern int MS_LibFreeLogicalMap(struct us_data *us); -extern int MS_LibForceSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk); -extern int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, DWORD *PageBuf, MS_LibTypeExtdat *ExtraDat); -extern int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, WORD newphy, WORD PhyBlockAddr, BYTE PageNum, PBYTE buf, WORD len); +extern int MS_LibForceSetLogicalPair(struct us_data *us, WORD logblk, + WORD phyblk); +extern int MS_ReaderReadPage(struct us_data *us, DWORD PhyBlockAddr, + BYTE PageNum, DWORD *PageBuf, + MS_LibTypeExtdat *ExtraDat); +extern int MS_ReaderCopyBlock(struct us_data *us, WORD oldphy, + WORD newphy, WORD PhyBlockAddr, + BYTE PageNum, PBYTE buf, WORD len); extern int MS_ReaderEraseBlock(struct us_data *us, DWORD PhyBlockAddr); -extern int MS_LibProcessBootBlock(struct us_data *us, WORD PhyBlock, BYTE *PageData); +extern int MS_LibProcessBootBlock(struct us_data *us, WORD PhyBlock, + BYTE *PageData); extern int MS_LibAllocLogicalMap(struct us_data *us); extern int MS_LibSetBootBlockMark(struct us_data *us, WORD phyblk); -extern int MS_LibSetLogicalBlockMark(struct us_data *us, WORD phyblk, WORD mark); +extern int MS_LibSetLogicalBlockMark(struct us_data *us, WORD phyblk, + WORD mark); extern int MS_LibSetInitialErrorBlock(struct us_data *us, WORD phyblk); extern int MS_LibScanLogicalBlockNumber(struct us_data *us, WORD phyblk); extern int MS_LibAllocWriteBuf(struct us_data *us); void MS_LibClearWriteBuf(struct us_data *us); -void MS_LibPhy2LogRange(WORD PhyBlock, WORD *LogStart, WORD *LogEnde); -extern int MS_LibReadExtra(struct us_data *us, DWORD PhyBlock, BYTE PageNum, MS_LibTypeExtdat *ExtraDat); -extern int MS_LibReadExtraBlock(struct us_data *us, DWORD PhyBlock, BYTE PageNum, BYTE blen, void *buf); +void MS_LibPhy2LogRange(WORD PhyBlock, WORD *LogStart, + WORD *LogEnde); +extern int MS_LibReadExtra(struct us_data *us, DWORD PhyBlock, + BYTE PageNum, MS_LibTypeExtdat *ExtraDat); +extern int MS_LibReadExtraBlock(struct us_data *us, DWORD PhyBlock, + BYTE PageNum, BYTE blen, void *buf); extern int MS_LibSetAcquiredErrorBlock(struct us_data *us, WORD phyblk); extern int MS_LibErasePhyBlock(struct us_data *us, WORD phyblk); extern int MS_LibErrorPhyBlock(struct us_data *us, WORD phyblk); -extern int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, BYTE PageNum, BYTE OverwriteFlag); -extern int MS_LibSetLogicalPair(struct us_data *us, WORD logblk, WORD phyblk); +extern int MS_LibOverwriteExtra(struct us_data *us, DWORD PhyBlockAddr, + BYTE PageNum, BYTE OverwriteFlag); +extern int MS_LibSetLogicalPair(struct us_data *us, + WORD logblk, WORD phyblk); extern int MS_LibCheckDisableBlock(struct us_data *us, WORD PhyBlock); extern int MS_CountFreeBlock(struct us_data *us, WORD PhyBlock); extern int MS_LibSearchBlockFromLogical(struct us_data *us, WORD logblk); extern int MS_LibSearchBlockFromPhysical(struct us_data *us, WORD phyblk); -// ENE SM function -extern int SM_FreeMem(void); - #endif diff --git a/drivers/staging/keucr/usb.c b/drivers/staging/keucr/usb.c index 8c2332ec4f5c..d8c5c626be5c 100644 --- a/drivers/staging/keucr/usb.c +++ b/drivers/staging/keucr/usb.c @@ -14,6 +14,7 @@ #include "usb.h" #include "scsiglue.h" +#include "smil.h" #include "transport.h" /* Some informational data */ @@ -34,10 +35,10 @@ MODULE_DEVICE_TABLE (usb, eucr_usb_ids); #ifdef CONFIG_PM -int eucr_suspend(struct usb_interface *iface, pm_message_t message) +static int eucr_suspend(struct usb_interface *iface, pm_message_t message) { struct us_data *us = usb_get_intfdata(iface); - printk("--- eucr_suspend ---\n"); + pr_info("--- eucr_suspend ---\n"); /* Wait until no command is running */ mutex_lock(&us->dev_mutex); @@ -55,12 +56,12 @@ int eucr_suspend(struct usb_interface *iface, pm_message_t message) } //EXPORT_SYMBOL_GPL(eucr_suspend); -int eucr_resume(struct usb_interface *iface) +static int eucr_resume(struct usb_interface *iface) { BYTE tmp = 0; struct us_data *us = usb_get_intfdata(iface); - printk("--- eucr_resume---\n"); + pr_info("--- eucr_resume---\n"); mutex_lock(&us->dev_mutex); //US_DEBUGP("%s\n", __func__); @@ -80,12 +81,12 @@ int eucr_resume(struct usb_interface *iface) return 0; } //EXPORT_SYMBOL_GPL(eucr_resume); -int eucr_reset_resume(struct usb_interface *iface) +static int eucr_reset_resume(struct usb_interface *iface) { BYTE tmp = 0; struct us_data *us = usb_get_intfdata(iface); - printk("--- eucr_reset_resume---\n"); + pr_info("--- eucr_reset_resume---\n"); //US_DEBUGP("%s\n", __func__); /* Report the reset to the SCSI core */ @@ -116,7 +117,7 @@ static int eucr_pre_reset(struct usb_interface *iface) { struct us_data *us = usb_get_intfdata(iface); - printk("usb --- eucr_pre_reset\n"); + pr_info("usb --- eucr_pre_reset\n"); /* Make sure no command runs during the reset */ mutex_lock(&us->dev_mutex); @@ -128,7 +129,7 @@ static int eucr_post_reset(struct usb_interface *iface) { struct us_data *us = usb_get_intfdata(iface); - printk("usb --- eucr_post_reset\n"); + pr_info("usb --- eucr_post_reset\n"); /* Report the reset to the SCSI core */ usb_stor_report_bus_reset(us); @@ -140,7 +141,7 @@ static int eucr_post_reset(struct usb_interface *iface) //----- fill_inquiry_response() --------------------- void fill_inquiry_response(struct us_data *us, unsigned char *data, unsigned int data_len) { - printk("usb --- fill_inquiry_response\n"); + pr_info("usb --- fill_inquiry_response\n"); if (data_len<36) // You lose. return; @@ -171,7 +172,7 @@ static int usb_stor_control_thread(void * __us) struct us_data *us = (struct us_data *)__us; struct Scsi_Host *host = us_to_host(us); - printk("usb --- usb_stor_control_thread\n"); + pr_info("usb --- usb_stor_control_thread\n"); for(;;) { if (wait_for_completion_interruptible(&us->cmnd_ready)) @@ -242,7 +243,7 @@ static int usb_stor_control_thread(void * __us) else { SkipForAbort: - printk("scsi command aborted\n"); + pr_info("scsi command aborted\n"); } if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) @@ -277,7 +278,7 @@ SkipForAbort: //----- associate_dev() --------------------- static int associate_dev(struct us_data *us, struct usb_interface *intf) { - printk("usb --- associate_dev\n"); + pr_info("usb --- associate_dev\n"); /* Fill in the device-related fields */ us->pusb_dev = interface_to_usbdev(intf); @@ -291,21 +292,21 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf) us->cr = usb_alloc_coherent(us->pusb_dev, sizeof(*us->cr), GFP_KERNEL, &us->cr_dma); if (!us->cr) { - printk("usb_ctrlrequest allocation failed\n"); + pr_info("usb_ctrlrequest allocation failed\n"); return -ENOMEM; } us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE, GFP_KERNEL, &us->iobuf_dma); if (!us->iobuf) { - printk("I/O buffer allocation failed\n"); + pr_info("I/O buffer allocation failed\n"); return -ENOMEM; } us->sensebuf = kmalloc(US_SENSE_SIZE, GFP_KERNEL); if (!us->sensebuf) { - printk("Sense buffer allocation failed\n"); + pr_info("Sense buffer allocation failed\n"); return -ENOMEM; } return 0; @@ -317,7 +318,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id) struct usb_device *dev = us->pusb_dev; struct usb_interface_descriptor *idesc = &us->pusb_intf->cur_altsetting->desc; - printk("usb --- get_device_info\n"); + pr_info("usb --- get_device_info\n"); us->subclass = idesc->bInterfaceSubClass; us->protocol = idesc->bInterfaceProtocol; @@ -326,7 +327,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id) if (us->fflags & US_FL_IGNORE_DEVICE) { - printk("device ignored\n"); + pr_info("device ignored\n"); return -ENODEV; } @@ -339,7 +340,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id) //----- get_transport() --------------------- static int get_transport(struct us_data *us) { - printk("usb --- get_transport\n"); + pr_info("usb --- get_transport\n"); switch (us->protocol) { case USB_PR_BULK: us->transport_name = "Bulk"; @@ -350,7 +351,7 @@ static int get_transport(struct us_data *us) default: return -EIO; } - //printk("Transport: %s\n", us->transport_name); + /* pr_info("Transport: %s\n", us->transport_name); */ /* fix for single-lun devices */ if (us->fflags & US_FL_SINGLE_LUN) @@ -361,9 +362,11 @@ static int get_transport(struct us_data *us) //----- get_protocol() --------------------- static int get_protocol(struct us_data *us) { - printk("usb --- get_protocol\n"); - printk("us->pusb_dev->descriptor.idVendor = %x\n", us->pusb_dev->descriptor.idVendor); - printk("us->pusb_dev->descriptor.idProduct = %x\n", us->pusb_dev->descriptor.idProduct); + pr_info("usb --- get_protocol\n"); + pr_info("us->pusb_dev->descriptor.idVendor = %x\n", + us->pusb_dev->descriptor.idVendor); + pr_info("us->pusb_dev->descriptor.idProduct = %x\n", + us->pusb_dev->descriptor.idProduct); switch (us->subclass) { case USB_SC_SCSI: us->protocol_name = "Transparent SCSI"; @@ -376,7 +379,7 @@ static int get_protocol(struct us_data *us) default: return -EIO; } - //printk("Protocol: %s\n", us->protocol_name); + /* pr_info("Protocol: %s\n", us->protocol_name); */ return 0; } @@ -390,7 +393,7 @@ static int get_pipes(struct us_data *us) struct usb_endpoint_descriptor *ep_out = NULL; struct usb_endpoint_descriptor *ep_int = NULL; - printk("usb --- get_pipes\n"); + pr_info("usb --- get_pipes\n"); for (i = 0; i < altsetting->desc.bNumEndpoints; i++) { @@ -418,7 +421,7 @@ static int get_pipes(struct us_data *us) if (!ep_in || !ep_out || (us->protocol == USB_PR_CBI && !ep_int)) { - printk("Endpoint sanity check failed! Rejecting dev.\n"); + pr_info("Endpoint sanity check failed! Rejecting dev.\n"); return -EIO; } @@ -440,11 +443,11 @@ static int usb_stor_acquire_resources(struct us_data *us) { struct task_struct *th; - printk("usb --- usb_stor_acquire_resources\n"); + pr_info("usb --- usb_stor_acquire_resources\n"); us->current_urb = usb_alloc_urb(0, GFP_KERNEL); if (!us->current_urb) { - printk("URB allocation failed\n"); + pr_info("URB allocation failed\n"); return -ENOMEM; } @@ -452,7 +455,7 @@ static int usb_stor_acquire_resources(struct us_data *us) th = kthread_run(usb_stor_control_thread, us, "eucr-storage"); if (IS_ERR(th)) { - printk("Unable to start control thread\n"); + pr_info("Unable to start control thread\n"); return PTR_ERR(th); } us->ctl_thread = th; @@ -463,7 +466,7 @@ static int usb_stor_acquire_resources(struct us_data *us) //----- usb_stor_release_resources() --------------------- static void usb_stor_release_resources(struct us_data *us) { - printk("usb --- usb_stor_release_resources\n"); + pr_info("usb --- usb_stor_release_resources\n"); SM_FreeMem(); @@ -474,7 +477,7 @@ static void usb_stor_release_resources(struct us_data *us) /* Call the destructor routine, if it exists */ if (us->extra_destructor) { - printk("-- calling extra_destructor()\n"); + pr_info("-- calling extra_destructor()\n"); us->extra_destructor(us->extra); } @@ -486,7 +489,7 @@ static void usb_stor_release_resources(struct us_data *us) //----- dissociate_dev() --------------------- static void dissociate_dev(struct us_data *us) { - printk("usb --- dissociate_dev\n"); + pr_info("usb --- dissociate_dev\n"); kfree(us->sensebuf); @@ -505,7 +508,7 @@ static void quiesce_and_remove_host(struct us_data *us) { struct Scsi_Host *host = us_to_host(us); - printk("usb --- quiesce_and_remove_host\n"); + pr_info("usb --- quiesce_and_remove_host\n"); /* If the device is really gone, cut short reset delays */ if (us->pusb_dev->state == USB_STATE_NOTATTACHED) @@ -535,7 +538,7 @@ static void quiesce_and_remove_host(struct us_data *us) //----- release_everything() --------------------- static void release_everything(struct us_data *us) { - printk("usb --- release_everything\n"); + pr_info("usb --- release_everything\n"); usb_stor_release_resources(us); dissociate_dev(us); @@ -547,8 +550,8 @@ static int usb_stor_scan_thread(void * __us) { struct us_data *us = (struct us_data *)__us; - printk("usb --- usb_stor_scan_thread\n"); - printk("EUCR : device found at %d\n", us->pusb_dev->devnum); + pr_info("usb --- usb_stor_scan_thread\n"); + pr_info("EUCR : device found at %d\n", us->pusb_dev->devnum); set_freezable(); /* Wait for the timeout to expire or for a disconnect */ @@ -569,7 +572,7 @@ static int usb_stor_scan_thread(void * __us) mutex_unlock(&us->dev_mutex); } scsi_scan_host(us_to_host(us)); - printk("EUCR : device scan complete\n"); + pr_info("EUCR : device scan complete\n"); } complete_and_exit(&us->scanning_done, 0); } @@ -583,12 +586,12 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id BYTE MiscReg03 = 0; struct task_struct *th; - printk("usb --- eucr_probe\n"); + pr_info("usb --- eucr_probe\n"); host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us)); if (!host) { - printk("Unable to allocate the scsi host\n"); + pr_info("Unable to allocate the scsi host\n"); return -ENOMEM; } @@ -631,7 +634,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id result = scsi_add_host(host, &intf->dev); if (result) { - printk("Unable to add the scsi host\n"); + pr_info("Unable to add the scsi host\n"); goto BadDevice; } @@ -639,7 +642,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id th = kthread_create(usb_stor_scan_thread, us, "eucr-stor-scan"); if (IS_ERR(th)) { - printk("Unable to start the device-scanning thread\n"); + pr_info("Unable to start the device-scanning thread\n"); complete(&us->scanning_done); quiesce_and_remove_host(us); result = PTR_ERR(th); @@ -658,7 +661,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id if (!(MiscReg03 & 0x02)) { result = -ENODEV; quiesce_and_remove_host(us); - printk(KERN_NOTICE "keucr: The driver only supports SM/MS card.\ + pr_info("keucr: The driver only supports SM/MS card.\ To use SD card, \ please build driver/usb/storage/ums-eneub6250.ko\n"); goto BadDevice; @@ -668,7 +671,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id /* We come here if there are any problems */ BadDevice: - printk("usb --- eucr_probe failed\n"); + pr_info("usb --- eucr_probe failed\n"); release_everything(us); return result; } @@ -678,7 +681,7 @@ static void eucr_disconnect(struct usb_interface *intf) { struct us_data *us = usb_get_intfdata(intf); - printk("usb --- eucr_disconnect\n"); + pr_info("usb --- eucr_disconnect\n"); quiesce_and_remove_host(us); release_everything(us); } @@ -705,11 +708,11 @@ static struct usb_driver usb_storage_driver = { static int __init usb_stor_init(void) { int retval; - printk("usb --- usb_stor_init start\n"); + pr_info("usb --- usb_stor_init start\n"); retval = usb_register(&usb_storage_driver); if (retval == 0) - printk("ENE USB Mass Storage support registered.\n"); + pr_info("ENE USB Mass Storage support registered.\n"); return retval; } @@ -717,7 +720,7 @@ static int __init usb_stor_init(void) //----- usb_stor_exit() --------------------- static void __exit usb_stor_exit(void) { - printk("usb --- usb_stor_exit\n"); + pr_info("usb --- usb_stor_exit\n"); usb_deregister(&usb_storage_driver) ; } |