linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Winbond] MS/MS Pro driver for Winbond 528 PCI reader for public review
@ 2006-06-27  8:07 dezheng shen
  2006-07-28 22:42 ` James Bottomley
  0 siblings, 1 reply; 2+ messages in thread
From: dezheng shen @ 2006-06-27  8:07 UTC (permalink / raw)
  To: linux-scsi

Dear all:
   This email was originally posted on linux-kernel but I didn't get any 
response yet so that I post it to this linux-scsi again. Hope that we 
can get reply soon.

thank you,

dz

Dear all:
   Eventually, we found a place to place our sources for public review.

   Files are located in

http://zeniv.linux.org.uk/~winbond/

and they have been tested on Intel/AMD single/dual processors and Redhat 
9/Fedora 5 and Redhat workstation 4. We ran a stress test on multiple 
platforms overnight to read/write/format MS/MSPro cards via Winbond 528 
readers.

   Our customers, motherboard manufactures like ASUS, purchase Winbond 
528 then mount their motherboards. Winbond 528 itself provides many 
reader functions like MS/MSPro/SM/xD/SD/MMC and Winbond also vendors 
many other different chips for various buses. For example, Winbond 518 
is for LPC bus and 488 is for embedded hooked up to data bus directly. 
Our team is to derive a simple and unified architecture so that we don't 
have to write redudant codes for each chip, like 518/528/528DA and 488. 
Another example is, wbtable.c and wbtable.h are also used on xD/SM drivers.

   Someone might wonder why we use SCSI subsystem to implement those 
device drivers? When we are assigned this job in 2004, the previous 
engineer has been working on this device driver for over a year and 
he/she was using SCSI subsystem and we don't know why and we simply 
follow her/his trace to deliver this driver to our customers as soon as 
we can. Also, when we plug similar USB flash memory readers, it shows 
sda/sdb so that we took the same approach as SCSI devices.

   Don't hesitate to ask if you have any questions.

best regards,

dz



===========================================================================================
The privileged confidential information contained in this email is intended for use only by the addressees as indicated by the original sender of this email. If you are not the addressee indicated in this email or are not responsible for delivery of the email to such  a person, please kindly reply to the sender indicating this fact and delete all copies of it from your computer and network server immediately. Your cooperation is highly appreciated. It is advised that any unauthorized use of confidential information of Winbond is strictly prohibited; and any information in this email irrelevant to the official business of Winbond shall be deemed as neither given nor endorsed by Winbond.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Winbond] MS/MS Pro driver for Winbond 528 PCI reader for public review
  2006-06-27  8:07 [Winbond] MS/MS Pro driver for Winbond 528 PCI reader for public review dezheng shen
@ 2006-07-28 22:42 ` James Bottomley
  0 siblings, 0 replies; 2+ messages in thread
From: James Bottomley @ 2006-07-28 22:42 UTC (permalink / raw)
  To: dezheng shen; +Cc: linux-scsi

On Tue, 2006-06-27 at 16:07 +0800, dezheng shen wrote:
> Dear all:
>    This email was originally posted on linux-kernel but I didn't get any 
> response yet so that I post it to this linux-scsi again. Hope that we 
> can get reply soon.

Sorry for the delay, I've been a bit busy with KS/OLS and other things.

This, I'm afraid is basically the killer for scsi:

> static int wb_process_scsi_cmd(Scsi_Cmnd * cmd)
> {
> 	unsigned long flags;
> 	wb_host_data_t *host_data;
> 	ENTER();
> 
> 	host_data = g_wb_host_data;
> 	wb_chk_valid_medium(host_data);
> 
> 	wb_unit_ready(cmd);
> 
> 	switch (cmd->cmnd[0]) {
> 
> 	case START_STOP:
> 		WB_PRINTK_SCSI("START_STOP\n");
> 		wb_scsi_start_stop(cmd);
> 		break;
> 
> 	case REQUEST_SENSE:
> 		WB_PRINTK_SCSI("REQUEST_SENSE\n");
> 		wb_scsi_request_sense(cmd);
> 		break;
> 
> 	case ALLOW_MEDIUM_REMOVAL:
> 		WB_PRINTK_SCSI("ALLOW_MEDIUM_REMOVAL\n");
> 		wb_scsi_allow_medium_removal(cmd);
> 		break;
> 
> 	case TEST_UNIT_READY:
> 		WB_PRINTK_SCSI("TEST_UNIT_READY\n");
> 		wb_scsi_test_unit_ready(cmd);
> 		break;
> 
> 	case INQUIRY:
> 		WB_PRINTK_SCSI("INQUIRY\n");
> 		wb_scsi_inquiry(cmd);
> 		break;
> 
> 	case READ_6:
> 		WB_PRINTK_ERROR_SCSI("READ_6\n");
> 		break;
> 
> 	case READ_10:
> 		WB_PRINTK_SCSI("READ_10\n");
> 		wb_scsi_read_wrt(cmd, TRUE);
> 		break;
> 
> 	case WRITE_6:
> 		WB_PRINTK_ERROR_SCSI("WRITE_6\n");
> 		break;
> 
> 	case WRITE_10:
> 		WB_PRINTK_SCSI("WRITE_10\n");
> 		wb_scsi_read_wrt(cmd, FALSE);
> 		break;
> 
> 		// MODE_SENSE is 6-byte command
> 	case MODE_SENSE:
> 		WB_PRINTK_SCSI("MODE_SENSE\n");
> 		wb_scsi_mode_sense(cmd);
> 		break;
> 
> 	case READ_CAPACITY:
> 		WB_PRINTK_SCSI("READ_CAPACITY\n");
> 		wb_scsi_read_capacity(cmd);
> 		break;
> 
> 	case FORMAT_UNIT:
> 		WB_PRINTK_SCSI("FORMAT_UNIT\n");
> 		wb_scsi_format_unit(cmd);
> 		break;
> 
> 		// haven't handled all necessary cases yet
> 	default:
> 		WB_PRINTK_ERROR_SCSI("UNKNOWN command(0x%x)\n", cmd->cmnd[0]);
> 		wb_make_sense_buffer(cmd, ILLEGAL_REQUEST, 0x20, 0x00);
> 		cmd->result =
> 		    WB_CMD_RESULT(DID_OK, COMMAND_COMPLETE, CHECK_CONDITION);
> 		break;
> 	}			// end switch
> 
> 	spin_lock_irqsave(g_wb_host->host_lock, flags);
> 	cmd->scsi_done(cmd);
> 	spin_unlock_irqrestore(g_wb_host->host_lock, flags);
> 
> 	LEAVE();
> 	return 0;
> }

It means there's no actual SCSI command processor anywhere in the
device.  You're simply using the SCSI subsystem as a passthrough.  We
really try to discourage this unless the actual underlying device speaks
SCSI.  Ideally, a driver like this should fit into the existing mmc/sd
subsystem, but if it doesn't, it should be written as a simple block
driver rather than doing the unnecessary round trip conversion to SCSI
protocols and back.

James



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-07-28 22:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-27  8:07 [Winbond] MS/MS Pro driver for Winbond 528 PCI reader for public review dezheng shen
2006-07-28 22:42 ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).