usb: storage: Convert US_DEBUGP to usb_stor_dbg
Use a more current logging style with dev_printk where possible. o Convert uses of US_DEBUGP to usb_stor_dbg o Add "struct us_data *" to usb_stor_dbg uses o usb_stor_dbg now uses struct device */dev_vprint_emit o Removed embedded function names o Coalesce formats o Remove trailing whitespace o Remove useless OOM messages o Remove useless function entry/exit logging o Convert some US_DEBUGP uses to dev_info and dev_dbg Object size is slightly reduced when debugging is enabled, slightly increased with no debugging because some initialization and removal messages are now always emitted. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
					parent
					
						
							
								f1175daa53
							
						
					
				
			
			
				commit
				
					
						191648d03d
					
				
			
		
					 20 changed files with 753 additions and 834 deletions
				
			
		|  | @ -326,8 +326,7 @@ static int alauda_get_media_status(struct us_data *us, unsigned char *data) | |||
| 	rc = usb_stor_ctrl_transfer(us, us->recv_ctrl_pipe, | ||||
| 		command, 0xc0, 0, 1, data, 2); | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_get_media_status: Media status %02X %02X\n", | ||||
| 		data[0], data[1]); | ||||
| 	usb_stor_dbg(us, "Media status %02X %02X\n", data[0], data[1]); | ||||
| 
 | ||||
| 	return rc; | ||||
| } | ||||
|  | @ -402,7 +401,7 @@ static int alauda_init_media(struct us_data *us) | |||
| 			ready = 1; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_init_media: We are ready for action!\n"); | ||||
| 	usb_stor_dbg(us, "We are ready for action!\n"); | ||||
| 
 | ||||
