diff options
| author | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-05-30 14:45:06 +0200 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2013-05-30 14:45:06 +0200 | 
| commit | a19b0dd62d7b8efc658fa1aa685ff5665878f3ee (patch) | |
| tree | 1fadf0fb3da83203ba28f209ec99e1b33e03f4d5 /common/usb_storage.c | |
| parent | 60985bba58e7695dac1fddae8cdbb62d8cfd1254 (diff) | |
| parent | a71d45d706a5b51c348160163b6c159632273fed (diff) | |
| download | olio-uboot-2014.01-a19b0dd62d7b8efc658fa1aa685ff5665878f3ee.tar.xz olio-uboot-2014.01-a19b0dd62d7b8efc658fa1aa685ff5665878f3ee.zip | |
Merge branch 'u-boot/master' into 'u-boot-arm/master'
Conflicts:
	common/cmd_fpga.c
	drivers/usb/host/ohci-at91.c
Diffstat (limited to 'common/usb_storage.c')
| -rw-r--r-- | common/usb_storage.c | 283 | 
1 files changed, 137 insertions, 146 deletions
| diff --git a/common/usb_storage.c b/common/usb_storage.c index c5db04416..457970f77 100644 --- a/common/usb_storage.c +++ b/common/usb_storage.c @@ -59,14 +59,6 @@  #undef BBB_COMDAT_TRACE  #undef BBB_XPORT_TRACE -#ifdef	USB_STOR_DEBUG -#define USB_BLK_DEBUG	1 -#else -#define USB_BLK_DEBUG	0 -#endif - -#define USB_STOR_PRINTF(fmt, args...)	debug_cond(USB_BLK_DEBUG, fmt, ##args) -  #include <scsi.h>  /* direction table -- this indicates the direction of the data   * transfer for each command code -- a 1 indicates input @@ -228,8 +220,7 @@ static unsigned int usb_get_max_lun(struct us_data *us)  			      0, us->ifnum,  			      result, sizeof(char),  			      USB_CNTL_TIMEOUT * 5); -	USB_STOR_PRINTF("Get Max LUN -> len = %i, result = %i\n", -			len, (int) *result); +	debug("Get Max LUN -> len = %i, result = %i\n", len, (int) *result);  	return (len > 0) ? *result : 0;  } @@ -262,7 +253,7 @@ int usb_stor_scan(int mode)  	usb_max_devs = 0;  	for (i = 0; i < USB_MAX_DEVICE; i++) {  		dev = usb_get_dev_index(i); /* get device */ -		USB_STOR_PRINTF("i=%d\n", i); +		debug("i=%d\n", i);  		if (dev == NULL)  			break; /* no more devices available */ @@ -278,9 +269,9 @@ int usb_stor_scan(int mode)  			     lun++) {  				usb_dev_desc[usb_max_devs].lun = lun;  				if (usb_stor_get_info(dev, &usb_stor[start], -						      &usb_dev_desc[usb_max_devs]) == 1) { -				usb_max_devs++; -		} +				    &usb_dev_desc[usb_max_devs]) == 1) { +					usb_max_devs++; +				}  			}  		}  		/* if storage device */ @@ -309,7 +300,7 @@ static int usb_stor_irq(struct usb_device *dev)  } -#ifdef	USB_STOR_DEBUG +#ifdef	DEBUG  static void usb_show_srb(ccb *pccb)  { @@ -361,45 +352,49 @@ static int us_one_transfer(struct us_data *us, int pipe, char *buf, int length)  		/* set up the transfer loop */  		do {  			/* transfer the data */ -			USB_STOR_PRINTF("Bulk xfer 0x%x(%d) try #%d\n", -				  (unsigned int)buf, this_xfer, 11 - maxtry); +			debug("Bulk xfer 0x%x(%d) try #%d\n", +			      (unsigned int)buf, this_xfer, 11 - maxtry);  			result = usb_bulk_msg(us->pusb_dev, pipe, buf,  					      this_xfer, &partial,  					      USB_CNTL_TIMEOUT * 5); -			USB_STOR_PRINTF("bulk_msg returned %d xferred %d/%d\n", -				  result, partial, this_xfer); +			debug("bulk_msg returned %d xferred %d/%d\n", +			      result, partial, this_xfer);  			if (us->pusb_dev->status != 0) {  				/* if we stall, we need to clear it before  				 * we go on  				 */ -#ifdef USB_STOR_DEBUG +#ifdef DEBUG  				display_int_status(us->pusb_dev->status);  #endif  				if (us->pusb_dev->status & USB_ST_STALLED) { -					USB_STOR_PRINTF("stalled ->clearing endpoint halt for pipe 0x%x\n", pipe); +					debug("stalled ->clearing endpoint" \ +					      "halt for pipe 0x%x\n", pipe);  					stat = us->pusb_dev->status;  					usb_clear_halt(us->pusb_dev, pipe);  					us->pusb_dev->status = stat;  					if (this_xfer == partial) { -						USB_STOR_PRINTF("bulk transferred with error %lX, but data ok\n", us->pusb_dev->status); +						debug("bulk transferred" \ +						      "with error %lX," \ +						      " but data ok\n", +						      us->pusb_dev->status);  						return 0;  					}  					else  						return result;  				}  				if (us->pusb_dev->status & USB_ST_NAK_REC) { -					USB_STOR_PRINTF("Device NAKed bulk_msg\n"); +					debug("Device NAKed bulk_msg\n");  					return result;  				} -				USB_STOR_PRINTF("bulk transferred with error"); +				debug("bulk transferred with error");  				if (this_xfer == partial) { -					USB_STOR_PRINTF(" %ld, but data ok\n", -							us->pusb_dev->status); +					debug(" %ld, but data ok\n", +					      us->pusb_dev->status);  					return 0;  				}  				/* if our try counter reaches 0, bail out */ -					USB_STOR_PRINTF(" %ld, data %d\n", -						us->pusb_dev->status, partial); +					debug(" %ld, data %d\n", +					      us->pusb_dev->status, partial);  				if (!maxtry--)  						return result;  			} @@ -433,35 +428,34 @@ static int usb_stor_BBB_reset(struct us_data *us)  	 *  	 * This comment stolen from FreeBSD's /sys/dev/usb/umass.c.  	 */ -	USB_STOR_PRINTF("BBB_reset\n"); +	debug("BBB_reset\n");  	result = usb_control_msg(us->pusb_dev, usb_sndctrlpipe(us->pusb_dev, 0),  				 US_BBB_RESET,  				 USB_TYPE_CLASS | USB_RECIP_INTERFACE,  				 0, us->ifnum, NULL, 0, USB_CNTL_TIMEOUT * 5);  	if ((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) { -		USB_STOR_PRINTF("RESET:stall\n"); +		debug("RESET:stall\n");  		return -1;  	}  	/* long wait for reset */  	mdelay(150); -	USB_STOR_PRINTF("BBB_reset result %d: status %lX reset\n", result, -			us->pusb_dev->status); +	debug("BBB_reset result %d: status %lX reset\n", +	      result, us->pusb_dev->status);  	pipe = usb_rcvbulkpipe(us->pusb_dev, us->ep_in);  	result = usb_clear_halt(us->pusb_dev, pipe);  	/* long wait for reset */  	mdelay(150); -	USB_STOR_PRINTF("BBB_reset result %d: status %lX clearing IN endpoint\n", -			result, us->pusb_dev->status); +	debug("BBB_reset result %d: status %lX clearing IN endpoint\n", +	      result, us->pusb_dev->status);  	/* long wait for reset */  	pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out);  	result = usb_clear_halt(us->pusb_dev, pipe);  	mdelay(150); -	USB_STOR_PRINTF("BBB_reset result %d: status %lX" -			" clearing OUT endpoint\n", result, -			us->pusb_dev->status); -	USB_STOR_PRINTF("BBB_reset done\n"); +	debug("BBB_reset result %d: status %lX clearing OUT endpoint\n", +	      result, us->pusb_dev->status); +	debug("BBB_reset done\n");  	return 0;  } @@ -474,7 +468,7 @@ static int usb_stor_CB_reset(struct us_data *us)  	unsigned char cmd[12];  	int result; -	USB_STOR_PRINTF("CB_reset\n"); +	debug("CB_reset\n");  	memset(cmd, 0xff, sizeof(cmd));  	cmd[0] = SCSI_SEND_DIAG;  	cmd[1] = 4; @@ -486,13 +480,12 @@ static int usb_stor_CB_reset(struct us_data *us)  	/* long wait for reset */  	mdelay(1500); -	USB_STOR_PRINTF("CB_reset result %d: status %lX" -			" clearing endpoint halt\n", result, -			us->pusb_dev->status); +	debug("CB_reset result %d: status %lX clearing endpoint halt\n", +	      result, us->pusb_dev->status);  	usb_clear_halt(us->pusb_dev, usb_rcvbulkpipe(us->pusb_dev, us->ep_in));  	usb_clear_halt(us->pusb_dev, usb_rcvbulkpipe(us->pusb_dev, us->ep_out)); -	USB_STOR_PRINTF("CB_reset done\n"); +	debug("CB_reset done\n");  	return 0;  } @@ -511,7 +504,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)  	dir_in = US_DIRECTION(srb->cmd[0]);  #ifdef BBB_COMDAT_TRACE -	printf("dir %d lun %d cmdlen %d cmd %p datalen %d pdata %p\n", +	printf("dir %d lun %d cmdlen %d cmd %p datalen %lu pdata %p\n",  		dir_in, srb->lun, srb->cmdlen, srb->cmd, srb->datalen,  		srb->pdata);  	if (srb->cmdlen) { @@ -522,7 +515,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)  #endif  	/* sanity checks */  	if (!(srb->cmdlen <= CBWCDBLENGTH)) { -		USB_STOR_PRINTF("usb_stor_BBB_comdat:cmdlen too large\n"); +		debug("usb_stor_BBB_comdat:cmdlen too large\n");  		return -1;  	} @@ -541,7 +534,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)  	result = usb_bulk_msg(us->pusb_dev, pipe, cbw, UMASS_BBB_CBW_SIZE,  			      &actlen, USB_CNTL_TIMEOUT * 5);  	if (result < 0) -		USB_STOR_PRINTF("usb_stor_BBB_comdat:usb_bulk_msg error\n"); +		debug("usb_stor_BBB_comdat:usb_bulk_msg error\n");  	return result;  } @@ -564,8 +557,8 @@ static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)  		pipe = usb_sndbulkpipe(us->pusb_dev, us->ep_out);  	while (retry--) { -		USB_STOR_PRINTF("CBI gets a command: Try %d\n", 5 - retry); -#ifdef USB_STOR_DEBUG +		debug("CBI gets a command: Try %d\n", 5 - retry); +#ifdef DEBUG  		usb_show_srb(srb);  #endif  		/* let's send the command via the control pipe */ @@ -576,35 +569,35 @@ static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)  					 0, us->ifnum,  					 srb->cmd, srb->cmdlen,  					 USB_CNTL_TIMEOUT * 5); -		USB_STOR_PRINTF("CB_transport: control msg returned %d," -				" status %lX\n", result, us->pusb_dev->status); +		debug("CB_transport: control msg returned %d, status %lX\n", +		      result, us->pusb_dev->status);  		/* check the return code for the command */  		if (result < 0) {  			if (us->pusb_dev->status & USB_ST_STALLED) {  				status = us->pusb_dev->status; -				USB_STOR_PRINTF(" stall during command found," -						" clear pipe\n"); +				debug(" stall during command found," \ +				      " clear pipe\n");  				usb_clear_halt(us->pusb_dev,  					      usb_sndctrlpipe(us->pusb_dev, 0));  				us->pusb_dev->status = status;  			} -			USB_STOR_PRINTF(" error during command %02X" -					" Stat = %lX\n", srb->cmd[0], -					us->pusb_dev->status); +			debug(" error during command %02X" \ +			      " Stat = %lX\n", srb->cmd[0], +			      us->pusb_dev->status);  			return result;  		}  		/* transfer the data payload for this command, if one exists*/ -		USB_STOR_PRINTF("CB_transport: control msg returned %d," -				" direction is %s to go 0x%lx\n", result, -				dir_in ? "IN" : "OUT", srb->datalen); +		debug("CB_transport: control msg returned %d," \ +		      " direction is %s to go 0x%lx\n", result, +		      dir_in ? "IN" : "OUT", srb->datalen);  		if (srb->datalen) {  			result = us_one_transfer(us, pipe, (char *)srb->pdata,  						 srb->datalen); -			USB_STOR_PRINTF("CBI attempted to transfer data," -					" result is %d status %lX, len %d\n", -					result, us->pusb_dev->status, -					us->pusb_dev->act_len); +			debug("CBI attempted to transfer data," \ +			      " result is %d status %lX, len %d\n", +			      result, us->pusb_dev->status, +				us->pusb_dev->act_len);  			if (!(us->pusb_dev->status & USB_ST_NAK_REC))  				break;  		} /* if (srb->datalen) */ @@ -635,10 +628,9 @@ static int usb_stor_CBI_get_status(ccb *srb, struct us_data *us)  		us->ip_wanted = 0;  		return USB_STOR_TRANSPORT_ERROR;  	} -	USB_STOR_PRINTF -		("Got interrupt data 0x%x, transfered %d status 0x%lX\n", -		 us->ip_data, us->pusb_dev->irq_act_len, -		 us->pusb_dev->irq_status); +	debug("Got interrupt data 0x%x, transfered %d status 0x%lX\n", +	      us->ip_data, us->pusb_dev->irq_act_len, +	      us->pusb_dev->irq_status);  	/* UFI gives us ASC and ASCQ, like a request sense */  	if (us->subclass == US_SC_UFI) {  		if (srb->cmd[0] == SCSI_REQ_SENSE || @@ -691,11 +683,11 @@ static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)  	dir_in = US_DIRECTION(srb->cmd[0]);  	/* COMMAND phase */ -	USB_STOR_PRINTF("COMMAND phase\n"); +	debug("COMMAND phase\n");  	result = usb_stor_BBB_comdat(srb, us);  	if (result < 0) { -		USB_STOR_PRINTF("failed to send CBW status %ld\n", -			us->pusb_dev->status); +		debug("failed to send CBW status %ld\n", +		      us->pusb_dev->status);  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} @@ -708,7 +700,7 @@ static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)  	/* no data, go immediately to the STATUS phase */  	if (srb->datalen == 0)  		goto st; -	USB_STOR_PRINTF("DATA phase\n"); +	debug("DATA phase\n");  	if (dir_in)  		pipe = pipein;  	else @@ -717,7 +709,7 @@ static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)  			      &data_actlen, USB_CNTL_TIMEOUT * 5);  	/* special handling of STALL in DATA phase */  	if ((result < 0) && (us->pusb_dev->status & USB_ST_STALLED)) { -		USB_STOR_PRINTF("DATA:stall\n"); +		debug("DATA:stall\n");  		/* clear the STALL on the endpoint */  		result = usb_stor_BBB_clear_endpt_stall(us,  					dir_in ? us->ep_in : us->ep_out); @@ -726,8 +718,8 @@ static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)  			goto st;  	}  	if (result < 0) { -		USB_STOR_PRINTF("usb_bulk_msg error status %ld\n", -			us->pusb_dev->status); +		debug("usb_bulk_msg error status %ld\n", +		      us->pusb_dev->status);  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} @@ -740,14 +732,14 @@ static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)  st:  	retry = 0;  again: -	USB_STOR_PRINTF("STATUS phase\n"); +	debug("STATUS phase\n");  	result = usb_bulk_msg(us->pusb_dev, pipein, csw, UMASS_BBB_CSW_SIZE,  				&actlen, USB_CNTL_TIMEOUT*5);  	/* special handling of STALL in STATUS phase */  	if ((result < 0) && (retry < 1) &&  	    (us->pusb_dev->status & USB_ST_STALLED)) { -		USB_STOR_PRINTF("STATUS:stall\n"); +		debug("STATUS:stall\n");  		/* clear the STALL on the endpoint */  		result = usb_stor_BBB_clear_endpt_stall(us, us->ep_in);  		if (result >= 0 && (retry++ < 1)) @@ -755,8 +747,8 @@ again:  			goto again;  	}  	if (result < 0) { -		USB_STOR_PRINTF("usb_bulk_msg error status %ld\n", -			us->pusb_dev->status); +		debug("usb_bulk_msg error status %ld\n", +		      us->pusb_dev->status);  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} @@ -771,27 +763,27 @@ again:  	if (pipe == 0 && srb->datalen != 0 && srb->datalen - data_actlen != 0)  		pipe = srb->datalen - data_actlen;  	if (CSWSIGNATURE != le32_to_cpu(csw->dCSWSignature)) { -		USB_STOR_PRINTF("!CSWSIGNATURE\n"); +		debug("!CSWSIGNATURE\n");  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} else if ((CBWTag - 1) != le32_to_cpu(csw->dCSWTag)) { -		USB_STOR_PRINTF("!Tag\n"); +		debug("!Tag\n");  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} else if (csw->bCSWStatus > CSWSTATUS_PHASE) { -		USB_STOR_PRINTF(">PHASE\n"); +		debug(">PHASE\n");  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} else if (csw->bCSWStatus == CSWSTATUS_PHASE) { -		USB_STOR_PRINTF("=PHASE\n"); +		debug("=PHASE\n");  		usb_stor_BBB_reset(us);  		return USB_STOR_TRANSPORT_FAILED;  	} else if (data_actlen > srb->datalen) { -		USB_STOR_PRINTF("transferred %dB instead of %ldB\n", -			data_actlen, srb->datalen); +		debug("transferred %dB instead of %ldB\n", +		      data_actlen, srb->datalen);  		return USB_STOR_TRANSPORT_FAILED;  	} else if (csw->bCSWStatus == CSWSTATUS_FAILED) { -		USB_STOR_PRINTF("FAILED\n"); +		debug("FAILED\n");  		return USB_STOR_TRANSPORT_FAILED;  	} @@ -812,14 +804,14 @@ static int usb_stor_CB_transport(ccb *srb, struct us_data *us)  	/* issue the command */  do_retry:  	result = usb_stor_CB_comdat(srb, us); -	USB_STOR_PRINTF("command / Data returned %d, status %lX\n", -			result, us->pusb_dev->status); +	debug("command / Data returned %d, status %lX\n", +	      result, us->pusb_dev->status);  	/* if this is an CBI Protocol, get IRQ */  	if (us->protocol == US_PR_CBI) {  		status = usb_stor_CBI_get_status(srb, us);  		/* if the status is error, report it */  		if (status == USB_STOR_TRANSPORT_ERROR) { -			USB_STOR_PRINTF(" USB CBI Command Error\n"); +			debug(" USB CBI Command Error\n");  			return status;  		}  		srb->sense_buf[12] = (unsigned char)(us->ip_data >> 8); @@ -827,7 +819,7 @@ do_retry:  		if (!us->ip_data) {  			/* if the status is good, report it */  			if (status == USB_STOR_TRANSPORT_GOOD) { -				USB_STOR_PRINTF(" USB CBI Command Good\n"); +				debug(" USB CBI Command Good\n");  				return status;  			}  		} @@ -835,7 +827,7 @@ do_retry:  	/* do we have to issue an auto request? */  	/* HERE we have to check the result */  	if ((result < 0) && !(us->pusb_dev->status & USB_ST_STALLED)) { -		USB_STOR_PRINTF("ERROR %lX\n", us->pusb_dev->status); +		debug("ERROR %lX\n", us->pusb_dev->status);  		us->transport_reset(us);  		return USB_STOR_TRANSPORT_ERROR;  	} @@ -843,7 +835,7 @@ do_retry:  	    ((srb->cmd[0] == SCSI_REQ_SENSE) ||  	    (srb->cmd[0] == SCSI_INQUIRY))) {  		/* do not issue an autorequest after request sense */ -		USB_STOR_PRINTF("No auto request and good\n"); +		debug("No auto request and good\n");  		return USB_STOR_TRANSPORT_GOOD;  	}  	/* issue an request_sense */ @@ -856,19 +848,19 @@ do_retry:  	psrb->cmdlen = 12;  	/* issue the command */  	result = usb_stor_CB_comdat(psrb, us); -	USB_STOR_PRINTF("auto request returned %d\n", result); +	debug("auto request returned %d\n", result);  	/* if this is an CBI Protocol, get IRQ */  	if (us->protocol == US_PR_CBI)  		status = usb_stor_CBI_get_status(psrb, us);  	if ((result < 0) && !(us->pusb_dev->status & USB_ST_STALLED)) { -		USB_STOR_PRINTF(" AUTO REQUEST ERROR %ld\n", -				us->pusb_dev->status); +		debug(" AUTO REQUEST ERROR %ld\n", +		      us->pusb_dev->status);  		return USB_STOR_TRANSPORT_ERROR;  	} -	USB_STOR_PRINTF("autorequest returned 0x%02X 0x%02X 0x%02X 0x%02X\n", -			srb->sense_buf[0], srb->sense_buf[2], -			srb->sense_buf[12], srb->sense_buf[13]); +	debug("autorequest returned 0x%02X 0x%02X 0x%02X 0x%02X\n", +	      srb->sense_buf[0], srb->sense_buf[2], +	      srb->sense_buf[12], srb->sense_buf[13]);  	/* Check the auto request result */  	if ((srb->sense_buf[2] == 0) &&  	    (srb->sense_buf[12] == 0) && @@ -923,7 +915,7 @@ static int usb_inquiry(ccb *srb, struct us_data *ss)  		srb->datalen = 36;  		srb->cmdlen = 12;  		i = ss->transport(srb, ss); -		USB_STOR_PRINTF("inquiry returns %d\n", i); +		debug("inquiry returns %d\n", i);  		if (i == 0)  			break;  	} while (--retry); @@ -948,9 +940,9 @@ static int usb_request_sense(ccb *srb, struct us_data *ss)  	srb->pdata = &srb->sense_buf[0];  	srb->cmdlen = 12;  	ss->transport(srb, ss); -	USB_STOR_PRINTF("Request Sense returned %02X %02X %02X\n", -			srb->sense_buf[2], srb->sense_buf[12], -			srb->sense_buf[13]); +	debug("Request Sense returned %02X %02X %02X\n", +	      srb->sense_buf[2], srb->sense_buf[12], +	      srb->sense_buf[13]);  	srb->pdata = (uchar *)ptr;  	return 0;  } @@ -1017,7 +1009,7 @@ static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start,  	srb->cmd[7] = ((unsigned char) (blocks >> 8)) & 0xff;  	srb->cmd[8] = (unsigned char) blocks & 0xff;  	srb->cmdlen = 12; -	USB_STOR_PRINTF("read10: start %lx blocks %x\n", start, blocks); +	debug("read10: start %lx blocks %x\n", start, blocks);  	return ss->transport(srb, ss);  } @@ -1034,7 +1026,7 @@ static int usb_write_10(ccb *srb, struct us_data *ss, unsigned long start,  	srb->cmd[7] = ((unsigned char) (blocks >> 8)) & 0xff;  	srb->cmd[8] = (unsigned char) blocks & 0xff;  	srb->cmdlen = 12; -	USB_STOR_PRINTF("write10: start %lx blocks %x\n", start, blocks); +	debug("write10: start %lx blocks %x\n", start, blocks);  	return ss->transport(srb, ss);  } @@ -1078,7 +1070,7 @@ unsigned long usb_stor_read(int device, unsigned long blknr,  	device &= 0xff;  	/* Setup  device */ -	USB_STOR_PRINTF("\nusb_read: dev %d \n", device); +	debug("\nusb_read: dev %d \n", device);  	dev = NULL;  	for (i = 0; i < USB_MAX_DEVICE; i++) {  		dev = usb_get_dev_index(i); @@ -1095,8 +1087,8 @@ unsigned long usb_stor_read(int device, unsigned long blknr,  	start = blknr;  	blks = blkcnt; -	USB_STOR_PRINTF("\nusb_read: dev %d startblk " LBAF ", blccnt " LBAF -			" buffer %lx\n", device, start, blks, buf_addr); +	debug("\nusb_read: dev %d startblk " LBAF ", blccnt " LBAF +	      " buffer %lx\n", device, start, blks, buf_addr);  	do {  		/* XXX need some comment here */ @@ -1112,7 +1104,7 @@ retry_it:  		srb->datalen = usb_dev_desc[device].blksz * smallblks;  		srb->pdata = (unsigned char *)buf_addr;  		if (usb_read_10(srb, ss, start, smallblks)) { -			USB_STOR_PRINTF("Read ERROR\n"); +			debug("Read ERROR\n");  			usb_request_sense(srb, ss);  			if (retry--)  				goto retry_it; @@ -1125,9 +1117,9 @@ retry_it:  	} while (blks != 0);  	ss->flags &= ~USB_READY; -	USB_STOR_PRINTF("usb_read: end startblk " LBAF -			", blccnt %x buffer %lx\n", -			start, smallblks, buf_addr); +	debug("usb_read: end startblk " LBAF +	      ", blccnt %x buffer %lx\n", +	      start, smallblks, buf_addr);  	usb_disable_asynch(0); /* asynch transfer allowed */  	if (blkcnt >= USB_MAX_XFER_BLK) @@ -1151,7 +1143,7 @@ unsigned long usb_stor_write(int device, unsigned long blknr,  	device &= 0xff;  	/* Setup  device */ -	USB_STOR_PRINTF("\nusb_write: dev %d \n", device); +	debug("\nusb_write: dev %d \n", device);  	dev = NULL;  	for (i = 0; i < USB_MAX_DEVICE; i++) {  		dev = usb_get_dev_index(i); @@ -1169,8 +1161,8 @@ unsigned long usb_stor_write(int device, unsigned long blknr,  	start = blknr;  	blks = blkcnt; -	USB_STOR_PRINTF("\nusb_write: dev %d startblk " LBAF ", blccnt " LBAF -			" buffer %lx\n", device, start, blks, buf_addr); +	debug("\nusb_write: dev %d startblk " LBAF ", blccnt " LBAF +	      " buffer %lx\n", device, start, blks, buf_addr);  	do {  		/* If write fails retry for max retry count else @@ -1188,7 +1180,7 @@ retry_it:  		srb->datalen = usb_dev_desc[device].blksz * smallblks;  		srb->pdata = (unsigned char *)buf_addr;  		if (usb_write_10(srb, ss, start, smallblks)) { -			USB_STOR_PRINTF("Write ERROR\n"); +			debug("Write ERROR\n");  			usb_request_sense(srb, ss);  			if (retry--)  				goto retry_it; @@ -1201,9 +1193,8 @@ retry_it:  	} while (blks != 0);  	ss->flags &= ~USB_READY; -	USB_STOR_PRINTF("usb_write: end startblk " LBAF -			", blccnt %x buffer %lx\n", -			start, smallblks, buf_addr); +	debug("usb_write: end startblk " LBAF ", blccnt %x buffer %lx\n", +	      start, smallblks, buf_addr);  	usb_disable_asynch(0); /* asynch transfer allowed */  	if (blkcnt >= USB_MAX_XFER_BLK) @@ -1218,6 +1209,7 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  {  	struct usb_interface *iface;  	int i; +	struct usb_endpoint_descriptor *ep_desc;  	unsigned int flags = 0;  	int protocol = 0; @@ -1228,12 +1220,12 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  #if 0  	/* this is the place to patch some storage devices */ -	USB_STOR_PRINTF("iVendor %X iProduct %X\n", dev->descriptor.idVendor, +	debug("iVendor %X iProduct %X\n", dev->descriptor.idVendor,  			dev->descriptor.idProduct);  	if ((dev->descriptor.idVendor) == 0x066b &&  	    (dev->descriptor.idProduct) == 0x0103) { -		USB_STOR_PRINTF("patched for E-USB\n"); +		debug("patched for E-USB\n");  		protocol = US_PR_CB;  		subclass = US_SC_UFI;	    /* an assumption */  	} @@ -1250,7 +1242,7 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  	memset(ss, 0, sizeof(struct us_data));  	/* At this point, we know we've got a live one */ -	USB_STOR_PRINTF("\n\nUSB Mass Storage device detected\n"); +	debug("\n\nUSB Mass Storage device detected\n");  	/* Initialize the us_data structure with some useful info */  	ss->flags = flags; @@ -1270,21 +1262,21 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  	}  	/* set the handler pointers based on the protocol */ -	USB_STOR_PRINTF("Transport: "); +	debug("Transport: ");  	switch (ss->protocol) {  	case US_PR_CB: -		USB_STOR_PRINTF("Control/Bulk\n"); +		debug("Control/Bulk\n");  		ss->transport = usb_stor_CB_transport;  		ss->transport_reset = usb_stor_CB_reset;  		break;  	case US_PR_CBI: -		USB_STOR_PRINTF("Control/Bulk/Interrupt\n"); +		debug("Control/Bulk/Interrupt\n");  		ss->transport = usb_stor_CB_transport;  		ss->transport_reset = usb_stor_CB_reset;  		break;  	case US_PR_BULK: -		USB_STOR_PRINTF("Bulk/Bulk/Bulk\n"); +		debug("Bulk/Bulk/Bulk\n");  		ss->transport = usb_stor_BBB_transport;  		ss->transport_reset = usb_stor_BBB_reset;  		break; @@ -1300,34 +1292,35 @@ int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,  	 * We will ignore any others.  	 */  	for (i = 0; i < iface->desc.bNumEndpoints; i++) { +		ep_desc = &iface->ep_desc[i];  		/* is it an BULK endpoint? */ -		if ((iface->ep_desc[i].bmAttributes & +		if ((ep_desc->bmAttributes &  		     USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) { -			if (iface->ep_desc[i].bEndpointAddress & USB_DIR_IN) -				ss->ep_in = iface->ep_desc[i].bEndpointAddress & -					USB_ENDPOINT_NUMBER_MASK; +			if (ep_desc->bEndpointAddress & USB_DIR_IN) +				ss->ep_in = ep_desc->bEndpointAddress & +						USB_ENDPOINT_NUMBER_MASK;  			else  				ss->ep_out = -					iface->ep_desc[i].bEndpointAddress & +					ep_desc->bEndpointAddress &  					USB_ENDPOINT_NUMBER_MASK;  		}  		/* is it an interrupt endpoint? */ -		if ((iface->ep_desc[i].bmAttributes & -		    USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) { -			ss->ep_int = iface->ep_desc[i].bEndpointAddress & -				USB_ENDPOINT_NUMBER_MASK; -			ss->irqinterval = iface->ep_desc[i].bInterval; +		if ((ep_desc->bmAttributes & +		     USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT) { +			ss->ep_int = ep_desc->bEndpointAddress & +						USB_ENDPOINT_NUMBER_MASK; +			ss->irqinterval = ep_desc->bInterval;  		}  	} -	USB_STOR_PRINTF("Endpoints In %d Out %d Int %d\n", -		  ss->ep_in, ss->ep_out, ss->ep_int); +	debug("Endpoints In %d Out %d Int %d\n", +	      ss->ep_in, ss->ep_out, ss->ep_int);  	/* Do some basic sanity checks, and bail if we find a problem */  	if (usb_set_interface(dev, iface->desc.bInterfaceNumber, 0) ||  	    !ss->ep_in || !ss->ep_out ||  	    (ss->protocol == US_PR_CBI && ss->ep_int == 0)) { -		USB_STOR_PRINTF("Problems with device\n"); +		debug("Problems with device\n");  		return 0;  	}  	/* set class specific stuff */ @@ -1366,7 +1359,7 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,  	dev_desc->target = dev->devnum;  	pccb->lun = dev_desc->lun; -	USB_STOR_PRINTF(" address %d\n", dev_desc->target); +	debug(" address %d\n", dev_desc->target);  	if (usb_inquiry(pccb, ss))  		return -1; @@ -1392,8 +1385,8 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,  	usb_bin_fixup(dev->descriptor, (uchar *)dev_desc->vendor,  		      (uchar *)dev_desc->product);  #endif /* CONFIG_USB_BIN_FIXUP */ -	USB_STOR_PRINTF("ISO Vers %X, Response Data %X\n", usb_stor_buf[2], -			usb_stor_buf[3]); +	debug("ISO Vers %X, Response Data %X\n", usb_stor_buf[2], +	      usb_stor_buf[3]);  	if (usb_test_unit_ready(pccb, ss)) {  		printf("Device NOT ready\n"  		       "   Request Sense returned %02X %02X %02X\n", @@ -1413,8 +1406,7 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,  		cap[1] = 0x200;  	}  	ss->flags &= ~USB_READY; -	USB_STOR_PRINTF("Read Capacity returns: 0x%lx, 0x%lx\n", cap[0], -			cap[1]); +	debug("Read Capacity returns: 0x%lx, 0x%lx\n", cap[0], cap[1]);  #if 0  	if (cap[0] > (0x200000 * 10)) /* greater than 10 GByte */  		cap[0] >>= 16; @@ -1426,17 +1418,16 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,  	cap[0] += 1;  	capacity = &cap[0];  	blksz = &cap[1]; -	USB_STOR_PRINTF("Capacity = 0x%lx, blocksz = 0x%lx\n", -			*capacity, *blksz); +	debug("Capacity = 0x%lx, blocksz = 0x%lx\n", *capacity, *blksz);  	dev_desc->lba = *capacity;  	dev_desc->blksz = *blksz;  	dev_desc->log2blksz = LOG2(dev_desc->blksz);  	dev_desc->type = perq; -	USB_STOR_PRINTF(" address %d\n", dev_desc->target); -	USB_STOR_PRINTF("partype: %d\n", dev_desc->part_type); +	debug(" address %d\n", dev_desc->target); +	debug("partype: %d\n", dev_desc->part_type);  	init_part(dev_desc); -	USB_STOR_PRINTF("partype: %d\n", dev_desc->part_type); +	debug("partype: %d\n", dev_desc->part_type);  	return 1;  } |