diff options
Diffstat (limited to 'drivers/staging/keucr')
-rw-r--r-- | drivers/staging/keucr/init.c | 116 | ||||
-rw-r--r-- | drivers/staging/keucr/scsiglue.c | 19 | ||||
-rw-r--r-- | drivers/staging/keucr/smil.h | 28 | ||||
-rw-r--r-- | drivers/staging/keucr/smilmain.c | 1937 | ||||
-rw-r--r-- | drivers/staging/keucr/smilsub.c | 52 | ||||
-rw-r--r-- | drivers/staging/keucr/smscsi.c | 38 | ||||
-rw-r--r-- | drivers/staging/keucr/transport.c | 49 | ||||
-rw-r--r-- | drivers/staging/keucr/transport.h | 3 | ||||
-rw-r--r-- | drivers/staging/keucr/usb.c | 67 | ||||
-rw-r--r-- | drivers/staging/keucr/usb.h | 119 |
10 files changed, 694 insertions, 1734 deletions
diff --git a/drivers/staging/keucr/init.c b/drivers/staging/keucr/init.c index 231611d..f5d41e0 100644 --- a/drivers/staging/keucr/init.c +++ b/drivers/staging/keucr/init.c @@ -19,13 +19,13 @@ int ENE_InitMedia(struct us_data *us) int result; BYTE MiscReg03 = 0; - printk(KERN_INFO "--- Init Media ---\n"); - result = ENE_Read_BYTE(us, REG_CARD_STATUS, &MiscReg03); + dev_info(&us->pusb_dev->dev, "--- Init Media ---\n"); + result = ene_read_byte(us, REG_CARD_STATUS, &MiscReg03); if (result != USB_STOR_XFER_GOOD) { - printk(KERN_ERR "Read register fail !!\n"); + dev_err(&us->pusb_dev->dev, "Failed to read register\n"); return USB_STOR_TRANSPORT_ERROR; } - printk(KERN_INFO "MiscReg03 = %x\n", MiscReg03); + dev_info(&us->pusb_dev->dev, "MiscReg03 = %x\n", MiscReg03); if (MiscReg03 & 0x02) { if (!us->SM_Status.Ready && !us->MS_Status.Ready) { @@ -39,9 +39,9 @@ int ENE_InitMedia(struct us_data *us) } /* - * ENE_Read_BYTE() : + * ene_read_byte() : */ -int ENE_Read_BYTE(struct us_data *us, WORD index, void *buf) +int ene_read_byte(struct us_data *us, WORD index, void *buf) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; @@ -67,11 +67,13 @@ int ENE_SMInit(struct us_data *us) int result; BYTE buf[0x200]; - printk(KERN_INFO "transport --- ENE_SMInit\n"); + dev_dbg(&us->pusb_dev->dev, "transport --- ENE_SMInit\n"); result = ENE_LoadBinCode(us, SM_INIT_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk(KERN_INFO "Load SM Init Code Fail !!\n"); + dev_info(&us->pusb_dev->dev, + "Failed to load SmartMedia init code\n: result= %x\n", + result); return USB_STOR_TRANSPORT_ERROR; } @@ -84,26 +86,33 @@ int ENE_SMInit(struct us_data *us) result = ENE_SendScsiCmd(us, FDIR_READ, &buf, 0); if (result != USB_STOR_XFER_GOOD) { - printk(KERN_ERR - "Execution SM Init Code Fail !! result = %x\n", result); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia init code: result = %x\n", + result); return USB_STOR_TRANSPORT_ERROR; } - us->SM_Status = *(PSM_STATUS)&buf[0]; + us->SM_Status = *(struct keucr_sm_status *)&buf[0]; us->SM_DeviceID = buf[1]; us->SM_CardID = buf[2]; if (us->SM_Status.Insert && us->SM_Status.Ready) { - printk(KERN_INFO "Insert = %x\n", us->SM_Status.Insert); - printk(KERN_INFO "Ready = %x\n", us->SM_Status.Ready); - printk(KERN_INFO "WtP = %x\n", us->SM_Status.WtP); - printk(KERN_INFO "DeviceID = %x\n", us->SM_DeviceID); - printk(KERN_INFO "CardID = %x\n", us->SM_CardID); + dev_info(&us->pusb_dev->dev, "Insert = %x\n", + us->SM_Status.Insert); + dev_info(&us->pusb_dev->dev, "Ready = %x\n", + us->SM_Status.Ready); + dev_info(&us->pusb_dev->dev, "WtP = %x\n", + us->SM_Status.WtP); + dev_info(&us->pusb_dev->dev, "DeviceID = %x\n", + us->SM_DeviceID); + dev_info(&us->pusb_dev->dev, "CardID = %x\n", + us->SM_CardID); MediaChange = 1; Check_D_MediaFmt(us); } else { - printk(KERN_ERR "SM Card Not Ready --- %x\n", buf[0]); + dev_err(&us->pusb_dev->dev, + "SmartMedia Card Not Ready --- %x\n", buf[0]); return USB_STOR_TRANSPORT_ERROR; } @@ -120,7 +129,7 @@ int ENE_LoadBinCode(struct us_data *us, BYTE flag) /* void *buf; */ PBYTE buf; - /* printk(KERN_INFO "transport --- ENE_LoadBinCode\n"); */ + /* dev_info(&us->pusb_dev->dev, "transport --- ENE_LoadBinCode\n"); */ if (us->BIN_FLAG == flag) return USB_STOR_TRANSPORT_GOOD; @@ -130,11 +139,11 @@ int ENE_LoadBinCode(struct us_data *us, BYTE flag) switch (flag) { /* For SS */ case SM_INIT_PATTERN: - printk(KERN_INFO "SM_INIT_PATTERN\n"); + dev_dbg(&us->pusb_dev->dev, "SM_INIT_PATTERN\n"); memcpy(buf, SM_Init, 0x800); break; case SM_RW_PATTERN: - printk(KERN_INFO "SM_RW_PATTERN\n"); + dev_dbg(&us->pusb_dev->dev, "SM_RW_PATTERN\n"); memcpy(buf, SM_Rdwr, 0x800); break; } @@ -165,12 +174,13 @@ int ENE_SendScsiCmd(struct us_data *us, BYTE fDir, void *buf, int use_sg) cswlen = 0, partial = 0; unsigned int residue; - /* printk(KERN_INFO "transport --- ENE_SendScsiCmd\n"); */ + /* dev_dbg(&us->pusb_dev->dev, "transport --- ENE_SendScsiCmd\n"); */ /* send cmd to out endpoint */ result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb, US_BULK_CB_WRAP_LEN, NULL); if (result != USB_STOR_XFER_GOOD) { - printk(KERN_ERR "send cmd to out endpoint fail ---\n"); + dev_err(&us->pusb_dev->dev, + "send cmd to out endpoint fail ---\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -189,7 +199,7 @@ int ENE_SendScsiCmd(struct us_data *us, BYTE fDir, void *buf, int use_sg) result = usb_stor_bulk_transfer_sg(us, pipe, buf, transfer_length, 0, &partial); if (result != USB_STOR_XFER_GOOD) { - printk(KERN_ERR "data transfer fail ---\n"); + dev_err(&us->pusb_dev->dev, "data transfer fail ---\n"); return USB_STOR_TRANSPORT_ERROR; } } @@ -199,14 +209,16 @@ int ENE_SendScsiCmd(struct us_data *us, BYTE fDir, void *buf, int use_sg) US_BULK_CS_WRAP_LEN, &cswlen); if (result == USB_STOR_XFER_SHORT && cswlen == 0) { - printk(KERN_WARNING "Received 0-length CSW; retrying...\n"); + dev_warn(&us->pusb_dev->dev, + "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_STALLED) { /* get the status again */ - printk(KERN_WARNING "Attempting to get CSW (2nd try)...\n"); + dev_warn(&us->pusb_dev->dev, + "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); } @@ -243,7 +255,7 @@ int ENE_Read_Data(struct us_data *us, void *buf, unsigned int length) struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) us->iobuf; int result; - /* printk(KERN_INFO "transport --- ENE_Read_Data\n"); */ + /* dev_dbg(&us->pusb_dev->dev, "transport --- ENE_Read_Data\n"); */ /* set up the command wrapper */ memset(bcb, 0, sizeof(struct bulk_cb_wrap)); bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); @@ -318,55 +330,3 @@ int ENE_Write_Data(struct us_data *us, void *buf, unsigned int length) return USB_STOR_TRANSPORT_GOOD; } -/* - * usb_stor_print_cmd(): - */ -void usb_stor_print_cmd(struct scsi_cmnd *srb) -{ - PBYTE Cdb = srb->cmnd; - DWORD cmd = Cdb[0]; - 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); - - switch (cmd) { - case TEST_UNIT_READY: - /* printk(KERN_INFO - "scsi cmd %X --- SCSIOP_TEST_UNIT_READY\n", cmd); */ - break; - case INQUIRY: - printk(KERN_INFO "scsi cmd %X --- SCSIOP_INQUIRY\n", cmd); - break; - case MODE_SENSE: - printk(KERN_INFO "scsi cmd %X --- SCSIOP_MODE_SENSE\n", cmd); - break; - case START_STOP: - printk(KERN_INFO "scsi cmd %X --- SCSIOP_START_STOP\n", cmd); - break; - case READ_CAPACITY: - printk(KERN_INFO "scsi cmd %X --- SCSIOP_READ_CAPACITY\n", cmd); - break; - case READ_10: - /* printk(KERN_INFO - "scsi cmd %X --- SCSIOP_READ,bn = %X, blen = %X\n" - ,cmd, bn, blen); */ - break; - case WRITE_10: - /* printk(KERN_INFO - "scsi cmd %X --- SCSIOP_WRITE, - bn = %X, blen = %X\n" , cmd, bn, blen); */ - break; - case ALLOW_MEDIUM_REMOVAL: - printk(KERN_INFO - "scsi cmd %X --- SCSIOP_ALLOW_MEDIUM_REMOVAL\n", cmd); - break; - default: - printk(KERN_INFO "scsi cmd %X --- Other cmd\n", cmd); - break; - } - bn = 0; - blen = 0; -} - diff --git a/drivers/staging/keucr/scsiglue.c b/drivers/staging/keucr/scsiglue.c index 48e1005..afb00d8 100644 --- a/drivers/staging/keucr/scsiglue.c +++ b/drivers/staging/keucr/scsiglue.c @@ -73,7 +73,8 @@ static int slave_configure(struct scsi_device *sdev) if (us->fflags & US_FL_CAPACITY_HEURISTICS) sdev->guess_capacity = 1; if (sdev->scsi_level > SCSI_2) - sdev->sdev_target->scsi_level = sdev->scsi_level = SCSI_2; + sdev->sdev_target->scsi_level = sdev->scsi_level + = SCSI_2; sdev->retry_hwerror = 1; sdev->allow_restart = 1; sdev->last_sector_bug = 1; @@ -144,7 +145,7 @@ static int command_abort(struct scsi_cmnd *srb) scsi_lock(us_to_host(us)); if (us->srb != srb) { scsi_unlock(us_to_host(us)); - printk("-- nothing to abort\n"); + dev_info(&us->pusb_dev->dev, "-- nothing to abort\n"); return FAILED; } @@ -319,8 +320,11 @@ static ssize_t store_max_sectors(struct device *dev, return -EINVAL; } -static DEVICE_ATTR(max_sectors, S_IRUGO | S_IWUSR, show_max_sectors, store_max_sectors); -static struct device_attribute *sysfs_device_attr_list[] = {&dev_attr_max_sectors, NULL, }; +static DEVICE_ATTR(max_sectors, S_IRUGO | S_IWUSR, show_max_sectors, + store_max_sectors); +static struct device_attribute *sysfs_device_attr_list[] = { + &dev_attr_max_sectors, NULL, +}; /* this defines our host template, with which we'll allocate hosts */ @@ -393,8 +397,9 @@ unsigned char usb_stor_sense_invalidCDB[18] = { /* * 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 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; @@ -424,7 +429,7 @@ unsigned int usb_stor_access_xfer_buf(struct us_data *us, unsigned char *buffer, while (sglen > 0) { unsigned int plen = min(sglen, - (unsigned int)PAGE_SIZE - poff); + (unsigned int)PAGE_SIZE - poff); unsigned char *ptr = kmap(page); if (dir == TO_XFER_BUF) diff --git a/drivers/staging/keucr/smil.h b/drivers/staging/keucr/smil.h index 24a636a..1538d7b 100644 --- a/drivers/staging/keucr/smil.h +++ b/drivers/staging/keucr/smil.h @@ -168,7 +168,7 @@ SmartMedia Model & Attribute /*************************************************************************** Struct Definition ***************************************************************************/ -struct SSFDCTYPE { +struct keucr_media_info { BYTE Model; BYTE Attribute; BYTE MaxZones; @@ -177,30 +177,14 @@ struct SSFDCTYPE { WORD MaxLogBlocks; }; -typedef struct SSFDCTYPE_T { - BYTE Model; - BYTE Attribute; - BYTE MaxZones; - BYTE MaxSectors; - WORD MaxBlocks; - WORD MaxLogBlocks; -} *SSFDCTYPE_T; - -struct ADDRESS { +struct keucr_media_address { BYTE Zone; /* Zone Number */ BYTE Sector; /* Sector(512byte) Number on Block */ WORD PhyBlock; /* Physical Block Number on Zone */ WORD LogBlock; /* Logical Block Number of Zone */ }; -typedef struct ADDRESS_T { - BYTE Zone; /* Zone Number */ - BYTE Sector; /* Sector(512byte) Number on Block */ - WORD PhyBlock; /* Physical Block Number on Zone */ - WORD LogBlock; /* Logical Block Number of Zone */ -} *ADDRESS_T; - -struct CIS_AREA { +struct keucr_media_area { BYTE Sector; /* Sector(512byte) Number on Block */ WORD PhyBlock; /* Physical Block Number on Zone 0 */ }; @@ -215,9 +199,9 @@ extern WORD ReadBlock; extern WORD WriteBlock; extern DWORD MediaChange; -extern struct SSFDCTYPE Ssfdc; -extern struct ADDRESS Media; -extern struct CIS_AREA CisArea; +extern struct keucr_media_info Ssfdc; +extern struct keucr_media_address Media; +extern struct keucr_media_area CisArea; /* * SMILMain.c diff --git a/drivers/staging/keucr/smilmain.c b/drivers/staging/keucr/smilmain.c index cc49038..2786808 100644 --- a/drivers/staging/keucr/smilmain.c +++ b/drivers/staging/keucr/smilmain.c @@ -4,204 +4,135 @@ #include "smcommon.h" #include "smil.h" -int Check_D_LogCHS (WORD *,BYTE *,BYTE *); -void Initialize_D_Media (void); -void PowerOff_D_Media (void); -int Check_D_MediaPower (void); -int Check_D_MediaExist (void); -int Check_D_MediaWP (void); -int Check_D_MediaFmt (struct us_data *); -int Check_D_MediaFmtForEraseAll (struct us_data *); -int Conv_D_MediaAddr (struct us_data *, DWORD); -int Inc_D_MediaAddr (struct us_data *); -int Check_D_FirstSect (void); -int Check_D_LastSect (void); -int Media_D_ReadOneSect (struct us_data *, WORD, BYTE *); -int Media_D_WriteOneSect (struct us_data *, WORD, BYTE *); -int Media_D_CopyBlockHead (struct us_data *); -int Media_D_CopyBlockTail (struct us_data *); -int Media_D_EraseOneBlock (void); -int Media_D_EraseAllBlock (void); - -int Copy_D_BlockAll (struct us_data *, DWORD); -int Copy_D_BlockHead (struct us_data *); -int Copy_D_BlockTail (struct us_data *); -int Reassign_D_BlockHead (struct us_data *); - -int Assign_D_WriteBlock (void); -int Release_D_ReadBlock (struct us_data *); -int Release_D_WriteBlock (struct us_data *); -int Release_D_CopySector (struct us_data *); - -int Copy_D_PhyOneSect (struct us_data *); -int Read_D_PhyOneSect (struct us_data *, WORD, BYTE *); -int Write_D_PhyOneSect (struct us_data *, WORD, BYTE *); -int Erase_D_PhyOneBlock (struct us_data *); - -int Set_D_PhyFmtValue (struct us_data *); -int Search_D_CIS (struct us_data *); -int Make_D_LogTable (struct us_data *); -void Check_D_BlockIsFull (void); - -int MarkFail_D_PhyOneBlock (struct us_data *); +int Check_D_LogCHS(WORD *, BYTE *, BYTE *); +void Initialize_D_Media(void); +void PowerOff_D_Media(void); +int Check_D_MediaPower(void); +int Check_D_MediaExist(void); +int Check_D_MediaWP(void); +int Check_D_MediaFmt(struct us_data *); +int Check_D_MediaFmtForEraseAll(struct us_data *); +int Conv_D_MediaAddr(struct us_data *, DWORD); +int Inc_D_MediaAddr(struct us_data *); +int Check_D_FirstSect(void); +int Check_D_LastSect(void); +int Media_D_ReadOneSect(struct us_data *, WORD, BYTE *); +int Media_D_WriteOneSect(struct us_data *, WORD, BYTE *); +int Media_D_CopyBlockHead(struct us_data *); +int Media_D_CopyBlockTail(struct us_data *); +int Media_D_EraseOneBlock(void); +int Media_D_EraseAllBlock(void); + +int Copy_D_BlockAll(struct us_data *, DWORD); +int Copy_D_BlockHead(struct us_data *); +int Copy_D_BlockTail(struct us_data *); +int Reassign_D_BlockHead(struct us_data *); + +int Assign_D_WriteBlock(void); +int Release_D_ReadBlock(struct us_data *); +int Release_D_WriteBlock(struct us_data *); +int Release_D_CopySector(struct us_data *); + +int Copy_D_PhyOneSect(struct us_data *); +int Read_D_PhyOneSect(struct us_data *, WORD, BYTE *); +int Write_D_PhyOneSect(struct us_data *, WORD, BYTE *); +int Erase_D_PhyOneBlock(struct us_data *); + +int Set_D_PhyFmtValue(struct us_data *); +int Search_D_CIS(struct us_data *); +int Make_D_LogTable(struct us_data *); +void Check_D_BlockIsFull(void); + +int MarkFail_D_PhyOneBlock(struct us_data *); DWORD ErrXDCode; DWORD ErrCode; -//BYTE SectBuf[SECTSIZE]; static BYTE WorkBuf[SECTSIZE]; static BYTE Redundant[REDTSIZE]; static BYTE WorkRedund[REDTSIZE]; -//WORD Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -static WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; -static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8]; +/* 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; */ +static WORD *Log2Phy[MAX_ZONENUM]; +static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM / 8]; static WORD AssignStart[MAX_ZONENUM]; WORD ReadBlock; WORD WriteBlock; DWORD MediaChange; static DWORD SectCopyMode; -//BIT Control Macro -static BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ; -#define Set_D_Bit(a,b) (a[(BYTE)((b)/8)]|= BitData[(b)%8]) -#define Clr_D_Bit(a,b) (a[(BYTE)((b)/8)]&=~BitData[(b)%8]) -#define Chk_D_Bit(a,b) (a[(BYTE)((b)/8)] & BitData[(b)%8]) +/* BIT Control Macro */ +static BYTE BitData[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; +#define Set_D_Bit(a, b) (a[(BYTE)((b) / 8)] |= BitData[(b) % 8]) +#define Clr_D_Bit(a, b) (a[(BYTE)((b) / 8)] &= ~BitData[(b) % 8]) +#define Chk_D_Bit(a, b) (a[(BYTE)((b) / 8)] & BitData[(b) % 8]) -//extern PBYTE SMHostAddr; BYTE IsSSFDCCompliance; BYTE IsXDCompliance; -// -////Power Control & Media Exist Check Function -////----- Init_D_SmartMedia() -------------------------------------------- -//int Init_D_SmartMedia(void) -//{ -// int i; -// -// EMCR_Print("Init_D_SmartMedia start\n"); -// for (i=0; i<MAX_ZONENUM; i++) -// { -// if (Log2Phy[i]!=NULL) -// { -// EMCR_Print("ExFreePool Zone = %x, Addr = %x\n", i, Log2Phy[i]); -// ExFreePool(Log2Phy[i]); -// Log2Phy[i] = NULL; -// } -// } -// -// Initialize_D_Media(); -// return(NO_ERROR); -//} - -//----- SM_FreeMem() ------------------------------------------------- +/* ----- SM_FreeMem() ------------------------------------------------- */ int SM_FreeMem(void) { int i; pr_info("SM_FreeMem start\n"); - for (i=0; i<MAX_ZONENUM; i++) - { - if (Log2Phy[i]!=NULL) - { + for (i = 0; i < MAX_ZONENUM; i++) { + if (Log2Phy[i] != NULL) { pr_info("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]); kfree(Log2Phy[i]); Log2Phy[i] = NULL; } } - return(NO_ERROR); + return NO_ERROR; } -////----- Pwoff_D_SmartMedia() ------------------------------------------- -//int Pwoff_D_SmartMedia(void) -//{ -// PowerOff_D_Media(); -// return(NO_ERROR); -//} -// -////----- Check_D_SmartMedia() ------------------------------------------- -//int Check_D_SmartMedia(void) -//{ -// if (Check_D_MediaExist()) -// return(ErrCode); -// -// return(NO_ERROR); -//} -// -////----- Check_D_Parameter() -------------------------------------------- -//int Check_D_Parameter(PFDO_DEVICE_EXTENSION fdoExt,WORD *pcyl,BYTE *phead,BYTE *psect) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmt(fdoExt)) -// return(ErrCode); -// -// if (Check_D_LogCHS(pcyl,phead,psect)) -// return(ErrCode); -// -// return(NO_ERROR); -//} - -//SmartMedia Read/Write/Erase Function -//----- Media_D_ReadSector() ------------------------------------------- -int Media_D_ReadSector(struct us_data *us, DWORD start,WORD count,BYTE *buf) +/* SmartMedia Read/Write/Erase Function */ +/* ----- Media_D_ReadSector() ------------------------------------------- */ +int Media_D_ReadSector(struct us_data *us, DWORD start, WORD count, BYTE *buf) { WORD len, bn; - //if (Check_D_MediaPower()) ; ¦b 6250 don't care - // return(ErrCode); - //if (Check_D_MediaFmt(fdoExt)) ; - // return(ErrCode); if (Conv_D_MediaAddr(us, start)) - return(ErrCode); + return ErrCode; - while(1) - { + while (1) { len = Ssfdc.MaxSectors - Media.Sector; if (count > len) bn = len; else bn = count; - //if (Media_D_ReadOneSect(fdoExt, SectBuf)) - //if (Media_D_ReadOneSect(fdoExt, count, buf)) - if (Media_D_ReadOneSect(us, bn, buf)) - { + + if (Media_D_ReadOneSect(us, bn, buf)) { ErrCode = ERR_EccReadErr; - return(ErrCode); + return ErrCode; } Media.Sector += bn; count -= bn; - if (count<=0) + if (count <= 0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) - return(ErrCode); + return ErrCode; } - return(NO_ERROR); + return NO_ERROR; } -// here -//----- Media_D_CopySector() ------------------------------------------ -int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) +/* here */ +/* ----- Media_D_CopySector() ------------------------------------------ */ +int Media_D_CopySector(struct us_data *us, DWORD start, WORD count, BYTE *buf) { - //DWORD mode; - //int i; WORD len, bn; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; /* pr_info("Media_D_CopySector !!!\n"); */ if (Conv_D_MediaAddr(us, start)) - return(ErrCode); + return ErrCode; - while(1) - { + while (1) { if (Assign_D_WriteBlock()) - return(ERROR); + return ERROR; len = Ssfdc.MaxSectors - Media.Sector; if (count > len) @@ -209,607 +140,137 @@ int Media_D_CopySector(struct us_data *us, DWORD start,WORD count,BYTE *buf) else bn = count; - //if (Ssfdc_D_CopyBlock(fdoExt,count,buf,Redundant)) - if (Ssfdc_D_CopyBlock(us,bn,buf,Redundant)) - { + if (Ssfdc_D_CopyBlock(us, bn, buf, Redundant)) { ErrCode = ERR_WriteFault; - return(ErrCode); + return ErrCode; } Media.Sector = 0x1F; - //if (Release_D_ReadBlock(fdoExt)) - if (Release_D_CopySector(us)) - { - if (ErrCode==ERR_HwError) - { + if (Release_D_CopySector(us)) { + if (ErrCode == ERR_HwError) { ErrCode = ERR_WriteFault; - return(ErrCode); + return ErrCode; } } count -= bn; - if (count<=0) + if (count <= 0) break; buf += bn * SECTSIZE; if (Inc_D_MediaAddr(us)) - return(ErrCode); + return ErrCode; } - return(NO_ERROR); + return NO_ERROR; } -//----- Release_D_CopySector() ------------------------------------------ +/* ----- Release_D_CopySector() ------------------------------------------ */ int Release_D_CopySector(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - Log2Phy[Media.Zone][Media.LogBlock]=WriteBlock; - Media.PhyBlock=ReadBlock; + Log2Phy[Media.Zone][Media.LogBlock] = WriteBlock; + Media.PhyBlock = ReadBlock; - if (Media.PhyBlock==NO_ASSIGN) - { - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + if (Media.PhyBlock == NO_ASSIGN) { + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } - Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); - Media.PhyBlock=WriteBlock; + Clr_D_Bit(Assign[Media.Zone], Media.PhyBlock); + Media.PhyBlock = WriteBlock; - return(SMSUCCESS); -} -/* -//----- Media_D_WriteSector() ------------------------------------------ -int Media_D_WriteSector(PFDO_DEVICE_EXTENSION fdoExt, DWORD start,WORD count,BYTE *buf) -{ - int i; - WORD len, bn; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - //if (Check_D_MediaPower()) - // return(ErrCode); - // - //if (Check_D_MediaFmt(fdoExt)) - // return(ErrCode); - // - //if (Check_D_MediaWP()) - // return(ErrCode); - - if (Conv_D_MediaAddr(fdoExt, start)) - return(ErrCode); - - //ENE_Print("Media_D_WriteSector --- Sector = %x\n", Media.Sector); - if (Check_D_FirstSect()) - { - if (Media_D_CopyBlockHead(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - } - - while(1) - { - if (!Check_D_FirstSect()) - { - if (Assign_D_WriteBlock()) - return(ErrCode); - } - - len = Ssfdc.MaxSectors - Media.Sector; - if (count > len) - bn = len; - else - bn = count; - //for(i=0;i<SECTSIZE;i++) - // SectBuf[i]=*buf++; - - //if (Media_D_WriteOneSect(fdoExt, SectBuf)) - if (Media_D_WriteOneSect(fdoExt, bn, buf)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - - Media.Sector += bn - 1; - - if (!Check_D_LastSect()) - { - if (Release_D_ReadBlock(fdoExt)) - - { if (ErrCode==ERR_HwError) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - } - } - - count -= bn; - - if (count<=0) - break; - - buf += bn * SECTSIZE; - - //if (--count<=0) - // break; - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - } - - if (!Check_D_LastSect()) - return(NO_ERROR); - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - - if (Media_D_CopyBlockTail(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - - return(NO_ERROR); + return SMSUCCESS; } -// -////----- Media_D_EraseBlock() ------------------------------------------- -//int Media_D_EraseBlock(PFDO_DEVICE_EXTENSION fdoExt, DWORD start,WORD count) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmt(fdoExt)) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// if (Conv_D_MediaAddr(start)) -// return(ErrCode); -// -// while(Check_D_FirstSect()) { -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (--count<=0) -// return(NO_ERROR); -// } -// -// while(1) { -// if (!Check_D_LastSect()) -// if (Media_D_EraseOneBlock()) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (--count<=0) -// return(NO_ERROR); -// } -//} -// -////----- Media_D_EraseAll() --------------------------------------------- -//int Media_D_EraseAll(PFDO_DEVICE_EXTENSION fdoExt) -//{ -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaFmtForEraseAll(fdoExt)) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// if (Media_D_EraseAllBlock()) -// return(ErrCode); -// -// return(NO_ERROR); -//} - -//SmartMedia Write Function for One Sector Write Mode -//----- Media_D_OneSectWriteStart() ------------------------------------ -int Media_D_OneSectWriteStart(PFDO_DEVICE_EXTENSION fdoExt,DWORD start,BYTE *buf) -{ -// int i; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// //if (Check_D_MediaPower()) -// // return(ErrCode); -// //if (Check_D_MediaFmt(fdoExt)) -// // return(ErrCode); -// //if (Check_D_MediaWP()) -// // return(ErrCode); -// if (Conv_D_MediaAddr(fdoExt, start)) -// return(ErrCode); -// -// if (Check_D_FirstSect()) -// if (Media_D_CopyBlockHead(fdoExt)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_FirstSect()) -// if (Assign_D_WriteBlock()) -// return(ErrCode); -// -// //for(i=0;i<SECTSIZE;i++) -// // SectBuf[i]=*buf++; -// -// //if (Media_D_WriteOneSect(fdoExt, SectBuf)) -// if (Media_D_WriteOneSect(fdoExt, buf)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_LastSect()) -// { -// if (Release_D_ReadBlock(fdoExt)) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// } - - return(NO_ERROR); -} - -//----- Media_D_OneSectWriteNext() ------------------------------------- -int Media_D_OneSectWriteNext(PFDO_DEVICE_EXTENSION fdoExt, BYTE *buf) -{ -// int i; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// if (Inc_D_MediaAddr(fdoExt)) -// return(ErrCode); -// -// if (!Check_D_FirstSect()) -// if (Assign_D_WriteBlock()) -// return(ErrCode); -// -// //for(i=0;i<SECTSIZE;i++) -// // SectBuf[i]=*buf++; -// -// //if (Media_D_WriteOneSect(fdoExt, SectBuf)) -// if (Media_D_WriteOneSect(fdoExt, buf)) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// -// if (!Check_D_LastSect()) -// { -// if (Release_D_ReadBlock(fdoExt)) -// if (ErrCode==ERR_HwError) -// { -// ErrCode = ERR_WriteFault; -// return(ErrCode); -// } -// } - - return(NO_ERROR); -} - -//----- Media_D_OneSectWriteFlush() ------------------------------------ -int Media_D_OneSectWriteFlush(PFDO_DEVICE_EXTENSION fdoExt) -{ - if (!Check_D_LastSect()) - return(NO_ERROR); - - if (Inc_D_MediaAddr(fdoExt)) - return(ErrCode); - - if (Media_D_CopyBlockTail(fdoExt)) - { - ErrCode = ERR_WriteFault; - return(ErrCode); - } - return(NO_ERROR); -} -// -////LED Tern On/Off Subroutine -////----- SM_EnableLED() ----------------------------------------------- -//void SM_EnableLED(PFDO_DEVICE_EXTENSION fdoExt, BOOLEAN enable) -//{ -// if (fdoExt->Drive_IsSWLED) -// { -// if (enable) -// Led_D_TernOn(); -// else -// Led_D_TernOff(); -// } -//} -// -////----- Led_D_TernOn() ------------------------------------------------- -//void Led_D_TernOn(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange=ERROR; -// -// Cnt_D_LedOn(); -//} -// -////----- Led_D_TernOff() ------------------------------------------------ -//void Led_D_TernOff(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange=ERROR; -// -// Cnt_D_LedOff(); -//} -// -////SmartMedia Logical Format Subroutine -////----- Check_D_LogCHS() ----------------------------------------------- -//int Check_D_LogCHS(WORD *c,BYTE *h,BYTE *s) -//{ -// switch(Ssfdc.Model) { -// case SSFDC1MB: *c=125; *h= 4; *s= 4; break; -// case SSFDC2MB: *c=125; *h= 4; *s= 8; break; -// case SSFDC4MB: *c=250; *h= 4; *s= 8; break; -// case SSFDC8MB: *c=250; *h= 4; *s=16; break; -// case SSFDC16MB: *c=500; *h= 4; *s=16; break; -// case SSFDC32MB: *c=500; *h= 8; *s=16; break; -// case SSFDC64MB: *c=500; *h= 8; *s=32; break; -// case SSFDC128MB: *c=500; *h=16; *s=32; break; -// default: *c= 0; *h= 0; *s= 0; ErrCode = ERR_NoSmartMedia; return(ERROR); -// } -// -// return(SMSUCCESS); -//} -// -////Power Control & Media Exist Check Subroutine -////----- Initialize_D_Media() ------------------------------------------- -//void Initialize_D_Media(void) -//{ -// ErrCode = NO_ERROR; -// MediaChange = ERROR; -// SectCopyMode = COMPLETED; -// Cnt_D_Reset(); -//} -// -////----- PowerOff_D_Media() --------------------------------------------- -//void PowerOff_D_Media(void) -//{ -// Cnt_D_PowerOff(); -//} -// -////----- Check_D_MediaPower() ------------------------------------------- -//int Check_D_MediaPower(void) -//{ -// //usleep(56*1024); -// if (Check_D_CardStsChg()) -// MediaChange = ERROR; -// //usleep(56*1024); -// if ((!Check_D_CntPower())&&(!MediaChange)) // ¦³ power & Media ¨S³Q change, «h return success -// return(SMSUCCESS); -// //usleep(56*1024); -// -// if (Check_D_CardExist()) // Check if card is not exist, return err -// { -// ErrCode = ERR_NoSmartMedia; -// MediaChange = ERROR; -// return(ERROR); -// } -// //usleep(56*1024); -// if (Cnt_D_PowerOn()) -// { -// ErrCode = ERR_NoSmartMedia; -// MediaChange = ERROR; -// return(ERROR); -// } -// //usleep(56*1024); -// Ssfdc_D_Reset(fdoExt); -// //usleep(56*1024); -// return(SMSUCCESS); -//} -// -////-----Check_D_MediaExist() -------------------------------------------- -//int Check_D_MediaExist(void) -//{ -// if (Check_D_CardStsChg()) -// MediaChange = ERROR; -// -// if (!Check_D_CardExist()) -// { -// if (!MediaChange) -// return(SMSUCCESS); -// -// ErrCode = ERR_ChangedMedia; -// return(ERROR); -// } -// -// ErrCode = ERR_NoSmartMedia; -// -// return(ERROR); -//} -// -////----- Check_D_MediaWP() ---------------------------------------------- -//int Check_D_MediaWP(void) -//{ -// if (Ssfdc.Attribute &MWP) -// { -// ErrCode = ERR_WrtProtect; -// return(ERROR); -// } -// -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Format Test Subroutine -//----- Check_D_MediaFmt() --------------------------------------------- +/* SmartMedia Physical Format Test Subroutine */ +/* ----- Check_D_MediaFmt() --------------------------------------------- */ int Check_D_MediaFmt(struct us_data *us) { pr_info("Check_D_MediaFmt\n"); - //ULONG i,j, result=FALSE, zone,block; - //usleep(56*1024); if (!MediaChange) - return(SMSUCCESS); + return SMSUCCESS; MediaChange = ERROR; SectCopyMode = COMPLETED; - //usleep(56*1024); - if (Set_D_PhyFmtValue(us)) - { + if (Set_D_PhyFmtValue(us)) { ErrCode = ERR_UnknownMedia; - return(ERROR); + return ERROR; } - - //usleep(56*1024); - if (Search_D_CIS(us)) - { + + if (Search_D_CIS(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } - - MediaChange = SMSUCCESS; - return(SMSUCCESS); + MediaChange = SMSUCCESS; + return SMSUCCESS; } -/* -////----- Check_D_BlockIsFull() ---------------------------------- -//void Check_D_BlockIsFull() -//{ -// ULONG i, block; -// -// if (IsXDCompliance || IsSSFDCCompliance) -// { -// // If the blocks are full then return write-protect. -// block = Ssfdc.MaxBlocks/8; -// for (Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) -// { -// if (Log2Phy[Media.Zone]==NULL) -// { -// if (Make_D_LogTable()) -// { -// ErrCode = ERR_IllegalFmt; -// return; -// } -// } -// -// for (i=0; i<block; i++) -// { -// if (Assign[Media.Zone][i] != 0xFF) -// return; -// } -// } -// Ssfdc.Attribute |= WP; -// } -//} -// -// -////----- Check_D_MediaFmtForEraseAll() ---------------------------------- -//int Check_D_MediaFmtForEraseAll(PFDO_DEVICE_EXTENSION fdoExt) -//{ -// MediaChange = ERROR; -// SectCopyMode = COMPLETED; -// -// if (Set_D_PhyFmtValue(fdoExt)) -// { -// ErrCode = ERR_UnknownMedia; -// return(ERROR); -// } -// -// if (Search_D_CIS(fdoExt)) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Address Control Subroutine -//----- Conv_D_MediaAddr() --------------------------------------------- + +/* SmartMedia Physical Address Control Subroutine */ +/* ----- Conv_D_MediaAddr() --------------------------------------------- */ int Conv_D_MediaAddr(struct us_data *us, DWORD addr) { DWORD temp; - //ULONG zz; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - temp = addr/Ssfdc.MaxSectors; - Media.Zone = (BYTE) (temp/Ssfdc.MaxLogBlocks); + temp = addr / Ssfdc.MaxSectors; + Media.Zone = (BYTE) (temp / Ssfdc.MaxLogBlocks); - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } - Media.Sector = (BYTE) (addr%Ssfdc.MaxSectors); - Media.LogBlock = (WORD) (temp%Ssfdc.MaxLogBlocks); + Media.Sector = (BYTE) (addr % Ssfdc.MaxSectors); + Media.LogBlock = (WORD) (temp % Ssfdc.MaxLogBlocks); - if (Media.Zone<Ssfdc.MaxZones) - { + if (Media.Zone < Ssfdc.MaxZones) { Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + return SMSUCCESS; } ErrCode = ERR_OutOfLBA; - return(ERROR); + return ERROR; } -//----- Inc_D_MediaAddr() ---------------------------------------------- +/* ----- Inc_D_MediaAddr() ---------------------------------------------- */ int Inc_D_MediaAddr(struct us_data *us) { WORD LogBlock = Media.LogBlock; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - if (++Media.Sector<Ssfdc.MaxSectors) - return(SMSUCCESS); + if (++Media.Sector < Ssfdc.MaxSectors) + return SMSUCCESS; - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } - Media.Sector=0; + Media.Sector = 0; Media.LogBlock = LogBlock; - if (++Media.LogBlock<Ssfdc.MaxLogBlocks) - { + if (++Media.LogBlock < Ssfdc.MaxLogBlocks) { Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); - Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; + return SMSUCCESS; } - Media.LogBlock=0; + Media.LogBlock = 0; - if (++Media.Zone<Ssfdc.MaxZones) - { - if (Log2Phy[Media.Zone]==NULL) - { - if (Make_D_LogTable(us)) - { + if (++Media.Zone < Ssfdc.MaxZones) { + if (Log2Phy[Media.Zone] == NULL) { + if (Make_D_LogTable(us)) { ErrCode = ERR_IllegalFmt; - return(ERROR); + return ERROR; } } @@ -817,1034 +278,508 @@ int Inc_D_MediaAddr(struct us_data *us) Clr_D_RedundantData(Redundant); Set_D_LogBlockAddr(Redundant); - Media.PhyBlock=Log2Phy[Media.Zone][Media.LogBlock]; - return(SMSUCCESS); + Media.PhyBlock = Log2Phy[Media.Zone][Media.LogBlock]; + return SMSUCCESS; } - Media.Zone=0; + Media.Zone = 0; ErrCode = ERR_OutOfLBA; - return(ERROR); + return ERROR; } -/* -//----- Check_D_FirstSect() -------------------------------------------- -int Check_D_FirstSect(void) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - if (!Media.Sector) - return(SMSUCCESS); - - return(ERROR); -} - -//----- Check_D_LastSect() --------------------------------------------- -int Check_D_LastSect(void) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - if (Media.Sector<(Ssfdc.MaxSectors-1)) - return(ERROR); - - return(SMSUCCESS); -} -*/ -//SmartMedia Read/Write Subroutine with Retry -//----- Media_D_ReadOneSect() ------------------------------------------ +/* SmartMedia Read/Write Subroutine with Retry */ +/* ----- Media_D_ReadOneSect() ------------------------------------------ */ int Media_D_ReadOneSect(struct us_data *us, WORD count, BYTE *buf) { DWORD err, retry; if (!Read_D_PhyOneSect(us, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - if (ErrCode==ERR_DataStatus) - return(ERROR); + return SMSUCCESS; + if (ErrCode == ERR_HwError) + return ERROR; + if (ErrCode == ERR_DataStatus) + return ERROR; #ifdef RDERR_REASSIGN - if (Ssfdc.Attribute &MWP) - { - if (ErrCode==ERR_CorReadErr) - return(SMSUCCESS); - return(ERROR); + if (Ssfdc.Attribute & MWP) { + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; + return ERROR; } - err=ErrCode; - for(retry=0; retry<2; retry++) - { - if (Copy_D_BlockAll(us, (err==ERR_EccReadErr)?REQ_FAIL:REQ_ERASE)) - { - if (ErrCode==ERR_HwError) - return(ERROR); + err = ErrCode; + for (retry = 0; retry < 2; retry++) { + if (Copy_D_BlockAll(us, + (err == ERR_EccReadErr) ? REQ_FAIL : REQ_ERASE)) { + if (ErrCode == ERR_HwError) + return ERROR; continue; } ErrCode = err; - if (ErrCode==ERR_CorReadErr) - return(SMSUCCESS); - return(ERROR); + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; + return ERROR; } MediaChange = ERROR; #else - if (ErrCode==ERR_CorReadErr) return(SMSUCCESS); + if (ErrCode == ERR_CorReadErr) + return SMSUCCESS; #endif - return(ERROR); -} -/* -//----- Media_D_WriteOneSect() ----------------------------------------- -int Media_D_WriteOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) -{ - DWORD retry; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - - for(retry=1; retry<2; retry++) - { - if (Reassign_D_BlockHead(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - continue; - } - - if (!Write_D_PhyOneSect(fdoExt, count, buf)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - MediaChange = ERROR; - return(ERROR); -} - -//SmartMedia Data Copy Subroutine with Retry -//----- Media_D_CopyBlockHead() ---------------------------------------- -int Media_D_CopyBlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD retry; - - for(retry=0; retry<2; retry++) - { - if (!Copy_D_BlockHead(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - MediaChange = ERROR; - return(ERROR); + return ERROR; } -//----- Media_D_CopyBlockTail() ---------------------------------------- -int Media_D_CopyBlockTail(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD retry; - - if (!Copy_D_BlockTail(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - - for(retry=1; retry<2; retry++) - { - if (Reassign_D_BlockHead(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - continue; - } - - if (!Copy_D_BlockTail(fdoExt)) - return(SMSUCCESS); - if (ErrCode==ERR_HwError) - return(ERROR); - } - - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - MediaChange = ERROR; - return(ERROR); -} -// -////----- Media_D_EraseOneBlock() ---------------------------------------- -//int Media_D_EraseOneBlock(void) -//{ -// WORD LogBlock = Media.LogBlock; -// WORD PhyBlock = Media.PhyBlock; -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// if (Media.PhyBlock==NO_ASSIGN) -// return(SMSUCCESS); -// -// if (Log2Phy[Media.Zone]==NULL) -// { -// if (Make_D_LogTable()) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// } -// Media.LogBlock = LogBlock; -// Media.PhyBlock = PhyBlock; -// -// Log2Phy[Media.Zone][Media.LogBlock]=NO_ASSIGN; -// -// if (Erase_D_PhyOneBlock(fdoExt)) -// { -// if (ErrCode==ERR_HwError) -// return(ERROR); -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// -// ErrCode = ERR_WriteFault; -// return(ERROR); -// } -// -// Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); -// Media.PhyBlock=NO_ASSIGN; -// return(SMSUCCESS); -//} -// -////SmartMedia Erase Subroutine -////----- Media_D_EraseAllBlock() ---------------------------------------- -//int Media_D_EraseAllBlock(void) -//{ -// WORD cis=0; -// -// SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; -// ADDRESS_T bb = (ADDRESS_T) &Media; -// -// MediaChange = ERROR; -// Media.Sector = 0; -// -// for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) -// for(Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) { -// if (Ssfdc_D_ReadRedtData(Redundant)) -// { -// Ssfdc_D_Reset(fdoExt); -// return(ERROR); -// } -// -// Ssfdc_D_Reset(fdoExt); -// if (!Check_D_FailBlock(Redundant)) -// { -// if (cis) -// { -// if (Ssfdc_D_EraseBlock(fdoExt)) -// { -// ErrCode = ERR_HwError; -// return(ERROR); -// } -// -// if (Ssfdc_D_CheckStatus()) -// { -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// } -// -// continue; -// } -// -// if (Media.PhyBlock!=CisArea.PhyBlock) -// { -// ErrCode = ERR_IllegalFmt; -// return(ERROR); -// } -// -// cis++; -// } -// -// } -// return(SMSUCCESS); -//} -*/ -//SmartMedia Physical Sector Data Copy Subroutine -//----- Copy_D_BlockAll() ---------------------------------------------- +/* SmartMedia Physical Sector Data Copy Subroutine */ +/* ----- Copy_D_BlockAll() ---------------------------------------------- */ int Copy_D_BlockAll(struct us_data *us, DWORD mode) { BYTE sect; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - sect=Media.Sector; + sect = Media.Sector; if (Assign_D_WriteBlock()) - return(ERROR); - if (mode==REQ_FAIL) - SectCopyMode=REQ_FAIL; - - for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Copy_D_PhyOneSect(us)) - { - if (ErrCode==ERR_HwError) - return(ERROR); + return ERROR; + if (mode == REQ_FAIL) + SectCopyMode = REQ_FAIL; + + for (Media.Sector = 0; Media.Sector < Ssfdc.MaxSectors; + Media.Sector++) { + if (Copy_D_PhyOneSect(us)) { + if (ErrCode == ERR_HwError) + return ERROR; if (Release_D_WriteBlock(us)) - return(ERROR); + return ERROR; ErrCode = ERR_WriteFault; - Media.PhyBlock=ReadBlock; - Media.Sector=sect; + Media.PhyBlock = ReadBlock; + Media.Sector = sect; - return(ERROR); + return ERROR; } } if (Release_D_ReadBlock(us)) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); -} -/* -//----- Copy_D_BlockHead() --------------------------------------------- -int Copy_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - sect=Media.Sector; - if (Assign_D_WriteBlock()) - return(ERROR); - - for(Media.Sector=0; Media.Sector<sect; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - Media.PhyBlock=ReadBlock; - Media.Sector=sect; - - return(ERROR); - } - } - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); -} + return ERROR; -//----- Copy_D_BlockTail() --------------------------------------------- -int Copy_D_BlockTail(PFDO_DEVICE_EXTENSION fdoExt) -{ - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - for(sect=Media.Sector; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - - return(ERROR); - } - } - - if (Release_D_ReadBlock(fdoExt)) - return(ERROR); - - Media.PhyBlock=WriteBlock; - Media.Sector=sect; - return(SMSUCCESS); + Media.PhyBlock = WriteBlock; + Media.Sector = sect; + return SMSUCCESS; } -//----- Reassign_D_BlockHead() ----------------------------------------- -int Reassign_D_BlockHead(PFDO_DEVICE_EXTENSION fdoExt) -{ - DWORD mode; - WORD block; - BYTE sect; - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - mode=SectCopyMode; - block=ReadBlock; - sect=Media.Sector; - - if (Assign_D_WriteBlock()) - return(ERROR); - - SectCopyMode=REQ_FAIL; - - for(Media.Sector=0; Media.Sector<sect; Media.Sector++) - { - if (Copy_D_PhyOneSect(fdoExt)) - { - if (ErrCode==ERR_HwError) - return(ERROR); - if (Release_D_WriteBlock(fdoExt)) - return(ERROR); - - ErrCode = ERR_WriteFault; - SectCopyMode=mode; - WriteBlock=ReadBlock; - ReadBlock=block; - Media.Sector=sect; - Media.PhyBlock=WriteBlock; - - return(ERROR); - } - } - - if (Release_D_ReadBlock(fdoExt)) - return(ERROR); - - SectCopyMode=mode; - ReadBlock=block; - Media.Sector=sect; - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); -} -*/ -//SmartMedia Physical Block Assign/Release Subroutine -//----- Assign_D_WriteBlock() ------------------------------------------ +/* SmartMedia Physical Block Assign/Release Subroutine */ +/* ----- Assign_D_WriteBlock() ------------------------------------------ */ int Assign_D_WriteBlock(void) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - ReadBlock=Media.PhyBlock; - - for(WriteBlock=AssignStart[Media.Zone]; WriteBlock<Ssfdc.MaxBlocks; WriteBlock++) - { - if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) - { - Set_D_Bit(Assign[Media.Zone],WriteBlock); - AssignStart[Media.Zone]=WriteBlock+1; - Media.PhyBlock=WriteBlock; - SectCopyMode=REQ_ERASE; - //ErrXDCode = NO_ERROR; - return(SMSUCCESS); + ReadBlock = Media.PhyBlock; + + for (WriteBlock = AssignStart[Media.Zone]; + WriteBlock < Ssfdc.MaxBlocks; WriteBlock++) { + if (!Chk_D_Bit(Assign[Media.Zone], WriteBlock)) { + Set_D_Bit(Assign[Media.Zone], WriteBlock); + AssignStart[Media.Zone] = WriteBlock + 1; + Media.PhyBlock = WriteBlock; + SectCopyMode = REQ_ERASE; + return SMSUCCESS; } } - for(WriteBlock=0; WriteBlock<AssignStart[Media.Zone]; WriteBlock++) - { - if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) - { - Set_D_Bit(Assign[Media.Zone],WriteBlock); - AssignStart[Media.Zone]=WriteBlock+1; - Media.PhyBlock=WriteBlock; - SectCopyMode=REQ_ERASE; - //ErrXDCode = NO_ERROR; - return(SMSUCCESS); + for (WriteBlock = 0; + WriteBlock < AssignStart[Media.Zone]; WriteBlock++) { + if (!Chk_D_Bit(Assign[Media.Zone], WriteBlock)) { + Set_D_Bit(Assign[Media.Zone], WriteBlock); + AssignStart[Media.Zone] = WriteBlock + 1; + Media.PhyBlock = WriteBlock; + SectCopyMode = REQ_ERASE; + return SMSUCCESS; } } - WriteBlock=NO_ASSIGN; + WriteBlock = NO_ASSIGN; ErrCode = ERR_WriteFault; - // For xD test - //Ssfdc.Attribute |= WP; - //ErrXDCode = ERR_WrtProtect; - return(ERROR); + + return ERROR; } -//----- Release_D_ReadBlock() ------------------------------------------ +/* ----- Release_D_ReadBlock() ------------------------------------------ */ int Release_D_ReadBlock(struct us_data *us) { DWORD mode; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - mode=SectCopyMode; - SectCopyMode=COMPLETED; + mode = SectCopyMode; + SectCopyMode = COMPLETED; - if (mode==COMPLETED) - return(SMSUCCESS); + if (mode == COMPLETED) + return SMSUCCESS; - Log2Phy[Media.Zone][Media.LogBlock]=WriteBlock; - Media.PhyBlock=ReadBlock; + Log2Phy[Media.Zone][Media.LogBlock] = WriteBlock; + Media.PhyBlock = ReadBlock; - if (Media.PhyBlock==NO_ASSIGN) - { - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + if (Media.PhyBlock == NO_ASSIGN) { + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } - if (mode==REQ_ERASE) - { - if (Erase_D_PhyOneBlock(us)) - { - if (ErrCode==ERR_HwError) return(ERROR); - if (MarkFail_D_PhyOneBlock(us)) return(ERROR); - } - else - Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); - } - else if (MarkFail_D_PhyOneBlock(us)) - return(ERROR); + if (mode == REQ_ERASE) { + if (Erase_D_PhyOneBlock(us)) { + if (ErrCode == ERR_HwError) + return ERROR; + if (MarkFail_D_PhyOneBlock(us)) + return ERROR; + } else + Clr_D_Bit(Assign[Media.Zone], Media.PhyBlock); + } else if (MarkFail_D_PhyOneBlock(us)) + return ERROR; - Media.PhyBlock=WriteBlock; - return(SMSUCCESS); + Media.PhyBlock = WriteBlock; + return SMSUCCESS; } -//----- Release_D_WriteBlock() ----------------------------------------- +/* ----- Release_D_WriteBlock() ----------------------------------------- */ int Release_D_WriteBlock(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - SectCopyMode=COMPLETED; - Media.PhyBlock=WriteBlock; + SectCopyMode = COMPLETED; + Media.PhyBlock = WriteBlock; if (MarkFail_D_PhyOneBlock(us)) - return(ERROR); + return ERROR; - Media.PhyBlock=ReadBlock; - return(SMSUCCESS); + Media.PhyBlock = ReadBlock; + return SMSUCCESS; } -//SmartMedia Physical Sector Data Copy Subroutine -//----- Copy_D_PhyOneSect() -------------------------------------------- +/* SmartMedia Physical Sector Data Copy Subroutine */ +/* ----- Copy_D_PhyOneSect() -------------------------------------------- */ int Copy_D_PhyOneSect(struct us_data *us) { int i; DWORD err, retry; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; /* pr_info("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector); */ - if (ReadBlock!=NO_ASSIGN) - { - Media.PhyBlock=ReadBlock; - for(retry=0; retry<2; retry++) - { - if (retry!=0) - { + if (ReadBlock != NO_ASSIGN) { + Media.PhyBlock = ReadBlock; + for (retry = 0; retry < 2; retry++) { + if (retry != 0) { Ssfdc_D_Reset(us); - if (Ssfdc_D_ReadCisSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Ssfdc_D_ReadCisSect(us, WorkBuf, + WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } - if (Check_D_CISdata(WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Check_D_CISdata(WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + } + + if (Ssfdc_D_ReadSect(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_DataStatus(WorkRedund)) { + err = ERROR; + break; + } + if (!Check_D_ReadError(WorkRedund)) { + err = SMSUCCESS; + break; + } + if (!Check_D_Correct(WorkBuf, WorkRedund)) { + err = SMSUCCESS; + break; } - if (Ssfdc_D_ReadSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_DataStatus(WorkRedund)) - { err=ERROR; break; } - if (!Check_D_ReadError(WorkRedund)) - { err=SMSUCCESS; break; } - if (!Check_D_Correct(WorkBuf,WorkRedund)) - { err=SMSUCCESS; break; } - - err=ERROR; - SectCopyMode=REQ_FAIL; + err = ERROR; + SectCopyMode = REQ_FAIL; } - } - else - { - err=SMSUCCESS; - for(i=0; i<SECTSIZE; i++) - WorkBuf[i]=DUMMY_DATA; + } else { + err = SMSUCCESS; + for (i = 0; i < SECTSIZE; i++) + WorkBuf[i] = DUMMY_DATA; Clr_D_RedundantData(WorkRedund); } Set_D_LogBlockAddr(WorkRedund); - if (err==ERROR) - { + if (err == ERROR) { Set_D_RightECC(WorkRedund); Set_D_DataStaus(WorkRedund); } - Media.PhyBlock=WriteBlock; + Media.PhyBlock = WriteBlock; - if (Ssfdc_D_WriteSectForCopy(us, WorkBuf, WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } + if (Ssfdc_D_WriteSectForCopy(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Ssfdc_D_CheckStatus()) { + ErrCode = ERR_WriteFault; + return ERROR; + } - Media.PhyBlock=ReadBlock; - return(SMSUCCESS); + Media.PhyBlock = ReadBlock; + return SMSUCCESS; } -//SmartMedia Physical Sector Read/Write/Erase Subroutine -//----- Read_D_PhyOneSect() -------------------------------------------- +/* SmartMedia Physical Sector Read/Write/Erase Subroutine */ +/* ----- Read_D_PhyOneSect() -------------------------------------------- */ int Read_D_PhyOneSect(struct us_data *us, WORD count, BYTE *buf) { int i; DWORD retry; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - if (Media.PhyBlock==NO_ASSIGN) - { - for(i=0; i<SECTSIZE; i++) - *buf++=DUMMY_DATA; - return(SMSUCCESS); + + if (Media.PhyBlock == NO_ASSIGN) { + for (i = 0; i < SECTSIZE; i++) + *buf++ = DUMMY_DATA; + return SMSUCCESS; } - for(retry=0; retry<2; retry++) - { - if (retry!=0) - { + for (retry = 0; retry < 2; retry++) { + if (retry != 0) { Ssfdc_D_Reset(us); - if (Ssfdc_D_ReadCisSect(us,WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_CISdata(WorkBuf,WorkRedund)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } + if (Ssfdc_D_ReadCisSect(us, WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_CISdata(WorkBuf, WorkRedund)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } } - //if (Ssfdc_D_ReadSect(fdoExt,buf,Redundant)) - if (Ssfdc_D_ReadBlock(us,count,buf,Redundant)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Check_D_DataStatus(Redundant)) - { ErrCode = ERR_DataStatus; return(ERROR); } + if (Ssfdc_D_ReadBlock(us, count, buf, Redundant)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Check_D_DataStatus(Redundant)) { + ErrCode = ERR_DataStatus; + return ERROR; + } if (!Check_D_ReadError(Redundant)) - return(SMSUCCESS); + return SMSUCCESS; - if (!Check_D_Correct(buf,Redundant)) - { ErrCode = ERR_CorReadErr; return(ERROR); } + if (!Check_D_Correct(buf, Redundant)) { + ErrCode = ERR_CorReadErr; + return ERROR; + } } ErrCode = ERR_EccReadErr; - return(ERROR); + return ERROR; } -/* -//----- Write_D_PhyOneSect() ------------------------------------------- -int Write_D_PhyOneSect(PFDO_DEVICE_EXTENSION fdoExt, WORD count, BYTE *buf) -{ - SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - ADDRESS_T bb = (ADDRESS_T) &Media; - - //if (Ssfdc_D_WriteSect(fdoExt,buf,Redundant)) - if (Ssfdc_D_WriteBlock(fdoExt,count,buf,Redundant)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } - return(SMSUCCESS); -} -*/ -//----- Erase_D_PhyOneBlock() ------------------------------------------ +/* ----- Erase_D_PhyOneBlock() ------------------------------------------ */ int Erase_D_PhyOneBlock(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - if (Ssfdc_D_EraseBlock(us)) - { ErrCode = ERR_HwError; MediaChange=ERROR; return(ERROR); } - if (Ssfdc_D_CheckStatus()) - { ErrCode = ERR_WriteFault; return(ERROR); } + if (Ssfdc_D_EraseBlock(us)) { + ErrCode = ERR_HwError; + MediaChange = ERROR; + return ERROR; + } + if (Ssfdc_D_CheckStatus()) { + ErrCode = ERR_WriteFault; + return ERROR; + } - return(SMSUCCESS); + return SMSUCCESS; } -//SmartMedia Physical Format Check Local Subroutine -//----- Set_D_PhyFmtValue() -------------------------------------------- +/* SmartMedia Physical Format Check Local Subroutine */ +/* ----- Set_D_PhyFmtValue() -------------------------------------------- */ int Set_D_PhyFmtValue(struct us_data *us) { -// PPDO_DEVICE_EXTENSION pdoExt; -// BYTE idcode[4]; -// DWORD UserDefData_1, UserDefData_2, Data, mask; -// -// //if (!fdoExt->ChildDeviceObject) return(ERROR); -// //pdoExt = fdoExt->ChildDeviceObject->DeviceExtension; -// -// Ssfdc_D_ReadID(idcode, READ_ID_1); -// - //if (Set_D_SsfdcModel(idcode[1])) - if (Set_D_SsfdcModel(us->SM_DeviceID)) - return(ERROR); - -// //Use Multi-function pin to differentiate SM and xD. -// UserDefData_1 = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, fdoExt->FuncID, PCI_REG_USER_DEF) & 0x80; -// if (UserDefData_1) -// { -// if ( READ_PORT_BYTE(SM_REG_INT_STATUS) & 0x80 ) fdoExt->DiskType = DISKTYPE_XD; -// if ( READ_PORT_BYTE(SM_REG_INT_STATUS) & 0x40 ) fdoExt->DiskType = DISKTYPE_SM; -// -// if ( IsXDCompliance && (fdoExt->DiskType == DISKTYPE_XD) ) -// { -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// if (idcode[2] != 0xB5) -// return(ERROR); -// } -// } -// -// //Use GPIO to differentiate SM and xD. -// UserDefData_2 = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, fdoExt->FuncID, PCI_REG_USER_DEF) >> 8; -// if ( UserDefData_2 ) -// { -// Data = ReadPCIReg(fdoExt->BusID, fdoExt->DevID, 0, 0xAC); -// -// mask = 1 << (UserDefData_2-1); -// // 1 : xD , 0 : SM -// if ( Data & mask) -// fdoExt->DiskType = DISKTYPE_XD; -// else -// fdoExt->DiskType = DISKTYPE_SM; -// -// if ( IsXDCompliance && (fdoExt->DiskType == DISKTYPE_XD) ) -// { -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// if (idcode[2] != 0xB5) -// return(ERROR); -// } -// } -// -// if ( !(UserDefData_1 | UserDefData_2) ) -// { -// // Use UserDefine Register to differentiate SM and xD. -// Ssfdc_D_ReadID(idcode, READ_ID_3); -// -// if (idcode[2] == 0xB5) -// fdoExt->DiskType = DISKTYPE_XD; -// else -// { -// if (!IsXDCompliance) -// fdoExt->DiskType = DISKTYPE_SM; -// else -// return(ERROR); -// } -// -// if (fdoExt->UserDef_DiskType == 0x04) fdoExt->DiskType = DISKTYPE_XD; -// if (fdoExt->UserDef_DiskType == 0x08) fdoExt->DiskType = DISKTYPE_SM; -// } -// -// if (!fdoExt->UserDef_DisableWP) -// { -// if (fdoExt->DiskType == DISKTYPE_SM) -// { -// if (Check_D_SsfdcWP()) -// Ssfdc.Attribute|=WP; -// } -// } - - return(SMSUCCESS); + if (Set_D_SsfdcModel(us->SM_DeviceID)) + return ERROR; + + return SMSUCCESS; } -//----- Search_D_CIS() ------------------------------------------------- +/* ----- Search_D_CIS() ------------------------------------------------- */ int Search_D_CIS(struct us_data *us) { - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - - Media.Zone=0; Media.Sector=0; + Media.Zone = 0; + Media.Sector = 0; - for (Media.PhyBlock=0; Media.PhyBlock<(Ssfdc.MaxBlocks-Ssfdc.MaxLogBlocks-1); Media.PhyBlock++) - { - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { + for (Media.PhyBlock = 0; + Media.PhyBlock < (Ssfdc.MaxBlocks - Ssfdc.MaxLogBlocks - 1); + Media.PhyBlock++) { + if (Ssfdc_D_ReadRedtData(us, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } if (!Check_D_FailBlock(Redundant)) break; } - if (Media.PhyBlock==(Ssfdc.MaxBlocks-Ssfdc.MaxLogBlocks-1)) - { + if (Media.PhyBlock == (Ssfdc.MaxBlocks - Ssfdc.MaxLogBlocks - 1)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - while (Media.Sector<CIS_SEARCH_SECT) - { - if (Media.Sector) - { - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { + while (Media.Sector < CIS_SEARCH_SECT) { + if (Media.Sector) { + if (Ssfdc_D_ReadRedtData(us, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } } - if (!Check_D_DataStatus(Redundant)) - { - if (Ssfdc_D_ReadSect(us,WorkBuf,Redundant)) - { + if (!Check_D_DataStatus(Redundant)) { + if (Ssfdc_D_ReadSect(us, WorkBuf, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - if (Check_D_CISdata(WorkBuf,Redundant)) - { + if (Check_D_CISdata(WorkBuf, Redundant)) { Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } - CisArea.PhyBlock=Media.PhyBlock; - CisArea.Sector=Media.Sector; + CisArea.PhyBlock = Media.PhyBlock; + CisArea.Sector = Media.Sector; Ssfdc_D_Reset(us); - return(SMSUCCESS); + return SMSUCCESS; } Media.Sector++; } Ssfdc_D_Reset(us); - return(ERROR); + return ERROR; } -//----- Make_D_LogTable() ---------------------------------------------- +/* ----- Make_D_LogTable() ---------------------------------------------- */ int Make_D_LogTable(struct us_data *us) { - WORD phyblock,logblock; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; + WORD phyblock, logblock; - if (Log2Phy[Media.Zone]==NULL) - { - Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK*sizeof(WORD), GFP_KERNEL); + if (Log2Phy[Media.Zone] == NULL) { + Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK * sizeof(WORD), + GFP_KERNEL); /* pr_info("ExAllocatePool Zone = %x, Addr = %x\n", Media.Zone, Log2Phy[Media.Zone]); */ - if (Log2Phy[Media.Zone]==NULL) - return(ERROR); + if (Log2Phy[Media.Zone] == NULL) + return ERROR; } - Media.Sector=0; - - //for(Media.Zone=0; Media.Zone<MAX_ZONENUM; Media.Zone++) - //for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++) - { - /* pr_info("Make_D_LogTable --- MediaZone = 0x%x\n", - Media.Zone); */ - for(Media.LogBlock=0; Media.LogBlock<Ssfdc.MaxLogBlocks; Media.LogBlock++) - Log2Phy[Media.Zone][Media.LogBlock]=NO_ASSIGN; - - for(Media.PhyBlock=0; Media.PhyBlock<(MAX_BLOCKNUM/8); Media.PhyBlock++) - Assign[Media.Zone][Media.PhyBlock]=0x00; - - for(Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) - { - if ((!Media.Zone) && (Media.PhyBlock<=CisArea.PhyBlock)) - { - Set_D_Bit(Assign[Media.Zone],Media.PhyBlock); - continue; - } + Media.Sector = 0; + + /* pr_info("Make_D_LogTable --- MediaZone = 0x%x\n", + Media.Zone); */ + for (Media.LogBlock = 0; Media.LogBlock < Ssfdc.MaxLogBlocks; + Media.LogBlock++) + Log2Phy[Media.Zone][Media.LogBlock] = NO_ASSIGN; + + for (Media.PhyBlock = 0; Media.PhyBlock < (MAX_BLOCKNUM / 8); + Media.PhyBlock++) + Assign[Media.Zone][Media.PhyBlock] = 0x00; + + for (Media.PhyBlock = 0; Media.PhyBlock < Ssfdc.MaxBlocks; + Media.PhyBlock++) { + if ((!Media.Zone) && (Media.PhyBlock <= CisArea.PhyBlock)) { + Set_D_Bit(Assign[Media.Zone], Media.PhyBlock); + continue; + } + + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; + } + + if (!Check_D_DataBlank(Redundant)) + continue; + + Set_D_Bit(Assign[Media.Zone], Media.PhyBlock); - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } + if (Check_D_FailBlock(Redundant)) + continue; - if (!Check_D_DataBlank(Redundant)) - continue; + if (Load_D_LogBlockAddr(Redundant)) + continue; - Set_D_Bit(Assign[Media.Zone],Media.PhyBlock); + if (Media.LogBlock >= Ssfdc.MaxLogBlocks) + continue; - if (Check_D_FailBlock(Redundant)) - continue; + if (Log2Phy[Media.Zone][Media.LogBlock] == NO_ASSIGN) { + Log2Phy[Media.Zone][Media.LogBlock] = Media.PhyBlock; + continue; + } - //if (Check_D_DataStatus(Redundant)) - // continue; + phyblock = Media.PhyBlock; + logblock = Media.LogBlock; + Media.Sector = (BYTE)(Ssfdc.MaxSectors - 1); - if (Load_D_LogBlockAddr(Redundant)) - continue; + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; + } - if (Media.LogBlock>=Ssfdc.MaxLogBlocks) - continue; + if (!Load_D_LogBlockAddr(Redundant) && + (Media.LogBlock == logblock)) { + Media.PhyBlock = Log2Phy[Media.Zone][logblock]; - if (Log2Phy[Media.Zone][Media.LogBlock]==NO_ASSIGN) - { - Log2Phy[Media.Zone][Media.LogBlock]=Media.PhyBlock; - continue; + if (Ssfdc_D_ReadRedtData(us, Redundant)) { + Ssfdc_D_Reset(us); + return ERROR; } - phyblock = Media.PhyBlock; - logblock = Media.LogBlock; - Media.Sector = (BYTE)(Ssfdc.MaxSectors-1); - - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } - - if (!Load_D_LogBlockAddr(Redundant)) - { - if (Media.LogBlock==logblock) - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - - if (Ssfdc_D_ReadRedtData(us, Redundant)) - { Ssfdc_D_Reset(us); return(ERROR); } - - Media.PhyBlock=phyblock; - - if (!Load_D_LogBlockAddr(Redundant)) - { - if (Media.LogBlock!=logblock) - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - Log2Phy[Media.Zone][logblock]=phyblock; - } - } - else - { - Media.PhyBlock=Log2Phy[Media.Zone][logblock]; - Log2Phy[Media.Zone][logblock]=phyblock; - } + Media.PhyBlock = phyblock; + + if (!Load_D_LogBlockAddr(Redundant)) { + if (Media.LogBlock != logblock) { + Media.PhyBlock = + Log2Phy[Media.Zone][logblock]; + Log2Phy[Media.Zone][logblock] = + phyblock; } + } else { + Media.PhyBlock = Log2Phy[Media.Zone][logblock]; + Log2Phy[Media.Zone][logblock] = phyblock; } + } + + Media.Sector = 0; + Media.PhyBlock = phyblock; + + AssignStart[Media.Zone] = 0; - Media.Sector=0; - -// here Not yet -//#ifdef L2P_ERR_ERASE -// if (!(Ssfdc.Attribute &MWP)) -// { -// Ssfdc_D_Reset(fdoExt); -// if (Ssfdc_D_EraseBlock(fdoExt)) -// return(ERROR); -// -// if (Ssfdc_D_CheckStatus()) -// { -// if (MarkFail_D_PhyOneBlock()) -// return(ERROR); -// } -// else -// Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock); -// } -//#else -// Ssfdc.Attribute|=MWP; -//#endif - Media.PhyBlock=phyblock; - - } // End for (Media.PhyBlock<Ssfdc.MaxBlocks) - - AssignStart[Media.Zone]=0; - - } // End for (Media.Zone<MAX_ZONENUM) + } /* End for (Media.Zone<MAX_ZONENUM) */ Ssfdc_D_Reset(us); - return(SMSUCCESS); + return SMSUCCESS; } -//----- MarkFail_D_PhyOneBlock() --------------------------------------- +/* ----- MarkFail_D_PhyOneBlock() --------------------------------------- */ int MarkFail_D_PhyOneBlock(struct us_data *us) { BYTE sect; - //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; - //ADDRESS_T bb = (ADDRESS_T) &Media; - sect=Media.Sector; + sect = Media.Sector; Set_D_FailBlock(WorkRedund); - //Ssfdc_D_WriteRedtMode(); - for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) - { - if (Ssfdc_D_WriteRedtData(us, WorkRedund)) - { + for (Media.Sector = 0; Media.Sector < Ssfdc.MaxSectors; + Media.Sector++) { + if (Ssfdc_D_WriteRedtData(us, WorkRedund)) { Ssfdc_D_Reset(us); Media.Sector = sect; ErrCode = ERR_HwError; MediaChange = ERROR; - return(ERROR); - } // NO Status Check + return ERROR; + } /* NO Status Check */ } Ssfdc_D_Reset(us); - Media.Sector=sect; - return(SMSUCCESS); + Media.Sector = sect; + return SMSUCCESS; } -/* -// -////----- SM_Init() ---------------------------------------------------- -//void SM_Init(void) -//{ -// _Hw_D_ClrIntCardChg(); -// _Hw_D_SetIntMask(); -// // For DMA Interrupt -// _Hw_D_ClrDMAIntCardChg(); -// _Hw_D_SetDMAIntMask(); -//} -// -////----- Media_D_EraseAllRedtData() ----------------------------------- -//int Media_D_EraseAllRedtData(DWORD Index, BOOLEAN CheckBlock) -//{ -// BYTE i; -// -// if (Check_D_MediaPower()) -// return(ErrCode); -// -// if (Check_D_MediaWP()) -// return(ErrCode); -// -// for (i=0; i<REDTSIZE; i++) -// WorkRedund[i] = 0xFF; -// -// Media.Zone = (BYTE)Index; -// for (Media.PhyBlock=0; Media.PhyBlock<Ssfdc.MaxBlocks; Media.PhyBlock++) -// { -// if ((!Media.Zone) && (Media.PhyBlock<=CisArea.PhyBlock)) -// continue; -// -// if (Ssfdc_D_EraseBlock(fdoExt)) -// { -// ErrCode = ERR_HwError; -// return(ERROR); -// } -// -// for(Media.Sector=0; Media.Sector<Ssfdc.MaxSectors; Media.Sector++) -// { -// Ssfdc_D_WriteRedtMode(); -// -// if (Ssfdc_D_WriteRedtData(WorkRedund)) -// { -// Ssfdc_D_Reset(fdoExt); -// ErrCode = ERR_HwError; -// MediaChange = ERROR; -// return(ERROR); -// } // NO Status Check -// } -// -// Ssfdc_D_Reset(fdoExt); -// } -// -// Ssfdc_D_Reset(fdoExt); -// -// return(SMSUCCESS); -//} -// -////----- Media_D_GetMediaInfo() --------------------------------------- -//DWORD Media_D_GetMediaInfo(PFDO_DEVICE_EXTENSION fdoExt, PIOCTL_MEDIA_INFO_IN pParamIn, PIOCTL_MEDIA_INFO_OUT pParamOut) -//{ -// pParamOut->ErrCode = STATUS_CMD_FAIL; -// -// Init_D_SmartMedia(); -// -// if (Check_D_MediaPower()) -// return (ErrCode==ERR_NoSmartMedia) ? STATUS_CMD_NO_MEDIA : STATUS_CMD_FAIL; -// -// if (Set_D_PhyFmtValue(fdoExt)) -// return STATUS_CMD_FAIL; -// -// //usleep(56*1024); -// if (Search_D_CIS(fdoExt)) -// return STATUS_CMD_FAIL; -// -// if (Check_D_MediaWP()) -// return STATUS_CMD_MEDIA_WP; -// -// pParamOut->PageSize = Ssfdc.MaxSectors; -// pParamOut->BlockSize = Ssfdc.MaxBlocks; -// pParamOut->ZoneSize = Ssfdc.MaxZones; -// -// return STATUS_CMD_SUCCESS; -//}*/ diff --git a/drivers/staging/keucr/smilsub.c b/drivers/staging/keucr/smilsub.c index d4dd5ed..346c570 100644 --- a/drivers/staging/keucr/smilsub.c +++ b/drivers/staging/keucr/smilsub.c @@ -33,9 +33,9 @@ void _Set_D_ECCdata(BYTE, BYTE *); void _Calc_D_ECCdata(BYTE *); -struct SSFDCTYPE Ssfdc; -struct ADDRESS Media; -struct CIS_AREA CisArea; +struct keucr_media_info Ssfdc; +struct keucr_media_address Media; +struct keucr_media_area CisArea; static BYTE EccBuf[6]; extern PBYTE SMHostAddr; @@ -103,8 +103,10 @@ int Load_D_LogBlockAddr(BYTE *redundant) { WORD addr1, addr2; - addr1 = (WORD)*(redundant + REDT_ADDR1H)*0x0100 + (WORD)*(redundant + REDT_ADDR1L); - addr2 = (WORD)*(redundant + REDT_ADDR2H)*0x0100 + (WORD)*(redundant + REDT_ADDR2L); + addr1 = (WORD)*(redundant + REDT_ADDR1H)*0x0100 + + (WORD)*(redundant + REDT_ADDR1L); + addr2 = (WORD)*(redundant + REDT_ADDR2H)*0x0100 + + (WORD)*(redundant + REDT_ADDR2L); if (addr1 == addr2) if ((addr1 & 0xF000) == 0x1000) { @@ -151,7 +153,8 @@ void Set_D_LogBlockAddr(BYTE *redundant) if ((hweight16(addr) % 2)) addr++; - *(redundant + REDT_ADDR1H) = *(redundant + REDT_ADDR2H) = (BYTE)(addr / 0x0100); + *(redundant + REDT_ADDR1H) = *(redundant + REDT_ADDR2H) = + (BYTE)(addr / 0x0100); *(redundant + REDT_ADDR1L) = *(redundant + REDT_ADDR2L) = (BYTE)addr; } @@ -191,7 +194,9 @@ int Ssfdc_D_ReadCisSect(struct us_data *us, BYTE *buf, BYTE *redundant) Media.Sector = CisArea.Sector; if (Ssfdc_D_ReadSect(us, buf, redundant)) { - Media.Zone = zone; Media.PhyBlock = block; Media.Sector = sector; + Media.Zone = zone; + Media.PhyBlock = block; + Media.Sector = sector; return ERROR; } @@ -209,7 +214,8 @@ int Ssfdc_D_ReadSect(struct us_data *us, BYTE *buf, BYTE *redundant) result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -252,7 +258,8 @@ int Ssfdc_D_ReadSect(struct us_data *us, BYTE *buf, BYTE *redundant) } /* ----- Ssfdc_D_ReadBlock() --------------------------------------------- */ -int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf, BYTE *redundant) +int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf, + BYTE *redundant) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; @@ -260,7 +267,8 @@ int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf, BYTE *redundant result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -304,7 +312,8 @@ int Ssfdc_D_ReadBlock(struct us_data *us, WORD count, BYTE *buf, BYTE *redundant /* ----- Ssfdc_D_CopyBlock() -------------------------------------------- */ -int Ssfdc_D_CopyBlock(struct us_data *us, WORD count, BYTE *buf, BYTE *redundant) +int Ssfdc_D_CopyBlock(struct us_data *us, WORD count, BYTE *buf, + BYTE *redundant) { struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; int result; @@ -312,7 +321,8 @@ int Ssfdc_D_CopyBlock(struct us_data *us, WORD count, BYTE *buf, BYTE *redundant result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -358,7 +368,8 @@ int Ssfdc_D_WriteSectForCopy(struct us_data *us, BYTE *buf, BYTE *redundant) result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -396,7 +407,8 @@ int Ssfdc_D_EraseBlock(struct us_data *us) result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -431,7 +443,8 @@ int Ssfdc_D_ReadRedtData(struct us_data *us, BYTE *redundant) result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -470,7 +483,8 @@ int Ssfdc_D_WriteRedtData(struct us_data *us, BYTE *redundant) result = ENE_LoadBinCode(us, SM_RW_PATTERN); if (result != USB_STOR_XFER_GOOD) { - printk("Load SM RW Code Fail !!\n"); + dev_err(&us->pusb_dev->dev, + "Failed to load SmartMedia read/write code\n"); return USB_STOR_TRANSPORT_ERROR; } @@ -611,7 +625,7 @@ int Set_D_SsfdcModel(BYTE dcode) return ERROR; } - return SMSUCCESS; + return SMSUCCESS; } /* ----- _Check_D_DevCode() --------------------------------------------- */ @@ -686,8 +700,8 @@ int Check_D_CISdata(BYTE *buf, BYTE *redundant) /* ----- Set_D_RightECC() ---------------------------------------------- */ void Set_D_RightECC(BYTE *redundant) { - /* Driver ECC Check */ - return; + /* Driver ECC Check */ + return; } diff --git a/drivers/staging/keucr/smscsi.c b/drivers/staging/keucr/smscsi.c index 58b5555..572d648 100644 --- a/drivers/staging/keucr/smscsi.c +++ b/drivers/staging/keucr/smscsi.c @@ -56,7 +56,7 @@ int SM_SCSIIrp(struct us_data *us, struct scsi_cmnd *srb) return result; } -/* ----- SM_SCSI_Test_Unit_Ready() -------------------------------------------------- */ +/* ----- SM_SCSI_Test_Unit_Ready() ------------------------------------- */ int SM_SCSI_Test_Unit_Ready(struct us_data *us, struct scsi_cmnd *srb) { if (us->SM_Status.Insert && us->SM_Status.Ready) @@ -69,21 +69,27 @@ int SM_SCSI_Test_Unit_Ready(struct us_data *us, struct scsi_cmnd *srb) return USB_STOR_TRANSPORT_GOOD; } -/* ----- SM_SCSI_Inquiry() -------------------------------------------------- */ +/* ----- SM_SCSI_Inquiry() --------------------------------------------- */ int SM_SCSI_Inquiry(struct us_data *us, struct scsi_cmnd *srb) { - 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}; + 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; } -/* ----- SM_SCSI_Mode_Sense() -------------------------------------------------- */ +/* ----- SM_SCSI_Mode_Sense() ------------------------------------------ */ int SM_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->SM_Status.WtP) usb_stor_set_xfer_buf(us, mediaWP, 12, srb, TO_XFER_BUF); @@ -94,7 +100,7 @@ int SM_SCSI_Mode_Sense(struct us_data *us, struct scsi_cmnd *srb) return USB_STOR_TRANSPORT_GOOD; } -/* ----- SM_SCSI_Read_Capacity() -------------------------------------------------- */ +/* ----- SM_SCSI_Read_Capacity() --------------------------------------- */ int SM_SCSI_Read_Capacity(struct us_data *us, struct scsi_cmnd *srb) { unsigned int offset = 0; @@ -103,14 +109,14 @@ int SM_SCSI_Read_Capacity(struct us_data *us, struct scsi_cmnd *srb) WORD bl_len; BYTE buf[8]; - printk("SM_SCSI_Read_Capacity\n"); + dev_dbg(&us->pusb_dev->dev, "SM_SCSI_Read_Capacity\n"); bl_len = 0x200; bl_num = Ssfdc.MaxLogBlocks * Ssfdc.MaxSectors * Ssfdc.MaxZones - 1; us->bl_num = bl_num; - printk("bl_len = %x\n", bl_len); - printk("bl_num = %x\n", bl_num); + dev_dbg(&us->pusb_dev->dev, "bl_len = %x\n", bl_len); + dev_dbg(&us->pusb_dev->dev, "bl_num = %x\n", bl_num); buf[0] = (bl_num >> 24) & 0xff; buf[1] = (bl_num >> 16) & 0xff; @@ -131,8 +137,10 @@ int SM_SCSI_Read(struct us_data *us, struct scsi_cmnd *srb) { 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); + 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; void *buf; @@ -161,8 +169,10 @@ int SM_SCSI_Write(struct us_data *us, struct scsi_cmnd *srb) { 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); + 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; void *buf; diff --git a/drivers/staging/keucr/transport.c b/drivers/staging/keucr/transport.c index 1a8837d..aeb2186 100644 --- a/drivers/staging/keucr/transport.c +++ b/drivers/staging/keucr/transport.c @@ -79,6 +79,47 @@ static int usb_stor_msg_common(struct us_data *us, int timeout) } /* + * usb_stor_print_cmd(): + */ +static void usb_stor_print_cmd(struct us_data *us, struct scsi_cmnd *srb) +{ + PBYTE Cdb = srb->cmnd; + DWORD cmd = Cdb[0]; + + switch (cmd) { + case TEST_UNIT_READY: + break; + case INQUIRY: + dev_dbg(&us->pusb_dev->dev, + "scsi cmd %X --- SCSIOP_INQUIRY\n", cmd); + break; + case MODE_SENSE: + dev_dbg(&us->pusb_dev->dev, + "scsi cmd %X --- SCSIOP_MODE_SENSE\n", cmd); + break; + case START_STOP: + dev_dbg(&us->pusb_dev->dev, + "scsi cmd %X --- SCSIOP_START_STOP\n", cmd); + break; + case READ_CAPACITY: + dev_dbg(&us->pusb_dev->dev, + "scsi cmd %X --- SCSIOP_READ_CAPACITY\n", cmd); + break; + case READ_10: + break; + case WRITE_10: + break; + case ALLOW_MEDIUM_REMOVAL: + dev_dbg(&us->pusb_dev->dev, + "scsi cmd %X --- SCSIOP_ALLOW_MEDIUM_REMOVAL\n", cmd); + break; + default: + dev_dbg(&us->pusb_dev->dev, "scsi cmd %X --- Other cmd\n", cmd); + break; + } +} + +/* * usb_stor_control_msg() */ int usb_stor_control_msg(struct us_data *us, unsigned int pipe, @@ -303,7 +344,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) int result; /* pr_info("transport --- usb_stor_invoke_transport\n"); */ - usb_stor_print_cmd(srb); + usb_stor_print_cmd(us, srb); /* send the command to the transport layer */ scsi_set_resid(srb, 0); result = us->transport(srb, us); /* usb_stor_Bulk_transport; */ @@ -429,7 +470,7 @@ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) int result = 0; /* pr_info("transport --- ENE_stor_invoke_transport\n"); */ - usb_stor_print_cmd(srb); + usb_stor_print_cmd(us, srb); /* send the command to the transport layer */ scsi_set_resid(srb, 0); if (!(us->SM_Status.Ready)) @@ -708,8 +749,8 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) } else { residue = min(residue, transfer_length); - scsi_set_resid(srb, max(scsi_get_resid(srb), - (int) residue)); + scsi_set_resid(srb, max_t(int, scsi_get_resid(srb), + residue)); } } diff --git a/drivers/staging/keucr/transport.h b/drivers/staging/keucr/transport.h index 2a11a98..df34474 100644 --- a/drivers/staging/keucr/transport.h +++ b/drivers/staging/keucr/transport.h @@ -29,7 +29,6 @@ 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 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 int usb_stor_control_msg(struct us_data *us, unsigned int pipe, @@ -61,7 +60,7 @@ extern int ENE_InitMedia(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); +extern int ene_read_byte(struct us_data*, WORD index, void *buf); 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); diff --git a/drivers/staging/keucr/usb.c b/drivers/staging/keucr/usb.c index f656f8a..ddd2e73 100644 --- a/drivers/staging/keucr/usb.c +++ b/drivers/staging/keucr/usb.c @@ -24,13 +24,13 @@ MODULE_LICENSE("GPL"); static unsigned int delay_use = 1; -static struct usb_device_id eucr_usb_ids [] = { +static struct usb_device_id eucr_usb_ids[] = { { USB_DEVICE(0x058f, 0x6366) }, { USB_DEVICE(0x0cf2, 0x6230) }, { USB_DEVICE(0x0cf2, 0x6250) }, { } /* Terminating entry */ }; -MODULE_DEVICE_TABLE (usb, eucr_usb_ids); +MODULE_DEVICE_TABLE(usb, eucr_usb_ids); #ifdef CONFIG_PM @@ -65,7 +65,7 @@ static int eucr_resume(struct usb_interface *iface) us->Power_IsResum = true; - us->SM_Status = *(PSM_STATUS)&tmp; + us->SM_Status = *(struct keucr_sm_status *)&tmp; return 0; } @@ -85,9 +85,9 @@ static int eucr_reset_resume(struct usb_interface *iface) * the device */ - us->Power_IsResum = true; + us->Power_IsResum = true; - us->SM_Status = *(PSM_STATUS)&tmp; + us->SM_Status = *(struct keucr_sm_status *)&tmp; return 0; } @@ -124,16 +124,18 @@ static int eucr_post_reset(struct usb_interface *iface) return 0; } -void fill_inquiry_response(struct us_data *us, unsigned char *data, unsigned int data_len) +void fill_inquiry_response(struct us_data *us, unsigned char *data, + unsigned int data_len) { pr_info("usb --- fill_inquiry_response\n"); if (data_len < 36) /* You lose. */ return; if (data[0]&0x20) { - memset(data+8,0,28); + memset(data+8, 0, 28); } else { - u16 bcdDevice = le16_to_cpu(us->pusb_dev->descriptor.bcdDevice); + u16 bcdDevice = + le16_to_cpu(us->pusb_dev->descriptor.bcdDevice); memcpy(data+8, us->unusual_dev->vendorName, strlen(us->unusual_dev->vendorName) > 8 ? 8 : strlen(us->unusual_dev->vendorName)); @@ -148,7 +150,7 @@ void fill_inquiry_response(struct us_data *us, unsigned char *data, unsigned int usb_stor_set_xfer_buf(us, data, data_len, us->srb, TO_XFER_BUF); } -static int usb_stor_control_thread(void * __us) +static int usb_stor_control_thread(void *__us) { struct us_data *us = (struct us_data *)__us; struct Scsi_Host *host = us_to_host(us); @@ -194,7 +196,8 @@ static int usb_stor_control_thread(void * __us) us->srb->result = DID_BAD_TARGET << 16; } else if ((us->srb->cmnd[0] == INQUIRY) && (us->fflags & US_FL_FIX_INQUIRY)) { - unsigned char data_ptr[36] = {0x00, 0x80, 0x02, 0x02, 0x1F, 0x00, 0x00, 0x00}; + unsigned char data_ptr[36] = {0x00, 0x80, 0x02, 0x02, + 0x1F, 0x00, 0x00, 0x00}; fill_inquiry_response(us, data_ptr, 36); us->srb->result = SAM_STAT_GOOD; @@ -253,13 +256,15 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf) usb_set_intfdata(intf, us); /* Allocate the device-related DMA-mapped buffers */ - us->cr = usb_alloc_coherent(us->pusb_dev, sizeof(*us->cr), GFP_KERNEL, &us->cr_dma); + us->cr = usb_alloc_coherent(us->pusb_dev, sizeof(*us->cr), GFP_KERNEL, + &us->cr_dma); if (!us->cr) { 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); + us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE, GFP_KERNEL, + &us->iobuf_dma); if (!us->iobuf) { pr_info("I/O buffer allocation failed\n"); return -ENOMEM; @@ -275,7 +280,8 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf) 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; + struct usb_interface_descriptor *idesc = + &us->pusb_intf->cur_altsetting->desc; pr_info("usb --- get_device_info\n"); @@ -374,10 +380,13 @@ static int get_pipes(struct us_data *us) /* Calculate and store the pipe values */ us->send_ctrl_pipe = usb_sndctrlpipe(us->pusb_dev, 0); us->recv_ctrl_pipe = usb_rcvctrlpipe(us->pusb_dev, 0); - us->send_bulk_pipe = usb_sndbulkpipe(us->pusb_dev, ep_out->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); - us->recv_bulk_pipe = usb_rcvbulkpipe(us->pusb_dev, ep_in->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); + us->send_bulk_pipe = usb_sndbulkpipe(us->pusb_dev, + ep_out->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); + us->recv_bulk_pipe = usb_rcvbulkpipe(us->pusb_dev, + ep_in->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); if (ep_int) { - us->recv_intr_pipe = usb_rcvintpipe(us->pusb_dev, ep_int->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); + us->recv_intr_pipe = usb_rcvintpipe(us->pusb_dev, + ep_int->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK); us->ep_bInterval = ep_int->bInterval; } return 0; @@ -433,10 +442,9 @@ static void dissociate_dev(struct us_data *us) kfree(us->sensebuf); /* Free the device-related DMA-mapped buffers */ - if (us->cr) - usb_free_coherent(us->pusb_dev, sizeof(*us->cr), us->cr, us->cr_dma); - if (us->iobuf) - usb_free_coherent(us->pusb_dev, US_IOBUF_SIZE, us->iobuf, us->iobuf_dma); + usb_free_coherent(us->pusb_dev, sizeof(*us->cr), us->cr, us->cr_dma); + usb_free_coherent(us->pusb_dev, US_IOBUF_SIZE, us->iobuf, + us->iobuf_dma); /* Remove our private data from the interface */ usb_set_intfdata(us->pusb_intf, NULL); @@ -485,7 +493,7 @@ static void release_everything(struct us_data *us) scsi_host_put(us_to_host(us)); } -static int usb_stor_scan_thread(void * __us) +static int usb_stor_scan_thread(void *__us) { struct us_data *us = (struct us_data *)__us; @@ -515,7 +523,8 @@ static int usb_stor_scan_thread(void * __us) complete_and_exit(&us->scanning_done, 0); } -static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id) +static int eucr_probe(struct usb_interface *intf, + const struct usb_device_id *id) { struct Scsi_Host *host; struct us_data *us; @@ -525,7 +534,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id pr_info("usb --- eucr_probe\n"); - host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us)); + host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us)); if (!host) { pr_info("Unable to allocate the scsi host\n"); return -ENOMEM; @@ -585,7 +594,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id wake_up_process(th); /* probe card type */ - result = ENE_Read_BYTE(us, REG_CARD_STATUS, &MiscReg03); + result = ene_read_byte(us, REG_CARD_STATUS, &MiscReg03); if (result != USB_STOR_XFER_GOOD) { result = USB_STOR_TRANSPORT_ERROR; quiesce_and_remove_host(us); @@ -595,9 +604,9 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id if (!(MiscReg03 & 0x02)) { result = -ENODEV; quiesce_and_remove_host(us); - pr_info("keucr: The driver only supports SM/MS card.\ - To use SD card, \ - please build driver/usb/storage/ums-eneub6250.ko\n"); + 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; } @@ -623,9 +632,9 @@ static void eucr_disconnect(struct usb_interface *intf) static struct usb_driver usb_storage_driver = { .name = "eucr", .probe = eucr_probe, - .suspend = eucr_suspend, + .suspend = eucr_suspend, .resume = eucr_resume, - .reset_resume = eucr_reset_resume, + .reset_resume = eucr_reset_resume, .disconnect = eucr_disconnect, .pre_reset = eucr_pre_reset, .post_reset = eucr_post_reset, diff --git a/drivers/staging/keucr/usb.h b/drivers/staging/keucr/usb.h index a5f7a16..d665af1 100644 --- a/drivers/staging/keucr/usb.h +++ b/drivers/staging/keucr/usb.h @@ -1,4 +1,4 @@ -// Driver for USB Mass Storage compliant devices +/* Driver for USB Mass Storage compliant devices */ #ifndef _USB_H_ #define _USB_H_ @@ -19,26 +19,26 @@ struct scsi_cmnd; */ struct us_unusual_dev { - const char* vendorName; - const char* productName; + const char *vendorName; + const char *productName; __u8 useProtocol; __u8 useTransport; int (*initFunction)(struct us_data *); }; -//EnE HW Register +/* EnE HW Register */ #define REG_CARD_STATUS 0xFF83 #define REG_HW_TRAP1 0xFF89 -// SRB Status. Refers /usr/include/wine/wine/wnaspi32.h & SCSI sense key -#define SS_SUCCESS 0x00 // No Sense +/* SRB Status. Refers /usr/include/wine/wine/wnaspi32.h & SCSI sense key */ +#define SS_SUCCESS 0x00 /* No Sense */ #define SS_NOT_READY 0x02 #define SS_MEDIUM_ERR 0x03 #define SS_HW_ERR 0x04 #define SS_ILLEGAL_REQUEST 0x05 #define SS_UNIT_ATTENTION 0x06 -//ENE Load FW Pattern +/* ENE Load FW Pattern */ #define SD_INIT1_PATTERN 1 #define SD_INIT2_PATTERN 2 #define SD_RW_PATTERN 3 @@ -51,39 +51,40 @@ struct us_unusual_dev { #define FDIR_WRITE 0 #define FDIR_READ 1 -typedef struct _SD_STATUS { - BYTE Insert:1; - BYTE Ready:1; - BYTE MediaChange:1; - BYTE IsMMC:1; - BYTE HiCapacity:1; - BYTE HiSpeed:1; - BYTE WtP:1; - BYTE Reserved:1; -} SD_STATUS, *PSD_STATUS; - -typedef struct _MS_STATUS { - BYTE Insert:1; - BYTE Ready:1; - BYTE MediaChange:1; - BYTE IsMSPro:1; - BYTE IsMSPHG:1; - BYTE Reserved1:1; - BYTE WtP:1; - BYTE Reserved2:1; -} MS_STATUS, *PMS_STATUS; - -typedef struct _SM_STATUS { - BYTE Insert:1; - BYTE Ready:1; - BYTE MediaChange:1; - BYTE Reserved:3; - BYTE WtP:1; - BYTE IsMS:1; -} SM_STATUS, *PSM_STATUS; - -// SD Block Length -#define SD_BLOCK_LEN 9 // 2^9 = 512 Bytes, The HW maximum read/write data length +struct keucr_sd_status { + BYTE Insert:1; + BYTE Ready:1; + BYTE MediaChange:1; + BYTE IsMMC:1; + BYTE HiCapacity:1; + BYTE HiSpeed:1; + BYTE WtP:1; + BYTE Reserved:1; +}; + +struct keucr_ms_status { + BYTE Insert:1; + BYTE Ready:1; + BYTE MediaChange:1; + BYTE IsMSPro:1; + BYTE IsMSPHG:1; + BYTE Reserved1:1; + BYTE WtP:1; + BYTE Reserved2:1; +}; + +struct keucr_sm_status { + BYTE Insert:1; + BYTE Ready:1; + BYTE MediaChange:1; + BYTE Reserved:3; + BYTE WtP:1; + BYTE IsMS:1; +}; + +/* SD Block Length */ +#define SD_BLOCK_LEN 9 /* 2^9 = 512 Bytes, + The HW maximum read/write data length */ /* Dynamic bitflag definitions (us->dflags): used in set_bit() etc. */ #define US_FLIDX_URB_ACTIVE 0 /* current_urb is in use */ @@ -107,9 +108,9 @@ typedef struct _SM_STATUS { #define US_IOBUF_SIZE 64 /* Size of the DMA-mapped I/O buffer */ #define US_SENSE_SIZE 18 /* Size of the autosense data buffer */ -typedef int (*trans_cmnd)(struct scsi_cmnd *, struct us_data*); -typedef int (*trans_reset)(struct us_data*); -typedef void (*proto_cmnd)(struct scsi_cmnd*, struct us_data*); +typedef int (*trans_cmnd)(struct scsi_cmnd *, struct us_data *); +typedef int (*trans_reset)(struct us_data *); +typedef void (*proto_cmnd)(struct scsi_cmnd *, struct us_data *); typedef void (*extra_data_destructor)(void *); /* extra data destructor */ typedef void (*pm_hook)(struct us_data *, int); /* power management hook */ @@ -176,19 +177,19 @@ struct us_data { #ifdef CONFIG_PM pm_hook suspend_resume_hook; #endif - // for 6250 code - SD_STATUS SD_Status; - MS_STATUS MS_Status; - SM_STATUS SM_Status; + /* for 6250 code */ + struct keucr_sd_status SD_Status; + struct keucr_ms_status MS_Status; + struct keucr_sm_status SM_Status; - //----- SD Control Data ---------------- - //SD_REGISTER SD_Regs; + /* ----- SD Control Data ---------------- */ + /* SD_REGISTER SD_Regs; */ WORD SD_Block_Mult; BYTE SD_READ_BL_LEN; WORD SD_C_SIZE; BYTE SD_C_SIZE_MULT; - // SD/MMC New spec. + /* SD/MMC New spec. */ BYTE SD_SPEC_VER; BYTE SD_CSD_VER; BYTE SD20_HIGH_CAPACITY; @@ -196,15 +197,15 @@ struct us_data { BYTE MMC_SPEC_VER; BYTE MMC_BusWidth; BYTE MMC_HIGH_CAPACITY; - - //----- MS Control Data ---------------- + + /* ----- MS Control Data ---------------- */ BOOLEAN MS_SWWP; DWORD MSP_TotalBlock; /* MS_LibControl MS_Lib; */ BOOLEAN MS_IsRWPage; WORD MS_Model; - //----- SM Control Data ---------------- + /* ----- SM Control Data ---------------- */ BYTE SM_DeviceID; BYTE SM_CardID; @@ -212,16 +213,18 @@ struct us_data { BYTE BIN_FLAG; DWORD bl_num; int SrbStatus; - - //------Power Managerment --------------- - BOOLEAN Power_IsResum; + + /* ------Power Managerment --------------- */ + BOOLEAN Power_IsResum; }; /* Convert between us_data and the corresponding Scsi_Host */ -static inline struct Scsi_Host *us_to_host(struct us_data *us) { +static inline struct Scsi_Host *us_to_host(struct us_data *us) +{ return container_of((void *) us, struct Scsi_Host, hostdata); } -static inline struct us_data *host_to_us(struct Scsi_Host *host) { +static inline struct us_data *host_to_us(struct Scsi_Host *host) +{ return (struct us_data *) host->hostdata; } |