| 	if (alauda_ack_media(us) != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
|  | @ -413,15 +412,15 @@ static int alauda_init_media(struct us_data *us) | |||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	if (data[0] != 0x14) { | ||||
| 		US_DEBUGP("alauda_init_media: Media not ready after ack\n"); | ||||
| 		usb_stor_dbg(us, "Media not ready after ack\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	if (alauda_get_media_signature(us, data) != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_init_media: Media signature: %02X %02X %02X %02X\n", | ||||
| 		data[0], data[1], data[2], data[3]); | ||||
| 	usb_stor_dbg(us, "Media signature: %02X %02X %02X %02X\n", | ||||
| 		     data[0], data[1], data[2], data[3]); | ||||
| 	media_info = alauda_card_find_id(data[1]); | ||||
| 	if (media_info == NULL) { | ||||
| 		printk(KERN_WARNING | ||||
|  | @ -432,8 +431,8 @@ static int alauda_init_media(struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	MEDIA_INFO(us).capacity = 1 << media_info->chipshift; | ||||
| 	US_DEBUGP("Found media with capacity: %ldMB\n", | ||||
| 		MEDIA_INFO(us).capacity >> 20); | ||||
| 	usb_stor_dbg(us, "Found media with capacity: %ldMB\n", | ||||
| 		     MEDIA_INFO(us).capacity >> 20); | ||||
| 
 | ||||
| 	MEDIA_INFO(us).pageshift = media_info->pageshift; | ||||
| 	MEDIA_INFO(us).blockshift = media_info->blockshift; | ||||
|  | @ -472,7 +471,7 @@ static int alauda_check_media(struct us_data *us) | |||
| 	/* Check for no media or door open */ | ||||
| 	if ((status[0] & 0x80) || ((status[0] & 0x1F) == 0x10) | ||||
| 		|| ((status[1] & 0x01) == 0)) { | ||||
| 		US_DEBUGP("alauda_check_media: No media, or door open\n"); | ||||
| 		usb_stor_dbg(us, "No media, or door open\n"); | ||||
| 		alauda_free_maps(&MEDIA_INFO(us)); | ||||
| 		info->sense_key = 0x02; | ||||
| 		info->sense_asc = 0x3A; | ||||
|  | @ -482,7 +481,7 @@ static int alauda_check_media(struct us_data *us) | |||
| 
 | ||||
| 	/* Check for media change */ | ||||
| 	if (status[0] & 0x08) { | ||||
| 		US_DEBUGP("alauda_check_media: Media change detected\n"); | ||||
| 		usb_stor_dbg(us, "Media change detected\n"); | ||||
| 		alauda_free_maps(&MEDIA_INFO(us)); | ||||
| 		alauda_init_media(us); | ||||
| 
 | ||||
|  | @ -518,7 +517,7 @@ static int alauda_check_status2(struct us_data *us) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_check_status2: %02X %02X %02X\n", data[0], data[1], data[2]); | ||||
| 	usb_stor_dbg(us, "%02X %02X %02X\n", data[0], data[1], data[2]); | ||||
| 	if (data[0] & ALAUDA_STATUS_ERROR) | ||||
| 		return USB_STOR_XFER_ERROR; | ||||
| 
 | ||||
|  | @ -584,7 +583,7 @@ static int alauda_read_map(struct us_data *us, unsigned int zone) | |||
| 		goto error; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_read_map: Mapping blocks for zone %d\n", zone); | ||||
| 	usb_stor_dbg(us, "Mapping blocks for zone %d\n", zone); | ||||
| 
 | ||||
| 	/* 1024 PBA's per zone */ | ||||
| 	for (i = 0; i < zonesize; i++) | ||||
|  | @ -604,7 +603,7 @@ static int alauda_read_map(struct us_data *us, unsigned int zone) | |||
| 			if (data[j] != 0) | ||||
| 				goto nonz; | ||||
| 		pba_to_lba[i] = UNUSABLE; | ||||
| 		US_DEBUGP("alauda_read_map: PBA %d has no logical mapping\n", blocknum); | ||||
| 		usb_stor_dbg(us, "PBA %d has no logical mapping\n", blocknum); | ||||
| 		continue; | ||||
| 
 | ||||
| 	nonz: | ||||
|  | @ -617,19 +616,18 @@ static int alauda_read_map(struct us_data *us, unsigned int zone) | |||
| 	nonff: | ||||
| 		/* normal PBAs start with six FFs */ | ||||
| 		if (j < 6) { | ||||
| 			US_DEBUGP("alauda_read_map: PBA %d has no logical mapping: " | ||||
| 			       "reserved area = %02X%02X%02X%02X " | ||||
| 			       "data status %02X block status %02X\n", | ||||
| 			       blocknum, data[0], data[1], data[2], data[3], | ||||
| 			       data[4], data[5]); | ||||
| 			usb_stor_dbg(us, "PBA %d has no logical mapping: reserved area = %02X%02X%02X%02X data status %02X block status %02X\n", | ||||
| 				     blocknum, | ||||
| 				     data[0], data[1], data[2], data[3], | ||||
| 				     data[4], data[5]); | ||||
| 			pba_to_lba[i] = UNUSABLE; | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		if ((data[6] >> 4) != 0x01) { | ||||
| 			US_DEBUGP("alauda_read_map: PBA %d has invalid address " | ||||
| 			       "field %02X%02X/%02X%02X\n", | ||||
| 			       blocknum, data[6], data[7], data[11], data[12]); | ||||
| 			usb_stor_dbg(us, "PBA %d has invalid address field %02X%02X/%02X%02X\n", | ||||
| 				     blocknum, data[6], data[7], | ||||
| 				     data[11], data[12]); | ||||
| 			pba_to_lba[i] = UNUSABLE; | ||||
| 			continue; | ||||
| 		} | ||||
|  | @ -711,7 +709,7 @@ static int alauda_erase_block(struct us_data *us, u16 pba) | |||
| 	}; | ||||
| 	unsigned char buf[2]; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_erase_block: Erasing PBA %d\n", pba); | ||||
| 	usb_stor_dbg(us, "Erasing PBA %d\n", pba); | ||||
| 
 | ||||
| 	rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 		command, 9, NULL); | ||||
|  | @ -723,8 +721,7 @@ static int alauda_erase_block(struct us_data *us, u16 pba) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_erase_block: Erase result: %02X %02X\n", | ||||
| 		buf[0], buf[1]); | ||||
| 	usb_stor_dbg(us, "Erase result: %02X %02X\n", buf[0], buf[1]); | ||||
| 	return rc; | ||||
| } | ||||
| 
 | ||||
|  | @ -741,8 +738,7 @@ static int alauda_read_block_raw(struct us_data *us, u16 pba, | |||
| 		PBA_ZONE(pba), 0, PBA_LO(pba) + page, pages, 0, MEDIA_PORT(us) | ||||
| 	}; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_read_block: pba %d page %d count %d\n", | ||||
| 		pba, page, pages); | ||||
| 	usb_stor_dbg(us, "pba %d page %d count %d\n", pba, page, pages); | ||||
| 
 | ||||
| 	rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 		command, 9, NULL); | ||||
|  | @ -793,7 +789,7 @@ static int alauda_write_block(struct us_data *us, u16 pba, unsigned char *data) | |||
| 		PBA_ZONE(pba), 0, PBA_LO(pba), 32, 0, MEDIA_PORT(us) | ||||
| 	}; | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_write_block: pba %d\n", pba); | ||||
| 	usb_stor_dbg(us, "pba %d\n", pba); | ||||
| 
 | ||||
| 	rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 		command, 9, NULL); | ||||
|  | @ -866,14 +862,14 @@ static int alauda_write_lba(struct us_data *us, u16 lba, | |||
| 		cptr = bptr + pagesize; | ||||
| 		nand_compute_ecc(bptr, ecc); | ||||
| 		if (!nand_compare_ecc(cptr+13, ecc)) { | ||||
| 			US_DEBUGP("Warning: bad ecc in page %d- of pba %d\n", | ||||
| 				  i, pba); | ||||
| 			usb_stor_dbg(us, "Warning: bad ecc in page %d- of pba %d\n", | ||||
| 				     i, pba); | ||||
| 			nand_store_ecc(cptr+13, ecc); | ||||
| 		} | ||||
| 		nand_compute_ecc(bptr + (pagesize / 2), ecc); | ||||
| 		if (!nand_compare_ecc(cptr+8, ecc)) { | ||||
| 			US_DEBUGP("Warning: bad ecc in page %d+ of pba %d\n", | ||||
| 				  i, pba); | ||||
| 			usb_stor_dbg(us, "Warning: bad ecc in page %d+ of pba %d\n", | ||||
| 				     i, pba); | ||||
| 			nand_store_ecc(cptr+8, ecc); | ||||
| 		} | ||||
| 		cptr[6] = cptr[11] = MSB_of(lbap); | ||||
|  | @ -900,8 +896,7 @@ static int alauda_write_lba(struct us_data *us, u16 lba, | |||
| 	new_pba_offset = new_pba - (zone * zonesize); | ||||
| 	MEDIA_INFO(us).pba_to_lba[zone][new_pba_offset] = lba; | ||||
| 	MEDIA_INFO(us).lba_to_pba[zone][lba_offset] = new_pba; | ||||
| 	US_DEBUGP("alauda_write_lba: Remapped LBA %d to PBA %d\n", | ||||
| 		lba, new_pba); | ||||
| 	usb_stor_dbg(us, "Remapped LBA %d to PBA %d\n", lba, new_pba); | ||||
| 
 | ||||
| 	if (pba != UNDEF) { | ||||
| 		unsigned int pba_offset = pba - (zone * zonesize); | ||||
|  | @ -964,8 +959,8 @@ static int alauda_read_data(struct us_data *us, unsigned long address, | |||
| 
 | ||||
| 		/* Not overflowing capacity? */ | ||||
| 		if (lba >= max_lba) { | ||||
| 			US_DEBUGP("Error: Requested lba %u exceeds " | ||||
| 				  "maximum %u\n", lba, max_lba); | ||||
| 			usb_stor_dbg(us, "Error: Requested lba %u exceeds maximum %u\n", | ||||
| 				     lba, max_lba); | ||||
| 			result = USB_STOR_TRANSPORT_ERROR; | ||||
| 			break; | ||||
| 		} | ||||
|  | @ -978,8 +973,8 @@ static int alauda_read_data(struct us_data *us, unsigned long address, | |||
| 		pba = MEDIA_INFO(us).lba_to_pba[zone][lba_offset]; | ||||
| 
 | ||||
| 		if (pba == UNDEF) {	/* this lba was never written */ | ||||
| 			US_DEBUGP("Read %d zero pages (LBA %d) page %d\n", | ||||
| 				  pages, lba, page); | ||||
| 			usb_stor_dbg(us, "Read %d zero pages (LBA %d) page %d\n", | ||||
| 				     pages, lba, page); | ||||
| 
 | ||||
| 			/* This is not really an error. It just means
 | ||||
| 			   that the block has never been written. | ||||
|  | @ -988,9 +983,8 @@ static int alauda_read_data(struct us_data *us, unsigned long address, | |||
| 
 | ||||
| 			memset(buffer, 0, len); | ||||
| 		} else { | ||||
| 			US_DEBUGP("Read %d pages, from PBA %d" | ||||
| 				  " (LBA %d) page %d\n", | ||||
| 				  pages, pba, lba, page); | ||||
| 			usb_stor_dbg(us, "Read %d pages, from PBA %d (LBA %d) page %d\n", | ||||
| 				     pages, pba, lba, page); | ||||
| 
 | ||||
| 			result = alauda_read_block(us, pba, page, pages, buffer); | ||||
| 			if (result != USB_STOR_TRANSPORT_GOOD) | ||||
|  | @ -1066,8 +1060,8 @@ static int alauda_write_data(struct us_data *us, unsigned long address, | |||
| 
 | ||||
| 		/* Not overflowing capacity? */ | ||||
| 		if (lba >= max_lba) { | ||||
| 			US_DEBUGP("alauda_write_data: Requested lba %u exceeds " | ||||
| 				  "maximum %u\n", lba, max_lba); | ||||
| 			usb_stor_dbg(us, "Requested lba %u exceeds maximum %u\n", | ||||
| 				     lba, max_lba); | ||||
| 			result = USB_STOR_TRANSPORT_ERROR; | ||||
| 			break; | ||||
| 		} | ||||
|  | @ -1122,11 +1116,9 @@ static int init_alauda(struct us_data *us) | |||
| 	nand_init_ecc(); | ||||
| 
 | ||||
| 	us->extra = kzalloc(sizeof(struct alauda_info), GFP_NOIO); | ||||
| 	if (!us->extra) { | ||||
| 		US_DEBUGP("init_alauda: Gah! Can't allocate storage for" | ||||
| 			"alauda info struct!\n"); | ||||
| 	if (!us->extra) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	info = (struct alauda_info *) us->extra; | ||||
| 	us->extra_destructor = alauda_info_destructor; | ||||
| 
 | ||||
|  | @ -1147,15 +1139,14 @@ static int alauda_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	}; | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == INQUIRY) { | ||||
| 		US_DEBUGP("alauda_transport: INQUIRY. " | ||||
| 			"Returning bogus response.\n"); | ||||
| 		usb_stor_dbg(us, "INQUIRY - Returning bogus response\n"); | ||||
| 		memcpy(ptr, inquiry_response, sizeof(inquiry_response)); | ||||
| 		fill_inquiry_response(us, ptr, 36); | ||||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == TEST_UNIT_READY) { | ||||
| 		US_DEBUGP("alauda_transport: TEST_UNIT_READY.\n"); | ||||
| 		usb_stor_dbg(us, "TEST_UNIT_READY\n"); | ||||
| 		return alauda_check_media(us); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1193,8 +1184,7 @@ static int alauda_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		page |= short_pack(srb->cmnd[5], srb->cmnd[4]); | ||||
| 		pages = short_pack(srb->cmnd[8], srb->cmnd[7]); | ||||
| 
 | ||||
| 		US_DEBUGP("alauda_transport: READ_10: page %d pagect %d\n", | ||||
| 			  page, pages); | ||||
| 		usb_stor_dbg(us, "READ_10: page %d pagect %d\n", page, pages); | ||||
| 
 | ||||
| 		return alauda_read_data(us, page, pages); | ||||
| 	} | ||||
|  | @ -1211,14 +1201,13 @@ static int alauda_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		page |= short_pack(srb->cmnd[5], srb->cmnd[4]); | ||||
| 		pages = short_pack(srb->cmnd[8], srb->cmnd[7]); | ||||
| 
 | ||||
| 		US_DEBUGP("alauda_transport: WRITE_10: page %d pagect %d\n", | ||||
| 			  page, pages); | ||||
| 		usb_stor_dbg(us, "WRITE_10: page %d pagect %d\n", page, pages); | ||||
| 
 | ||||
| 		return alauda_write_data(us, page, pages); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == REQUEST_SENSE) { | ||||
| 		US_DEBUGP("alauda_transport: REQUEST_SENSE.\n"); | ||||
| 		usb_stor_dbg(us, "REQUEST_SENSE\n"); | ||||
| 
 | ||||
| 		memset(ptr, 0, 18); | ||||
| 		ptr[0] = 0xF0; | ||||
|  | @ -1237,8 +1226,8 @@ static int alauda_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("alauda_transport: Gah! Unknown command: %d (0x%x)\n", | ||||
| 		srb->cmnd[0], srb->cmnd[0]); | ||||
| 	usb_stor_dbg(us, "Gah! Unknown command: %d (0x%x)\n", | ||||
| 		     srb->cmnd[0], srb->cmnd[0]); | ||||
| 	info->sense_key = 0x05; | ||||
| 	info->sense_asc = 0x20; | ||||
| 	info->sense_ascq = 0x00; | ||||
|  |  | |||
|  | @ -159,7 +159,7 @@ static void cypress_atacb_passthrough(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	if (srb->result == SAM_STAT_CHECK_CONDITION && | ||||
| 			memcmp(srb->sense_buffer, usb_stor_sense_invalidCDB, | ||||
| 				sizeof(usb_stor_sense_invalidCDB)) == 0) { | ||||
| 		US_DEBUGP("cypress atacb not supported ???\n"); | ||||
| 		usb_stor_dbg(us, "cypress atacb not supported ???\n"); | ||||
| 		goto end; | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -123,7 +123,7 @@ datafab_bulk_read(struct us_data *us, unsigned char *data, unsigned int len) { | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("datafab_bulk_read:  len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, | ||||
| 			data, len, NULL); | ||||
| } | ||||
|  | @ -134,7 +134,7 @@ datafab_bulk_write(struct us_data *us, unsigned char *data, unsigned int len) { | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("datafab_bulk_write:  len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 			data, len, NULL); | ||||
| } | ||||
|  | @ -300,9 +300,8 @@ static int datafab_write_data(struct us_data *us, | |||
| 			goto leave; | ||||
| 
 | ||||
| 		if (reply[0] != 0x50 && reply[1] != 0) { | ||||
| 			US_DEBUGP("datafab_write_data:  Gah! " | ||||
| 				  "write return code: %02x %02x\n", | ||||
| 				  reply[0], reply[1]); | ||||
| 			usb_stor_dbg(us, "Gah! write return code: %02x %02x\n", | ||||
| 				     reply[0], reply[1]); | ||||
| 			result = USB_STOR_TRANSPORT_ERROR; | ||||
| 			goto leave; | ||||
| 		} | ||||
|  | @ -342,7 +341,7 @@ static int datafab_determine_lun(struct us_data *us, | |||
| 	if (!buf) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("datafab_determine_lun:  locating...\n"); | ||||
| 	usb_stor_dbg(us, "locating...\n"); | ||||
| 
 | ||||
| 	// we'll try 3 times before giving up...
 | ||||
| 	//
 | ||||
|  | @ -474,16 +473,16 @@ static int datafab_handle_mode_sense(struct us_data *us, | |||
| 
 | ||||
| 	switch (pc) { | ||||
| 	   case 0x0: | ||||
| 		US_DEBUGP("datafab_handle_mode_sense:  Current values\n"); | ||||
| 		   usb_stor_dbg(us, "Current values\n"); | ||||
| 		break; | ||||
| 	   case 0x1: | ||||
| 		US_DEBUGP("datafab_handle_mode_sense:  Changeable values\n"); | ||||
| 		   usb_stor_dbg(us, "Changeable values\n"); | ||||
| 		break; | ||||
| 	   case 0x2: | ||||
| 		US_DEBUGP("datafab_handle_mode_sense:  Default values\n"); | ||||
| 		   usb_stor_dbg(us, "Default values\n"); | ||||
| 		break; | ||||
| 	   case 0x3: | ||||
| 		US_DEBUGP("datafab_handle_mode_sense:  Saves values\n"); | ||||
| 		   usb_stor_dbg(us, "Saves values\n"); | ||||
| 		break; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -566,11 +565,9 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 	if (!us->extra) { | ||||
| 		us->extra = kzalloc(sizeof(struct datafab_info), GFP_NOIO); | ||||
| 		if (!us->extra) { | ||||
| 			US_DEBUGP("datafab_transport:  Gah! " | ||||
| 				  "Can't allocate storage for Datafab info struct!\n"); | ||||
| 		if (!us->extra) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		} | ||||
| 
 | ||||
| 		us->extra_destructor = datafab_info_destructor; | ||||
|   		((struct datafab_info *)us->extra)->lun = -1; | ||||
| 	} | ||||
|  | @ -578,7 +575,7 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	info = (struct datafab_info *) (us->extra); | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == INQUIRY) { | ||||
| 		US_DEBUGP("datafab_transport:  INQUIRY.  Returning bogus response"); | ||||
| 		usb_stor_dbg(us, "INQUIRY - Returning bogus response\n"); | ||||
| 		memcpy(ptr, inquiry_reply, sizeof(inquiry_reply)); | ||||
| 		fill_inquiry_response(us, ptr, 36); | ||||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
|  | @ -590,8 +587,8 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 			return rc; | ||||
| 
 | ||||
| 		US_DEBUGP("datafab_transport:  READ_CAPACITY:  %ld sectors, %ld bytes per sector\n", | ||||
| 			  info->sectors, info->ssize); | ||||
| 		usb_stor_dbg(us, "READ_CAPACITY:  %ld sectors, %ld bytes per sector\n", | ||||
| 			     info->sectors, info->ssize); | ||||
| 
 | ||||
| 		// build the reply
 | ||||
| 		// we need the last sector, not the number of sectors
 | ||||
|  | @ -603,7 +600,7 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SELECT_10) { | ||||
| 		US_DEBUGP("datafab_transport:  Gah! MODE_SELECT_10.\n"); | ||||
| 		usb_stor_dbg(us, "Gah! MODE_SELECT_10\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -615,7 +612,8 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("datafab_transport:  READ_10: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_10: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return datafab_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -628,7 +626,8 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 			 ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("datafab_transport:  READ_12: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_12: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return datafab_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -638,7 +637,8 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("datafab_transport:  WRITE_10: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_10: write block 0x%04lx count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return datafab_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -651,17 +651,18 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 			 ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("datafab_transport:  WRITE_12: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_12: write block 0x%04lx count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return datafab_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == TEST_UNIT_READY) { | ||||
| 		US_DEBUGP("datafab_transport:  TEST_UNIT_READY.\n"); | ||||
| 		usb_stor_dbg(us, "TEST_UNIT_READY\n"); | ||||
| 		return datafab_id_device(us, info); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == REQUEST_SENSE) { | ||||
| 		US_DEBUGP("datafab_transport:  REQUEST_SENSE.  Returning faked response\n"); | ||||
| 		usb_stor_dbg(us, "REQUEST_SENSE - Returning faked response\n"); | ||||
| 
 | ||||
| 		// this response is pretty bogus right now.  eventually if necessary
 | ||||
| 		// we can set the correct sense data.  so far though it hasn't been
 | ||||
|  | @ -679,12 +680,12 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SENSE) { | ||||
| 		US_DEBUGP("datafab_transport:  MODE_SENSE_6 detected\n"); | ||||
| 		usb_stor_dbg(us, "MODE_SENSE_6 detected\n"); | ||||
| 		return datafab_handle_mode_sense(us, srb, 1); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SENSE_10) { | ||||
| 		US_DEBUGP("datafab_transport:  MODE_SENSE_10 detected\n"); | ||||
| 		usb_stor_dbg(us, "MODE_SENSE_10 detected\n"); | ||||
| 		return datafab_handle_mode_sense(us, srb, 0); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -698,7 +699,7 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	if (srb->cmnd[0] == START_STOP) { | ||||
| 		/* this is used by sd.c'check_scsidisk_media_change to detect
 | ||||
| 		   media change */ | ||||
| 		US_DEBUGP("datafab_transport:  START_STOP.\n"); | ||||
| 		usb_stor_dbg(us, "START_STOP\n"); | ||||
| 		/* the first datafab_id_device after a media change returns
 | ||||
| 		   an error (determined experimentally) */ | ||||
| 		rc = datafab_id_device(us, info); | ||||
|  | @ -712,8 +713,8 @@ static int datafab_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		return rc; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("datafab_transport:  Gah! Unknown command: %d (0x%x)\n", | ||||
| 		  srb->cmnd[0], srb->cmnd[0]); | ||||
| 	usb_stor_dbg(us, "Gah! Unknown command: %d (0x%x)\n", | ||||
| 		     srb->cmnd[0], srb->cmnd[0]); | ||||
| 	info->sense_key = 0x05; | ||||
| 	info->sense_asc = 0x20; | ||||
| 	info->sense_ascq = 0x00; | ||||
|  |  | |||
|  | @ -42,17 +42,19 @@ | |||
|  * 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/device.h> | ||||
| #include <linux/cdrom.h> | ||||
| #include <linux/export.h> | ||||
| #include <scsi/scsi.h> | ||||
| #include <scsi/scsi_cmnd.h> | ||||
| #include <scsi/scsi_dbg.h> | ||||
| 
 | ||||
| #include "usb.h" | ||||
| #include "debug.h" | ||||
| #include "scsi.h" | ||||
| 
 | ||||
| 
 | ||||
| void usb_stor_show_command(struct scsi_cmnd *srb) | ||||
| void usb_stor_show_command(const struct us_data *us, struct scsi_cmnd *srb) | ||||
| { | ||||
| 	char *what = NULL; | ||||
| 	int i; | ||||
|  | @ -150,18 +152,18 @@ void usb_stor_show_command(struct scsi_cmnd *srb) | |||
| 	case WRITE_LONG_2: what = "WRITE_LONG_2"; break; | ||||
| 	default: what = "(unknown command)"; break; | ||||
| 	} | ||||
| 	US_DEBUGP("Command %s (%d bytes)\n", what, srb->cmd_len); | ||||
| 	US_DEBUGP("bytes: "); | ||||
| 	usb_stor_dbg(us, "Command %s (%d bytes)\n", what, srb->cmd_len); | ||||
| 	usb_stor_dbg(us, "bytes: "); | ||||
| 	for (i = 0; i < srb->cmd_len && i < 16; i++) | ||||
| 		US_DEBUGPX(" %02x", srb->cmnd[i]); | ||||
| 	US_DEBUGPX("\n"); | ||||
| } | ||||
| 
 | ||||
| void usb_stor_show_sense( | ||||
| 		unsigned char key, | ||||
| 		unsigned char asc, | ||||
| 		unsigned char ascq) { | ||||
| 
 | ||||
| void usb_stor_show_sense(const struct us_data *us, | ||||
| 			 unsigned char key, | ||||
| 			 unsigned char asc, | ||||
| 			 unsigned char ascq) | ||||
| { | ||||
| 	const char *what, *keystr; | ||||
| 
 | ||||
| 	keystr = scsi_sense_key_string(key); | ||||
|  | @ -172,23 +174,19 @@ void usb_stor_show_sense( | |||
| 	if (what == NULL) | ||||
| 		what = "(unknown ASC/ASCQ)"; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: ", keystr); | ||||
| 	usb_stor_dbg(us, "%s: ", keystr); | ||||
| 	US_DEBUGPX(what, ascq); | ||||
| 	US_DEBUGPX("\n"); | ||||
| } | ||||
| 
 | ||||
| int usb_stor_dbg(const char *fmt, ...) | ||||
| int usb_stor_dbg(const struct us_data *us, const char *fmt, ...) | ||||
| { | ||||
| 	struct va_format vaf; | ||||
| 	va_list args; | ||||
| 	int r; | ||||
| 
 | ||||
| 	va_start(args, fmt); | ||||
| 
 | ||||
| 	vaf.fmt = fmt; | ||||
| 	vaf.va = &args; | ||||
| 
 | ||||
| 	r = printk(KERN_DEBUG USB_STORAGE "%pV", &vaf); | ||||
| 	r = dev_vprintk_emit(7, &us->pusb_dev->dev, fmt, args); | ||||
| 
 | ||||
| 	va_end(args); | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,17 +47,20 @@ | |||
| #define USB_STORAGE "usb-storage: " | ||||
| 
 | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| void usb_stor_show_command(struct scsi_cmnd *srb); | ||||
| void usb_stor_show_sense( unsigned char key, | ||||
| 		unsigned char asc, unsigned char ascq ); | ||||
| __printf(1, 2) int usb_stor_dbg(const char *fmt, ...); | ||||
| void usb_stor_show_command(const struct us_data *us, struct scsi_cmnd *srb); | ||||
| void usb_stor_show_sense(const struct us_data *us, unsigned char key, | ||||
| 			 unsigned char asc, unsigned char ascq); | ||||
| __printf(2, 3) int usb_stor_dbg(const struct us_data *us, | ||||
| 				const char *fmt, ...); | ||||
| 
 | ||||
| #define US_DEBUGP(fmt, ...)	usb_stor_dbg(fmt, ##__VA_ARGS__) | ||||
| #define US_DEBUGPX(fmt, ...)	printk(fmt, ##__VA_ARGS__) | ||||
| #define US_DEBUG(x)		x | ||||
| #else | ||||
| #define US_DEBUGP(fmt, ...)					\ | ||||
| 	do { if (0) printk(fmt, ##__VA_ARGS__); } while (0) | ||||
| __printf(2, 3) | ||||
| static inline int _usb_stor_dbg(const struct us_data *us, | ||||
| 				const char *fmt, ...) {return 1;} | ||||
| #define usb_stor_dbg(us, fmt, ...)				\ | ||||
| 	do { if (0) _usb_stor_dbg(us, fmt, ##__VA_ARGS__); } while (0) | ||||
| #define US_DEBUGPX(fmt, ...)					\ | ||||
| 	do { if (0) printk(fmt, ##__VA_ARGS__); } while (0) | ||||
| #define US_DEBUG(x) | ||||
|  |  | |||
|  | @ -504,12 +504,12 @@ static int ene_send_scsi_cmd(struct us_data *us, u8 fDir, void *buf, int use_sg) | |||
| 	unsigned int cswlen = 0, partial = 0; | ||||
| 	unsigned int transfer_length = bcb->DataTransferLength; | ||||
| 
 | ||||
| 	/* US_DEBUGP("transport --- ene_send_scsi_cmd\n"); */ | ||||
| 	/* usb_stor_dbg(us, "transport --- ene_send_scsi_cmd\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) { | ||||
| 		US_DEBUGP("send cmd to out endpoint fail ---\n"); | ||||
| 		usb_stor_dbg(us, "send cmd to out endpoint fail ---\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -529,7 +529,7 @@ static int ene_send_scsi_cmd(struct us_data *us, u8 fDir, void *buf, int use_sg) | |||
| 						transfer_length, 0, &partial); | ||||
| 		} | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP("data transfer fail ---\n"); | ||||
| 			usb_stor_dbg(us, "data transfer fail ---\n"); | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -539,14 +539,14 @@ static int ene_send_scsi_cmd(struct us_data *us, u8 fDir, void *buf, int use_sg) | |||
| 					    US_BULK_CS_WRAP_LEN, &cswlen); | ||||
| 
 | ||||
| 	if (result == USB_STOR_XFER_SHORT && cswlen == 0) { | ||||
| 		US_DEBUGP("Received 0-length CSW; retrying...\n"); | ||||
| 		usb_stor_dbg(us, "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 */ | ||||
| 		US_DEBUGP("Attempting to get CSW (2nd try)...\n"); | ||||
| 		usb_stor_dbg(us, "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); | ||||
| 	} | ||||
|  | @ -626,7 +626,7 @@ static int sd_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb) | |||
| 	struct scatterlist *sg = NULL; | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra; | ||||
| 
 | ||||
| 	US_DEBUGP("sd_scsi_read_capacity\n"); | ||||
| 	usb_stor_dbg(us, "sd_scsi_read_capacity\n"); | ||||
| 	if (info->SD_Status.HiCapacity) { | ||||
| 		bl_len = 0x200; | ||||
| 		if (info->SD_Status.IsMMC) | ||||
|  | @ -639,8 +639,8 @@ static int sd_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb) | |||
| 				* (1 << (info->SD_C_SIZE_MULT + 2)) - 1; | ||||
| 	} | ||||
| 	info->bl_num = bl_num; | ||||
| 	US_DEBUGP("bl_len = %x\n", bl_len); | ||||
| 	US_DEBUGP("bl_num = %x\n", bl_num); | ||||
| 	usb_stor_dbg(us, "bl_len = %x\n", bl_len); | ||||
| 	usb_stor_dbg(us, "bl_num = %x\n", bl_num); | ||||
| 
 | ||||
| 	/*srb->request_bufflen = 8; */ | ||||
| 	buf[0] = (bl_num >> 24) & 0xff; | ||||
|  | @ -675,7 +675,7 @@ static int sd_scsi_read(struct us_data *us, struct scsi_cmnd *srb) | |||
| 
 | ||||
| 	result = ene_load_bincode(us, SD_RW_PATTERN); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Load SD RW pattern Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Load SD RW pattern Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -715,7 +715,7 @@ static int sd_scsi_write(struct us_data *us, struct scsi_cmnd *srb) | |||
| 
 | ||||
| 	result = ene_load_bincode(us, SD_RW_PATTERN); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Load SD RW pattern Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Load SD RW pattern Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1493,7 +1493,7 @@ static int ms_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb) | |||
| 	struct scatterlist *sg = NULL; | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra; | ||||
| 
 | ||||
| 	US_DEBUGP("ms_scsi_read_capacity\n"); | ||||
| 	usb_stor_dbg(us, "ms_scsi_read_capacity\n"); | ||||
| 	bl_len = 0x200; | ||||
| 	if (info->MS_Status.IsMSPro) | ||||
| 		bl_num = info->MSP_TotalBlock - 1; | ||||
|  | @ -1501,8 +1501,8 @@ static int ms_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb) | |||
| 		bl_num = info->MS_Lib.NumberOfLogBlock * info->MS_Lib.blockSize * 2 - 1; | ||||
| 
 | ||||
| 	info->bl_num = bl_num; | ||||
| 	US_DEBUGP("bl_len = %x\n", bl_len); | ||||
| 	US_DEBUGP("bl_num = %x\n", bl_num); | ||||
| 	usb_stor_dbg(us, "bl_len = %x\n", bl_len); | ||||
| 	usb_stor_dbg(us, "bl_num = %x\n", bl_num); | ||||
| 
 | ||||
| 	/*srb->request_bufflen = 8; */ | ||||
| 	buf[0] = (bl_num >> 24) & 0xff; | ||||
|  | @ -1654,7 +1654,7 @@ static int ms_scsi_read(struct us_data *us, struct scsi_cmnd *srb) | |||
| 	if (info->MS_Status.IsMSPro) { | ||||
| 		result = ene_load_bincode(us, MSP_RW_PATTERN); | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP("Load MPS RW pattern Fail !!\n"); | ||||
| 			usb_stor_dbg(us, "Load MPS RW pattern Fail !!\n"); | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -1854,7 +1854,7 @@ static int ene_get_card_status(struct us_data *us, u8 *buf) | |||
| 	u32 reg4b; | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra; | ||||
| 
 | ||||
| 	/*US_DEBUGP("transport --- ENE_ReadSDReg\n");*/ | ||||
| 	/*usb_stor_dbg(us, "transport --- ENE_ReadSDReg\n");*/ | ||||
| 	reg4b = *(u32 *)&buf[0x18]; | ||||
| 	info->SD_READ_BL_LEN = (u8)((reg4b >> 8) & 0x0f); | ||||
| 
 | ||||
|  | @ -1894,45 +1894,44 @@ static int ene_load_bincode(struct us_data *us, unsigned char flag) | |||
| 	switch (flag) { | ||||
| 	/* For SD */ | ||||
| 	case SD_INIT1_PATTERN: | ||||
| 		US_DEBUGP("SD_INIT1_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "SD_INIT1_PATTERN\n"); | ||||
| 		fw_name = SD_INIT1_FIRMWARE; | ||||
| 		break; | ||||
| 	case SD_INIT2_PATTERN: | ||||
| 		US_DEBUGP("SD_INIT2_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "SD_INIT2_PATTERN\n"); | ||||
| 		fw_name = SD_INIT2_FIRMWARE; | ||||
| 		break; | ||||
| 	case SD_RW_PATTERN: | ||||
| 		US_DEBUGP("SD_RW_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "SD_RW_PATTERN\n"); | ||||
| 		fw_name = SD_RW_FIRMWARE; | ||||
| 		break; | ||||
| 	/* For MS */ | ||||
| 	case MS_INIT_PATTERN: | ||||
| 		US_DEBUGP("MS_INIT_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "MS_INIT_PATTERN\n"); | ||||
| 		fw_name = MS_INIT_FIRMWARE; | ||||
| 		break; | ||||
| 	case MSP_RW_PATTERN: | ||||
| 		US_DEBUGP("MSP_RW_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "MSP_RW_PATTERN\n"); | ||||
| 		fw_name = MSP_RW_FIRMWARE; | ||||
| 		break; | ||||
| 	case MS_RW_PATTERN: | ||||
| 		US_DEBUGP("MS_RW_PATTERN\n"); | ||||
| 		usb_stor_dbg(us, "MS_RW_PATTERN\n"); | ||||
| 		fw_name = MS_RW_FIRMWARE; | ||||
| 		break; | ||||
| 	default: | ||||
| 		US_DEBUGP("----------- Unknown PATTERN ----------\n"); | ||||
| 		usb_stor_dbg(us, "----------- Unknown PATTERN ----------\n"); | ||||
| 		goto nofw; | ||||
| 	} | ||||
| 
 | ||||
| 	err = request_firmware(&sd_fw, fw_name, &us->pusb_dev->dev); | ||||
| 	if (err) { | ||||
| 		US_DEBUGP("load firmware %s failed\n", fw_name); | ||||
| 		usb_stor_dbg(us, "load firmware %s failed\n", fw_name); | ||||
| 		goto nofw; | ||||
| 	} | ||||
| 	buf = kmalloc(sd_fw->size, GFP_KERNEL); | ||||
| 	if (buf == NULL) { | ||||
| 		US_DEBUGP("Malloc memory for fireware failed!\n"); | ||||
| 	if (buf == NULL) | ||||
| 		goto nofw; | ||||
| 	} | ||||
| 
 | ||||
| 	memcpy(buf, sd_fw->data, sd_fw->size); | ||||
| 	memset(bcb, 0, sizeof(struct bulk_cb_wrap)); | ||||
| 	bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); | ||||
|  | @ -2116,9 +2115,9 @@ static int ene_ms_init(struct us_data *us) | |||
| 		} else { | ||||
| 			ms_card_init(us); /* Card is MS (to ms.c)*/ | ||||
| 		} | ||||
| 		US_DEBUGP("MS Init Code OK !!\n"); | ||||
| 		usb_stor_dbg(us, "MS Init Code OK !!\n"); | ||||
| 	} else { | ||||
| 		US_DEBUGP("MS Card Not Ready --- %x\n", buf[0]); | ||||
| 		usb_stor_dbg(us, "MS Card Not Ready --- %x\n", buf[0]); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2132,11 +2131,11 @@ static int ene_sd_init(struct us_data *us) | |||
| 	struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf; | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra; | ||||
| 
 | ||||
| 	US_DEBUGP("transport --- ENE_SDInit\n"); | ||||
| 	usb_stor_dbg(us, "transport --- ENE_SDInit\n"); | ||||
| 	/* SD Init Part-1 */ | ||||
| 	result = ene_load_bincode(us, SD_INIT1_PATTERN); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Load SD Init Code Part-1 Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Load SD Init Code Part-1 Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2147,14 +2146,14 @@ static int ene_sd_init(struct us_data *us) | |||
| 
 | ||||
| 	result = ene_send_scsi_cmd(us, FDIR_READ, NULL, 0); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Execution SD Init Code Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Execution SD Init Code Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	/* SD Init Part-2 */ | ||||
| 	result = ene_load_bincode(us, SD_INIT2_PATTERN); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Load SD Init Code Part-2 Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Load SD Init Code Part-2 Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2166,21 +2165,23 @@ static int ene_sd_init(struct us_data *us) | |||
| 
 | ||||
| 	result = ene_send_scsi_cmd(us, FDIR_READ, &buf, 0); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Execution SD Init Code Fail !!\n"); | ||||
| 		usb_stor_dbg(us, "Execution SD Init Code Fail !!\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	info->SD_Status =  *(struct SD_STATUS *)&buf[0]; | ||||
| 	if (info->SD_Status.Insert && info->SD_Status.Ready) { | ||||
| 		struct SD_STATUS *s = &info->SD_Status; | ||||
| 
 | ||||
| 		ene_get_card_status(us, (unsigned char *)&buf); | ||||
| 		US_DEBUGP("Insert     = %x\n", info->SD_Status.Insert); | ||||
| 		US_DEBUGP("Ready      = %x\n", info->SD_Status.Ready); | ||||
| 		US_DEBUGP("IsMMC      = %x\n", info->SD_Status.IsMMC); | ||||
| 		US_DEBUGP("HiCapacity = %x\n", info->SD_Status.HiCapacity); | ||||
| 		US_DEBUGP("HiSpeed    = %x\n", info->SD_Status.HiSpeed); | ||||
| 		US_DEBUGP("WtP        = %x\n", info->SD_Status.WtP); | ||||
| 		usb_stor_dbg(us, "Insert     = %x\n", s->Insert); | ||||
| 		usb_stor_dbg(us, "Ready      = %x\n", s->Ready); | ||||
| 		usb_stor_dbg(us, "IsMMC      = %x\n", s->IsMMC); | ||||
| 		usb_stor_dbg(us, "HiCapacity = %x\n", s->HiCapacity); | ||||
| 		usb_stor_dbg(us, "HiSpeed    = %x\n", s->HiSpeed); | ||||
| 		usb_stor_dbg(us, "WtP        = %x\n", s->WtP); | ||||
| 	} else { | ||||
| 		US_DEBUGP("SD Card Not Ready --- %x\n", buf[0]); | ||||
| 		usb_stor_dbg(us, "SD Card Not Ready --- %x\n", buf[0]); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 	return USB_STOR_TRANSPORT_GOOD; | ||||
|  | @ -2293,7 +2294,7 @@ static int ene_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	int result = 0; | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra); | ||||
| 
 | ||||
| 	/*US_DEBUG(usb_stor_show_command(srb)); */ | ||||
| 	/*US_DEBUG(usb_stor_show_command(us, srb)); */ | ||||
| 	scsi_set_resid(srb, 0); | ||||
| 	if (unlikely(!(info->SD_Status.Ready || info->MS_Status.Ready))) { | ||||
| 		result = ene_init(us); | ||||
|  | @ -2362,7 +2363,6 @@ static int ene_ub6250_resume(struct usb_interface *iface) | |||
| 
 | ||||
| 	mutex_lock(&us->dev_mutex); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 	if (us->suspend_resume_hook) | ||||
| 		(us->suspend_resume_hook)(us, US_RESUME); | ||||
| 
 | ||||
|  | @ -2382,7 +2382,7 @@ static int ene_ub6250_reset_resume(struct usb_interface *iface) | |||
| 	u8 tmp = 0; | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 	struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra); | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 
 | ||||
| 	/* Report the reset to the SCSI core */ | ||||
| 	usb_stor_reset_resume(iface); | ||||
| 
 | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ MODULE_AUTHOR("David Brown <usb-storage@davidb.org>"); | |||
| MODULE_LICENSE("GPL"); | ||||
| 
 | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| static void pdump (void *, int); | ||||
| static void pdump(struct us_data *us, void *ibuffer, int length); | ||||
| #endif | ||||
| 
 | ||||
| /* Bits of HD_STATUS */ | ||||
|  | @ -161,20 +161,20 @@ freecom_readdata (struct scsi_cmnd *srb, struct us_data *us, | |||
| 	fxfr->Count = cpu_to_le32 (count); | ||||
| 	memset (fxfr->Pad, 0, sizeof (fxfr->Pad)); | ||||
| 
 | ||||
| 	US_DEBUGP("Read data Freecom! (c=%d)\n", count); | ||||
| 	usb_stor_dbg(us, "Read data Freecom! (c=%d)\n", count); | ||||
| 
 | ||||
| 	/* Issue the transfer command. */ | ||||
| 	result = usb_stor_bulk_transfer_buf (us, opipe, fxfr, | ||||
| 			FCM_PACKET_LENGTH, NULL); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP ("Freecom readdata transport error\n"); | ||||
| 		usb_stor_dbg(us, "Freecom readdata transport error\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Now transfer all of our blocks. */ | ||||
| 	US_DEBUGP("Start of read\n"); | ||||
| 	usb_stor_dbg(us, "Start of read\n"); | ||||
| 	result = usb_stor_bulk_srb(us, ipipe, srb); | ||||
| 	US_DEBUGP("freecom_readdata done!\n"); | ||||
| 	usb_stor_dbg(us, "freecom_readdata done!\n"); | ||||
| 
 | ||||
| 	if (result > USB_STOR_XFER_SHORT) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
|  | @ -194,21 +194,21 @@ freecom_writedata (struct scsi_cmnd *srb, struct us_data *us, | |||
| 	fxfr->Count = cpu_to_le32 (count); | ||||
| 	memset (fxfr->Pad, 0, sizeof (fxfr->Pad)); | ||||
| 
 | ||||
| 	US_DEBUGP("Write data Freecom! (c=%d)\n", count); | ||||
| 	usb_stor_dbg(us, "Write data Freecom! (c=%d)\n", count); | ||||
| 
 | ||||
| 	/* Issue the transfer command. */ | ||||
| 	result = usb_stor_bulk_transfer_buf (us, opipe, fxfr, | ||||
| 			FCM_PACKET_LENGTH, NULL); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP ("Freecom writedata transport error\n"); | ||||
| 		usb_stor_dbg(us, "Freecom writedata transport error\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Now transfer all of our blocks. */ | ||||
| 	US_DEBUGP("Start of write\n"); | ||||
| 	usb_stor_dbg(us, "Start of write\n"); | ||||
| 	result = usb_stor_bulk_srb(us, opipe, srb); | ||||
| 
 | ||||
| 	US_DEBUGP("freecom_writedata done!\n"); | ||||
| 	usb_stor_dbg(us, "freecom_writedata done!\n"); | ||||
| 	if (result > USB_STOR_XFER_SHORT) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	return USB_STOR_TRANSPORT_GOOD; | ||||
|  | @ -230,7 +230,7 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	fcb = (struct freecom_cb_wrap *) us->iobuf; | ||||
| 	fst = (struct freecom_status *) us->iobuf; | ||||
| 
 | ||||
| 	US_DEBUGP("Freecom TRANSPORT STARTED\n"); | ||||
| 	usb_stor_dbg(us, "Freecom TRANSPORT STARTED\n"); | ||||
| 
 | ||||
| 	/* Get handles for both transports. */ | ||||
| 	opipe = us->send_bulk_pipe; | ||||
|  | @ -242,7 +242,7 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	memcpy (fcb->Atapi, srb->cmnd, 12); | ||||
| 	memset (fcb->Filler, 0, sizeof (fcb->Filler)); | ||||
| 
 | ||||
| 	US_DEBUG(pdump (srb->cmnd, 12)); | ||||
| 	US_DEBUG(pdump(us, srb->cmnd, 12)); | ||||
| 
 | ||||
| 	/* Send it out. */ | ||||
| 	result = usb_stor_bulk_transfer_buf (us, opipe, fcb, | ||||
|  | @ -252,7 +252,7 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * USB land.  It returns the status in its own registers, which | ||||
| 	 * come back in the bulk pipe. */ | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP ("freecom transport error\n"); | ||||
| 		usb_stor_dbg(us, "freecom transport error\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -260,11 +260,11 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * doesn't hurt us to always do it now. */ | ||||
| 	result = usb_stor_bulk_transfer_buf (us, ipipe, fst, | ||||
| 			FCM_STATUS_PACKET_LENGTH, &partial); | ||||
| 	US_DEBUGP("foo Status result %d %u\n", result, partial); | ||||
| 	usb_stor_dbg(us, "foo Status result %d %u\n", result, partial); | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUG(pdump ((void *) fst, partial)); | ||||
| 	US_DEBUG(pdump(us, (void *)fst, partial)); | ||||
| 
 | ||||
| 	/* The firmware will time-out commands after 20 seconds. Some commands
 | ||||
| 	 * can legitimately take longer than this, so we use a different | ||||
|  | @ -275,8 +275,8 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * may not work, but that is a condition that should never happen. | ||||
| 	 */ | ||||
| 	while (fst->Status & FCM_STATUS_BUSY) { | ||||
| 		US_DEBUGP("20 second USB/ATAPI bridge TIMEOUT occurred!\n"); | ||||
| 		US_DEBUGP("fst->Status is %x\n", fst->Status); | ||||
| 		usb_stor_dbg(us, "20 second USB/ATAPI bridge TIMEOUT occurred!\n"); | ||||
| 		usb_stor_dbg(us, "fst->Status is %x\n", fst->Status); | ||||
| 
 | ||||
| 		/* Get the status again */ | ||||
| 		fcb->Type = FCM_PACKET_STATUS; | ||||
|  | @ -293,7 +293,7 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		 * registers, which come back in the bulk pipe. | ||||
| 		 */ | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP ("freecom transport error\n"); | ||||
| 			usb_stor_dbg(us, "freecom transport error\n"); | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -301,26 +301,26 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		result = usb_stor_bulk_transfer_buf (us, ipipe, fst, | ||||
| 				FCM_STATUS_PACKET_LENGTH, &partial); | ||||
| 
 | ||||
| 		US_DEBUGP("bar Status result %d %u\n", result, partial); | ||||
| 		usb_stor_dbg(us, "bar Status result %d %u\n", result, partial); | ||||
| 		if (result != USB_STOR_XFER_GOOD) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 		US_DEBUG(pdump ((void *) fst, partial)); | ||||
| 		US_DEBUG(pdump(us, (void *)fst, partial)); | ||||
| 	} | ||||
| 
 | ||||
| 	if (partial != 4) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	if ((fst->Status & 1) != 0) { | ||||
| 		US_DEBUGP("operation failed\n"); | ||||
| 		usb_stor_dbg(us, "operation failed\n"); | ||||
| 		return USB_STOR_TRANSPORT_FAILED; | ||||
| 	} | ||||
| 
 | ||||
| 	/* The device might not have as much data available as we
 | ||||
| 	 * requested.  If you ask for more than the device has, this reads | ||||
| 	 * and such will hang. */ | ||||
| 	US_DEBUGP("Device indicates that it has %d bytes available\n", | ||||
| 			le16_to_cpu (fst->Count)); | ||||
| 	US_DEBUGP("SCSI requested %d\n", scsi_bufflen(srb)); | ||||
| 	usb_stor_dbg(us, "Device indicates that it has %d bytes available\n", | ||||
| 		     le16_to_cpu(fst->Count)); | ||||
| 	usb_stor_dbg(us, "SCSI requested %d\n", scsi_bufflen(srb)); | ||||
| 
 | ||||
| 	/* Find the length we desire to read. */ | ||||
| 	switch (srb->cmnd[0]) { | ||||
|  | @ -337,7 +337,8 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	/* verify that this amount is legal */ | ||||
| 	if (length > scsi_bufflen(srb)) { | ||||
| 		length = scsi_bufflen(srb); | ||||
| 		US_DEBUGP("Truncating request to match buffer length: %d\n", length); | ||||
| 		usb_stor_dbg(us, "Truncating request to match buffer length: %d\n", | ||||
| 			     length); | ||||
| 	} | ||||
| 
 | ||||
| 	/* What we do now depends on what direction the data is supposed to
 | ||||
|  | @ -351,29 +352,29 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		/* Make sure that the status indicates that the device
 | ||||
| 		 * wants data as well. */ | ||||
| 		if ((fst->Status & DRQ_STAT) == 0 || (fst->Reason & 3) != 2) { | ||||
| 			US_DEBUGP("SCSI wants data, drive doesn't have any\n"); | ||||
| 			usb_stor_dbg(us, "SCSI wants data, drive doesn't have any\n"); | ||||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 		} | ||||
| 		result = freecom_readdata (srb, us, ipipe, opipe, length); | ||||
| 		if (result != USB_STOR_TRANSPORT_GOOD) | ||||
| 			return result; | ||||
| 
 | ||||
| 		US_DEBUGP("FCM: Waiting for status\n"); | ||||
| 		usb_stor_dbg(us, "Waiting for status\n"); | ||||
| 		result = usb_stor_bulk_transfer_buf (us, ipipe, fst, | ||||
| 				FCM_PACKET_LENGTH, &partial); | ||||
| 		US_DEBUG(pdump ((void *) fst, partial)); | ||||
| 		US_DEBUG(pdump(us, (void *)fst, partial)); | ||||
| 
 | ||||
| 		if (partial != 4 || result > USB_STOR_XFER_SHORT) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		if ((fst->Status & ERR_STAT) != 0) { | ||||
| 			US_DEBUGP("operation failed\n"); | ||||
| 			usb_stor_dbg(us, "operation failed\n"); | ||||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 		} | ||||
| 		if ((fst->Reason & 3) != 3) { | ||||
| 			US_DEBUGP("Drive seems still hungry\n"); | ||||
| 			usb_stor_dbg(us, "Drive seems still hungry\n"); | ||||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 		} | ||||
| 		US_DEBUGP("Transfer happy\n"); | ||||
| 		usb_stor_dbg(us, "Transfer happy\n"); | ||||
| 		break; | ||||
| 
 | ||||
| 	case DMA_TO_DEVICE: | ||||
|  | @ -387,22 +388,22 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		if (result != USB_STOR_TRANSPORT_GOOD) | ||||
| 			return result; | ||||
| 
 | ||||
| 		US_DEBUGP("FCM: Waiting for status\n"); | ||||
| 		usb_stor_dbg(us, "Waiting for status\n"); | ||||
| 		result = usb_stor_bulk_transfer_buf (us, ipipe, fst, | ||||
| 				FCM_PACKET_LENGTH, &partial); | ||||
| 
 | ||||
| 		if (partial != 4 || result > USB_STOR_XFER_SHORT) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		if ((fst->Status & ERR_STAT) != 0) { | ||||
| 			US_DEBUGP("operation failed\n"); | ||||
| 			usb_stor_dbg(us, "operation failed\n"); | ||||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 		} | ||||
| 		if ((fst->Reason & 3) != 3) { | ||||
| 			US_DEBUGP("Drive seems still hungry\n"); | ||||
| 			usb_stor_dbg(us, "Drive seems still hungry\n"); | ||||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 		} | ||||
| 
 | ||||
| 		US_DEBUGP("Transfer happy\n"); | ||||
| 		usb_stor_dbg(us, "Transfer happy\n"); | ||||
| 		break; | ||||
| 
 | ||||
| 
 | ||||
|  | @ -412,8 +413,8 @@ static int freecom_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 	default: | ||||
| 		/* should never hit here -- filtered in usb.c */ | ||||
| 		US_DEBUGP ("freecom unimplemented direction: %d\n", | ||||
| 				us->srb->sc_data_direction); | ||||
| 		usb_stor_dbg(us, "freecom unimplemented direction: %d\n", | ||||
| 			     us->srb->sc_data_direction); | ||||
| 		/* Return fail, SCSI seems to handle this better. */ | ||||
| 		return USB_STOR_TRANSPORT_FAILED; | ||||
| 		break; | ||||
|  | @ -434,7 +435,7 @@ static int init_freecom(struct us_data *us) | |||
| 	result = usb_stor_control_msg(us, us->recv_ctrl_pipe, | ||||
| 			0x4c, 0xc0, 0x4346, 0x0, buffer, 0x20, 3*HZ); | ||||
| 	buffer[32] = '\0'; | ||||
| 	US_DEBUGP("String returned from FC init is: %s\n", buffer); | ||||
| 	usb_stor_dbg(us, "String returned from FC init is: %s\n", buffer); | ||||
| 
 | ||||
| 	/* Special thanks to the people at Freecom for providing me with
 | ||||
| 	 * this "magic sequence", which they use in their Windows and MacOS | ||||
|  | @ -445,7 +446,7 @@ static int init_freecom(struct us_data *us) | |||
| 	/* send reset */ | ||||
| 	result = usb_stor_control_msg(us, us->send_ctrl_pipe, | ||||
| 			0x4d, 0x40, 0x24d8, 0x0, NULL, 0x0, 3*HZ); | ||||
| 	US_DEBUGP("result from activate reset is %d\n", result); | ||||
| 	usb_stor_dbg(us, "result from activate reset is %d\n", result); | ||||
| 
 | ||||
| 	/* wait 250ms */ | ||||
| 	mdelay(250); | ||||
|  | @ -453,7 +454,7 @@ static int init_freecom(struct us_data *us) | |||
| 	/* clear reset */ | ||||
| 	result = usb_stor_control_msg(us, us->send_ctrl_pipe, | ||||
| 			0x4d, 0x40, 0x24f8, 0x0, NULL, 0x0, 3*HZ); | ||||
| 	US_DEBUGP("result from clear reset is %d\n", result); | ||||
| 	usb_stor_dbg(us, "result from clear reset is %d\n", result); | ||||
| 
 | ||||
| 	/* wait 3 seconds */ | ||||
| 	mdelay(3 * 1000); | ||||
|  | @ -470,7 +471,7 @@ static int usb_stor_freecom_reset(struct us_data *us) | |||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| static void pdump (void *ibuffer, int length) | ||||
| static void pdump(struct us_data *us, void *ibuffer, int length) | ||||
| { | ||||
| 	static char line[80]; | ||||
| 	int offset = 0; | ||||
|  | @ -490,7 +491,7 @@ static void pdump (void *ibuffer, int length) | |||
| 						line[offset++] = '.'; | ||||
| 				} | ||||
| 				line[offset] = 0; | ||||
| 				US_DEBUGP("%s\n", line); | ||||
| 				usb_stor_dbg(us, "%s\n", line); | ||||
| 				offset = 0; | ||||
| 			} | ||||
| 			offset += sprintf (line+offset, "%08x:", i); | ||||
|  | @ -517,7 +518,7 @@ static void pdump (void *ibuffer, int length) | |||
| 			line[offset++] = '.'; | ||||
| 	} | ||||
| 	line[offset] = 0; | ||||
| 	US_DEBUGP("%s\n", line); | ||||
| 	usb_stor_dbg(us, "%s\n", line); | ||||
| 	offset = 0; | ||||
| } | ||||
| #endif | ||||
|  |  | |||
|  | @ -48,12 +48,12 @@ int usb_stor_euscsi_init(struct us_data *us) | |||
| { | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Attempting to init eUSCSI bridge...\n"); | ||||
| 	usb_stor_dbg(us, "Attempting to init eUSCSI bridge...\n"); | ||||
| 	us->iobuf[0] = 0x1; | ||||
| 	result = usb_stor_control_msg(us, us->send_ctrl_pipe, | ||||
| 			0x0C, USB_RECIP_INTERFACE | USB_TYPE_VENDOR, | ||||
| 			0x01, 0x0, us->iobuf, 0x1, 5000); | ||||
| 	US_DEBUGP("-- result is %d\n", result); | ||||
| 	usb_stor_dbg(us, "-- result is %d\n", result); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  | @ -68,7 +68,7 @@ int usb_stor_ucr61s2b_init(struct us_data *us) | |||
| 	unsigned int partial; | ||||
| 	static char init_string[] = "\xec\x0a\x06\x00$PCCHIPS"; | ||||
| 
 | ||||
| 	US_DEBUGP("Sending UCR-61S2B initialization packet...\n"); | ||||
| 	usb_stor_dbg(us, "Sending UCR-61S2B initialization packet...\n"); | ||||
| 
 | ||||
| 	bcb->Signature = cpu_to_le32(US_BULK_CB_SIGN); | ||||
| 	bcb->Tag = 0; | ||||
|  | @ -83,7 +83,7 @@ int usb_stor_ucr61s2b_init(struct us_data *us) | |||
| 	if (res) | ||||
| 		return -EIO; | ||||
| 
 | ||||
| 	US_DEBUGP("Getting status packet...\n"); | ||||
| 	usb_stor_dbg(us, "Getting status packet...\n"); | ||||
| 	res = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, | ||||
| 			US_BULK_CS_WRAP_LEN, &partial); | ||||
| 	if (res) | ||||
|  | @ -101,6 +101,6 @@ int usb_stor_huawei_e220_init(struct us_data *us) | |||
| 				      USB_REQ_SET_FEATURE, | ||||
| 				      USB_TYPE_STANDARD | USB_RECIP_DEVICE, | ||||
| 				      0x01, 0x0, NULL, 0x0, 1000); | ||||
| 	US_DEBUGP("Huawei mode set result is %d\n", result); | ||||
| 	usb_stor_dbg(us, "Huawei mode set result is %d\n", result); | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -503,7 +503,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 
 | ||||
| 	switch ( action ) { | ||||
| 	case ACTION_READ_STATUS: | ||||
| 		US_DEBUGP("   isd200_action(READ_STATUS)\n"); | ||||
| 		usb_stor_dbg(us, "   isd200_action(READ_STATUS)\n"); | ||||
| 		ata.generic.ActionSelect = ACTION_SELECT_0|ACTION_SELECT_2; | ||||
| 		ata.generic.RegisterSelect = | ||||
| 		  REG_CYLINDER_LOW | REG_CYLINDER_HIGH | | ||||
|  | @ -512,7 +512,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	case ACTION_ENUM: | ||||
| 		US_DEBUGP("   isd200_action(ENUM,0x%02x)\n",value); | ||||
| 		usb_stor_dbg(us, "   isd200_action(ENUM,0x%02x)\n", value); | ||||
| 		ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| | ||||
| 					   ACTION_SELECT_3|ACTION_SELECT_4| | ||||
| 					   ACTION_SELECT_5; | ||||
|  | @ -522,7 +522,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	case ACTION_RESET: | ||||
| 		US_DEBUGP("   isd200_action(RESET)\n"); | ||||
| 		usb_stor_dbg(us, "   isd200_action(RESET)\n"); | ||||
| 		ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| | ||||
| 					   ACTION_SELECT_3|ACTION_SELECT_4; | ||||
| 		ata.generic.RegisterSelect = REG_DEVICE_CONTROL; | ||||
|  | @ -531,7 +531,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	case ACTION_REENABLE: | ||||
| 		US_DEBUGP("   isd200_action(REENABLE)\n"); | ||||
| 		usb_stor_dbg(us, "   isd200_action(REENABLE)\n"); | ||||
| 		ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_2| | ||||
| 					   ACTION_SELECT_3|ACTION_SELECT_4; | ||||
| 		ata.generic.RegisterSelect = REG_DEVICE_CONTROL; | ||||
|  | @ -540,7 +540,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	case ACTION_SOFT_RESET: | ||||
| 		US_DEBUGP("   isd200_action(SOFT_RESET)\n"); | ||||
| 		usb_stor_dbg(us, "   isd200_action(SOFT_RESET)\n"); | ||||
| 		ata.generic.ActionSelect = ACTION_SELECT_1|ACTION_SELECT_5; | ||||
| 		ata.generic.RegisterSelect = REG_DEVICE_HEAD | REG_COMMAND; | ||||
| 		ata.write.DeviceHeadByte = info->DeviceHead; | ||||
|  | @ -549,7 +549,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	case ACTION_IDENTIFY: | ||||
| 		US_DEBUGP("   isd200_action(IDENTIFY)\n"); | ||||
| 		usb_stor_dbg(us, "   isd200_action(IDENTIFY)\n"); | ||||
| 		ata.generic.RegisterSelect = REG_COMMAND; | ||||
| 		ata.write.CommandByte = ATA_CMD_ID_ATA; | ||||
| 		isd200_set_srb(info, DMA_FROM_DEVICE, info->id, | ||||
|  | @ -557,7 +557,7 @@ static int isd200_action( struct us_data *us, int action, | |||
| 		break; | ||||
| 
 | ||||
| 	default: | ||||
| 		US_DEBUGP("Error: Undefined action %d\n",action); | ||||
| 		usb_stor_dbg(us, "Error: Undefined action %d\n", action); | ||||
| 		return ISD200_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -567,7 +567,8 @@ static int isd200_action( struct us_data *us, int action, | |||
| 	if (status == USB_STOR_TRANSPORT_GOOD) | ||||
| 		status = ISD200_GOOD; | ||||
| 	else { | ||||
| 		US_DEBUGP("   isd200_action(0x%02x) error: %d\n",action,status); | ||||
| 		usb_stor_dbg(us, "   isd200_action(0x%02x) error: %d\n", | ||||
| 			     action, status); | ||||
| 		status = ISD200_ERROR; | ||||
| 		/* need to reset device here */ | ||||
| 	} | ||||
|  | @ -589,17 +590,17 @@ static int isd200_read_regs( struct us_data *us ) | |||
| 	int retStatus = ISD200_GOOD; | ||||
| 	int transferStatus; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_IssueATAReadRegs\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_IssueATAReadRegs\n"); | ||||
| 
 | ||||
| 	transferStatus = isd200_action( us, ACTION_READ_STATUS, | ||||
| 				    info->RegsBuf, sizeof(info->ATARegs) ); | ||||
| 	if (transferStatus != ISD200_TRANSPORT_GOOD) { | ||||
| 		US_DEBUGP("   Error reading ATA registers\n"); | ||||
| 		usb_stor_dbg(us, "   Error reading ATA registers\n"); | ||||
| 		retStatus = ISD200_ERROR; | ||||
| 	} else { | ||||
| 		memcpy(info->ATARegs, info->RegsBuf, sizeof(info->ATARegs)); | ||||
| 		US_DEBUGP("   Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n", | ||||
| 			  info->ATARegs[ATA_REG_ERROR_OFFSET]); | ||||
| 		usb_stor_dbg(us, "   Got ATA Register[ATA_REG_ERROR_OFFSET] = 0x%x\n", | ||||
| 			     info->ATARegs[ATA_REG_ERROR_OFFSET]); | ||||
| 	} | ||||
| 
 | ||||
| 	return retStatus; | ||||
|  | @ -629,7 +630,7 @@ static void isd200_invoke_transport( struct us_data *us, | |||
| 	 * short-circuit all other processing | ||||
| 	 */ | ||||
| 	if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { | ||||
| 		US_DEBUGP("-- command was aborted\n"); | ||||
| 		usb_stor_dbg(us, "-- command was aborted\n"); | ||||
| 		goto Handle_Abort; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -641,23 +642,23 @@ static void isd200_invoke_transport( struct us_data *us, | |||
| 		break; | ||||
| 
 | ||||
| 	case USB_STOR_TRANSPORT_NO_SENSE: | ||||
| 		US_DEBUGP("-- transport indicates protocol failure\n"); | ||||
| 		usb_stor_dbg(us, "-- transport indicates protocol failure\n"); | ||||
| 		srb->result = SAM_STAT_CHECK_CONDITION; | ||||
| 		return; | ||||
| 
 | ||||
| 	case USB_STOR_TRANSPORT_FAILED: | ||||
| 		US_DEBUGP("-- transport indicates command failure\n"); | ||||
| 		usb_stor_dbg(us, "-- transport indicates command failure\n"); | ||||
| 		need_auto_sense = 1; | ||||
| 		break; | ||||
| 
 | ||||
| 	case USB_STOR_TRANSPORT_ERROR: | ||||
| 		US_DEBUGP("-- transport indicates transport error\n"); | ||||
| 		usb_stor_dbg(us, "-- transport indicates transport error\n"); | ||||
| 		srb->result = DID_ERROR << 16; | ||||
| 		/* Need reset here */ | ||||
| 		return; | ||||
|      | ||||
| 	default: | ||||
| 		US_DEBUGP("-- transport indicates unknown error\n");    | ||||
| 		usb_stor_dbg(us, "-- transport indicates unknown error\n"); | ||||
| 		srb->result = DID_ERROR << 16; | ||||
| 		/* Need reset here */ | ||||
| 		return; | ||||
|  | @ -669,14 +670,14 @@ static void isd200_invoke_transport( struct us_data *us, | |||
| 	      (srb->cmnd[0] == MODE_SENSE) || | ||||
| 	      (srb->cmnd[0] == LOG_SENSE) || | ||||
| 	      (srb->cmnd[0] == MODE_SENSE_10))) { | ||||
| 		US_DEBUGP("-- unexpectedly short transfer\n"); | ||||
| 		usb_stor_dbg(us, "-- unexpectedly short transfer\n"); | ||||
| 		need_auto_sense = 1; | ||||
| 	} | ||||
| 
 | ||||
| 	if (need_auto_sense) { | ||||
| 		result = isd200_read_regs(us); | ||||
| 		if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { | ||||
| 			US_DEBUGP("-- auto-sense aborted\n"); | ||||
| 			usb_stor_dbg(us, "-- auto-sense aborted\n"); | ||||
| 			goto Handle_Abort; | ||||
| 		} | ||||
| 		if (result == ISD200_GOOD) { | ||||
|  | @ -710,40 +711,40 @@ static void isd200_invoke_transport( struct us_data *us, | |||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| static void isd200_log_config( struct isd200_info* info ) | ||||
| static void isd200_log_config(struct us_data *us, struct isd200_info *info) | ||||
| { | ||||
| 	US_DEBUGP("      Event Notification: 0x%x\n",  | ||||
| 		  info->ConfigData.EventNotification); | ||||
| 	US_DEBUGP("      External Clock: 0x%x\n",  | ||||
| 		  info->ConfigData.ExternalClock); | ||||
| 	US_DEBUGP("      ATA Init Timeout: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAInitTimeout); | ||||
| 	US_DEBUGP("      ATAPI Command Block Size: 0x%x\n",  | ||||
| 		  (info->ConfigData.ATAConfig & ATACFG_BLOCKSIZE) >> 6); | ||||
| 	US_DEBUGP("      Master/Slave Selection: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAConfig & ATACFG_MASTER); | ||||
| 	US_DEBUGP("      ATAPI Reset: 0x%x\n", | ||||
| 		  info->ConfigData.ATAConfig & ATACFG_ATAPI_RESET); | ||||
| 	US_DEBUGP("      ATA Timing: 0x%x\n", | ||||
| 		  info->ConfigData.ATAConfig & ATACFG_TIMING); | ||||
| 	US_DEBUGP("      ATA Major Command: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAMajorCommand); | ||||
| 	US_DEBUGP("      ATA Minor Command: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAMinorCommand); | ||||
| 	US_DEBUGP("      Init Status: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_INIT_STATUS); | ||||
| 	US_DEBUGP("      Config Descriptor 2: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_CONF_DESC2); | ||||
| 	US_DEBUGP("      Skip Device Boot: 0x%x\n", | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_SKIP_BOOT); | ||||
| 	US_DEBUGP("      ATA 3 State Supsend: 0x%x\n", | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_STATE_SUSPEND); | ||||
| 	US_DEBUGP("      Descriptor Override: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_DESC_OVERRIDE); | ||||
| 	US_DEBUGP("      Last LUN Identifier: 0x%x\n", | ||||
| 		  info->ConfigData.ATAExtraConfig & ATACFGE_LAST_LUN); | ||||
| 	US_DEBUGP("      SRST Enable: 0x%x\n",  | ||||
| 		  info->ConfigData.ATAExtraConfig & CFG_CAPABILITY_SRST); | ||||
| 	usb_stor_dbg(us, "      Event Notification: 0x%x\n", | ||||
| 		     info->ConfigData.EventNotification); | ||||
| 	usb_stor_dbg(us, "      External Clock: 0x%x\n", | ||||
| 		     info->ConfigData.ExternalClock); | ||||
| 	usb_stor_dbg(us, "      ATA Init Timeout: 0x%x\n", | ||||
| 		     info->ConfigData.ATAInitTimeout); | ||||
| 	usb_stor_dbg(us, "      ATAPI Command Block Size: 0x%x\n", | ||||
| 		     (info->ConfigData.ATAConfig & ATACFG_BLOCKSIZE) >> 6); | ||||
| 	usb_stor_dbg(us, "      Master/Slave Selection: 0x%x\n", | ||||
| 		     info->ConfigData.ATAConfig & ATACFG_MASTER); | ||||
| 	usb_stor_dbg(us, "      ATAPI Reset: 0x%x\n", | ||||
| 		     info->ConfigData.ATAConfig & ATACFG_ATAPI_RESET); | ||||
| 	usb_stor_dbg(us, "      ATA Timing: 0x%x\n", | ||||
| 		     info->ConfigData.ATAConfig & ATACFG_TIMING); | ||||
| 	usb_stor_dbg(us, "      ATA Major Command: 0x%x\n", | ||||
| 		     info->ConfigData.ATAMajorCommand); | ||||
| 	usb_stor_dbg(us, "      ATA Minor Command: 0x%x\n", | ||||
| 		     info->ConfigData.ATAMinorCommand); | ||||
| 	usb_stor_dbg(us, "      Init Status: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_INIT_STATUS); | ||||
| 	usb_stor_dbg(us, "      Config Descriptor 2: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_CONF_DESC2); | ||||
| 	usb_stor_dbg(us, "      Skip Device Boot: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_SKIP_BOOT); | ||||
| 	usb_stor_dbg(us, "      ATA 3 State Supsend: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_STATE_SUSPEND); | ||||
| 	usb_stor_dbg(us, "      Descriptor Override: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_DESC_OVERRIDE); | ||||
| 	usb_stor_dbg(us, "      Last LUN Identifier: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & ATACFGE_LAST_LUN); | ||||
| 	usb_stor_dbg(us, "      SRST Enable: 0x%x\n", | ||||
| 		     info->ConfigData.ATAExtraConfig & CFG_CAPABILITY_SRST); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
|  | @ -762,9 +763,9 @@ static int isd200_write_config( struct us_data *us ) | |||
| 	int result; | ||||
| 
 | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| 	US_DEBUGP("Entering isd200_write_config\n"); | ||||
| 	US_DEBUGP("   Writing the following ISD200 Config Data:\n"); | ||||
| 	isd200_log_config(info); | ||||
| 	usb_stor_dbg(us, "Entering isd200_write_config\n"); | ||||
| 	usb_stor_dbg(us, "   Writing the following ISD200 Config Data:\n"); | ||||
| 	isd200_log_config(us, info); | ||||
| #endif | ||||
| 
 | ||||
| 	/* let's send the command via the control pipe */ | ||||
|  | @ -779,13 +780,13 @@ static int isd200_write_config( struct us_data *us ) | |||
| 		sizeof(info->ConfigData)); | ||||
| 
 | ||||
| 	if (result >= 0) { | ||||
| 		US_DEBUGP("   ISD200 Config Data was written successfully\n"); | ||||
| 		usb_stor_dbg(us, "   ISD200 Config Data was written successfully\n"); | ||||
| 	} else { | ||||
| 		US_DEBUGP("   Request to write ISD200 Config Data failed!\n"); | ||||
| 		usb_stor_dbg(us, "   Request to write ISD200 Config Data failed!\n"); | ||||
| 		retStatus = ISD200_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_write_config %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_write_config %08X\n", retStatus); | ||||
| 	return retStatus; | ||||
| } | ||||
| 
 | ||||
|  | @ -804,7 +805,7 @@ static int isd200_read_config( struct us_data *us ) | |||
| 	int retStatus = ISD200_GOOD; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_read_config\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_read_config\n"); | ||||
| 
 | ||||
| 	/* read the configuration information from ISD200.  Use this to */ | ||||
| 	/* determine what the special ATA CDB bytes are.		*/ | ||||
|  | @ -821,16 +822,16 @@ static int isd200_read_config( struct us_data *us ) | |||
| 
 | ||||
| 
 | ||||
| 	if (result >= 0) { | ||||
| 		US_DEBUGP("   Retrieved the following ISD200 Config Data:\n"); | ||||
| 		usb_stor_dbg(us, "   Retrieved the following ISD200 Config Data:\n"); | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| 		isd200_log_config(info); | ||||
| 		isd200_log_config(us, info); | ||||
| #endif | ||||
| 	} else { | ||||
| 		US_DEBUGP("   Request to get ISD200 Config Data failed!\n"); | ||||
| 		usb_stor_dbg(us, "   Request to get ISD200 Config Data failed!\n"); | ||||
| 		retStatus = ISD200_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_read_config %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_read_config %08X\n", retStatus); | ||||
| 	return retStatus; | ||||
| } | ||||
| 
 | ||||
|  | @ -848,15 +849,15 @@ static int isd200_atapi_soft_reset( struct us_data *us ) | |||
| 	int retStatus = ISD200_GOOD; | ||||
| 	int transferStatus; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_atapi_soft_reset\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_atapi_soft_reset\n"); | ||||
| 
 | ||||
| 	transferStatus = isd200_action( us, ACTION_SOFT_RESET, NULL, 0 ); | ||||
| 	if (transferStatus != ISD200_TRANSPORT_GOOD) { | ||||
| 		US_DEBUGP("   Error issuing Atapi Soft Reset\n"); | ||||
| 		usb_stor_dbg(us, "   Error issuing Atapi Soft Reset\n"); | ||||
| 		retStatus = ISD200_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_atapi_soft_reset %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_atapi_soft_reset %08X\n", retStatus); | ||||
| 	return retStatus; | ||||
| } | ||||
| 
 | ||||
|  | @ -874,13 +875,13 @@ static int isd200_srst( struct us_data *us ) | |||
| 	int retStatus = ISD200_GOOD; | ||||
| 	int transferStatus; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_SRST\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_SRST\n"); | ||||
| 
 | ||||
| 	transferStatus = isd200_action( us, ACTION_RESET, NULL, 0 ); | ||||
| 
 | ||||
| 	/* check to see if this request failed */ | ||||
| 	if (transferStatus != ISD200_TRANSPORT_GOOD) { | ||||
| 		US_DEBUGP("   Error issuing SRST\n"); | ||||
| 		usb_stor_dbg(us, "   Error issuing SRST\n"); | ||||
| 		retStatus = ISD200_ERROR; | ||||
| 	} else { | ||||
| 		/* delay 10ms to give the drive a chance to see it */ | ||||
|  | @ -888,7 +889,7 @@ static int isd200_srst( struct us_data *us ) | |||
| 
 | ||||
| 		transferStatus = isd200_action( us, ACTION_REENABLE, NULL, 0 ); | ||||
| 		if (transferStatus != ISD200_TRANSPORT_GOOD) { | ||||
| 			US_DEBUGP("   Error taking drive out of reset\n"); | ||||
| 			usb_stor_dbg(us, "   Error taking drive out of reset\n"); | ||||
| 			retStatus = ISD200_ERROR; | ||||
| 		} else { | ||||
| 			/* delay 50ms to give the drive a chance to recover after SRST */ | ||||
|  | @ -896,7 +897,7 @@ static int isd200_srst( struct us_data *us ) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_srst %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_srst %08X\n", retStatus); | ||||
| 	return retStatus; | ||||
| } | ||||
| 
 | ||||
|  | @ -938,13 +939,13 @@ static int isd200_try_enum(struct us_data *us, unsigned char master_slave, | |||
| 
 | ||||
| 		if (!detect) { | ||||
| 			if (regs[ATA_REG_STATUS_OFFSET] & ATA_BUSY) { | ||||
| 				US_DEBUGP("   %s status is still BSY, try again...\n", | ||||
| 					  master_slave == ATA_ADDRESS_DEVHEAD_STD ? | ||||
| 					  "Master" : "Slave"); | ||||
| 				usb_stor_dbg(us, "   %s status is still BSY, try again...\n", | ||||
| 					     master_slave == ATA_ADDRESS_DEVHEAD_STD ? | ||||
| 					     "Master" : "Slave"); | ||||
| 			} else { | ||||
| 				US_DEBUGP("   %s status !BSY, continue with next operation\n", | ||||
| 					  master_slave == ATA_ADDRESS_DEVHEAD_STD ? | ||||
| 					  "Master" : "Slave"); | ||||
| 				usb_stor_dbg(us, "   %s status !BSY, continue with next operation\n", | ||||
| 					     master_slave == ATA_ADDRESS_DEVHEAD_STD ? | ||||
| 					     "Master" : "Slave"); | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
|  | @ -953,11 +954,11 @@ static int isd200_try_enum(struct us_data *us, unsigned char master_slave, | |||
| 		/* ATA_ERR (workaround for Archos CD-ROM) */ | ||||
| 		else if (regs[ATA_REG_STATUS_OFFSET] & | ||||
| 			 (ATA_BUSY | ATA_DF | ATA_ERR)) { | ||||
| 			US_DEBUGP("   Status indicates it is not ready, try again...\n"); | ||||
| 			usb_stor_dbg(us, "   Status indicates it is not ready, try again...\n"); | ||||
| 		} | ||||
| 		/* check for DRDY, ATA devices set DRDY after SRST */ | ||||
| 		else if (regs[ATA_REG_STATUS_OFFSET] & ATA_DRDY) { | ||||
| 			US_DEBUGP("   Identified ATA device\n"); | ||||
| 			usb_stor_dbg(us, "   Identified ATA device\n"); | ||||
| 			info->DeviceFlags |= DF_ATA_DEVICE; | ||||
| 			info->DeviceHead = master_slave; | ||||
| 			break; | ||||
|  | @ -978,27 +979,27 @@ static int isd200_try_enum(struct us_data *us, unsigned char master_slave, | |||
| 			*/ | ||||
| 			if ((master_slave & ATA_ADDRESS_DEVHEAD_SLAVE) && | ||||
| 			    !recheckAsMaster) { | ||||
| 				US_DEBUGP("   Identified ATAPI device as slave.  Rechecking again as master\n"); | ||||
| 				usb_stor_dbg(us, "   Identified ATAPI device as slave.  Rechecking again as master\n"); | ||||
| 				recheckAsMaster = 1; | ||||
| 				master_slave = ATA_ADDRESS_DEVHEAD_STD; | ||||
| 			} else { | ||||
| 				US_DEBUGP("   Identified ATAPI device\n"); | ||||
| 				usb_stor_dbg(us, "   Identified ATAPI device\n"); | ||||
| 				info->DeviceHead = master_slave; | ||||
| 			       | ||||
| 				status = isd200_atapi_soft_reset(us); | ||||
| 				break; | ||||
| 			} | ||||
| 		} else { | ||||
|  			US_DEBUGP("   Not ATA, not ATAPI. Weird.\n"); | ||||
| 			usb_stor_dbg(us, "   Not ATA, not ATAPI - Weird\n"); | ||||
| 			break; | ||||
| 		} | ||||
| 
 | ||||
| 		/* check for timeout on this request */ | ||||
| 		if (time_after_eq(jiffies, endTime)) { | ||||
| 			if (!detect) | ||||
| 				US_DEBUGP("   BSY check timeout, just continue with next operation...\n"); | ||||
| 				usb_stor_dbg(us, "   BSY check timeout, just continue with next operation...\n"); | ||||
| 			else | ||||
| 				US_DEBUGP("   Device detect timeout!\n"); | ||||
| 				usb_stor_dbg(us, "   Device detect timeout!\n"); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -1020,7 +1021,7 @@ static int isd200_manual_enum(struct us_data *us) | |||
| 	struct isd200_info *info = (struct isd200_info *)us->extra; | ||||
| 	int retStatus = ISD200_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_manual_enum\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_manual_enum\n"); | ||||
| 
 | ||||
| 	retStatus = isd200_read_config(us); | ||||
| 	if (retStatus == ISD200_GOOD) { | ||||
|  | @ -1039,14 +1040,15 @@ static int isd200_manual_enum(struct us_data *us) | |||
| 
 | ||||
| 		isslave = (info->DeviceHead & ATA_ADDRESS_DEVHEAD_SLAVE) ? 1 : 0; | ||||
| 		if (!(info->ConfigData.ATAConfig & ATACFG_MASTER)) { | ||||
| 			US_DEBUGP("   Setting Master/Slave selection to %d\n", isslave); | ||||
| 			usb_stor_dbg(us, "   Setting Master/Slave selection to %d\n", | ||||
| 				     isslave); | ||||
| 			info->ConfigData.ATAConfig &= 0x3f; | ||||
| 			info->ConfigData.ATAConfig |= (isslave<<6); | ||||
| 			retStatus = isd200_write_config(us); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_manual_enum %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_manual_enum %08X\n", retStatus); | ||||
| 	return(retStatus); | ||||
| } | ||||
| 
 | ||||
|  | @ -1064,35 +1066,35 @@ static void isd200_fix_driveid(u16 *id) | |||
| #endif | ||||
| } | ||||
| 
 | ||||
| static void isd200_dump_driveid(u16 *id) | ||||
| static void isd200_dump_driveid(struct us_data *us, u16 *id) | ||||
| { | ||||
| 	US_DEBUGP("   Identify Data Structure:\n"); | ||||
| 	US_DEBUGP("      config = 0x%x\n",	  id[ATA_ID_CONFIG]); | ||||
| 	US_DEBUGP("      cyls = 0x%x\n",	  id[ATA_ID_CYLS]); | ||||
| 	US_DEBUGP("      heads = 0x%x\n",	  id[ATA_ID_HEADS]); | ||||
| 	US_DEBUGP("      track_bytes = 0x%x\n",	  id[4]); | ||||
| 	US_DEBUGP("      sector_bytes = 0x%x\n",  id[5]); | ||||
| 	US_DEBUGP("      sectors = 0x%x\n",	  id[ATA_ID_SECTORS]); | ||||
| 	US_DEBUGP("      serial_no[0] = 0x%x\n",  *(char *)&id[ATA_ID_SERNO]); | ||||
| 	US_DEBUGP("      buf_type = 0x%x\n",	  id[20]); | ||||
| 	US_DEBUGP("      buf_size = 0x%x\n",	  id[ATA_ID_BUF_SIZE]); | ||||
| 	US_DEBUGP("      ecc_bytes = 0x%x\n",	  id[22]); | ||||
| 	US_DEBUGP("      fw_rev[0] = 0x%x\n",	  *(char *)&id[ATA_ID_FW_REV]); | ||||
| 	US_DEBUGP("      model[0] = 0x%x\n",	  *(char *)&id[ATA_ID_PROD]); | ||||
| 	US_DEBUGP("      max_multsect = 0x%x\n",  id[ATA_ID_MAX_MULTSECT] & 0xff); | ||||
| 	US_DEBUGP("      dword_io = 0x%x\n",	  id[ATA_ID_DWORD_IO]); | ||||
| 	US_DEBUGP("      capability = 0x%x\n",	  id[ATA_ID_CAPABILITY] >> 8); | ||||
| 	US_DEBUGP("      tPIO = 0x%x\n",	  id[ATA_ID_OLD_PIO_MODES] >> 8); | ||||
| 	US_DEBUGP("      tDMA = 0x%x\n",	  id[ATA_ID_OLD_DMA_MODES] >> 8); | ||||
| 	US_DEBUGP("      field_valid = 0x%x\n",	  id[ATA_ID_FIELD_VALID]); | ||||
| 	US_DEBUGP("      cur_cyls = 0x%x\n",	  id[ATA_ID_CUR_CYLS]); | ||||
| 	US_DEBUGP("      cur_heads = 0x%x\n",	  id[ATA_ID_CUR_HEADS]); | ||||
| 	US_DEBUGP("      cur_sectors = 0x%x\n",	  id[ATA_ID_CUR_SECTORS]); | ||||
| 	US_DEBUGP("      cur_capacity = 0x%x\n",  ata_id_u32(id, 57)); | ||||
| 	US_DEBUGP("      multsect = 0x%x\n",	  id[ATA_ID_MULTSECT] & 0xff); | ||||
| 	US_DEBUGP("      lba_capacity = 0x%x\n",  ata_id_u32(id, ATA_ID_LBA_CAPACITY)); | ||||
| 	US_DEBUGP("      command_set_1 = 0x%x\n", id[ATA_ID_COMMAND_SET_1]); | ||||
| 	US_DEBUGP("      command_set_2 = 0x%x\n", id[ATA_ID_COMMAND_SET_2]); | ||||
| 	usb_stor_dbg(us, "   Identify Data Structure:\n"); | ||||
| 	usb_stor_dbg(us, "      config = 0x%x\n",	id[ATA_ID_CONFIG]); | ||||
| 	usb_stor_dbg(us, "      cyls = 0x%x\n",		id[ATA_ID_CYLS]); | ||||
| 	usb_stor_dbg(us, "      heads = 0x%x\n",	id[ATA_ID_HEADS]); | ||||
| 	usb_stor_dbg(us, "      track_bytes = 0x%x\n",	id[4]); | ||||
| 	usb_stor_dbg(us, "      sector_bytes = 0x%x\n", id[5]); | ||||
| 	usb_stor_dbg(us, "      sectors = 0x%x\n",	id[ATA_ID_SECTORS]); | ||||
| 	usb_stor_dbg(us, "      serial_no[0] = 0x%x\n", *(char *)&id[ATA_ID_SERNO]); | ||||
| 	usb_stor_dbg(us, "      buf_type = 0x%x\n",	id[20]); | ||||
| 	usb_stor_dbg(us, "      buf_size = 0x%x\n",	id[ATA_ID_BUF_SIZE]); | ||||
| 	usb_stor_dbg(us, "      ecc_bytes = 0x%x\n",	id[22]); | ||||
| 	usb_stor_dbg(us, "      fw_rev[0] = 0x%x\n",	*(char *)&id[ATA_ID_FW_REV]); | ||||
| 	usb_stor_dbg(us, "      model[0] = 0x%x\n",	*(char *)&id[ATA_ID_PROD]); | ||||
| 	usb_stor_dbg(us, "      max_multsect = 0x%x\n", id[ATA_ID_MAX_MULTSECT] & 0xff); | ||||
| 	usb_stor_dbg(us, "      dword_io = 0x%x\n",	id[ATA_ID_DWORD_IO]); | ||||
| 	usb_stor_dbg(us, "      capability = 0x%x\n",	id[ATA_ID_CAPABILITY] >> 8); | ||||
| 	usb_stor_dbg(us, "      tPIO = 0x%x\n",	  id[ATA_ID_OLD_PIO_MODES] >> 8); | ||||
| 	usb_stor_dbg(us, "      tDMA = 0x%x\n",	  id[ATA_ID_OLD_DMA_MODES] >> 8); | ||||
| 	usb_stor_dbg(us, "      field_valid = 0x%x\n",	id[ATA_ID_FIELD_VALID]); | ||||
| 	usb_stor_dbg(us, "      cur_cyls = 0x%x\n",	id[ATA_ID_CUR_CYLS]); | ||||
| 	usb_stor_dbg(us, "      cur_heads = 0x%x\n",	id[ATA_ID_CUR_HEADS]); | ||||
| 	usb_stor_dbg(us, "      cur_sectors = 0x%x\n",	id[ATA_ID_CUR_SECTORS]); | ||||
| 	usb_stor_dbg(us, "      cur_capacity = 0x%x\n", ata_id_u32(id, 57)); | ||||
| 	usb_stor_dbg(us, "      multsect = 0x%x\n",	id[ATA_ID_MULTSECT] & 0xff); | ||||
| 	usb_stor_dbg(us, "      lba_capacity = 0x%x\n", ata_id_u32(id, ATA_ID_LBA_CAPACITY)); | ||||
| 	usb_stor_dbg(us, "      command_set_1 = 0x%x\n", id[ATA_ID_COMMAND_SET_1]); | ||||
| 	usb_stor_dbg(us, "      command_set_2 = 0x%x\n", id[ATA_ID_COMMAND_SET_2]); | ||||
| } | ||||
| 
 | ||||
| /**************************************************************************
 | ||||
|  | @ -1109,7 +1111,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 	int retStatus = ISD200_GOOD; | ||||
| 	u16 *id = info->id; | ||||
| 
 | ||||
| 	US_DEBUGP("Entering isd200_get_inquiry_data\n"); | ||||
| 	usb_stor_dbg(us, "Entering isd200_get_inquiry_data\n"); | ||||
| 
 | ||||
| 	/* set default to Master */ | ||||
| 	info->DeviceHead = ATA_ADDRESS_DEVHEAD_STD; | ||||
|  | @ -1127,7 +1129,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 							id, ATA_ID_WORDS * 2); | ||||
| 			if (transferStatus != ISD200_TRANSPORT_GOOD) { | ||||
| 				/* Error issuing ATA Command Identify */ | ||||
| 				US_DEBUGP("   Error issuing ATA Command Identify\n"); | ||||
| 				usb_stor_dbg(us, "   Error issuing ATA Command Identify\n"); | ||||
| 				retStatus = ISD200_ERROR; | ||||
| 			} else { | ||||
| 				/* ATA Command Identify successful */ | ||||
|  | @ -1136,7 +1138,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 				__u16 *dest; | ||||
| 
 | ||||
| 				isd200_fix_driveid(id); | ||||
| 				isd200_dump_driveid(id); | ||||
| 				isd200_dump_driveid(us, id); | ||||
| 
 | ||||
| 				memset(&info->InquiryData, 0, sizeof(info->InquiryData)); | ||||
| 
 | ||||
|  | @ -1170,7 +1172,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 
 | ||||
| 				/* determine if it supports Media Status Notification */ | ||||
| 				if (id[ATA_ID_COMMAND_SET_2] & COMMANDSET_MEDIA_STATUS) { | ||||
| 					US_DEBUGP("   Device supports Media Status Notification\n"); | ||||
| 					usb_stor_dbg(us, "   Device supports Media Status Notification\n"); | ||||
| 
 | ||||
| 					/* Indicate that it is enabled, even though it is not
 | ||||
| 					 * This allows the lock/unlock of the media to work | ||||
|  | @ -1190,7 +1192,8 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 			us->protocol_name = "Transparent SCSI"; | ||||
| 			us->proto_handler = usb_stor_transparent_scsi_command; | ||||
| 
 | ||||
| 			US_DEBUGP("Protocol changed to: %s\n", us->protocol_name); | ||||
| 			usb_stor_dbg(us, "Protocol changed to: %s\n", | ||||
| 				     us->protocol_name); | ||||
| 	     | ||||
| 			/* Free driver structure */	     | ||||
| 			us->extra_destructor(info); | ||||
|  | @ -1200,7 +1203,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Leaving isd200_get_inquiry_data %08X\n", retStatus); | ||||
| 	usb_stor_dbg(us, "Leaving isd200_get_inquiry_data %08X\n", retStatus); | ||||
| 
 | ||||
| 	return(retStatus); | ||||
| } | ||||
|  | @ -1231,7 +1234,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 	/* SCSI Command */ | ||||
| 	switch (srb->cmnd[0]) { | ||||
| 	case INQUIRY: | ||||
| 		US_DEBUGP("   ATA OUT - INQUIRY\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - INQUIRY\n"); | ||||
| 
 | ||||
| 		/* copy InquiryData */ | ||||
| 		usb_stor_set_xfer_buf((unsigned char *) &info->InquiryData, | ||||
|  | @ -1241,7 +1244,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 		break; | ||||
| 
 | ||||
| 	case MODE_SENSE: | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_MODE_SENSE\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_MODE_SENSE\n"); | ||||
| 
 | ||||
| 		/* Initialize the return buffer */ | ||||
| 		usb_stor_set_xfer_buf(senseData, sizeof(senseData), srb); | ||||
|  | @ -1255,14 +1258,14 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 			ataCdb->write.CommandByte = ATA_COMMAND_GET_MEDIA_STATUS; | ||||
| 			isd200_srb_set_bufflen(srb, 0); | ||||
| 		} else { | ||||
| 			US_DEBUGP("   Media Status not supported, just report okay\n"); | ||||
| 			usb_stor_dbg(us, "   Media Status not supported, just report okay\n"); | ||||
| 			srb->result = SAM_STAT_GOOD; | ||||
| 			sendToTransport = 0; | ||||
| 		} | ||||
| 		break; | ||||
| 
 | ||||
| 	case TEST_UNIT_READY: | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_TEST_UNIT_READY\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_TEST_UNIT_READY\n"); | ||||
| 
 | ||||
| 		if (info->DeviceFlags & DF_MEDIA_STATUS_ENABLED) | ||||
| 		{ | ||||
|  | @ -1273,7 +1276,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 			ataCdb->write.CommandByte = ATA_COMMAND_GET_MEDIA_STATUS; | ||||
| 			isd200_srb_set_bufflen(srb, 0); | ||||
| 		} else { | ||||
| 			US_DEBUGP("   Media Status not supported, just report okay\n"); | ||||
| 			usb_stor_dbg(us, "   Media Status not supported, just report okay\n"); | ||||
| 			srb->result = SAM_STAT_GOOD; | ||||
| 			sendToTransport = 0; | ||||
| 		} | ||||
|  | @ -1284,7 +1287,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 		unsigned long capacity; | ||||
| 		struct read_capacity_data readCapacityData; | ||||
| 
 | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_READ_CAPACITY\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_READ_CAPACITY\n"); | ||||
| 
 | ||||
| 		if (ata_id_has_lba(id)) | ||||
| 			capacity = ata_id_u32(id, ATA_ID_LBA_CAPACITY) - 1; | ||||
|  | @ -1303,7 +1306,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 	break; | ||||
| 
 | ||||
| 	case READ_10: | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_READ\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_READ\n"); | ||||
| 
 | ||||
| 		lba = be32_to_cpu(*(__be32 *)&srb->cmnd[2]); | ||||
| 		blockCount = (unsigned long)srb->cmnd[7]<<8 | (unsigned long)srb->cmnd[8]; | ||||
|  | @ -1335,7 +1338,7 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 		break; | ||||
| 
 | ||||
| 	case WRITE_10: | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_WRITE\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_WRITE\n"); | ||||
| 
 | ||||
| 		lba = be32_to_cpu(*(__be32 *)&srb->cmnd[2]); | ||||
| 		blockCount = (unsigned long)srb->cmnd[7]<<8 | (unsigned long)srb->cmnd[8]; | ||||
|  | @ -1367,10 +1370,11 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 		break; | ||||
| 
 | ||||
| 	case ALLOW_MEDIUM_REMOVAL: | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_MEDIUM_REMOVAL\n"); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_MEDIUM_REMOVAL\n"); | ||||
| 
 | ||||
| 		if (info->DeviceFlags & DF_REMOVABLE_MEDIA) { | ||||
| 			US_DEBUGP("   srb->cmnd[4] = 0x%X\n", srb->cmnd[4]); | ||||
| 			usb_stor_dbg(us, "   srb->cmnd[4] = 0x%X\n", | ||||
| 				     srb->cmnd[4]); | ||||
| 	     | ||||
| 			ataCdb->generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; | ||||
| 			ataCdb->generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; | ||||
|  | @ -1380,25 +1384,25 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 				ATA_CMD_MEDIA_LOCK : ATA_CMD_MEDIA_UNLOCK; | ||||
| 			isd200_srb_set_bufflen(srb, 0); | ||||
| 		} else { | ||||
| 			US_DEBUGP("   Not removeable media, just report okay\n"); | ||||
| 			usb_stor_dbg(us, "   Not removeable media, just report okay\n"); | ||||
| 			srb->result = SAM_STAT_GOOD; | ||||
| 			sendToTransport = 0; | ||||
| 		} | ||||
| 		break; | ||||
| 
 | ||||
| 	case START_STOP:     | ||||
| 		US_DEBUGP("   ATA OUT - SCSIOP_START_STOP_UNIT\n"); | ||||
| 		US_DEBUGP("   srb->cmnd[4] = 0x%X\n", srb->cmnd[4]); | ||||
| 		usb_stor_dbg(us, "   ATA OUT - SCSIOP_START_STOP_UNIT\n"); | ||||
| 		usb_stor_dbg(us, "   srb->cmnd[4] = 0x%X\n", srb->cmnd[4]); | ||||
| 
 | ||||
| 		if ((srb->cmnd[4] & 0x3) == 0x2) { | ||||
| 			US_DEBUGP("   Media Eject\n"); | ||||
| 			usb_stor_dbg(us, "   Media Eject\n"); | ||||
| 			ataCdb->generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; | ||||
| 			ataCdb->generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; | ||||
| 			ataCdb->generic.TransferBlockSize = 0; | ||||
| 			ataCdb->generic.RegisterSelect = REG_COMMAND; | ||||
| 			ataCdb->write.CommandByte = ATA_COMMAND_MEDIA_EJECT; | ||||
| 		} else if ((srb->cmnd[4] & 0x3) == 0x1) { | ||||
| 			US_DEBUGP("   Get Media Status\n"); | ||||
| 			usb_stor_dbg(us, "   Get Media Status\n"); | ||||
| 			ataCdb->generic.SignatureByte0 = info->ConfigData.ATAMajorCommand; | ||||
| 			ataCdb->generic.SignatureByte1 = info->ConfigData.ATAMinorCommand; | ||||
| 			ataCdb->generic.TransferBlockSize = 1; | ||||
|  | @ -1406,14 +1410,15 @@ static int isd200_scsi_to_ata(struct scsi_cmnd *srb, struct us_data *us, | |||
| 			ataCdb->write.CommandByte = ATA_COMMAND_GET_MEDIA_STATUS; | ||||
| 			isd200_srb_set_bufflen(srb, 0); | ||||
| 		} else { | ||||
| 			US_DEBUGP("   Nothing to do, just report okay\n"); | ||||
| 			usb_stor_dbg(us, "   Nothing to do, just report okay\n"); | ||||
| 			srb->result = SAM_STAT_GOOD; | ||||
| 			sendToTransport = 0; | ||||
| 		} | ||||
| 		break; | ||||
| 
 | ||||
| 	default: | ||||
| 		US_DEBUGP("Unsupported SCSI command - 0x%X\n", srb->cmnd[0]); | ||||
| 		usb_stor_dbg(us, "Unsupported SCSI command - 0x%X\n", | ||||
| 			     srb->cmnd[0]); | ||||
| 		srb->result = DID_ERROR << 16; | ||||
| 		sendToTransport = 0; | ||||
| 		break; | ||||
|  | @ -1470,8 +1475,7 @@ static int isd200_init_info(struct us_data *us) | |||
| 	if (retStatus == ISD200_GOOD) { | ||||
| 		us->extra = info; | ||||
| 		us->extra_destructor = isd200_free_info_ptrs; | ||||
| 	} else | ||||
| 		US_DEBUGP("ERROR - kmalloc failure\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	return retStatus; | ||||
| } | ||||
|  | @ -1482,19 +1486,19 @@ static int isd200_init_info(struct us_data *us) | |||
| 
 | ||||
| static int isd200_Initialization(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("ISD200 Initialization...\n"); | ||||
| 	usb_stor_dbg(us, "ISD200 Initialization...\n"); | ||||
| 
 | ||||
| 	/* Initialize ISD200 info struct */ | ||||
| 
 | ||||
| 	if (isd200_init_info(us) == ISD200_ERROR) { | ||||
| 		US_DEBUGP("ERROR Initializing ISD200 Info struct\n"); | ||||
| 		usb_stor_dbg(us, "ERROR Initializing ISD200 Info struct\n"); | ||||
| 	} else { | ||||
| 		/* Get device specific data */ | ||||
| 
 | ||||
| 		if (isd200_get_inquiry_data(us) != ISD200_GOOD) | ||||
| 			US_DEBUGP("ISD200 Initialization Failure\n"); | ||||
| 			usb_stor_dbg(us, "ISD200 Initialization Failure\n"); | ||||
| 		else | ||||
| 			US_DEBUGP("ISD200 Initialization complete\n"); | ||||
| 			usb_stor_dbg(us, "ISD200 Initialization complete\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
|  | @ -1519,7 +1523,7 @@ static void isd200_ata_command(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	/* Make sure driver was initialized */ | ||||
| 
 | ||||
| 	if (us->extra == NULL) | ||||
| 		US_DEBUGP("ERROR Driver not initialized\n"); | ||||
| 		usb_stor_dbg(us, "ERROR Driver not initialized\n"); | ||||
| 
 | ||||
| 	scsi_set_resid(srb, 0); | ||||
| 	/* scsi_bufflen might change in protocol translation to ata */ | ||||
|  |  | |||
|  | @ -118,7 +118,7 @@ static inline int jumpshot_bulk_read(struct us_data *us, | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("jumpshot_bulk_read:  len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, | ||||
| 			data, len, NULL); | ||||
| } | ||||
|  | @ -131,7 +131,7 @@ static inline int jumpshot_bulk_write(struct us_data *us, | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("jumpshot_bulk_write:  len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 			data, len, NULL); | ||||
| } | ||||
|  | @ -152,8 +152,7 @@ static int jumpshot_get_status(struct us_data  *us) | |||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	if (us->iobuf[0] != 0x50) { | ||||
| 		US_DEBUGP("jumpshot_get_status:  0x%2x\n", | ||||
| 			  us->iobuf[0]); | ||||
| 		usb_stor_dbg(us, "0x%2x\n", us->iobuf[0]); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -218,7 +217,7 @@ static int jumpshot_read_data(struct us_data *us, | |||
| 		if (result != USB_STOR_XFER_GOOD) | ||||
| 			goto leave; | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_read_data:  %d bytes\n", len); | ||||
| 		usb_stor_dbg(us, "%d bytes\n", len); | ||||
| 
 | ||||
| 		// Store the data in the transfer buffer
 | ||||
| 		usb_stor_access_xfer_buf(buffer, len, us->srb, | ||||
|  | @ -314,7 +313,7 @@ static int jumpshot_write_data(struct us_data *us, | |||
| 		} while ((result != USB_STOR_TRANSPORT_GOOD) && (waitcount < 10)); | ||||
| 
 | ||||
| 		if (result != USB_STOR_TRANSPORT_GOOD) | ||||
| 			US_DEBUGP("jumpshot_write_data:  Gah!  Waitcount = 10.  Bad write!?\n"); | ||||
| 			usb_stor_dbg(us, "Gah!  Waitcount = 10.  Bad write!?\n"); | ||||
| 
 | ||||
| 		sector += thistime; | ||||
| 		totallen -= len; | ||||
|  | @ -349,8 +348,7 @@ static int jumpshot_id_device(struct us_data *us, | |||
| 				   0, 0x20, 0, 6, command, 2); | ||||
| 
 | ||||
| 	if (rc != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("jumpshot_id_device:  Gah! " | ||||
| 			  "send_control for read_capacity failed\n"); | ||||
| 		usb_stor_dbg(us, "Gah! send_control for read_capacity failed\n"); | ||||
| 		rc = USB_STOR_TRANSPORT_ERROR; | ||||
| 		goto leave; | ||||
| 	} | ||||
|  | @ -400,17 +398,17 @@ static int jumpshot_handle_mode_sense(struct us_data *us, | |||
| 
 | ||||
| 	switch (pc) { | ||||
| 	   case 0x0: | ||||
| 		US_DEBUGP("jumpshot_handle_mode_sense:  Current values\n"); | ||||
| 		break; | ||||
| 		   usb_stor_dbg(us, "Current values\n"); | ||||
| 		   break; | ||||
| 	   case 0x1: | ||||
| 		US_DEBUGP("jumpshot_handle_mode_sense:  Changeable values\n"); | ||||
| 		break; | ||||
| 		   usb_stor_dbg(us, "Changeable values\n"); | ||||
| 		   break; | ||||
| 	   case 0x2: | ||||
| 		US_DEBUGP("jumpshot_handle_mode_sense:  Default values\n"); | ||||
| 		break; | ||||
| 		   usb_stor_dbg(us, "Default values\n"); | ||||
| 		   break; | ||||
| 	   case 0x3: | ||||
| 		US_DEBUGP("jumpshot_handle_mode_sense:  Saves values\n"); | ||||
| 		break; | ||||
| 		   usb_stor_dbg(us, "Saves values\n"); | ||||
| 		   break; | ||||
| 	} | ||||
| 
 | ||||
| 	memset(ptr, 0, 8); | ||||
|  | @ -494,17 +492,16 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 	if (!us->extra) { | ||||
| 		us->extra = kzalloc(sizeof(struct jumpshot_info), GFP_NOIO); | ||||
| 		if (!us->extra) { | ||||
| 			US_DEBUGP("jumpshot_transport:  Gah! Can't allocate storage for jumpshot info struct!\n"); | ||||
| 		if (!us->extra) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 		} | ||||
| 
 | ||||
| 		us->extra_destructor = jumpshot_info_destructor; | ||||
| 	} | ||||
| 
 | ||||
| 	info = (struct jumpshot_info *) (us->extra); | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == INQUIRY) { | ||||
| 		US_DEBUGP("jumpshot_transport:  INQUIRY.  Returning bogus response.\n"); | ||||
| 		usb_stor_dbg(us, "INQUIRY - Returning bogus response\n"); | ||||
| 		memcpy(ptr, inquiry_response, sizeof(inquiry_response)); | ||||
| 		fill_inquiry_response(us, ptr, 36); | ||||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
|  | @ -521,8 +518,8 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 			return rc; | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_transport:  READ_CAPACITY:  %ld sectors, %ld bytes per sector\n", | ||||
| 			  info->sectors, info->ssize); | ||||
| 		usb_stor_dbg(us, "READ_CAPACITY:  %ld sectors, %ld bytes per sector\n", | ||||
| 			     info->sectors, info->ssize); | ||||
| 
 | ||||
| 		// build the reply
 | ||||
| 		//
 | ||||
|  | @ -534,7 +531,7 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SELECT_10) { | ||||
| 		US_DEBUGP("jumpshot_transport:  Gah! MODE_SELECT_10.\n"); | ||||
| 		usb_stor_dbg(us, "Gah! MODE_SELECT_10\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -544,7 +541,8 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_transport:  READ_10: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_10: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return jumpshot_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -557,7 +555,8 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 			 ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_transport:  READ_12: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_12: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return jumpshot_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -567,7 +566,8 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_transport:  WRITE_10: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_10: write block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return jumpshot_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -580,18 +580,19 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 			 ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("jumpshot_transport:  WRITE_12: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_12: write block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return jumpshot_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == TEST_UNIT_READY) { | ||||
| 		US_DEBUGP("jumpshot_transport:  TEST_UNIT_READY.\n"); | ||||
| 		usb_stor_dbg(us, "TEST_UNIT_READY\n"); | ||||
| 		return jumpshot_get_status(us); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == REQUEST_SENSE) { | ||||
| 		US_DEBUGP("jumpshot_transport:  REQUEST_SENSE.\n"); | ||||
| 		usb_stor_dbg(us, "REQUEST_SENSE\n"); | ||||
| 
 | ||||
| 		memset(ptr, 0, 18); | ||||
| 		ptr[0] = 0xF0; | ||||
|  | @ -605,12 +606,12 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SENSE) { | ||||
| 		US_DEBUGP("jumpshot_transport:  MODE_SENSE_6 detected\n"); | ||||
| 		usb_stor_dbg(us, "MODE_SENSE_6 detected\n"); | ||||
| 		return jumpshot_handle_mode_sense(us, srb, 1); | ||||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SENSE_10) { | ||||
| 		US_DEBUGP("jumpshot_transport:  MODE_SENSE_10 detected\n"); | ||||
| 		usb_stor_dbg(us, "MODE_SENSE_10 detected\n"); | ||||
| 		return jumpshot_handle_mode_sense(us, srb, 0); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -624,7 +625,7 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	if (srb->cmnd[0] == START_STOP) { | ||||
| 		/* this is used by sd.c'check_scsidisk_media_change to detect
 | ||||
| 		   media change */ | ||||
| 		US_DEBUGP("jumpshot_transport:  START_STOP.\n"); | ||||
| 		usb_stor_dbg(us, "START_STOP\n"); | ||||
| 		/* the first jumpshot_id_device after a media change returns
 | ||||
| 		   an error (determined experimentally) */ | ||||
| 		rc = jumpshot_id_device(us, info); | ||||
|  | @ -638,8 +639,8 @@ static int jumpshot_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		return rc; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("jumpshot_transport:  Gah! Unknown command: %d (0x%x)\n", | ||||
| 		  srb->cmnd[0], srb->cmnd[0]); | ||||
| 	usb_stor_dbg(us, "Gah! Unknown command: %d (0x%x)\n", | ||||
| 		     srb->cmnd[0], srb->cmnd[0]); | ||||
| 	info->sense_key = 0x05; | ||||
| 	info->sense_asc = 0x20; | ||||
| 	info->sense_ascq = 0x00; | ||||
|  |  | |||
|  | @ -106,7 +106,7 @@ static int rio_karma_send_command(char cmd, struct us_data *us) | |||
| 	static unsigned char seq = 1; | ||||
| 	struct karma_data *data = (struct karma_data *) us->extra; | ||||
| 
 | ||||
| 	US_DEBUGP("karma: sending command %04x\n", cmd); | ||||
| 	usb_stor_dbg(us, "sending command %04x\n", cmd); | ||||
| 	memset(us->iobuf, 0, RIO_SEND_LEN); | ||||
| 	memcpy(us->iobuf, RIO_PREFIX, RIO_PREFIX_LEN); | ||||
| 	us->iobuf[5] = cmd; | ||||
|  | @ -139,10 +139,10 @@ static int rio_karma_send_command(char cmd, struct us_data *us) | |||
| 	if (seq == 0) | ||||
| 		seq = 1; | ||||
| 
 | ||||
| 	US_DEBUGP("karma: sent command %04x\n", cmd); | ||||
| 	usb_stor_dbg(us, "sent command %04x\n", cmd); | ||||
| 	return 0; | ||||
| err: | ||||
| 	US_DEBUGP("karma: command %04x failed\n", cmd); | ||||
| 	usb_stor_dbg(us, "command %04x failed\n", cmd); | ||||
| 	return USB_STOR_TRANSPORT_FAILED; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ static int option_rezero(struct us_data *us) | |||
| 	char *buffer; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Option MS: %s", "DEVICE MODE SWITCH\n"); | ||||
| 	usb_stor_dbg(us, "Option MS: %s\n", "DEVICE MODE SWITCH"); | ||||
| 
 | ||||
| 	buffer = kzalloc(RESPONSE_LEN, GFP_KERNEL); | ||||
| 	if (buffer == NULL) | ||||
|  | @ -95,7 +95,7 @@ static int option_inquiry(struct us_data *us) | |||
| 	char *buffer; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Option MS: %s", "device inquiry for vendor name\n"); | ||||
| 	usb_stor_dbg(us, "Option MS: %s\n", "device inquiry for vendor name"); | ||||
| 
 | ||||
| 	buffer = kzalloc(0x24, GFP_KERNEL); | ||||
| 	if (buffer == NULL) | ||||
|  | @ -138,31 +138,32 @@ int option_ms_init(struct us_data *us) | |||
| { | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Option MS: option_ms_init called\n"); | ||||
| 	usb_stor_dbg(us, "Option MS: %s\n", "option_ms_init called"); | ||||
| 
 | ||||
| 	/* Additional test for vendor information via INQUIRY,
 | ||||
| 	 * because some vendor/product IDs are ambiguous | ||||
| 	 */ | ||||
| 	result = option_inquiry(us); | ||||
| 	if (result != 0) { | ||||
| 		US_DEBUGP("Option MS: vendor is not Option or not determinable," | ||||
| 			  " no action taken\n"); | ||||
| 		usb_stor_dbg(us, "Option MS: %s\n", | ||||
| 			     "vendor is not Option or not determinable, no action taken"); | ||||
| 		return 0; | ||||
| 	} else | ||||
| 		US_DEBUGP("Option MS: this is a genuine Option device," | ||||
| 			  " proceeding\n"); | ||||
| 		usb_stor_dbg(us, "Option MS: %s\n", | ||||
| 			     "this is a genuine Option device, proceeding"); | ||||
| 
 | ||||
| 	/* Force Modem mode */ | ||||
| 	if (option_zero_cd == ZCD_FORCE_MODEM) { | ||||
| 		US_DEBUGP("Option MS: %s", "Forcing Modem Mode\n"); | ||||
| 		usb_stor_dbg(us, "Option MS: %s\n", "Forcing Modem Mode"); | ||||
| 		result = option_rezero(us); | ||||
| 		if (result != USB_STOR_XFER_GOOD) | ||||
| 			US_DEBUGP("Option MS: Failed to switch to modem mode.\n"); | ||||
| 			usb_stor_dbg(us, "Option MS: %s\n", | ||||
| 				     "Failed to switch to modem mode"); | ||||
| 		return -EIO; | ||||
| 	} else if (option_zero_cd == ZCD_ALLOW_MS) { | ||||
| 		/* Allow Mass Storage mode (keep CD-Rom) */ | ||||
| 		US_DEBUGP("Option MS: %s", "Allowing Mass Storage Mode if device" | ||||
| 		          " requests it\n"); | ||||
| 		usb_stor_dbg(us, "Option MS: %s\n", | ||||
| 			     "Allowing Mass Storage Mode if device requests it"); | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
|  | @ -254,8 +254,8 @@ static int rts51x_bulk_transport(struct us_data *us, u8 lun, | |||
| 
 | ||||
| 	/* check bulk status */ | ||||
| 	if (bcs->Signature != cpu_to_le32(US_BULK_CS_SIGN)) { | ||||
| 		US_DEBUGP("Signature mismatch: got %08X, expecting %08X\n", | ||||
| 			  le32_to_cpu(bcs->Signature), US_BULK_CS_SIGN); | ||||
| 		usb_stor_dbg(us, "Signature mismatch: got %08X, expecting %08X\n", | ||||
| 			     le32_to_cpu(bcs->Signature), US_BULK_CS_SIGN); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -351,8 +351,8 @@ static int rts51x_get_max_lun(struct us_data *us) | |||
| 				      USB_RECIP_INTERFACE, | ||||
| 				      0, us->ifnum, us->iobuf, 1, 10 * HZ); | ||||
| 
 | ||||
| 	US_DEBUGP("GetMaxLUN command result is %d, data is %d\n", | ||||
| 		  result, us->iobuf[0]); | ||||
| 	usb_stor_dbg(us, "GetMaxLUN command result is %d, data is %d\n", | ||||
| 		     result, us->iobuf[0]); | ||||
| 
 | ||||
| 	/* if we have a successful request, return the result */ | ||||
| 	if (result > 0) | ||||
|  | @ -371,7 +371,7 @@ static int rts51x_read_mem(struct us_data *us, u16 addr, u8 *data, u16 len) | |||
| 	if (buf == NULL) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("%s, addr = 0x%x, len = %d\n", __func__, addr, len); | ||||
| 	usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); | ||||
| 
 | ||||
| 	cmnd[0] = 0xF0; | ||||
| 	cmnd[1] = 0x0D; | ||||
|  | @ -402,7 +402,7 @@ static int rts51x_write_mem(struct us_data *us, u16 addr, u8 *data, u16 len) | |||
| 	if (buf == NULL) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("%s, addr = 0x%x, len = %d\n", __func__, addr, len); | ||||
| 	usb_stor_dbg(us, "addr = 0x%x, len = %d\n", addr, len); | ||||
| 
 | ||||
| 	cmnd[0] = 0xF0; | ||||
| 	cmnd[1] = 0x0E; | ||||
|  | @ -431,7 +431,7 @@ static int rts51x_read_status(struct us_data *us, | |||
| 	if (buf == NULL) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("%s, lun = %d\n", __func__, lun); | ||||
| 	usb_stor_dbg(us, "lun = %d\n", lun); | ||||
| 
 | ||||
| 	cmnd[0] = 0xF0; | ||||
| 	cmnd[1] = 0x09; | ||||
|  | @ -458,7 +458,7 @@ static int rts51x_check_status(struct us_data *us, u8 lun) | |||
| 	if (retval != STATUS_SUCCESS) | ||||
| 		return -EIO; | ||||
| 
 | ||||
| 	US_DEBUGP("chip->status_len = %d\n", chip->status_len); | ||||
| 	usb_stor_dbg(us, "chip->status_len = %d\n", chip->status_len); | ||||
| 
 | ||||
| 	chip->status[lun].vid = ((u16) buf[0] << 8) | buf[1]; | ||||
| 	chip->status[lun].pid = ((u16) buf[2] << 8) | buf[3]; | ||||
|  | @ -509,7 +509,7 @@ static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len) | |||
| 	u8 cmnd[12] = {0}; | ||||
| 	u8 *buf; | ||||
| 
 | ||||
| 	US_DEBUGP("%s, addr = 0xfe47, len = %d\n", __FUNCTION__, len); | ||||
| 	usb_stor_dbg(us, "addr = 0xfe47, len = %d\n", len); | ||||
| 
 | ||||
| 	buf = kmemdup(data, len, GFP_NOIO); | ||||
| 	if (!buf) | ||||
|  | @ -549,7 +549,7 @@ static int do_config_autodelink(struct us_data *us, int enable, int force) | |||
| 		value &= ~0x03; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("In %s,set 0xfe47 to 0x%x\n", __func__, value); | ||||
| 	usb_stor_dbg(us, "set 0xfe47 to 0x%x\n", value); | ||||
| 
 | ||||
| 	/* retval = rts51x_write_mem(us, 0xFE47, &value, 1); */ | ||||
| 	retval = __do_config_autodelink(us, &value, 1); | ||||
|  | @ -565,8 +565,6 @@ static int config_autodelink_after_power_on(struct us_data *us) | |||
| 	int retval; | ||||
| 	u8 value; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	if (!CHK_AUTO_DELINK(chip)) | ||||
| 		return 0; | ||||
| 
 | ||||
|  | @ -624,8 +622,6 @@ static int config_autodelink_after_power_on(struct us_data *us) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -635,8 +631,6 @@ static int config_autodelink_before_power_down(struct us_data *us) | |||
| 	int retval; | ||||
| 	u8 value; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	if (!CHK_AUTO_DELINK(chip)) | ||||
| 		return 0; | ||||
| 
 | ||||
|  | @ -698,8 +692,6 @@ static int config_autodelink_before_power_down(struct us_data *us) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -709,23 +701,19 @@ static void fw5895_init(struct us_data *us) | |||
| 	int retval; | ||||
| 	u8 val; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	if ((PRODUCT_ID(chip) != 0x0158) || (FW_VERSION(chip) != 0x5895)) { | ||||
| 		US_DEBUGP("Not the specified device, return immediately!\n"); | ||||
| 		usb_stor_dbg(us, "Not the specified device, return immediately!\n"); | ||||
| 	} else { | ||||
| 		retval = rts51x_read_mem(us, 0xFD6F, &val, 1); | ||||
| 		if (retval == STATUS_SUCCESS && (val & 0x1F) == 0) { | ||||
| 			val = 0x1F; | ||||
| 			retval = rts51x_write_mem(us, 0xFD70, &val, 1); | ||||
| 			if (retval != STATUS_SUCCESS) | ||||
| 				US_DEBUGP("Write memory fail\n"); | ||||
| 				usb_stor_dbg(us, "Write memory fail\n"); | ||||
| 		} else { | ||||
| 			US_DEBUGP("Read memory fail, OR (val & 0x1F) != 0\n"); | ||||
| 			usb_stor_dbg(us, "Read memory fail, OR (val & 0x1F) != 0\n"); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| } | ||||
| 
 | ||||
| #ifdef CONFIG_REALTEK_AUTOPM | ||||
|  | @ -735,10 +723,8 @@ static void fw5895_set_mmc_wp(struct us_data *us) | |||
| 	int retval; | ||||
| 	u8 buf[13]; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	if ((PRODUCT_ID(chip) != 0x0158) || (FW_VERSION(chip) != 0x5895)) { | ||||
| 		US_DEBUGP("Not the specified device, return immediately!\n"); | ||||
| 		usb_stor_dbg(us, "Not the specified device, return immediately!\n"); | ||||
| 	} else { | ||||
| 		retval = rts51x_read_mem(us, 0xFD6F, buf, 1); | ||||
| 		if (retval == STATUS_SUCCESS && (buf[0] & 0x24) == 0x24) { | ||||
|  | @ -748,26 +734,24 @@ static void fw5895_set_mmc_wp(struct us_data *us) | |||
| 				buf[0] |= 0x04; | ||||
| 				retval = rts51x_write_mem(us, 0xFD70, buf, 1); | ||||
| 				if (retval != STATUS_SUCCESS) | ||||
| 					US_DEBUGP("Write memory fail\n"); | ||||
| 					usb_stor_dbg(us, "Write memory fail\n"); | ||||
| 			} else { | ||||
| 				US_DEBUGP("Read memory fail\n"); | ||||
| 				usb_stor_dbg(us, "Read memory fail\n"); | ||||
| 			} | ||||
| 		} else { | ||||
| 			US_DEBUGP("Read memory fail, OR (buf[0]&0x24)!=0x24\n"); | ||||
| 			usb_stor_dbg(us, "Read memory fail, OR (buf[0]&0x24)!=0x24\n"); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| } | ||||
| 
 | ||||
| static void rts51x_modi_suspend_timer(struct rts51x_chip *chip) | ||||
| { | ||||
| 	US_DEBUGP("%s: <---, state:%d\n", __func__, rts51x_get_stat(chip)); | ||||
| 	struct us_data *us = chip->us; | ||||
| 
 | ||||
| 	usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); | ||||
| 
 | ||||
| 	chip->timer_expires = jiffies + msecs_to_jiffies(1000*ss_delay); | ||||
| 	mod_timer(&chip->rts51x_suspend_timer, chip->timer_expires); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| } | ||||
| 
 | ||||
| static void rts51x_suspend_timer_fn(unsigned long data) | ||||
|  | @ -775,8 +759,6 @@ static void rts51x_suspend_timer_fn(unsigned long data) | |||
| 	struct rts51x_chip *chip = (struct rts51x_chip *)data; | ||||
| 	struct us_data *us = chip->us; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	switch (rts51x_get_stat(chip)) { | ||||
| 	case RTS51X_STAT_INIT: | ||||
| 	case RTS51X_STAT_RUN: | ||||
|  | @ -784,32 +766,25 @@ static void rts51x_suspend_timer_fn(unsigned long data) | |||
| 		break; | ||||
| 	case RTS51X_STAT_IDLE: | ||||
| 	case RTS51X_STAT_SS: | ||||
| 		US_DEBUGP("%s: RTS51X_STAT_SS, intf->pm_usage_cnt:%d," | ||||
| 			"power.usage:%d\n", __func__, | ||||
| 			atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 			atomic_read(&us->pusb_intf->dev.power.usage_count)); | ||||
| 		usb_stor_dbg(us, "RTS51X_STAT_SS, intf->pm_usage_cnt:%d, power.usage:%d\n", | ||||
| 			     atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 			     atomic_read(&us->pusb_intf->dev.power.usage_count)); | ||||
| 
 | ||||
| 		if (atomic_read(&us->pusb_intf->pm_usage_cnt) > 0) { | ||||
| 			US_DEBUGP("%s: Ready to enter SS state.\n", | ||||
| 				  __func__); | ||||
| 			usb_stor_dbg(us, "Ready to enter SS state\n"); | ||||
| 			rts51x_set_stat(chip, RTS51X_STAT_SS); | ||||
| 			/* ignore mass storage interface's children */ | ||||
| 			pm_suspend_ignore_children(&us->pusb_intf->dev, true); | ||||
| 			usb_autopm_put_interface_async(us->pusb_intf); | ||||
| 			US_DEBUGP("%s: RTS51X_STAT_SS 01," | ||||
| 				"intf->pm_usage_cnt:%d, power.usage:%d\n", | ||||
| 				__func__, | ||||
| 				atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 				atomic_read( | ||||
| 					&us->pusb_intf->dev.power.usage_count)); | ||||
| 			usb_stor_dbg(us, "RTS51X_STAT_SS 01, intf->pm_usage_cnt:%d, power.usage:%d\n", | ||||
| 				     atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 				     atomic_read(&us->pusb_intf->dev.power.usage_count)); | ||||
| 		} | ||||
| 		break; | ||||
| 	default: | ||||
| 		US_DEBUGP("%s: Unknonwn state !!!\n", __func__); | ||||
| 		usb_stor_dbg(us, "Unknown state !!!\n"); | ||||
| 		break; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| } | ||||
| 
 | ||||
| static inline int working_scsi(struct scsi_cmnd *srb) | ||||
|  | @ -834,24 +809,21 @@ static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	}; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	if (working_scsi(srb)) { | ||||
| 		US_DEBUGP("%s: working scsi, intf->pm_usage_cnt:%d," | ||||
| 			"power.usage:%d\n", __func__, | ||||
| 			atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 			atomic_read(&us->pusb_intf->dev.power.usage_count)); | ||||
| 		usb_stor_dbg(us, "working scsi, intf->pm_usage_cnt:%d, power.usage:%d\n", | ||||
| 			     atomic_read(&us->pusb_intf->pm_usage_cnt), | ||||
| 			     atomic_read(&us->pusb_intf->dev.power.usage_count)); | ||||
| 
 | ||||
| 		if (atomic_read(&us->pusb_intf->pm_usage_cnt) <= 0) { | ||||
| 			ret = usb_autopm_get_interface(us->pusb_intf); | ||||
| 			US_DEBUGP("%s: working scsi, ret=%d\n", __func__, ret); | ||||
| 			usb_stor_dbg(us, "working scsi, ret=%d\n", ret); | ||||
| 		} | ||||
| 		if (rts51x_get_stat(chip) != RTS51X_STAT_RUN) | ||||
| 			rts51x_set_stat(chip, RTS51X_STAT_RUN); | ||||
| 		chip->proto_handler_backup(srb, us); | ||||
| 	} else { | ||||
| 		if (rts51x_get_stat(chip) == RTS51X_STAT_SS) { | ||||
| 			US_DEBUGP("%s: NOT working scsi\n", __func__); | ||||
| 			usb_stor_dbg(us, "NOT working scsi\n"); | ||||
| 			if ((srb->cmnd[0] == TEST_UNIT_READY) && | ||||
| 			    (chip->pwr_state == US_SUSPEND)) { | ||||
| 				if (TST_LUN_READY(chip, srb->device->lun)) { | ||||
|  | @ -862,8 +834,7 @@ static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 					       media_not_present, | ||||
| 					       US_SENSE_SIZE); | ||||
| 				} | ||||
| 				US_DEBUGP("%s: TEST_UNIT_READY--->\n", | ||||
| 					  __func__); | ||||
| 				usb_stor_dbg(us, "TEST_UNIT_READY\n"); | ||||
| 				goto out; | ||||
| 			} | ||||
| 			if (srb->cmnd[0] == ALLOW_MEDIUM_REMOVAL) { | ||||
|  | @ -876,12 +847,11 @@ static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 				} else { | ||||
| 					srb->result = SAM_STAT_GOOD; | ||||
| 				} | ||||
| 				US_DEBUGP("%s: ALLOW_MEDIUM_REMOVAL--->\n", | ||||
| 					  __func__); | ||||
| 				usb_stor_dbg(us, "ALLOW_MEDIUM_REMOVAL\n"); | ||||
| 				goto out; | ||||
| 			} | ||||
| 		} else { | ||||
| 			US_DEBUGP("%s: NOT working scsi, not SS\n", __func__); | ||||
| 			usb_stor_dbg(us, "NOT working scsi, not SS\n"); | ||||
| 			chip->proto_handler_backup(srb, us); | ||||
| 			/* Check whether card is plugged in */ | ||||
| 			if (srb->cmnd[0] == TEST_UNIT_READY) { | ||||
|  | @ -901,11 +871,9 @@ static void rts51x_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		} | ||||
| 	} | ||||
| out: | ||||
| 	US_DEBUGP("%s: state:%d\n", __func__, rts51x_get_stat(chip)); | ||||
| 	usb_stor_dbg(us, "state:%d\n", rts51x_get_stat(chip)); | ||||
| 	if (rts51x_get_stat(chip) == RTS51X_STAT_RUN) | ||||
| 		rts51x_modi_suspend_timer(chip); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| } | ||||
| 
 | ||||
| static int realtek_cr_autosuspend_setup(struct us_data *us) | ||||
|  | @ -923,7 +891,7 @@ static int realtek_cr_autosuspend_setup(struct us_data *us) | |||
| 
 | ||||
| 	retval = rts51x_read_status(us, 0, buf, 16, &(chip->status_len)); | ||||
| 	if (retval != STATUS_SUCCESS) { | ||||
| 		US_DEBUGP("Read status fail\n"); | ||||
| 		usb_stor_dbg(us, "Read status fail\n"); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 	status = chip->status; | ||||
|  | @ -966,11 +934,13 @@ static int realtek_cr_autosuspend_setup(struct us_data *us) | |||
| static void realtek_cr_destructor(void *extra) | ||||
| { | ||||
| 	struct rts51x_chip *chip = (struct rts51x_chip *)extra; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 	struct us_data *us; | ||||
| 
 | ||||
| 	if (!chip) | ||||
| 		return; | ||||
| 
 | ||||
| 	us = chip->us; | ||||
| 
 | ||||
| #ifdef CONFIG_REALTEK_AUTOPM | ||||
| 	if (ss_en) { | ||||
| 		del_timer(&chip->rts51x_suspend_timer); | ||||
|  | @ -985,8 +955,6 @@ static int realtek_cr_suspend(struct usb_interface *iface, pm_message_t message) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	/* wait until no command is running */ | ||||
| 	mutex_lock(&us->dev_mutex); | ||||
| 
 | ||||
|  | @ -994,8 +962,6 @@ static int realtek_cr_suspend(struct usb_interface *iface, pm_message_t message) | |||
| 
 | ||||
| 	mutex_unlock(&us->dev_mutex); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -1003,13 +969,9 @@ static int realtek_cr_resume(struct usb_interface *iface) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: <---\n", __func__); | ||||
| 
 | ||||
| 	fw5895_init(us); | ||||
| 	config_autodelink_after_power_on(us); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: --->\n", __func__); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| #else | ||||
|  | @ -1030,7 +992,7 @@ static int init_realtek_cr(struct us_data *us) | |||
| 	us->extra_destructor = realtek_cr_destructor; | ||||
| 	us->max_lun = chip->max_lun = rts51x_get_max_lun(us); | ||||
| 
 | ||||
| 	US_DEBUGP("chip->max_lun = %d\n", chip->max_lun); | ||||
| 	usb_stor_dbg(us, "chip->max_lun = %d\n", chip->max_lun); | ||||
| 
 | ||||
| 	size = (chip->max_lun + 1) * sizeof(struct rts51x_status); | ||||
| 	chip->status = kzalloc(size, GFP_KERNEL); | ||||
|  | @ -1057,7 +1019,7 @@ static int init_realtek_cr(struct us_data *us) | |||
| 	} | ||||
| #endif | ||||
| 
 | ||||
| 	US_DEBUGP("chip->flag = 0x%x\n", chip->flag); | ||||
| 	usb_stor_dbg(us, "chip->flag = 0x%x\n", chip->flag); | ||||
| 
 | ||||
| 	(void)config_autodelink_after_power_on(us); | ||||
| 
 | ||||
|  | @ -1079,7 +1041,7 @@ static int realtek_cr_probe(struct usb_interface *intf, | |||
| 	struct us_data *us; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Probe Realtek Card Reader!\n"); | ||||
| 	dev_dbg(&intf->dev, "Probe Realtek Card Reader!\n"); | ||||
| 
 | ||||
| 	result = usb_stor_probe1(&us, intf, id, | ||||
| 				 (id - realtek_cr_ids) + | ||||
|  |  | |||
|  | @ -313,8 +313,6 @@ static int queuecommand_lck(struct scsi_cmnd *srb, | |||
| { | ||||
| 	struct us_data *us = host_to_us(srb->device->host); | ||||
| 
 | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 
 | ||||
| 	/* check for state-transition errors */ | ||||
| 	if (us->srb != NULL) { | ||||
| 		printk(KERN_ERR USB_STORAGE "Error in %s: us->srb = %p\n", | ||||
|  | @ -324,7 +322,7 @@ static int queuecommand_lck(struct scsi_cmnd *srb, | |||
| 
 | ||||
| 	/* fail the command if we are disconnecting */ | ||||
| 	if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { | ||||
| 		US_DEBUGP("Fail command during disconnect\n"); | ||||
| 		usb_stor_dbg(us, "Fail command during disconnect\n"); | ||||
| 		srb->result = DID_NO_CONNECT << 16; | ||||
| 		done(srb); | ||||
| 		return 0; | ||||
|  | @ -349,7 +347,7 @@ static int command_abort(struct scsi_cmnd *srb) | |||
| { | ||||
| 	struct us_data *us = host_to_us(srb->device->host); | ||||
| 
 | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 	usb_stor_dbg(us, "%s called\n", __func__); | ||||
| 
 | ||||
| 	/* us->srb together with the TIMED_OUT, RESETTING, and ABORTING
 | ||||
| 	 * bits are protected by the host lock. */ | ||||
|  | @ -358,7 +356,7 @@ static int command_abort(struct scsi_cmnd *srb) | |||
| 	/* Is this command still active? */ | ||||
| 	if (us->srb != srb) { | ||||
| 		scsi_unlock(us_to_host(us)); | ||||
| 		US_DEBUGP ("-- nothing to abort\n"); | ||||
| 		usb_stor_dbg(us, "-- nothing to abort\n"); | ||||
| 		return FAILED; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -386,7 +384,7 @@ static int device_reset(struct scsi_cmnd *srb) | |||
| 	struct us_data *us = host_to_us(srb->device->host); | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 	usb_stor_dbg(us, "%s called\n", __func__); | ||||
| 
 | ||||
| 	/* lock the device pointers and do the reset */ | ||||
| 	mutex_lock(&(us->dev_mutex)); | ||||
|  | @ -402,7 +400,8 @@ static int bus_reset(struct scsi_cmnd *srb) | |||
| 	struct us_data *us = host_to_us(srb->device->host); | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 	usb_stor_dbg(us, "%s called\n", __func__); | ||||
| 
 | ||||
| 	result = usb_stor_port_reset(us); | ||||
| 	return result < 0 ? FAILED : SUCCESS; | ||||
| } | ||||
|  |  | |||
|  | @ -105,8 +105,6 @@ static struct us_unusual_dev sddr09_unusual_dev_list[] = { | |||
| #define LSB_of(s) ((s)&0xFF) | ||||
| #define MSB_of(s) ((s)>>8) | ||||
| 
 | ||||
| /* #define US_DEBUGP printk */ | ||||
| 
 | ||||
| /*
 | ||||
|  * First some stuff that does not belong here: | ||||
|  * data on SmartMedia and other cards, completely | ||||
|  | @ -347,7 +345,7 @@ sddr09_test_unit_ready(struct us_data *us) { | |||
| 
 | ||||
| 	result = sddr09_send_scsi_command(us, command, 6); | ||||
| 
 | ||||
| 	US_DEBUGP("sddr09_test_unit_ready returns %d\n", result); | ||||
| 	usb_stor_dbg(us, "sddr09_test_unit_ready returns %d\n", result); | ||||
| 
 | ||||
| 	return result; | ||||
| } | ||||
|  | @ -423,8 +421,8 @@ sddr09_readX(struct us_data *us, int x, unsigned long fromaddress, | |||
| 	result = sddr09_send_scsi_command(us, command, 12); | ||||
| 
 | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("Result for send_control in sddr09_read2%d %d\n", | ||||
| 			  x, result); | ||||
| 		usb_stor_dbg(us, "Result for send_control in sddr09_read2%d %d\n", | ||||
| 			     x, result); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -432,8 +430,8 @@ sddr09_readX(struct us_data *us, int x, unsigned long fromaddress, | |||
| 				       buf, bulklen, use_sg, NULL); | ||||
| 
 | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Result for bulk_transfer in sddr09_read2%d %d\n", | ||||
| 			  x, result); | ||||
| 		usb_stor_dbg(us, "Result for bulk_transfer in sddr09_read2%d %d\n", | ||||
| 			     x, result); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 	return 0; | ||||
|  | @ -494,8 +492,7 @@ sddr09_read22(struct us_data *us, unsigned long fromaddress, | |||
| 	      int nr_of_pages, int pageshift, unsigned char *buf, int use_sg) { | ||||
| 
 | ||||
| 	int bulklen = (nr_of_pages << pageshift) + (nr_of_pages << CONTROL_SHIFT); | ||||
| 	US_DEBUGP("sddr09_read22: reading %d pages, %d bytes\n", | ||||
| 		  nr_of_pages, bulklen); | ||||
| 	usb_stor_dbg(us, "reading %d pages, %d bytes\n", nr_of_pages, bulklen); | ||||
| 	return sddr09_readX(us, 2, fromaddress, nr_of_pages, bulklen, | ||||
| 			    buf, use_sg); | ||||
| } | ||||
|  | @ -538,7 +535,7 @@ sddr09_erase(struct us_data *us, unsigned long Eaddress) { | |||
| 	unsigned char *command = us->iobuf; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("sddr09_erase: erase address %lu\n", Eaddress); | ||||
| 	usb_stor_dbg(us, "erase address %lu\n", Eaddress); | ||||
| 
 | ||||
| 	memset(command, 0, 12); | ||||
| 	command[0] = 0xEA; | ||||
|  | @ -551,8 +548,8 @@ sddr09_erase(struct us_data *us, unsigned long Eaddress) { | |||
| 	result = sddr09_send_scsi_command(us, command, 12); | ||||
| 
 | ||||
| 	if (result) | ||||
| 		US_DEBUGP("Result for send_control in sddr09_erase %d\n", | ||||
| 			  result); | ||||
| 		usb_stor_dbg(us, "Result for send_control in sddr09_erase %d\n", | ||||
| 			     result); | ||||
| 
 | ||||
| 	return result; | ||||
| } | ||||
|  | @ -609,8 +606,8 @@ sddr09_writeX(struct us_data *us, | |||
| 	result = sddr09_send_scsi_command(us, command, 12); | ||||
| 
 | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("Result for send_control in sddr09_writeX %d\n", | ||||
| 			  result); | ||||
| 		usb_stor_dbg(us, "Result for send_control in sddr09_writeX %d\n", | ||||
| 			     result); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -618,8 +615,8 @@ sddr09_writeX(struct us_data *us, | |||
| 				       buf, bulklen, use_sg, NULL); | ||||
| 
 | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Result for bulk_transfer in sddr09_writeX %d\n", | ||||
| 			  result); | ||||
| 		usb_stor_dbg(us, "Result for bulk_transfer in sddr09_writeX %d\n", | ||||
| 			     result); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 	return 0; | ||||
|  | @ -687,8 +684,8 @@ sddr09_read_sg_test_only(struct us_data *us) { | |||
| 	result = sddr09_send_scsi_command(us, command, 4*nsg+3); | ||||
| 
 | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("Result for send_control in sddr09_read_sg %d\n", | ||||
| 			  result); | ||||
| 		usb_stor_dbg(us, "Result for send_control in sddr09_read_sg %d\n", | ||||
| 			     result); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -700,8 +697,8 @@ sddr09_read_sg_test_only(struct us_data *us) { | |||
| 				       buf, bulklen, NULL); | ||||
| 	kfree(buf); | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("Result for bulk_transfer in sddr09_read_sg %d\n", | ||||
| 			  result); | ||||
| 		usb_stor_dbg(us, "Result for bulk_transfer in sddr09_read_sg %d\n", | ||||
| 			     result); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -727,7 +724,7 @@ sddr09_read_status(struct us_data *us, unsigned char *status) { | |||
| 	unsigned char *data = us->iobuf; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Reading status...\n"); | ||||
| 	usb_stor_dbg(us, "Reading status...\n"); | ||||
| 
 | ||||
| 	memset(command, 0, 12); | ||||
| 	command[0] = 0xEC; | ||||
|  | @ -789,8 +786,8 @@ sddr09_read_data(struct us_data *us, | |||
| 
 | ||||
| 		/* Not overflowing capacity? */ | ||||
| 		if (lba >= maxlba) { | ||||
| 			US_DEBUGP("Error: Requested lba %u exceeds " | ||||
| 				  "maximum %u\n", lba, maxlba); | ||||
| 			usb_stor_dbg(us, "Error: Requested lba %u exceeds maximum %u\n", | ||||
| 				     lba, maxlba); | ||||
| 			result = -EIO; | ||||
| 			break; | ||||
| 		} | ||||
|  | @ -800,8 +797,8 @@ sddr09_read_data(struct us_data *us, | |||
| 
 | ||||
| 		if (pba == UNDEF) {	/* this lba was never written */ | ||||
| 
 | ||||
| 			US_DEBUGP("Read %d zero pages (LBA %d) page %d\n", | ||||
| 				  pages, lba, page); | ||||
| 			usb_stor_dbg(us, "Read %d zero pages (LBA %d) page %d\n", | ||||
| 				     pages, lba, page); | ||||
| 
 | ||||
| 			/* This is not really an error. It just means
 | ||||
| 			   that the block has never been written. | ||||
|  | @ -811,9 +808,8 @@ sddr09_read_data(struct us_data *us, | |||
| 			memset(buffer, 0, len); | ||||
| 
 | ||||
| 		} else { | ||||
| 			US_DEBUGP("Read %d pages, from PBA %d" | ||||
| 				  " (LBA %d) page %d\n", | ||||
| 				  pages, pba, lba, page); | ||||
| 			usb_stor_dbg(us, "Read %d pages, from PBA %d (LBA %d) page %d\n", | ||||
| 				     pages, pba, lba, page); | ||||
| 
 | ||||
| 			address = ((pba << info->blockshift) + page) <<  | ||||
| 				info->pageshift; | ||||
|  | @ -916,14 +912,14 @@ sddr09_write_lba(struct us_data *us, unsigned int lba, | |||
| 		cptr = bptr + info->pagesize; | ||||
| 		nand_compute_ecc(bptr, ecc); | ||||
| 		if (!nand_compare_ecc(cptr+13, ecc)) { | ||||
| 			US_DEBUGP("Warning: bad ecc in page %d- of pba %d\n", | ||||
| 				  i, pba); | ||||
| 			usb_stor_dbg(us, "Warning: bad ecc in page %d- of pba %d\n", | ||||
| 				     i, pba); | ||||
| 			nand_store_ecc(cptr+13, ecc); | ||||
| 		} | ||||
| 		nand_compute_ecc(bptr+(info->pagesize / 2), ecc); | ||||
| 		if (!nand_compare_ecc(cptr+8, ecc)) { | ||||
| 			US_DEBUGP("Warning: bad ecc in page %d+ of pba %d\n", | ||||
| 				  i, pba); | ||||
| 			usb_stor_dbg(us, "Warning: bad ecc in page %d+ of pba %d\n", | ||||
| 				     i, pba); | ||||
| 			nand_store_ecc(cptr+8, ecc); | ||||
| 		} | ||||
| 		cptr[6] = cptr[11] = MSB_of(lbap); | ||||
|  | @ -943,22 +939,21 @@ sddr09_write_lba(struct us_data *us, unsigned int lba, | |||
| 		nand_store_ecc(cptr+8, ecc); | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Rewrite PBA %d (LBA %d)\n", pba, lba); | ||||
| 	usb_stor_dbg(us, "Rewrite PBA %d (LBA %d)\n", pba, lba); | ||||
| 
 | ||||
| 	result = sddr09_write_inplace(us, address>>1, info->blocksize, | ||||
| 				      info->pageshift, blockbuffer, 0); | ||||
| 
 | ||||
| 	US_DEBUGP("sddr09_write_inplace returns %d\n", result); | ||||
| 	usb_stor_dbg(us, "sddr09_write_inplace returns %d\n", result); | ||||
| 
 | ||||
| #if 0 | ||||
| 	{ | ||||
| 		unsigned char status = 0; | ||||
| 		int result2 = sddr09_read_status(us, &status); | ||||
| 		if (result2) | ||||
| 			US_DEBUGP("sddr09_write_inplace: cannot read status\n"); | ||||
| 			usb_stor_dbg(us, "cannot read status\n"); | ||||
| 		else if (status != 0xc0) | ||||
| 			US_DEBUGP("sddr09_write_inplace: status after write: 0x%x\n", | ||||
| 				  status); | ||||
| 			usb_stor_dbg(us, "status after write: 0x%x\n", status); | ||||
| 	} | ||||
| #endif | ||||
| 
 | ||||
|  | @ -1031,8 +1026,8 @@ sddr09_write_data(struct us_data *us, | |||
| 
 | ||||
| 		/* Not overflowing capacity? */ | ||||
| 		if (lba >= maxlba) { | ||||
| 			US_DEBUGP("Error: Requested lba %u exceeds " | ||||
| 				  "maximum %u\n", lba, maxlba); | ||||
| 			usb_stor_dbg(us, "Error: Requested lba %u exceeds maximum %u\n", | ||||
| 				     lba, maxlba); | ||||
| 			result = -EIO; | ||||
| 			break; | ||||
| 		} | ||||
|  | @ -1064,8 +1059,8 @@ sddr09_read_control(struct us_data *us, | |||
| 		unsigned char *content, | ||||
| 		int use_sg) { | ||||
| 
 | ||||
| 	US_DEBUGP("Read control address %lu, blocks %d\n", | ||||
| 		address, blocks); | ||||
| 	usb_stor_dbg(us, "Read control address %lu, blocks %d\n", | ||||
| 		     address, blocks); | ||||
| 
 | ||||
| 	return sddr09_read21(us, address, blocks, | ||||
| 			     CONTROL_SHIFT, content, use_sg); | ||||
|  | @ -1111,21 +1106,21 @@ sddr09_get_wp(struct us_data *us, struct sddr09_card_info *info) { | |||
| 
 | ||||
| 	result = sddr09_read_status(us, &status); | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("sddr09_get_wp: read_status fails\n"); | ||||
| 		usb_stor_dbg(us, "read_status fails\n"); | ||||
| 		return result; | ||||
| 	} | ||||
| 	US_DEBUGP("sddr09_get_wp: status 0x%02X", status); | ||||
| 	usb_stor_dbg(us, "status 0x%02X", status); | ||||
| 	if ((status & 0x80) == 0) { | ||||
| 		info->flags |= SDDR09_WP;	/* write protected */ | ||||
| 		US_DEBUGP(" WP"); | ||||
| 		US_DEBUGPX(" WP"); | ||||
| 	} | ||||
| 	if (status & 0x40) | ||||
| 		US_DEBUGP(" Ready"); | ||||
| 		US_DEBUGPX(" Ready"); | ||||
| 	if (status & LUNBITS) | ||||
| 		US_DEBUGP(" Suspended"); | ||||
| 		US_DEBUGPX(" Suspended"); | ||||
| 	if (status & 0x1) | ||||
| 		US_DEBUGP(" Error"); | ||||
| 	US_DEBUGP("\n"); | ||||
| 		US_DEBUGPX(" Error"); | ||||
| 	US_DEBUGPX("\n"); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | @ -1154,12 +1149,12 @@ sddr09_get_cardinfo(struct us_data *us, unsigned char flags) { | |||
| 	char blurbtxt[256]; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("Reading capacity...\n"); | ||||
| 	usb_stor_dbg(us, "Reading capacity...\n"); | ||||
| 
 | ||||
| 	result = sddr09_read_deviceID(us, deviceID); | ||||
| 
 | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("Result of read_deviceID is %d\n", result); | ||||
| 		usb_stor_dbg(us, "Result of read_deviceID is %d\n", result); | ||||
| 		printk(KERN_WARNING "sddr09: could not read card info\n"); | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | @ -1392,7 +1387,7 @@ sddr09_read_map(struct us_data *us) { | |||
| 		lbact += ct; | ||||
| 	} | ||||
| 	info->lbact = lbact; | ||||
| 	US_DEBUGP("Found %d LBA's\n", lbact); | ||||
| 	usb_stor_dbg(us, "Found %d LBA's\n", lbact); | ||||
| 	result = 0; | ||||
| 
 | ||||
|  done: | ||||
|  | @ -1423,18 +1418,18 @@ sddr09_common_init(struct us_data *us) { | |||
| 
 | ||||
| 	/* set the configuration -- STALL is an acceptable response here */ | ||||
| 	if (us->pusb_dev->actconfig->desc.bConfigurationValue != 1) { | ||||
| 		US_DEBUGP("active config #%d != 1 ??\n", us->pusb_dev | ||||
| 				->actconfig->desc.bConfigurationValue); | ||||
| 		usb_stor_dbg(us, "active config #%d != 1 ??\n", | ||||
| 			     us->pusb_dev->actconfig->desc.bConfigurationValue); | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	result = usb_reset_configuration(us->pusb_dev); | ||||
| 	US_DEBUGP("Result of usb_reset_configuration is %d\n", result); | ||||
| 	usb_stor_dbg(us, "Result of usb_reset_configuration is %d\n", result); | ||||
| 	if (result == -EPIPE) { | ||||
| 		US_DEBUGP("-- stall on control interface\n"); | ||||
| 		usb_stor_dbg(us, "-- stall on control interface\n"); | ||||
| 	} else if (result != 0) { | ||||
| 		/* it's not a stall, but another error -- time to bail */ | ||||
| 		US_DEBUGP("-- Unknown error.  Rejecting device\n"); | ||||
| 		usb_stor_dbg(us, "-- Unknown error.  Rejecting device\n"); | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1464,20 +1459,20 @@ usb_stor_sddr09_dpcm_init(struct us_data *us) { | |||
| 
 | ||||
| 	result = sddr09_send_command(us, 0x01, USB_DIR_IN, data, 2); | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("sddr09_init: send_command fails\n"); | ||||
| 		usb_stor_dbg(us, "send_command fails\n"); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("SDDR09init: %02X %02X\n", data[0], data[1]); | ||||
| 	usb_stor_dbg(us, "%02X %02X\n", data[0], data[1]); | ||||
| 	// get 07 02
 | ||||
| 
 | ||||
| 	result = sddr09_send_command(us, 0x08, USB_DIR_IN, data, 2); | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("sddr09_init: 2nd send_command fails\n"); | ||||
| 		usb_stor_dbg(us, "2nd send_command fails\n"); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("SDDR09init: %02X %02X\n", data[0], data[1]); | ||||
| 	usb_stor_dbg(us, "%02X %02X\n", data[0], data[1]); | ||||
| 	// get 07 00
 | ||||
| 
 | ||||
| 	result = sddr09_request_sense(us, data, 18); | ||||
|  | @ -1507,7 +1502,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| { | ||||
| 	int ret; | ||||
| 
 | ||||
| 	US_DEBUGP("dpcm_transport: LUN=%d\n", srb->device->lun); | ||||
| 	usb_stor_dbg(us, "LUN=%d\n", srb->device->lun); | ||||
| 
 | ||||
| 	switch (srb->device->lun) { | ||||
| 	case 0: | ||||
|  | @ -1533,8 +1528,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		break; | ||||
| 
 | ||||
| 	default: | ||||
| 		US_DEBUGP("dpcm_transport: Invalid LUN %d\n", | ||||
| 				srb->device->lun); | ||||
| 		usb_stor_dbg(us, "Invalid LUN %d\n", srb->device->lun); | ||||
| 		ret = USB_STOR_TRANSPORT_ERROR; | ||||
| 		break; | ||||
| 	} | ||||
|  | @ -1640,8 +1634,8 @@ static int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		   or for all pages. */ | ||||
| 		/* %% We should check DBD %% */ | ||||
| 		if (modepage == 0x01 || modepage == 0x3F) { | ||||
| 			US_DEBUGP("SDDR09: Dummy up request for " | ||||
| 				  "mode page 0x%x\n", modepage); | ||||
| 			usb_stor_dbg(us, "Dummy up request for mode page 0x%x\n", | ||||
| 				     modepage); | ||||
| 
 | ||||
| 			memcpy(ptr, mode_page_01, sizeof(mode_page_01)); | ||||
| 			((__be16*)ptr)[0] = cpu_to_be16(sizeof(mode_page_01) - 2); | ||||
|  | @ -1667,8 +1661,8 @@ static int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		page |= short_pack(srb->cmnd[5], srb->cmnd[4]); | ||||
| 		pages = short_pack(srb->cmnd[8], srb->cmnd[7]); | ||||
| 
 | ||||
| 		US_DEBUGP("READ_10: read page %d pagect %d\n", | ||||
| 			  page, pages); | ||||
| 		usb_stor_dbg(us, "READ_10: read page %d pagect %d\n", | ||||
| 			     page, pages); | ||||
| 
 | ||||
| 		result = sddr09_read_data(us, page, pages); | ||||
| 		return (result == 0 ? USB_STOR_TRANSPORT_GOOD : | ||||
|  | @ -1682,8 +1676,8 @@ static int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		page |= short_pack(srb->cmnd[5], srb->cmnd[4]); | ||||
| 		pages = short_pack(srb->cmnd[8], srb->cmnd[7]); | ||||
| 
 | ||||
| 		US_DEBUGP("WRITE_10: write page %d pagect %d\n", | ||||
| 			  page, pages); | ||||
| 		usb_stor_dbg(us, "WRITE_10: write page %d pagect %d\n", | ||||
| 			     page, pages); | ||||
| 
 | ||||
| 		result = sddr09_write_data(us, page, pages); | ||||
| 		return (result == 0 ? USB_STOR_TRANSPORT_GOOD : | ||||
|  | @ -1710,12 +1704,12 @@ static int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	for (i=0; i<12; i++) | ||||
| 		sprintf(ptr+strlen(ptr), "%02X ", srb->cmnd[i]); | ||||
| 
 | ||||
| 	US_DEBUGP("SDDR09: Send control for command %s\n", ptr); | ||||
| 	usb_stor_dbg(us, "Send control for command %s\n", ptr); | ||||
| 
 | ||||
| 	result = sddr09_send_scsi_command(us, srb->cmnd, 12); | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("sddr09_transport: sddr09_send_scsi_command " | ||||
| 			  "returns %d\n", result); | ||||
| 		usb_stor_dbg(us, "sddr09_send_scsi_command returns %d\n", | ||||
| 			     result); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1727,10 +1721,10 @@ static int sddr09_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		unsigned int pipe = (srb->sc_data_direction == DMA_TO_DEVICE) | ||||
| 				? us->send_bulk_pipe : us->recv_bulk_pipe; | ||||
| 
 | ||||
| 		US_DEBUGP("SDDR09: %s %d bytes\n", | ||||
| 			  (srb->sc_data_direction == DMA_TO_DEVICE) ? | ||||
| 			  "sending" : "receiving", | ||||
| 			  scsi_bufflen(srb)); | ||||
| 		usb_stor_dbg(us, "%s %d bytes\n", | ||||
| 			     (srb->sc_data_direction == DMA_TO_DEVICE) ? | ||||
| 			     "sending" : "receiving", | ||||
| 			     scsi_bufflen(srb)); | ||||
| 
 | ||||
| 		result = usb_stor_bulk_srb(us, pipe, srb); | ||||
| 
 | ||||
|  |  | |||
|  | @ -145,8 +145,7 @@ static int sddr55_status(struct us_data *us) | |||
| 	result = sddr55_bulk_transport(us, | ||||
| 		DMA_TO_DEVICE, command, 8); | ||||
| 
 | ||||
| 	US_DEBUGP("Result for send_command in status %d\n", | ||||
| 		result); | ||||
| 	usb_stor_dbg(us, "Result for send_command in status %d\n", result); | ||||
| 
 | ||||
| 	if (result != USB_STOR_XFER_GOOD) { | ||||
| 		set_sense_info (4, 0, 0);	/* hardware error */ | ||||
|  | @ -236,9 +235,8 @@ static int sddr55_read_data(struct us_data *us, | |||
| 				info->blocksize - page); | ||||
| 		len = pages << info->pageshift; | ||||
| 
 | ||||
| 		US_DEBUGP("Read %02X pages, from PBA %04X" | ||||
| 			" (LBA %04X) page %02X\n", | ||||
| 			pages, pba, lba, page); | ||||
| 		usb_stor_dbg(us, "Read %02X pages, from PBA %04X (LBA %04X) page %02X\n", | ||||
| 			     pages, pba, lba, page); | ||||
| 
 | ||||
| 		if (pba == NOT_ALLOCATED) { | ||||
| 			/* no pba for this lba, fill with zeroes */ | ||||
|  | @ -261,8 +259,8 @@ static int sddr55_read_data(struct us_data *us, | |||
| 			result = sddr55_bulk_transport(us, | ||||
| 				DMA_TO_DEVICE, command, 8); | ||||
| 
 | ||||
| 			US_DEBUGP("Result for send_command in read_data %d\n", | ||||
| 				result); | ||||
| 			usb_stor_dbg(us, "Result for send_command in read_data %d\n", | ||||
| 				     result); | ||||
| 
 | ||||
| 			if (result != USB_STOR_XFER_GOOD) { | ||||
| 				result = USB_STOR_TRANSPORT_ERROR; | ||||
|  | @ -368,9 +366,8 @@ static int sddr55_write_data(struct us_data *us, | |||
| 		usb_stor_access_xfer_buf(buffer, len, us->srb, | ||||
| 				&sg, &offset, FROM_XFER_BUF); | ||||
| 
 | ||||
| 		US_DEBUGP("Write %02X pages, to PBA %04X" | ||||
| 			" (LBA %04X) page %02X\n", | ||||
| 			pages, pba, lba, page); | ||||
| 		usb_stor_dbg(us, "Write %02X pages, to PBA %04X (LBA %04X) page %02X\n", | ||||
| 			     pages, pba, lba, page); | ||||
| 			 | ||||
| 		command[4] = 0; | ||||
| 
 | ||||
|  | @ -384,7 +381,7 @@ static int sddr55_write_data(struct us_data *us, | |||
| 			/* set pba to first block in zone lba is in */ | ||||
| 			pba = (lba / 1000) * 1024; | ||||
| 
 | ||||
| 			US_DEBUGP("No PBA for LBA %04X\n",lba); | ||||
| 			usb_stor_dbg(us, "No PBA for LBA %04X\n", lba); | ||||
| 
 | ||||
| 			if (max_pba > 1024) | ||||
| 				max_pba = 1024; | ||||
|  | @ -407,14 +404,15 @@ static int sddr55_write_data(struct us_data *us, | |||
| 
 | ||||
| 			if (pba == -1) { | ||||
| 				/* oh dear */ | ||||
| 				US_DEBUGP("Couldn't find unallocated block\n"); | ||||
| 				usb_stor_dbg(us, "Couldn't find unallocated block\n"); | ||||
| 
 | ||||
| 				set_sense_info (3, 0x31, 0);	/* medium error */ | ||||
| 				result = USB_STOR_TRANSPORT_FAILED; | ||||
| 				goto leave; | ||||
| 			} | ||||
| 
 | ||||
| 			US_DEBUGP("Allocating PBA %04X for LBA %04X\n", pba, lba); | ||||
| 			usb_stor_dbg(us, "Allocating PBA %04X for LBA %04X\n", | ||||
| 				     pba, lba); | ||||
| 
 | ||||
| 			/* set writing to unallocated block flag */ | ||||
| 			command[4] = 0x40; | ||||
|  | @ -439,8 +437,8 @@ static int sddr55_write_data(struct us_data *us, | |||
| 			DMA_TO_DEVICE, command, 8); | ||||
| 
 | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP("Result for send_command in write_data %d\n", | ||||
| 			result); | ||||
| 			usb_stor_dbg(us, "Result for send_command in write_data %d\n", | ||||
| 				     result); | ||||
| 
 | ||||
| 			/* set_sense_info is superfluous here? */ | ||||
| 			set_sense_info (3, 0x3, 0);/* peripheral write error */ | ||||
|  | @ -453,8 +451,8 @@ static int sddr55_write_data(struct us_data *us, | |||
| 			DMA_TO_DEVICE, buffer, len); | ||||
| 
 | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP("Result for send_data in write_data %d\n", | ||||
| 				  result); | ||||
| 			usb_stor_dbg(us, "Result for send_data in write_data %d\n", | ||||
| 				     result); | ||||
| 
 | ||||
| 			/* set_sense_info is superfluous here? */ | ||||
| 			set_sense_info (3, 0x3, 0);/* peripheral write error */ | ||||
|  | @ -466,8 +464,8 @@ static int sddr55_write_data(struct us_data *us, | |||
| 		result = sddr55_bulk_transport(us, DMA_FROM_DEVICE, status, 6); | ||||
| 
 | ||||
| 		if (result != USB_STOR_XFER_GOOD) { | ||||
| 			US_DEBUGP("Result for get_status in write_data %d\n", | ||||
| 				  result); | ||||
| 			usb_stor_dbg(us, "Result for get_status in write_data %d\n", | ||||
| 				     result); | ||||
| 
 | ||||
| 			/* set_sense_info is superfluous here? */ | ||||
| 			set_sense_info (3, 0x3, 0);/* peripheral write error */ | ||||
|  | @ -487,8 +485,8 @@ static int sddr55_write_data(struct us_data *us, | |||
| 			goto leave; | ||||
| 		} | ||||
| 
 | ||||
| 		US_DEBUGP("Updating maps for LBA %04X: old PBA %04X, new PBA %04X\n", | ||||
| 			lba, pba, new_pba); | ||||
| 		usb_stor_dbg(us, "Updating maps for LBA %04X: old PBA %04X, new PBA %04X\n", | ||||
| 			     lba, pba, new_pba); | ||||
| 
 | ||||
| 		/* update the lba<->pba maps, note new_pba might be the same as pba */ | ||||
| 		info->lba_to_pba[lba] = new_pba; | ||||
|  | @ -531,8 +529,8 @@ static int sddr55_read_deviceID(struct us_data *us, | |||
| 	command[7] = 0x84; | ||||
| 	result = sddr55_bulk_transport(us, DMA_TO_DEVICE, command, 8); | ||||
| 
 | ||||
| 	US_DEBUGP("Result of send_control for device ID is %d\n", | ||||
| 		result); | ||||
| 	usb_stor_dbg(us, "Result of send_control for device ID is %d\n", | ||||
| 		     result); | ||||
| 
 | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
|  | @ -568,20 +566,19 @@ static unsigned long sddr55_get_capacity(struct us_data *us) { | |||
| 	int result; | ||||
| 	struct sddr55_card_info *info = (struct sddr55_card_info *)us->extra; | ||||
| 
 | ||||
| 	US_DEBUGP("Reading capacity...\n"); | ||||
| 	usb_stor_dbg(us, "Reading capacity...\n"); | ||||
| 
 | ||||
| 	result = sddr55_read_deviceID(us, | ||||
| 		&manufacturerID, | ||||
| 		&deviceID); | ||||
| 
 | ||||
| 	US_DEBUGP("Result of read_deviceID is %d\n", | ||||
| 		result); | ||||
| 	usb_stor_dbg(us, "Result of read_deviceID is %d\n", result); | ||||
| 
 | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	US_DEBUGP("Device ID = %02X\n", deviceID); | ||||
| 	US_DEBUGP("Manuf  ID = %02X\n", manufacturerID); | ||||
| 	usb_stor_dbg(us, "Device ID = %02X\n", deviceID); | ||||
| 	usb_stor_dbg(us, "Manuf  ID = %02X\n", manufacturerID); | ||||
| 
 | ||||
| 	info->pageshift = 9; | ||||
| 	info->smallpageshift = 0; | ||||
|  | @ -753,7 +750,7 @@ static int sddr55_read_map(struct us_data *us) { | |||
| 		} | ||||
| 
 | ||||
| 		if (lba<0x10 || (lba>=0x3E0 && lba<0x3EF)) | ||||
| 			US_DEBUGP("LBA %04X <-> PBA %04X\n", lba, i); | ||||
| 			usb_stor_dbg(us, "LBA %04X <-> PBA %04X\n", lba, i); | ||||
| 
 | ||||
| 		info->lba_to_pba[lba + zone * 1000] = i; | ||||
| 	} | ||||
|  | @ -808,7 +805,10 @@ static int sddr55_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	info = (struct sddr55_card_info *)(us->extra); | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == REQUEST_SENSE) { | ||||
| 		US_DEBUGP("SDDR55: request sense %02x/%02x/%02x\n", info->sense_data[2], info->sense_data[12], info->sense_data[13]); | ||||
| 		usb_stor_dbg(us, "request sense %02x/%02x/%02x\n", | ||||
| 			     info->sense_data[2], | ||||
| 			     info->sense_data[12], | ||||
| 			     info->sense_data[13]); | ||||
| 
 | ||||
| 		memcpy (ptr, info->sense_data, sizeof info->sense_data); | ||||
| 		ptr[0] = 0x70; | ||||
|  | @ -892,13 +892,11 @@ static int sddr55_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		usb_stor_set_xfer_buf(ptr, sizeof(mode_page_01), srb); | ||||
| 
 | ||||
| 		if ( (srb->cmnd[2] & 0x3F) == 0x01 ) { | ||||
| 			US_DEBUGP( | ||||
| 			  "SDDR55: Dummy up request for mode page 1\n"); | ||||
| 			usb_stor_dbg(us, "Dummy up request for mode page 1\n"); | ||||
| 			return USB_STOR_TRANSPORT_GOOD; | ||||
| 
 | ||||
| 		} else if ( (srb->cmnd[2] & 0x3F) == 0x3F ) { | ||||
| 			US_DEBUGP( | ||||
| 			  "SDDR55: Dummy up request for all mode pages\n"); | ||||
| 			usb_stor_dbg(us, "Dummy up request for all mode pages\n"); | ||||
| 			return USB_STOR_TRANSPORT_GOOD; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -908,10 +906,8 @@ static int sddr55_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 	if (srb->cmnd[0] == ALLOW_MEDIUM_REMOVAL) { | ||||
| 
 | ||||
| 		US_DEBUGP( | ||||
| 		  "SDDR55: %s medium removal. Not that I can do" | ||||
| 		  " anything about it...\n", | ||||
| 		  (srb->cmnd[4]&0x03) ? "Prevent" : "Allow"); | ||||
| 		usb_stor_dbg(us, "%s medium removal. Not that I can do anything about it...\n", | ||||
| 			     (srb->cmnd[4]&0x03) ? "Prevent" : "Allow"); | ||||
| 
 | ||||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
| 
 | ||||
|  | @ -935,8 +931,8 @@ static int sddr55_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		if (lba >= info->max_log_blks) { | ||||
| 
 | ||||
| 			US_DEBUGP("Error: Requested LBA %04X exceeds maximum " | ||||
| 			  "block %04X\n", lba, info->max_log_blks-1); | ||||
| 			usb_stor_dbg(us, "Error: Requested LBA %04X exceeds maximum block %04X\n", | ||||
| 				     lba, info->max_log_blks - 1); | ||||
| 
 | ||||
| 			set_sense_info (5, 0x24, 0);	/* invalid field in command */ | ||||
| 
 | ||||
|  | @ -946,15 +942,13 @@ static int sddr55_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		pba = info->lba_to_pba[lba]; | ||||
| 
 | ||||
| 		if (srb->cmnd[0] == WRITE_10) { | ||||
| 			US_DEBUGP("WRITE_10: write block %04X (LBA %04X) page %01X" | ||||
| 				" pages %d\n", | ||||
| 				pba, lba, page, pages); | ||||
| 			usb_stor_dbg(us, "WRITE_10: write block %04X (LBA %04X) page %01X pages %d\n", | ||||
| 				     pba, lba, page, pages); | ||||
| 
 | ||||
| 			return sddr55_write_data(us, lba, page, pages); | ||||
| 		} else { | ||||
| 			US_DEBUGP("READ_10: read block %04X (LBA %04X) page %01X" | ||||
| 				" pages %d\n", | ||||
| 				pba, lba, page, pages); | ||||
| 			usb_stor_dbg(us, "READ_10: read block %04X (LBA %04X) page %01X pages %d\n", | ||||
| 				     pba, lba, page, pages); | ||||
| 
 | ||||
| 			return sddr55_read_data(us, lba, page, pages); | ||||
| 		} | ||||
|  |  | |||
|  | @ -271,7 +271,7 @@ static int usbat_bulk_read(struct us_data *us, | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("usbat_bulk_read: len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_sg(us, us->recv_bulk_pipe, buf, len, use_sg, NULL); | ||||
| } | ||||
| 
 | ||||
|  | @ -286,7 +286,7 @@ static int usbat_bulk_write(struct us_data *us, | |||
| 	if (len == 0) | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	US_DEBUGP("usbat_bulk_write:  len = %d\n", len); | ||||
| 	usb_stor_dbg(us, "len = %d\n", len); | ||||
| 	return usb_stor_bulk_transfer_sg(us, us->send_bulk_pipe, buf, len, use_sg, NULL); | ||||
| } | ||||
| 
 | ||||
|  | @ -312,7 +312,7 @@ static int usbat_get_status(struct us_data *us, unsigned char *status) | |||
| 	int rc; | ||||
| 	rc = usbat_read(us, USBAT_ATA, USBAT_ATA_STATUS, status); | ||||
| 
 | ||||
| 	US_DEBUGP("usbat_get_status: 0x%02X\n", (unsigned short) (*status)); | ||||
| 	usb_stor_dbg(us, "0x%02X\n", *status); | ||||
| 	return rc; | ||||
| } | ||||
| 
 | ||||
|  | @ -425,7 +425,7 @@ static int usbat_wait_not_busy(struct us_data *us, int minutes) | |||
| 			return USB_STOR_TRANSPORT_FAILED; | ||||
| 
 | ||||
| 		if ((*status & 0x80)==0x00) { /* not busy */ | ||||
| 			US_DEBUGP("Waited not busy for %d steps\n", i); | ||||
| 			usb_stor_dbg(us, "Waited not busy for %d steps\n", i); | ||||
| 			return USB_STOR_TRANSPORT_GOOD; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -439,8 +439,8 @@ static int usbat_wait_not_busy(struct us_data *us, int minutes) | |||
| 			msleep(1000); /* X minutes */ | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Waited not busy for %d minutes, timing out.\n", | ||||
| 		minutes); | ||||
| 	usb_stor_dbg(us, "Waited not busy for %d minutes, timing out\n", | ||||
| 		     minutes); | ||||
| 	return USB_STOR_TRANSPORT_FAILED; | ||||
| } | ||||
| 
 | ||||
|  | @ -657,8 +657,9 @@ static int usbat_hp8200e_rw_block_test(struct us_data *us, | |||
| 			if (*status & 0x20) /* device fault */ | ||||
| 				return USB_STOR_TRANSPORT_FAILED; | ||||
| 
 | ||||
| 			US_DEBUGP("Redoing %s\n", | ||||
| 			  direction==DMA_TO_DEVICE ? "write" : "read"); | ||||
| 			usb_stor_dbg(us, "Redoing %s\n", | ||||
| 				     direction == DMA_TO_DEVICE | ||||
| 				     ? "write" : "read"); | ||||
| 
 | ||||
| 		} else if (result != USB_STOR_XFER_GOOD) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
|  | @ -667,8 +668,8 @@ static int usbat_hp8200e_rw_block_test(struct us_data *us, | |||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Bummer! %s bulk data 20 times failed.\n", | ||||
| 		direction==DMA_TO_DEVICE ? "Writing" : "Reading"); | ||||
| 	usb_stor_dbg(us, "Bummer! %s bulk data 20 times failed\n", | ||||
| 		     direction == DMA_TO_DEVICE ? "Writing" : "Reading"); | ||||
| 
 | ||||
| 	return USB_STOR_TRANSPORT_FAILED; | ||||
| } | ||||
|  | @ -827,7 +828,7 @@ static int usbat_read_user_io(struct us_data *us, unsigned char *data_flags) | |||
| 		data_flags, | ||||
| 		USBAT_UIO_READ); | ||||
| 
 | ||||
| 	US_DEBUGP("usbat_read_user_io: UIO register reads %02X\n", (unsigned short) (*data_flags)); | ||||
| 	usb_stor_dbg(us, "UIO register reads %02X\n", *data_flags); | ||||
| 
 | ||||
| 	return result; | ||||
| } | ||||
|  | @ -900,10 +901,11 @@ static int usbat_device_enable_cdt(struct us_data *us) | |||
| /*
 | ||||
|  * Determine if media is present. | ||||
|  */ | ||||
| static int usbat_flash_check_media_present(unsigned char *uio) | ||||
| static int usbat_flash_check_media_present(struct us_data *us, | ||||
| 					   unsigned char *uio) | ||||
| { | ||||
| 	if (*uio & USBAT_UIO_UI0) { | ||||
| 		US_DEBUGP("usbat_flash_check_media_present: no media detected\n"); | ||||
| 		usb_stor_dbg(us, "no media detected\n"); | ||||
| 		return USBAT_FLASH_MEDIA_NONE; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -913,10 +915,11 @@ static int usbat_flash_check_media_present(unsigned char *uio) | |||
| /*
 | ||||
|  * Determine if media has changed since last operation | ||||
|  */ | ||||
| static int usbat_flash_check_media_changed(unsigned char *uio) | ||||
| static int usbat_flash_check_media_changed(struct us_data *us, | ||||
| 					   unsigned char *uio) | ||||
| { | ||||
| 	if (*uio & USBAT_UIO_0) { | ||||
| 		US_DEBUGP("usbat_flash_check_media_changed: media change detected\n"); | ||||
| 		usb_stor_dbg(us, "media change detected\n"); | ||||
| 		return USBAT_FLASH_MEDIA_CHANGED; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -937,7 +940,7 @@ static int usbat_flash_check_media(struct us_data *us, | |||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	/* Check for media existence */ | ||||
| 	rc = usbat_flash_check_media_present(uio); | ||||
| 	rc = usbat_flash_check_media_present(us, uio); | ||||
| 	if (rc == USBAT_FLASH_MEDIA_NONE) { | ||||
| 		info->sense_key = 0x02; | ||||
| 		info->sense_asc = 0x3A; | ||||
|  | @ -946,7 +949,7 @@ static int usbat_flash_check_media(struct us_data *us, | |||
| 	} | ||||
| 
 | ||||
| 	/* Check for media change */ | ||||
| 	rc = usbat_flash_check_media_changed(uio); | ||||
| 	rc = usbat_flash_check_media_changed(us, uio); | ||||
| 	if (rc == USBAT_FLASH_MEDIA_CHANGED) { | ||||
| 
 | ||||
| 		/* Reset and re-enable card detect */ | ||||
|  | @ -1008,11 +1011,11 @@ static int usbat_identify_device(struct us_data *us, | |||
| 	/* Check for error bit, or if the command 'fell through' */ | ||||
| 	if (status == 0xA1 || !(status & 0x01)) { | ||||
| 		/* Device is HP 8200 */ | ||||
| 		US_DEBUGP("usbat_identify_device: Detected HP8200 CDRW\n"); | ||||
| 		usb_stor_dbg(us, "Detected HP8200 CDRW\n"); | ||||
| 		info->devicetype = USBAT_DEV_HP8200; | ||||
| 	} else { | ||||
| 		/* Device is a CompactFlash reader/writer */ | ||||
| 		US_DEBUGP("usbat_identify_device: Detected Flash reader/writer\n"); | ||||
| 		usb_stor_dbg(us, "Detected Flash reader/writer\n"); | ||||
| 		info->devicetype = USBAT_DEV_FLASH; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1075,7 +1078,7 @@ static int usbat_flash_get_sector_count(struct us_data *us, | |||
| 	/* ATA command : IDENTIFY DEVICE */ | ||||
| 	rc = usbat_multiple_write(us, registers, command, 3); | ||||
| 	if (rc != USB_STOR_XFER_GOOD) { | ||||
| 		US_DEBUGP("usbat_flash_get_sector_count: Gah! identify_device failed\n"); | ||||
| 		usb_stor_dbg(us, "Gah! identify_device failed\n"); | ||||
| 		rc = USB_STOR_TRANSPORT_ERROR; | ||||
| 		goto leave; | ||||
| 	} | ||||
|  | @ -1178,7 +1181,7 @@ static int usbat_flash_read_data(struct us_data *us, | |||
| 		if (result != USB_STOR_TRANSPORT_GOOD) | ||||
| 			goto leave; | ||||
|   	  | ||||
| 		US_DEBUGP("usbat_flash_read_data:  %d bytes\n", len); | ||||
| 		usb_stor_dbg(us, "%d bytes\n", len); | ||||
| 	 | ||||
| 		/* Store the data in the transfer buffer */ | ||||
| 		usb_stor_access_xfer_buf(buffer, len, us->srb, | ||||
|  | @ -1301,8 +1304,7 @@ static int usbat_hp8200e_handle_read10(struct us_data *us, | |||
| 	unsigned int sg_offset = 0; | ||||
| 	struct scatterlist *sg = NULL; | ||||
| 
 | ||||
| 	US_DEBUGP("handle_read10: transfersize %d\n", | ||||
| 		srb->transfersize); | ||||
| 	usb_stor_dbg(us, "transfersize %d\n", srb->transfersize); | ||||
| 
 | ||||
| 	if (scsi_bufflen(srb) < 0x10000) { | ||||
| 
 | ||||
|  | @ -1329,14 +1331,14 @@ static int usbat_hp8200e_handle_read10(struct us_data *us, | |||
| 		len = short_pack(data[7+9], data[7+8]); | ||||
| 		len <<= 16; | ||||
| 		len |= data[7+7]; | ||||
| 		US_DEBUGP("handle_read10: GPCMD_READ_CD: len %d\n", len); | ||||
| 		usb_stor_dbg(us, "GPCMD_READ_CD: len %d\n", len); | ||||
| 		srb->transfersize = scsi_bufflen(srb)/len; | ||||
| 	} | ||||
| 
 | ||||
| 	if (!srb->transfersize)  { | ||||
| 		srb->transfersize = 2048; /* A guess */ | ||||
| 		US_DEBUGP("handle_read10: transfersize 0, forcing %d\n", | ||||
| 			srb->transfersize); | ||||
| 		usb_stor_dbg(us, "transfersize 0, forcing %d\n", | ||||
| 			     srb->transfersize); | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
|  | @ -1346,7 +1348,7 @@ static int usbat_hp8200e_handle_read10(struct us_data *us, | |||
| 	 */ | ||||
| 
 | ||||
| 	len = (65535/srb->transfersize) * srb->transfersize; | ||||
| 	US_DEBUGP("Max read is %d bytes\n", len); | ||||
| 	usb_stor_dbg(us, "Max read is %d bytes\n", len); | ||||
| 	len = min(len, scsi_bufflen(srb)); | ||||
| 	buffer = kmalloc(len, GFP_NOIO); | ||||
| 	if (buffer == NULL) /* bloody hell! */ | ||||
|  | @ -1460,10 +1462,9 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	unsigned char *status = us->iobuf; | ||||
| 
 | ||||
| 	us->extra = kzalloc(sizeof(struct usbat_info), GFP_NOIO); | ||||
| 	if (!us->extra) { | ||||
| 		US_DEBUGP("init_usbat: Gah! Can't allocate storage for usbat info struct!\n"); | ||||
| 	if (!us->extra) | ||||
| 		return 1; | ||||
| 	} | ||||
| 
 | ||||
| 	info = (struct usbat_info *) (us->extra); | ||||
| 
 | ||||
| 	/* Enable peripheral control signals */ | ||||
|  | @ -1473,7 +1474,7 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 1\n"); | ||||
| 	usb_stor_dbg(us, "INIT 1\n"); | ||||
| 
 | ||||
| 	msleep(2000); | ||||
| 
 | ||||
|  | @ -1481,7 +1482,7 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 2\n"); | ||||
| 	usb_stor_dbg(us, "INIT 2\n"); | ||||
| 
 | ||||
| 	rc = usbat_read_user_io(us, status); | ||||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
|  | @ -1491,32 +1492,32 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 3\n"); | ||||
| 	usb_stor_dbg(us, "INIT 3\n"); | ||||
| 
 | ||||
| 	rc = usbat_select_and_test_registers(us); | ||||
| 	if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 4\n"); | ||||
| 	usb_stor_dbg(us, "INIT 4\n"); | ||||
| 
 | ||||
| 	rc = usbat_read_user_io(us, status); | ||||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 5\n"); | ||||
| 	usb_stor_dbg(us, "INIT 5\n"); | ||||
| 
 | ||||
| 	/* Enable peripheral control signals and card detect */ | ||||
| 	rc = usbat_device_enable_cdt(us); | ||||
| 	if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 6\n"); | ||||
| 	usb_stor_dbg(us, "INIT 6\n"); | ||||
| 
 | ||||
| 	rc = usbat_read_user_io(us, status); | ||||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 7\n"); | ||||
| 	usb_stor_dbg(us, "INIT 7\n"); | ||||
| 
 | ||||
| 	msleep(1400); | ||||
| 
 | ||||
|  | @ -1524,19 +1525,19 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 8\n"); | ||||
| 	usb_stor_dbg(us, "INIT 8\n"); | ||||
| 
 | ||||
| 	rc = usbat_select_and_test_registers(us); | ||||
| 	if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
| 		return rc; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 9\n"); | ||||
| 	usb_stor_dbg(us, "INIT 9\n"); | ||||
| 
 | ||||
| 	/* At this point, we need to detect which device we are using */ | ||||
| 	if (usbat_set_transport(us, info, devicetype)) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 10\n"); | ||||
| 	usb_stor_dbg(us, "INIT 10\n"); | ||||
| 
 | ||||
| 	if (usbat_get_device_type(us) == USBAT_DEV_FLASH) {  | ||||
| 		subcountH = 0x02; | ||||
|  | @ -1547,7 +1548,7 @@ static int init_usbat(struct us_data *us, int devicetype) | |||
| 	if (rc != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	US_DEBUGP("INIT 11\n"); | ||||
| 	usb_stor_dbg(us, "INIT 11\n"); | ||||
| 
 | ||||
| 	return USB_STOR_TRANSPORT_GOOD; | ||||
| } | ||||
|  | @ -1592,7 +1593,7 @@ static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	result = usbat_get_status(us, status); | ||||
| 	US_DEBUGP("Status = %02X\n", *status); | ||||
| 	usb_stor_dbg(us, "Status = %02X\n", *status); | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	if (srb->cmnd[0] == TEST_UNIT_READY) | ||||
|  | @ -1610,7 +1611,7 @@ static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 
 | ||||
| 		if (result == USB_STOR_TRANSPORT_GOOD) { | ||||
| 			transferred += len; | ||||
| 			US_DEBUGP("Wrote %08X bytes\n", transferred); | ||||
| 			usb_stor_dbg(us, "Wrote %08X bytes\n", transferred); | ||||
| 		} | ||||
| 
 | ||||
| 		return result; | ||||
|  | @ -1623,8 +1624,8 @@ static int usbat_hp8200e_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (len > 0xFFFF) { | ||||
| 		US_DEBUGP("Error: len = %08X... what do I do now?\n", | ||||
| 			len); | ||||
| 		usb_stor_dbg(us, "Error: len = %08X... what do I do now?\n", | ||||
| 			     len); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1693,7 +1694,7 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 	}; | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == INQUIRY) { | ||||
| 		US_DEBUGP("usbat_flash_transport: INQUIRY. Returning bogus response.\n"); | ||||
| 		usb_stor_dbg(us, "INQUIRY - Returning bogus response\n"); | ||||
| 		memcpy(ptr, inquiry_response, sizeof(inquiry_response)); | ||||
| 		fill_inquiry_response(us, ptr, 36); | ||||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
|  | @ -1710,8 +1711,8 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 
 | ||||
| 		/* hard coded 512 byte sectors as per ATA spec */ | ||||
| 		info->ssize = 0x200; | ||||
| 		US_DEBUGP("usbat_flash_transport: READ_CAPACITY: %ld sectors, %ld bytes per sector\n", | ||||
| 			  info->sectors, info->ssize); | ||||
| 		usb_stor_dbg(us, "READ_CAPACITY: %ld sectors, %ld bytes per sector\n", | ||||
| 			     info->sectors, info->ssize); | ||||
| 
 | ||||
| 		/*
 | ||||
| 		 * build the reply | ||||
|  | @ -1726,7 +1727,7 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == MODE_SELECT_10) { | ||||
| 		US_DEBUGP("usbat_flash_transport:  Gah! MODE_SELECT_10.\n"); | ||||
| 		usb_stor_dbg(us, "Gah! MODE_SELECT_10\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1736,7 +1737,8 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("usbat_flash_transport:  READ_10: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_10: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return usbat_flash_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1750,7 +1752,8 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 		         ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("usbat_flash_transport: READ_12: read block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "READ_12: read block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return usbat_flash_read_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1760,7 +1763,8 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 
 | ||||
| 		blocks = ((u32)(srb->cmnd[7]) << 8) | ((u32)(srb->cmnd[8])); | ||||
| 
 | ||||
| 		US_DEBUGP("usbat_flash_transport: WRITE_10: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_10: write block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return usbat_flash_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1774,13 +1778,14 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 		blocks = ((u32)(srb->cmnd[6]) << 24) | ((u32)(srb->cmnd[7]) << 16) | | ||||
| 		         ((u32)(srb->cmnd[8]) <<  8) | ((u32)(srb->cmnd[9])); | ||||
| 
 | ||||
| 		US_DEBUGP("usbat_flash_transport: WRITE_12: write block 0x%04lx  count %ld\n", block, blocks); | ||||
| 		usb_stor_dbg(us, "WRITE_12: write block 0x%04lx  count %ld\n", | ||||
| 			     block, blocks); | ||||
| 		return usbat_flash_write_data(us, info, block, blocks); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == TEST_UNIT_READY) { | ||||
| 		US_DEBUGP("usbat_flash_transport: TEST_UNIT_READY.\n"); | ||||
| 		usb_stor_dbg(us, "TEST_UNIT_READY\n"); | ||||
| 
 | ||||
| 		rc = usbat_flash_check_media(us, info); | ||||
| 		if (rc != USB_STOR_TRANSPORT_GOOD) | ||||
|  | @ -1790,7 +1795,7 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (srb->cmnd[0] == REQUEST_SENSE) { | ||||
| 		US_DEBUGP("usbat_flash_transport: REQUEST_SENSE.\n"); | ||||
| 		usb_stor_dbg(us, "REQUEST_SENSE\n"); | ||||
| 
 | ||||
| 		memset(ptr, 0, 18); | ||||
| 		ptr[0] = 0xF0; | ||||
|  | @ -1811,8 +1816,8 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us) | |||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("usbat_flash_transport: Gah! Unknown command: %d (0x%x)\n", | ||||
| 			  srb->cmnd[0], srb->cmnd[0]); | ||||
| 	usb_stor_dbg(us, "Gah! Unknown command: %d (0x%x)\n", | ||||
| 		     srb->cmnd[0], srb->cmnd[0]); | ||||
| 	info->sense_key = 0x05; | ||||
| 	info->sense_asc = 0x20; | ||||
| 	info->sense_ascq = 0x00; | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ static bool containsFullLinuxPackage(struct swoc_info *swocInfo) | |||
| static int sierra_set_ms_mode(struct usb_device *udev, __u16 eSWocMode) | ||||
| { | ||||
| 	int result; | ||||
| 	US_DEBUGP("SWIMS: %s", "DEVICE MODE SWITCH\n"); | ||||
| 	dev_dbg(&udev->dev, "SWIMS: %s", "DEVICE MODE SWITCH\n"); | ||||
| 	result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), | ||||
| 			SWIMS_USB_REQUEST_SetSwocMode,	/* __u8 request      */ | ||||
| 			USB_TYPE_VENDOR | USB_DIR_OUT,	/* __u8 request type */ | ||||
|  | @ -65,7 +65,7 @@ static int sierra_get_swoc_info(struct usb_device *udev, | |||
| { | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("SWIMS: Attempting to get TRU-Install info.\n"); | ||||
| 	dev_dbg(&udev->dev, "SWIMS: Attempting to get TRU-Install info\n"); | ||||
| 
 | ||||
| 	result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), | ||||
| 			SWIMS_USB_REQUEST_GetSwocInfo,	/* __u8 request      */ | ||||
|  | @ -81,11 +81,11 @@ static int sierra_get_swoc_info(struct usb_device *udev, | |||
| 	return result; | ||||
| } | ||||
| 
 | ||||
| static void debug_swoc(struct swoc_info *swocInfo) | ||||
| static void debug_swoc(const struct device *dev, struct swoc_info *swocInfo) | ||||
| { | ||||
| 	US_DEBUGP("SWIMS: SWoC Rev: %02d \n", swocInfo->rev); | ||||
| 	US_DEBUGP("SWIMS: Linux SKU: %04X \n", swocInfo->LinuxSKU); | ||||
| 	US_DEBUGP("SWIMS: Linux Version: %04X \n", swocInfo->LinuxVer); | ||||
| 	dev_dbg(dev, "SWIMS: SWoC Rev: %02d\n", swocInfo->rev); | ||||
| 	dev_dbg(dev, "SWIMS: Linux SKU: %04X\n", swocInfo->LinuxSKU); | ||||
| 	dev_dbg(dev, "SWIMS: Linux Version: %04X\n", swocInfo->LinuxVer); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -101,18 +101,17 @@ static ssize_t show_truinst(struct device *dev, struct device_attribute *attr, | |||
| 	} else { | ||||
| 		swocInfo = kmalloc(sizeof(struct swoc_info), GFP_KERNEL); | ||||
| 		if (!swocInfo) { | ||||
| 			US_DEBUGP("SWIMS: Allocation failure\n"); | ||||
| 			snprintf(buf, PAGE_SIZE, "Error\n"); | ||||
| 			return -ENOMEM; | ||||
| 		} | ||||
| 		result = sierra_get_swoc_info(udev, swocInfo); | ||||
| 		if (result < 0) { | ||||
| 			US_DEBUGP("SWIMS: failed SWoC query\n"); | ||||
| 			dev_dbg(dev, "SWIMS: failed SWoC query\n"); | ||||
| 			kfree(swocInfo); | ||||
| 			snprintf(buf, PAGE_SIZE, "Error\n"); | ||||
| 			return -EIO; | ||||
| 		} | ||||
| 		debug_swoc(swocInfo); | ||||
| 		debug_swoc(dev, swocInfo); | ||||
| 		result = snprintf(buf, PAGE_SIZE, | ||||
| 			"REV=%02d SKU=%04X VER=%04X\n", | ||||
| 			swocInfo->rev, | ||||
|  | @ -138,61 +137,55 @@ int sierra_ms_init(struct us_data *us) | |||
| 	sh = us_to_host(us); | ||||
| 	scsi_get_host_dev(sh); | ||||
| 
 | ||||
| 	US_DEBUGP("SWIMS: sierra_ms_init called\n"); | ||||
| 
 | ||||
| 	/* Force Modem mode */ | ||||
| 	if (swi_tru_install == TRU_FORCE_MODEM) { | ||||
| 		US_DEBUGP("SWIMS: %s", "Forcing Modem Mode\n"); | ||||
| 		usb_stor_dbg(us, "SWIMS: Forcing Modem Mode\n"); | ||||
| 		result = sierra_set_ms_mode(udev, SWIMS_SET_MODE_Modem); | ||||
| 		if (result < 0) | ||||
| 			US_DEBUGP("SWIMS: Failed to switch to modem mode.\n"); | ||||
| 			usb_stor_dbg(us, "SWIMS: Failed to switch to modem mode\n"); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 	/* Force Mass Storage mode (keep CD-Rom) */ | ||||
| 	else if (swi_tru_install == TRU_FORCE_MS) { | ||||
| 		US_DEBUGP("SWIMS: %s", "Forcing Mass Storage Mode\n"); | ||||
| 		usb_stor_dbg(us, "SWIMS: Forcing Mass Storage Mode\n"); | ||||
| 		goto complete; | ||||
| 	} | ||||
| 	/* Normal TRU-Install Logic */ | ||||
| 	else { | ||||
| 		US_DEBUGP("SWIMS: %s", "Normal SWoC Logic\n"); | ||||
| 		usb_stor_dbg(us, "SWIMS: Normal SWoC Logic\n"); | ||||
| 
 | ||||
| 		swocInfo = kmalloc(sizeof(struct swoc_info), | ||||
| 				GFP_KERNEL); | ||||
| 		if (!swocInfo) { | ||||
| 			US_DEBUGP("SWIMS: %s", "Allocation failure\n"); | ||||
| 		if (!swocInfo) | ||||
| 			return -ENOMEM; | ||||
| 		} | ||||
| 
 | ||||
| 		retries = 3; | ||||
| 		do { | ||||
| 			retries--; | ||||
| 			result = sierra_get_swoc_info(udev, swocInfo); | ||||
| 			if (result < 0) { | ||||
| 				US_DEBUGP("SWIMS: %s", "Failed SWoC query\n"); | ||||
| 				usb_stor_dbg(us, "SWIMS: Failed SWoC query\n"); | ||||
| 				schedule_timeout_uninterruptible(2*HZ); | ||||
| 			} | ||||
| 		} while (retries && result < 0); | ||||
| 
 | ||||
| 		if (result < 0) { | ||||
| 			US_DEBUGP("SWIMS: %s", | ||||
| 				  "Completely failed SWoC query\n"); | ||||
| 			usb_stor_dbg(us, "SWIMS: Completely failed SWoC query\n"); | ||||
| 			kfree(swocInfo); | ||||
| 			return -EIO; | ||||
| 		} | ||||
| 
 | ||||
| 		debug_swoc(swocInfo); | ||||
| 		debug_swoc(&us->pusb_dev->dev, swocInfo); | ||||
| 
 | ||||
| 		/* If there is not Linux software on the TRU-Install device
 | ||||
| 		 * then switch to modem mode | ||||
| 		 */ | ||||
| 		if (!containsFullLinuxPackage(swocInfo)) { | ||||
| 			US_DEBUGP("SWIMS: %s", | ||||
| 				"Switching to Modem Mode\n"); | ||||
| 			usb_stor_dbg(us, "SWIMS: Switching to Modem Mode\n"); | ||||
| 			result = sierra_set_ms_mode(udev, | ||||
| 				SWIMS_SET_MODE_Modem); | ||||
| 			if (result < 0) | ||||
| 				US_DEBUGP("SWIMS: Failed to switch modem\n"); | ||||
| 				usb_stor_dbg(us, "SWIMS: Failed to switch modem\n"); | ||||
| 			kfree(swocInfo); | ||||
| 			return -EIO; | ||||
| 		} | ||||
|  |  | |||
|  | @ -166,7 +166,7 @@ static int usb_stor_msg_common(struct us_data *us, int timeout) | |||
| 
 | ||||
| 		/* cancel the URB, if it hasn't been cancelled already */ | ||||
| 		if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) { | ||||
| 			US_DEBUGP("-- cancelling URB\n"); | ||||
| 			usb_stor_dbg(us, "-- cancelling URB\n"); | ||||
| 			usb_unlink_urb(us->current_urb); | ||||
| 		} | ||||
| 	} | ||||
|  | @ -178,8 +178,8 @@ static int usb_stor_msg_common(struct us_data *us, int timeout) | |||
| 	clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags); | ||||
| 
 | ||||
| 	if (timeleft <= 0) { | ||||
| 		US_DEBUGP("%s -- cancelling URB\n", | ||||
| 			  timeleft == 0 ? "Timeout" : "Signal"); | ||||
| 		usb_stor_dbg(us, "%s -- cancelling URB\n", | ||||
| 			     timeleft == 0 ? "Timeout" : "Signal"); | ||||
| 		usb_kill_urb(us->current_urb); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -197,9 +197,8 @@ int usb_stor_control_msg(struct us_data *us, unsigned int pipe, | |||
| { | ||||
| 	int status; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: rq=%02x rqtype=%02x value=%04x index=%02x len=%u\n", | ||||
| 			__func__, request, requesttype, | ||||
| 			value, index, size); | ||||
| 	usb_stor_dbg(us, "rq=%02x rqtype=%02x value=%04x index=%02x len=%u\n", | ||||
| 		     request, requesttype, value, index, size); | ||||
| 
 | ||||
| 	/* fill in the devrequest structure */ | ||||
| 	us->cr->bRequestType = requesttype; | ||||
|  | @ -249,7 +248,7 @@ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe) | |||
| 	if (result >= 0) | ||||
| 		usb_reset_endpoint(us->pusb_dev, endp); | ||||
| 
 | ||||
| 	US_DEBUGP("%s: result = %d\n", __func__, result); | ||||
| 	usb_stor_dbg(us, "result = %d\n", result); | ||||
| 	return result; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(usb_stor_clear_halt); | ||||
|  | @ -265,18 +264,18 @@ EXPORT_SYMBOL_GPL(usb_stor_clear_halt); | |||
| static int interpret_urb_result(struct us_data *us, unsigned int pipe, | ||||
| 		unsigned int length, int result, unsigned int partial) | ||||
| { | ||||
| 	US_DEBUGP("Status code %d; transferred %u/%u\n", | ||||
| 			result, partial, length); | ||||
| 	usb_stor_dbg(us, "Status code %d; transferred %u/%u\n", | ||||
| 		     result, partial, length); | ||||
| 	switch (result) { | ||||
| 
 | ||||
| 	/* no error code; did we send all the data? */ | ||||
| 	case 0: | ||||
| 		if (partial != length) { | ||||
| 			US_DEBUGP("-- short transfer\n"); | ||||
| 			usb_stor_dbg(us, "-- short transfer\n"); | ||||
| 			return USB_STOR_XFER_SHORT; | ||||
| 		} | ||||
| 
 | ||||
| 		US_DEBUGP("-- transfer complete\n"); | ||||
| 		usb_stor_dbg(us, "-- transfer complete\n"); | ||||
| 		return USB_STOR_XFER_GOOD; | ||||
| 
 | ||||
| 	/* stalled */ | ||||
|  | @ -284,39 +283,40 @@ static int interpret_urb_result(struct us_data *us, unsigned int pipe, | |||
| 		/* for control endpoints, (used by CB[I]) a stall indicates
 | ||||
| 		 * a failed command */ | ||||
| 		if (usb_pipecontrol(pipe)) { | ||||
| 			US_DEBUGP("-- stall on control pipe\n"); | ||||
| 			usb_stor_dbg(us, "-- stall on control pipe\n"); | ||||
| 			return USB_STOR_XFER_STALLED; | ||||
| 		} | ||||
| 
 | ||||
| 		/* for other sorts of endpoint, clear the stall */ | ||||
| 		US_DEBUGP("clearing endpoint halt for pipe 0x%x\n", pipe); | ||||
| 		usb_stor_dbg(us, "clearing endpoint halt for pipe 0x%x\n", | ||||
| 			     pipe); | ||||
| 		if (usb_stor_clear_halt(us, pipe) < 0) | ||||
| 			return USB_STOR_XFER_ERROR; | ||||
| 		return USB_STOR_XFER_STALLED; | ||||
| 
 | ||||
| 	/* babble - the device tried to send more than we wanted to read */ | ||||
| 	case -EOVERFLOW: | ||||
| 		US_DEBUGP("-- babble\n"); | ||||
| 		usb_stor_dbg(us, "-- babble\n"); | ||||
| 		return USB_STOR_XFER_LONG; | ||||
| 
 | ||||
| 	/* the transfer was cancelled by abort, disconnect, or timeout */ | ||||
| 	case -ECONNRESET: | ||||
| 		US_DEBUGP("-- transfer cancelled\n"); | ||||
| 		usb_stor_dbg(us, "-- transfer cancelled\n"); | ||||
| 		return USB_STOR_XFER_ERROR; | ||||
| 
 | ||||
| 	/* short scatter-gather read transfer */ | ||||
| 	case -EREMOTEIO: | ||||
| 		US_DEBUGP("-- short read transfer\n"); | ||||
| 		usb_stor_dbg(us, "-- short read transfer\n"); | ||||
| 		return USB_STOR_XFER_SHORT; | ||||
| 
 | ||||
| 	/* abort or disconnect in progress */ | ||||
| 	case -EIO: | ||||
| 		US_DEBUGP("-- abort or disconnect in progress\n"); | ||||
| 		usb_stor_dbg(us, "-- abort or disconnect in progress\n"); | ||||
| 		return USB_STOR_XFER_ERROR; | ||||
| 
 | ||||
| 	/* the catch-all error case */ | ||||
| 	default: | ||||
| 		US_DEBUGP("-- unknown error\n"); | ||||
| 		usb_stor_dbg(us, "-- unknown error\n"); | ||||
| 		return USB_STOR_XFER_ERROR; | ||||
| 	} | ||||
| } | ||||
|  | @ -331,9 +331,8 @@ int usb_stor_ctrl_transfer(struct us_data *us, unsigned int pipe, | |||
| { | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: rq=%02x rqtype=%02x value=%04x index=%02x len=%u\n", | ||||
| 			__func__, request, requesttype, | ||||
| 			value, index, size); | ||||
| 	usb_stor_dbg(us, "rq=%02x rqtype=%02x value=%04x index=%02x len=%u\n", | ||||
| 		     request, requesttype, value, index, size); | ||||
| 
 | ||||
| 	/* fill in the devrequest structure */ | ||||
| 	us->cr->bRequestType = requesttype; | ||||
|  | @ -367,7 +366,7 @@ static int usb_stor_intr_transfer(struct us_data *us, void *buf, | |||
| 	unsigned int pipe = us->recv_intr_pipe; | ||||
| 	unsigned int maxp; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: xfer %u bytes\n", __func__, length); | ||||
| 	usb_stor_dbg(us, "xfer %u bytes\n", length); | ||||
| 
 | ||||
| 	/* calculate the max packet size */ | ||||
| 	maxp = usb_maxpacket(us->pusb_dev, pipe, usb_pipeout(pipe)); | ||||
|  | @ -394,7 +393,7 @@ int usb_stor_bulk_transfer_buf(struct us_data *us, unsigned int pipe, | |||
| { | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("%s: xfer %u bytes\n", __func__, length); | ||||
| 	usb_stor_dbg(us, "xfer %u bytes\n", length); | ||||
| 
 | ||||
| 	/* fill and submit the URB */ | ||||
| 	usb_fill_bulk_urb(us->current_urb, us->pusb_dev, pipe, buf, length, | ||||
|  | @ -426,12 +425,11 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe, | |||
| 		return USB_STOR_XFER_ERROR; | ||||
| 
 | ||||
| 	/* initialize the scatter-gather request block */ | ||||
| 	US_DEBUGP("%s: xfer %u bytes, %d entries\n", __func__, | ||||
| 			length, num_sg); | ||||
| 	usb_stor_dbg(us, "xfer %u bytes, %d entries\n", length, num_sg); | ||||
| 	result = usb_sg_init(&us->current_sg, us->pusb_dev, pipe, 0, | ||||
| 			sg, num_sg, length, GFP_NOIO); | ||||
| 	if (result) { | ||||
| 		US_DEBUGP("usb_sg_init returned %d\n", result); | ||||
| 		usb_stor_dbg(us, "usb_sg_init returned %d\n", result); | ||||
| 		return USB_STOR_XFER_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -444,7 +442,7 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe, | |||
| 
 | ||||
| 		/* cancel the request, if it hasn't been cancelled already */ | ||||
| 		if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) { | ||||
| 			US_DEBUGP("-- cancelling sg request\n"); | ||||
| 			usb_stor_dbg(us, "-- cancelling sg request\n"); | ||||
| 			usb_sg_cancel(&us->current_sg); | ||||
| 		} | ||||
| 	} | ||||
|  | @ -609,14 +607,14 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * short-circuit all other processing | ||||
| 	 */ | ||||
| 	if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { | ||||
| 		US_DEBUGP("-- command was aborted\n"); | ||||
| 		usb_stor_dbg(us, "-- command was aborted\n"); | ||||
| 		srb->result = DID_ABORT << 16; | ||||
| 		goto Handle_Errors; | ||||
| 	} | ||||
| 
 | ||||
| 	/* if there is a transport error, reset and don't auto-sense */ | ||||
| 	if (result == USB_STOR_TRANSPORT_ERROR) { | ||||
| 		US_DEBUGP("-- transport indicates error, resetting\n"); | ||||
| 		usb_stor_dbg(us, "-- transport indicates error, resetting\n"); | ||||
| 		srb->result = DID_ERROR << 16; | ||||
| 		goto Handle_Errors; | ||||
| 	} | ||||
|  | @ -645,7 +643,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 */ | ||||
| 	if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_DPCM_USB) && | ||||
| 			srb->sc_data_direction != DMA_FROM_DEVICE) { | ||||
| 		US_DEBUGP("-- CB transport device requiring auto-sense\n"); | ||||
| 		usb_stor_dbg(us, "-- CB transport device requiring auto-sense\n"); | ||||
| 		need_auto_sense = 1; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -655,7 +653,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * "failure" and an "error" in the transport mechanism. | ||||
| 	 */ | ||||
| 	if (result == USB_STOR_TRANSPORT_FAILED) { | ||||
| 		US_DEBUGP("-- transport indicates command failure\n"); | ||||
| 		usb_stor_dbg(us, "-- transport indicates command failure\n"); | ||||
| 		need_auto_sense = 1; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -670,7 +668,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	    !(us->fflags & US_FL_SANE_SENSE) && | ||||
| 	    !(us->fflags & US_FL_BAD_SENSE) && | ||||
| 	    !(srb->cmnd[2] & 0x20))) { | ||||
| 		US_DEBUGP("-- SAT supported, increasing auto-sense\n"); | ||||
| 		usb_stor_dbg(us, "-- SAT supported, increasing auto-sense\n"); | ||||
| 		us->fflags |= US_FL_SANE_SENSE; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -684,7 +682,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	      (srb->cmnd[0] == MODE_SENSE) || | ||||
| 	      (srb->cmnd[0] == LOG_SENSE) || | ||||
| 	      (srb->cmnd[0] == MODE_SENSE_10))) { | ||||
| 		US_DEBUGP("-- unexpectedly short transfer\n"); | ||||
| 		usb_stor_dbg(us, "-- unexpectedly short transfer\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	/* Now, if we need to do the auto-sense, let's do it */ | ||||
|  | @ -700,7 +698,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		if (us->fflags & US_FL_SANE_SENSE) | ||||
| 			sense_size = ~0; | ||||
| Retry_Sense: | ||||
| 		US_DEBUGP("Issuing auto-REQUEST_SENSE\n"); | ||||
| 		usb_stor_dbg(us, "Issuing auto-REQUEST_SENSE\n"); | ||||
| 
 | ||||
| 		scsi_eh_prep_cmnd(srb, &ses, NULL, 0, sense_size); | ||||
| 
 | ||||
|  | @ -719,7 +717,7 @@ Retry_Sense: | |||
| 		scsi_eh_restore_cmnd(srb, &ses); | ||||
| 
 | ||||
| 		if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags)) { | ||||
| 			US_DEBUGP("-- auto-sense aborted\n"); | ||||
| 			usb_stor_dbg(us, "-- auto-sense aborted\n"); | ||||
| 			srb->result = DID_ABORT << 16; | ||||
| 
 | ||||
| 			/* If SANE_SENSE caused this problem, disable it */ | ||||
|  | @ -737,7 +735,7 @@ Retry_Sense: | |||
| 		 */ | ||||
| 		if (temp_result == USB_STOR_TRANSPORT_FAILED && | ||||
| 				sense_size != US_SENSE_SIZE) { | ||||
| 			US_DEBUGP("-- auto-sense failure, retry small sense\n"); | ||||
| 			usb_stor_dbg(us, "-- auto-sense failure, retry small sense\n"); | ||||
| 			sense_size = US_SENSE_SIZE; | ||||
| 			us->fflags &= ~US_FL_SANE_SENSE; | ||||
| 			us->fflags |= US_FL_BAD_SENSE; | ||||
|  | @ -746,7 +744,7 @@ Retry_Sense: | |||
| 
 | ||||
| 		/* Other failures */ | ||||
| 		if (temp_result != USB_STOR_TRANSPORT_GOOD) { | ||||
| 			US_DEBUGP("-- auto-sense failure\n"); | ||||
| 			usb_stor_dbg(us, "-- auto-sense failure\n"); | ||||
| 
 | ||||
| 			/* we skip the reset if this happens to be a
 | ||||
| 			 * multi-target device, since failure of an | ||||
|  | @ -766,27 +764,28 @@ Retry_Sense: | |||
| 		    !(us->fflags & US_FL_SANE_SENSE) && | ||||
| 		    !(us->fflags & US_FL_BAD_SENSE) && | ||||
| 		    (srb->sense_buffer[0] & 0x7C) == 0x70) { | ||||
| 			US_DEBUGP("-- SANE_SENSE support enabled\n"); | ||||
| 			usb_stor_dbg(us, "-- SANE_SENSE support enabled\n"); | ||||
| 			us->fflags |= US_FL_SANE_SENSE; | ||||
| 
 | ||||
| 			/* Indicate to the user that we truncated their sense
 | ||||
| 			 * because we didn't know it supported larger sense. | ||||
| 			 */ | ||||
| 			US_DEBUGP("-- Sense data truncated to %i from %i\n", | ||||
| 			          US_SENSE_SIZE, | ||||
| 			          srb->sense_buffer[7] + 8); | ||||
| 			usb_stor_dbg(us, "-- Sense data truncated to %i from %i\n", | ||||
| 				     US_SENSE_SIZE, | ||||
| 				     srb->sense_buffer[7] + 8); | ||||
| 			srb->sense_buffer[7] = (US_SENSE_SIZE - 8); | ||||
| 		} | ||||
| 
 | ||||
| 		scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE, | ||||
| 				     &sshdr); | ||||
| 
 | ||||
| 		US_DEBUGP("-- Result from auto-sense is %d\n", temp_result); | ||||
| 		US_DEBUGP("-- code: 0x%x, key: 0x%x, ASC: 0x%x, ASCQ: 0x%x\n", | ||||
| 			  sshdr.response_code, sshdr.sense_key, | ||||
| 			  sshdr.asc, sshdr.ascq); | ||||
| 		usb_stor_dbg(us, "-- Result from auto-sense is %d\n", | ||||
| 			     temp_result); | ||||
| 		usb_stor_dbg(us, "-- code: 0x%x, key: 0x%x, ASC: 0x%x, ASCQ: 0x%x\n", | ||||
| 			     sshdr.response_code, sshdr.sense_key, | ||||
| 			     sshdr.asc, sshdr.ascq); | ||||
| #ifdef CONFIG_USB_STORAGE_DEBUG | ||||
| 		usb_stor_show_sense(sshdr.sense_key, sshdr.asc, sshdr.ascq); | ||||
| 		usb_stor_show_sense(us, sshdr.sense_key, sshdr.asc, sshdr.ascq); | ||||
| #endif | ||||
| 
 | ||||
| 		/* set the result so the higher layers expect this data */ | ||||
|  | @ -892,20 +891,18 @@ Retry_Sense: | |||
| /* Stop the current URB transfer */ | ||||
| void usb_stor_stop_transport(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 
 | ||||
| 	/* If the state machine is blocked waiting for an URB,
 | ||||
| 	 * let's wake it up.  The test_and_clear_bit() call | ||||
| 	 * guarantees that if a URB has just been submitted, | ||||
| 	 * it won't be cancelled more than once. */ | ||||
| 	if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags)) { | ||||
| 		US_DEBUGP("-- cancelling URB\n"); | ||||
| 		usb_stor_dbg(us, "-- cancelling URB\n"); | ||||
| 		usb_unlink_urb(us->current_urb); | ||||
| 	} | ||||
| 
 | ||||
| 	/* If we are waiting for a scatter-gather operation, cancel it. */ | ||||
| 	if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags)) { | ||||
| 		US_DEBUGP("-- cancelling sg request\n"); | ||||
| 		usb_stor_dbg(us, "-- cancelling sg request\n"); | ||||
| 		usb_sg_cancel(&us->current_sg); | ||||
| 	} | ||||
| } | ||||
|  | @ -928,7 +925,8 @@ int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 				      us->ifnum, srb->cmnd, srb->cmd_len); | ||||
| 
 | ||||
| 	/* check the return code for the command */ | ||||
| 	US_DEBUGP("Call to usb_stor_ctrl_transfer() returned %d\n", result); | ||||
| 	usb_stor_dbg(us, "Call to usb_stor_ctrl_transfer() returned %d\n", | ||||
| 		     result); | ||||
| 
 | ||||
| 	/* if we stalled the command, it means command failed */ | ||||
| 	if (result == USB_STOR_XFER_STALLED) { | ||||
|  | @ -946,7 +944,7 @@ int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		pipe = srb->sc_data_direction == DMA_FROM_DEVICE ?  | ||||
| 				us->recv_bulk_pipe : us->send_bulk_pipe; | ||||
| 		result = usb_stor_bulk_srb(us, pipe, srb); | ||||
| 		US_DEBUGP("CBI data stage result is 0x%x\n", result); | ||||
| 		usb_stor_dbg(us, "CBI data stage result is 0x%x\n", result); | ||||
| 
 | ||||
| 		/* if we stalled the data transfer it means command failed */ | ||||
| 		if (result == USB_STOR_XFER_STALLED) | ||||
|  | @ -964,8 +962,8 @@ int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		return USB_STOR_TRANSPORT_GOOD; | ||||
| 
 | ||||
| 	result = usb_stor_intr_transfer(us, us->iobuf, 2); | ||||
| 	US_DEBUGP("Got interrupt data (0x%x, 0x%x)\n",  | ||||
| 			us->iobuf[0], us->iobuf[1]); | ||||
| 	usb_stor_dbg(us, "Got interrupt data (0x%x, 0x%x)\n", | ||||
| 		     us->iobuf[0], us->iobuf[1]); | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
|  | @ -992,8 +990,8 @@ int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * into the first byte -- so if it's non-zero, call it a failure. | ||||
| 	 */ | ||||
| 	if (us->iobuf[0]) { | ||||
| 		US_DEBUGP("CBI IRQ data showed reserved bType 0x%x\n", | ||||
| 				us->iobuf[0]); | ||||
| 		usb_stor_dbg(us, "CBI IRQ data showed reserved bType 0x%x\n", | ||||
| 			     us->iobuf[0]); | ||||
| 		goto Failed; | ||||
| 
 | ||||
| 	} | ||||
|  | @ -1034,8 +1032,8 @@ int usb_stor_Bulk_max_lun(struct us_data *us) | |||
| 				 USB_RECIP_INTERFACE, | ||||
| 				 0, us->ifnum, us->iobuf, 1, 10*HZ); | ||||
| 
 | ||||
| 	US_DEBUGP("GetMaxLUN command result is %d, data is %d\n",  | ||||
| 		  result, us->iobuf[0]); | ||||
| 	usb_stor_dbg(us, "GetMaxLUN command result is %d, data is %d\n", | ||||
| 		     result, us->iobuf[0]); | ||||
| 
 | ||||
| 	/* if we have a successful request, return the result */ | ||||
| 	if (result > 0) | ||||
|  | @ -1084,14 +1082,14 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	memcpy(bcb->CDB, srb->cmnd, bcb->Length); | ||||
| 
 | ||||
| 	/* send it to out endpoint */ | ||||
| 	US_DEBUGP("Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n", | ||||
| 			le32_to_cpu(bcb->Signature), bcb->Tag, | ||||
| 			le32_to_cpu(bcb->DataTransferLength), bcb->Flags, | ||||
| 			(bcb->Lun >> 4), (bcb->Lun & 0x0F),  | ||||
| 			bcb->Length); | ||||
| 	usb_stor_dbg(us, "Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n", | ||||
| 		     le32_to_cpu(bcb->Signature), bcb->Tag, | ||||
| 		     le32_to_cpu(bcb->DataTransferLength), bcb->Flags, | ||||
| 		     (bcb->Lun >> 4), (bcb->Lun & 0x0F), | ||||
| 		     bcb->Length); | ||||
| 	result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, | ||||
| 				bcb, cbwlen, NULL); | ||||
| 	US_DEBUGP("Bulk command transfer result=%d\n", result); | ||||
| 	usb_stor_dbg(us, "Bulk command transfer result=%d\n", result); | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
|  | @ -1108,7 +1106,7 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 		unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ?  | ||||
| 				us->recv_bulk_pipe : us->send_bulk_pipe; | ||||
| 		result = usb_stor_bulk_srb(us, pipe, srb); | ||||
| 		US_DEBUGP("Bulk data transfer result 0x%x\n", result); | ||||
| 		usb_stor_dbg(us, "Bulk data transfer result 0x%x\n", result); | ||||
| 		if (result == USB_STOR_XFER_ERROR) | ||||
| 			return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
|  | @ -1127,7 +1125,7 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 */ | ||||
| 
 | ||||
| 	/* get CSW for device status */ | ||||
| 	US_DEBUGP("Attempting to get CSW...\n"); | ||||
| 	usb_stor_dbg(us, "Attempting to get CSW...\n"); | ||||
| 	result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, | ||||
| 				bcs, US_BULK_CS_WRAP_LEN, &cswlen); | ||||
| 
 | ||||
|  | @ -1136,7 +1134,7 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	 * CSWs.  If we encounter such a thing, try to read the CSW again. | ||||
| 	 */ | ||||
| 	if (result == USB_STOR_XFER_SHORT && cswlen == 0) { | ||||
| 		US_DEBUGP("Received 0-length CSW; retrying...\n"); | ||||
| 		usb_stor_dbg(us, "Received 0-length CSW; retrying...\n"); | ||||
| 		result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, | ||||
| 				bcs, US_BULK_CS_WRAP_LEN, &cswlen); | ||||
| 	} | ||||
|  | @ -1145,24 +1143,24 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	if (result == USB_STOR_XFER_STALLED) { | ||||
| 
 | ||||
| 		/* get the status again */ | ||||
| 		US_DEBUGP("Attempting to get CSW (2nd try)...\n"); | ||||
| 		usb_stor_dbg(us, "Attempting to get CSW (2nd try)...\n"); | ||||
| 		result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, | ||||
| 				bcs, US_BULK_CS_WRAP_LEN, NULL); | ||||
| 	} | ||||
| 
 | ||||
| 	/* if we still have a failure at this point, we're in trouble */ | ||||
| 	US_DEBUGP("Bulk status result = %d\n", result); | ||||
| 	usb_stor_dbg(us, "Bulk status result = %d\n", result); | ||||
| 	if (result != USB_STOR_XFER_GOOD) | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 
 | ||||
| 	/* check bulk status */ | ||||
| 	residue = le32_to_cpu(bcs->Residue); | ||||
| 	US_DEBUGP("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", | ||||
| 			le32_to_cpu(bcs->Signature), bcs->Tag,  | ||||
| 			residue, bcs->Status); | ||||
| 	usb_stor_dbg(us, "Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", | ||||
| 		     le32_to_cpu(bcs->Signature), bcs->Tag, | ||||
| 		     residue, bcs->Status); | ||||
| 	if (!(bcs->Tag == us->tag || (us->fflags & US_FL_BULK_IGNORE_TAG)) || | ||||
| 		bcs->Status > US_BULK_STAT_PHASE) { | ||||
| 		US_DEBUGP("Bulk logical error\n"); | ||||
| 		usb_stor_dbg(us, "Bulk logical error\n"); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1173,12 +1171,12 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) | |||
| 	if (!us->bcs_signature) { | ||||
| 		us->bcs_signature = bcs->Signature; | ||||
| 		if (us->bcs_signature != cpu_to_le32(US_BULK_CS_SIGN)) | ||||
| 			US_DEBUGP("Learnt BCS signature 0x%08X\n", | ||||
| 					le32_to_cpu(us->bcs_signature)); | ||||
| 			usb_stor_dbg(us, "Learnt BCS signature 0x%08X\n", | ||||
| 				     le32_to_cpu(us->bcs_signature)); | ||||
| 	} else if (bcs->Signature != us->bcs_signature) { | ||||
| 		US_DEBUGP("Signature mismatch: got %08X, expecting %08X\n", | ||||
| 			  le32_to_cpu(bcs->Signature), | ||||
| 			  le32_to_cpu(us->bcs_signature)); | ||||
| 		usb_stor_dbg(us, "Signature mismatch: got %08X, expecting %08X\n", | ||||
| 			     le32_to_cpu(bcs->Signature), | ||||
| 			     le32_to_cpu(us->bcs_signature)); | ||||
| 		return USB_STOR_TRANSPORT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1255,7 +1253,7 @@ static int usb_stor_reset_common(struct us_data *us, | |||
| 	int result2; | ||||
| 
 | ||||
| 	if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { | ||||
| 		US_DEBUGP("No reset during disconnect\n"); | ||||
| 		usb_stor_dbg(us, "No reset during disconnect\n"); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1263,7 +1261,7 @@ static int usb_stor_reset_common(struct us_data *us, | |||
| 			request, requesttype, value, index, data, size, | ||||
| 			5*HZ); | ||||
| 	if (result < 0) { | ||||
| 		US_DEBUGP("Soft reset failed: %d\n", result); | ||||
| 		usb_stor_dbg(us, "Soft reset failed: %d\n", result); | ||||
| 		return result; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1273,23 +1271,23 @@ static int usb_stor_reset_common(struct us_data *us, | |||
| 			test_bit(US_FLIDX_DISCONNECTING, &us->dflags), | ||||
| 			HZ*6); | ||||
| 	if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { | ||||
| 		US_DEBUGP("Reset interrupted by disconnect\n"); | ||||
| 		usb_stor_dbg(us, "Reset interrupted by disconnect\n"); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 
 | ||||
| 	US_DEBUGP("Soft reset: clearing bulk-in endpoint halt\n"); | ||||
| 	usb_stor_dbg(us, "Soft reset: clearing bulk-in endpoint halt\n"); | ||||
| 	result = usb_stor_clear_halt(us, us->recv_bulk_pipe); | ||||
| 
 | ||||
| 	US_DEBUGP("Soft reset: clearing bulk-out endpoint halt\n"); | ||||
| 	usb_stor_dbg(us, "Soft reset: clearing bulk-out endpoint halt\n"); | ||||
| 	result2 = usb_stor_clear_halt(us, us->send_bulk_pipe); | ||||
| 
 | ||||
| 	/* return a result code based on the result of the clear-halts */ | ||||
| 	if (result >= 0) | ||||
| 		result = result2; | ||||
| 	if (result < 0) | ||||
| 		US_DEBUGP("Soft reset failed\n"); | ||||
| 		usb_stor_dbg(us, "Soft reset failed\n"); | ||||
| 	else | ||||
| 		US_DEBUGP("Soft reset done\n"); | ||||
| 		usb_stor_dbg(us, "Soft reset done\n"); | ||||
| 	return result; | ||||
| } | ||||
| 
 | ||||
|  | @ -1299,8 +1297,6 @@ static int usb_stor_reset_common(struct us_data *us, | |||
| 
 | ||||
| int usb_stor_CB_reset(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 
 | ||||
| 	memset(us->iobuf, 0xFF, CB_RESET_CMD_SIZE); | ||||
| 	us->iobuf[0] = SEND_DIAGNOSTIC; | ||||
| 	us->iobuf[1] = 4; | ||||
|  | @ -1315,8 +1311,6 @@ EXPORT_SYMBOL_GPL(usb_stor_CB_reset); | |||
|  */ | ||||
| int usb_stor_Bulk_reset(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("%s called\n", __func__); | ||||
| 
 | ||||
| 	return usb_stor_reset_common(us, US_BULK_RESET_REQUEST,  | ||||
| 				 USB_TYPE_CLASS | USB_RECIP_INTERFACE, | ||||
| 				 0, us->ifnum, NULL, 0); | ||||
|  | @ -1336,16 +1330,17 @@ int usb_stor_port_reset(struct us_data *us) | |||
| 
 | ||||
| 	result = usb_lock_device_for_reset(us->pusb_dev, us->pusb_intf); | ||||
| 	if (result < 0) | ||||
| 		US_DEBUGP("unable to lock device for reset: %d\n", result); | ||||
| 		usb_stor_dbg(us, "unable to lock device for reset: %d\n", | ||||
| 			     result); | ||||
| 	else { | ||||
| 		/* Were we disconnected while waiting for the lock? */ | ||||
| 		if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) { | ||||
| 			result = -EIO; | ||||
| 			US_DEBUGP("No reset during disconnect\n"); | ||||
| 			usb_stor_dbg(us, "No reset during disconnect\n"); | ||||
| 		} else { | ||||
| 			result = usb_reset_device(us->pusb_dev); | ||||
| 			US_DEBUGP("usb_reset_device returns %d\n", | ||||
| 					result); | ||||
| 			usb_stor_dbg(us, "usb_reset_device returns %d\n", | ||||
| 				     result); | ||||
| 		} | ||||
| 		usb_unlock_device(us->pusb_dev); | ||||
| 	} | ||||
|  |  | |||
|  | @ -183,7 +183,6 @@ int usb_stor_suspend(struct usb_interface *iface, pm_message_t message) | |||
| 	/* Wait until no command is running */ | ||||
| 	mutex_lock(&us->dev_mutex); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 	if (us->suspend_resume_hook) | ||||
| 		(us->suspend_resume_hook)(us, US_SUSPEND); | ||||
| 
 | ||||
|  | @ -201,7 +200,6 @@ int usb_stor_resume(struct usb_interface *iface) | |||
| 
 | ||||
| 	mutex_lock(&us->dev_mutex); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 	if (us->suspend_resume_hook) | ||||
| 		(us->suspend_resume_hook)(us, US_RESUME); | ||||
| 
 | ||||
|  | @ -214,8 +212,6 @@ int usb_stor_reset_resume(struct usb_interface *iface) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 
 | ||||
| 	/* Report the reset to the SCSI core */ | ||||
| 	usb_stor_report_bus_reset(us); | ||||
| 
 | ||||
|  | @ -236,8 +232,6 @@ int usb_stor_pre_reset(struct usb_interface *iface) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 
 | ||||
| 	/* Make sure no command runs during the reset */ | ||||
| 	mutex_lock(&us->dev_mutex); | ||||
| 	return 0; | ||||
|  | @ -248,8 +242,6 @@ int usb_stor_post_reset(struct usb_interface *iface) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(iface); | ||||
| 
 | ||||
| 	US_DEBUGP("%s\n", __func__); | ||||
| 
 | ||||
| 	/* Report the reset to the SCSI core */ | ||||
| 	usb_stor_report_bus_reset(us); | ||||
| 
 | ||||
|  | @ -311,11 +303,11 @@ static int usb_stor_control_thread(void * __us) | |||
| 	struct Scsi_Host *host = us_to_host(us); | ||||
| 
 | ||||
| 	for (;;) { | ||||
| 		US_DEBUGP("*** thread sleeping.\n"); | ||||
| 		usb_stor_dbg(us, "*** thread sleeping\n"); | ||||
| 		if (wait_for_completion_interruptible(&us->cmnd_ready)) | ||||
| 			break; | ||||
| 
 | ||||
| 		US_DEBUGP("*** thread awakened.\n"); | ||||
| 		usb_stor_dbg(us, "*** thread awakened\n"); | ||||
| 
 | ||||
| 		/* lock the device pointers */ | ||||
| 		mutex_lock(&(us->dev_mutex)); | ||||
|  | @ -327,7 +319,7 @@ static int usb_stor_control_thread(void * __us) | |||
| 		if (us->srb == NULL) { | ||||
| 			scsi_unlock(host); | ||||
| 			mutex_unlock(&us->dev_mutex); | ||||
| 			US_DEBUGP("-- exiting\n"); | ||||
| 			usb_stor_dbg(us, "-- exiting\n"); | ||||
| 			break; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -343,7 +335,7 @@ static int usb_stor_control_thread(void * __us) | |||
| 		 * is UNKNOWN | ||||
| 		 */ | ||||
| 		if (us->srb->sc_data_direction == DMA_BIDIRECTIONAL) { | ||||
| 			US_DEBUGP("UNKNOWN data direction\n"); | ||||
| 			usb_stor_dbg(us, "UNKNOWN data direction\n"); | ||||
| 			us->srb->result = DID_ERROR << 16; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -352,14 +344,14 @@ static int usb_stor_control_thread(void * __us) | |||
| 		 */ | ||||
| 		else if (us->srb->device->id && | ||||
| 				!(us->fflags & US_FL_SCM_MULT_TARG)) { | ||||
| 			US_DEBUGP("Bad target number (%d:%d)\n", | ||||
| 				  us->srb->device->id, us->srb->device->lun); | ||||
| 			usb_stor_dbg(us, "Bad target number (%d:%d)\n", | ||||
| 				     us->srb->device->id, us->srb->device->lun); | ||||
| 			us->srb->result = DID_BAD_TARGET << 16; | ||||
| 		} | ||||
| 
 | ||||
| 		else if (us->srb->device->lun > us->max_lun) { | ||||
| 			US_DEBUGP("Bad LUN (%d:%d)\n", | ||||
| 				  us->srb->device->id, us->srb->device->lun); | ||||
| 			usb_stor_dbg(us, "Bad LUN (%d:%d)\n", | ||||
| 				     us->srb->device->id, us->srb->device->lun); | ||||
| 			us->srb->result = DID_BAD_TARGET << 16; | ||||
| 		} | ||||
| 
 | ||||
|  | @ -371,14 +363,14 @@ static int usb_stor_control_thread(void * __us) | |||
| 			    0x00, 0x80, 0x02, 0x02, | ||||
| 			    0x1F, 0x00, 0x00, 0x00}; | ||||
| 
 | ||||
| 			US_DEBUGP("Faking INQUIRY command\n"); | ||||
| 			usb_stor_dbg(us, "Faking INQUIRY command\n"); | ||||
| 			fill_inquiry_response(us, data_ptr, 36); | ||||
| 			us->srb->result = SAM_STAT_GOOD; | ||||
| 		} | ||||
| 
 | ||||
| 		/* we've got a command, let's do it! */ | ||||
| 		else { | ||||
| 			US_DEBUG(usb_stor_show_command(us->srb)); | ||||
| 			US_DEBUG(usb_stor_show_command(us, us->srb)); | ||||
| 			us->proto_handler(us->srb, us); | ||||
| 			usb_mark_last_busy(us->pusb_dev); | ||||
| 		} | ||||
|  | @ -388,12 +380,12 @@ static int usb_stor_control_thread(void * __us) | |||
| 
 | ||||
| 		/* indicate that the command is done */ | ||||
| 		if (us->srb->result != DID_ABORT << 16) { | ||||
| 			US_DEBUGP("scsi cmd done, result=0x%x\n", | ||||
| 				   us->srb->result); | ||||
| 			usb_stor_dbg(us, "scsi cmd done, result=0x%x\n", | ||||
| 				     us->srb->result); | ||||
| 			us->srb->scsi_done(us->srb); | ||||
| 		} else { | ||||
| SkipForAbort: | ||||
| 			US_DEBUGP("scsi command aborted\n"); | ||||
| 			usb_stor_dbg(us, "scsi command aborted\n"); | ||||
| 		} | ||||
| 
 | ||||
| 		/* If an abort request was received we need to signal that
 | ||||
|  | @ -435,34 +427,30 @@ SkipForAbort: | |||
| /* Associate our private data with the USB device */ | ||||
| static int associate_dev(struct us_data *us, struct usb_interface *intf) | ||||
| { | ||||
| 	US_DEBUGP("-- %s\n", __func__); | ||||
| 
 | ||||
| 	/* Fill in the device-related fields */ | ||||
| 	us->pusb_dev = interface_to_usbdev(intf); | ||||
| 	us->pusb_intf = intf; | ||||
| 	us->ifnum = intf->cur_altsetting->desc.bInterfaceNumber; | ||||
| 	US_DEBUGP("Vendor: 0x%04x, Product: 0x%04x, Revision: 0x%04x\n", | ||||
| 			le16_to_cpu(us->pusb_dev->descriptor.idVendor), | ||||
| 			le16_to_cpu(us->pusb_dev->descriptor.idProduct), | ||||
| 			le16_to_cpu(us->pusb_dev->descriptor.bcdDevice)); | ||||
| 	US_DEBUGP("Interface Subclass: 0x%02x, Protocol: 0x%02x\n", | ||||
| 			intf->cur_altsetting->desc.bInterfaceSubClass, | ||||
| 			intf->cur_altsetting->desc.bInterfaceProtocol); | ||||
| 	usb_stor_dbg(us, "Vendor: 0x%04x, Product: 0x%04x, Revision: 0x%04x\n", | ||||
| 		     le16_to_cpu(us->pusb_dev->descriptor.idVendor), | ||||
| 		     le16_to_cpu(us->pusb_dev->descriptor.idProduct), | ||||
| 		     le16_to_cpu(us->pusb_dev->descriptor.bcdDevice)); | ||||
| 	usb_stor_dbg(us, "Interface Subclass: 0x%02x, Protocol: 0x%02x\n", | ||||
| 		     intf->cur_altsetting->desc.bInterfaceSubClass, | ||||
| 		     intf->cur_altsetting->desc.bInterfaceProtocol); | ||||
| 
 | ||||
| 	/* Store our private data in the interface */ | ||||
| 	usb_set_intfdata(intf, us); | ||||
| 
 | ||||
| 	/* Allocate the control/setup and DMA-mapped buffers */ | ||||
| 	us->cr = kmalloc(sizeof(*us->cr), GFP_KERNEL); | ||||
| 	if (!us->cr) { | ||||
| 		US_DEBUGP("usb_ctrlrequest allocation failed\n"); | ||||
| 	if (!us->cr) | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 
 | ||||
| 	us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE, | ||||
| 			GFP_KERNEL, &us->iobuf_dma); | ||||
| 	if (!us->iobuf) { | ||||
| 		US_DEBUGP("I/O buffer allocation failed\n"); | ||||
| 		usb_stor_dbg(us, "I/O buffer allocation failed\n"); | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 	return 0; | ||||
|  | @ -738,7 +726,7 @@ static int get_pipes(struct us_data *us) | |||
| 	} | ||||
| 
 | ||||
| 	if (!ep_in || !ep_out || (us->protocol == USB_PR_CBI && !ep_int)) { | ||||
| 		US_DEBUGP("Endpoint sanity check failed! Rejecting dev.\n"); | ||||
| 		usb_stor_dbg(us, "Endpoint sanity check failed! Rejecting dev.\n"); | ||||
| 		return -EIO; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -765,7 +753,7 @@ static int usb_stor_acquire_resources(struct us_data *us) | |||
| 
 | ||||
| 	us->current_urb = usb_alloc_urb(0, GFP_KERNEL); | ||||
| 	if (!us->current_urb) { | ||||
| 		US_DEBUGP("URB allocation failed\n"); | ||||
| 		usb_stor_dbg(us, "URB allocation failed\n"); | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -792,20 +780,18 @@ static int usb_stor_acquire_resources(struct us_data *us) | |||
| /* Release all our dynamic resources */ | ||||
| static void usb_stor_release_resources(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("-- %s\n", __func__); | ||||
| 
 | ||||
| 	/* Tell the control thread to exit.  The SCSI host must
 | ||||
| 	 * already have been removed and the DISCONNECTING flag set | ||||
| 	 * so that we won't accept any more commands. | ||||
| 	 */ | ||||
| 	US_DEBUGP("-- sending exit command to thread\n"); | ||||
| 	usb_stor_dbg(us, "-- sending exit command to thread\n"); | ||||
| 	complete(&us->cmnd_ready); | ||||
| 	if (us->ctl_thread) | ||||
| 		kthread_stop(us->ctl_thread); | ||||
| 
 | ||||
| 	/* Call the destructor routine, if it exists */ | ||||
| 	if (us->extra_destructor) { | ||||
| 		US_DEBUGP("-- calling extra_destructor()\n"); | ||||
| 		usb_stor_dbg(us, "-- calling extra_destructor()\n"); | ||||
| 		us->extra_destructor(us->extra); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -817,8 +803,6 @@ static void usb_stor_release_resources(struct us_data *us) | |||
| /* Dissociate from the USB device */ | ||||
| static void dissociate_dev(struct us_data *us) | ||||
| { | ||||
| 	US_DEBUGP("-- %s\n", __func__); | ||||
| 
 | ||||
| 	/* Free the buffers */ | ||||
| 	kfree(us->cr); | ||||
| 	usb_free_coherent(us->pusb_dev, US_IOBUF_SIZE, us->iobuf, us->iobuf_dma); | ||||
|  | @ -918,7 +902,7 @@ int usb_stor_probe1(struct us_data **pus, | |||
| 	struct us_data *us; | ||||
| 	int result; | ||||
| 
 | ||||
| 	US_DEBUGP("USB Mass Storage device detected\n"); | ||||
| 	dev_info(&intf->dev, "USB Mass Storage device detected\n"); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Ask the SCSI layer to allocate a host structure, with extra | ||||
|  | @ -926,8 +910,7 @@ int usb_stor_probe1(struct us_data **pus, | |||
| 	 */ | ||||
| 	host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us)); | ||||
| 	if (!host) { | ||||
| 		dev_warn(&intf->dev, | ||||
| 				"Unable to allocate the scsi host\n"); | ||||
| 		dev_warn(&intf->dev, "Unable to allocate the scsi host\n"); | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -964,7 +947,7 @@ int usb_stor_probe1(struct us_data **pus, | |||
| 	return 0; | ||||
| 
 | ||||
| BadDevice: | ||||
| 	US_DEBUGP("storage_probe() failed\n"); | ||||
| 	usb_stor_dbg(us, "storage_probe() failed\n"); | ||||
| 	release_everything(us); | ||||
| 	return result; | ||||
| } | ||||
|  | @ -981,8 +964,8 @@ int usb_stor_probe2(struct us_data *us) | |||
| 		result = -ENXIO; | ||||
| 		goto BadDevice; | ||||
| 	} | ||||
| 	US_DEBUGP("Transport: %s\n", us->transport_name); | ||||
| 	US_DEBUGP("Protocol: %s\n", us->protocol_name); | ||||
| 	usb_stor_dbg(us, "Transport: %s\n", us->transport_name); | ||||
| 	usb_stor_dbg(us, "Protocol: %s\n", us->protocol_name); | ||||
| 
 | ||||
| 	/* fix for single-lun devices */ | ||||
| 	if (us->fflags & US_FL_SINGLE_LUN) | ||||
|  | @ -1028,7 +1011,7 @@ int usb_stor_probe2(struct us_data *us) | |||
| 
 | ||||
| 	/* We come here if there are any problems */ | ||||
| BadDevice: | ||||
| 	US_DEBUGP("storage_probe() failed\n"); | ||||
| 	usb_stor_dbg(us, "storage_probe() failed\n"); | ||||
| 	release_everything(us); | ||||
| 	return result; | ||||
| } | ||||
|  | @ -1039,7 +1022,6 @@ void usb_stor_disconnect(struct usb_interface *intf) | |||
| { | ||||
| 	struct us_data *us = usb_get_intfdata(intf); | ||||
| 
 | ||||
| 	US_DEBUGP("storage_disconnect() called\n"); | ||||
| 	quiesce_and_remove_host(us); | ||||
| 	release_everything(us); | ||||
| } | ||||
|  | @ -1075,8 +1057,7 @@ static int storage_probe(struct usb_interface *intf, | |||
| 	} else { | ||||
| 		unusual_dev = &for_dynamic_ids; | ||||
| 
 | ||||
| 		US_DEBUGP("%s %s 0x%04x 0x%04x\n", "Use Bulk-Only transport", | ||||
| 			"with the Transparent SCSI protocol for dynamic id:", | ||||
| 		dev_dbg(&intf->dev, "Use Bulk-Only transport with the Transparent SCSI protocol for dynamic id: 0x%04x 0x%04x\n", | ||||
| 			id->idVendor, id->idProduct); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -1117,20 +1098,18 @@ static int __init usb_stor_init(void) | |||
| 	/* register the driver, return usb_register return code if error */ | ||||
| 	retval = usb_register(&usb_storage_driver); | ||||
| 	if (retval == 0) | ||||
| 		pr_info("USB Mass Storage support registered.\n"); | ||||
| 		pr_info("USB Mass Storage support registered\n"); | ||||
| 	return retval; | ||||
| } | ||||
| 
 | ||||
| static void __exit usb_stor_exit(void) | ||||
| { | ||||
| 	US_DEBUGP("usb_stor_exit() called\n"); | ||||
| 
 | ||||
| 	/* Deregister the driver
 | ||||
| 	 * This will cause disconnect() to be called for each | ||||
| 	 * attached unit | ||||
| 	 */ | ||||
| 	US_DEBUGP("-- calling usb_deregister()\n"); | ||||
| 	usb_deregister(&usb_storage_driver) ; | ||||
| 	pr_info("Deregistering USB Mass Storage driver...\n"); | ||||
| 	usb_deregister(&usb_storage_driver); | ||||
| } | ||||
| 
 | ||||
| module_init(usb_stor_init); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Joe Perches
				Joe Perches