staging/keucr: transport usb use pr_<level>
transport.c usb.c use pr_<level> for messages Signed-off-by: Cho, Yu-Chen <acho@novell.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
548039fd34
commit
871f847796
|
@ -1,3 +1,5 @@
|
||||||
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
@ -18,7 +20,7 @@ static void usb_stor_blocking_completion(struct urb *urb)
|
||||||
{
|
{
|
||||||
struct completion *urb_done_ptr = urb->context;
|
struct completion *urb_done_ptr = urb->context;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_blocking_completion\n");
|
/* pr_info("transport --- usb_stor_blocking_completion\n"); */
|
||||||
complete(urb_done_ptr);
|
complete(urb_done_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +31,7 @@ static int usb_stor_msg_common(struct us_data *us, int timeout)
|
||||||
long timeleft;
|
long timeleft;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_msg_common\n");
|
/* pr_info("transport --- usb_stor_msg_common\n"); */
|
||||||
if (test_bit(US_FLIDX_ABORTING, &us->dflags))
|
if (test_bit(US_FLIDX_ABORTING, &us->dflags))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
|
@ -56,7 +58,7 @@ static int usb_stor_msg_common(struct us_data *us, int timeout)
|
||||||
{
|
{
|
||||||
if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags))
|
if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- cancelling URB\n");
|
/* pr_info("-- cancelling URB\n"); */
|
||||||
usb_unlink_urb(us->current_urb);
|
usb_unlink_urb(us->current_urb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +68,8 @@ static int usb_stor_msg_common(struct us_data *us, int timeout)
|
||||||
|
|
||||||
if (timeleft <= 0)
|
if (timeleft <= 0)
|
||||||
{
|
{
|
||||||
//printk("%s -- cancelling URB\n", timeleft == 0 ? "Timeout" : "Signal");
|
/* pr_info("%s -- cancelling URB\n",
|
||||||
|
timeleft == 0 ? "Timeout" : "Signal"); */
|
||||||
usb_kill_urb(us->current_urb);
|
usb_kill_urb(us->current_urb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +83,7 @@ int usb_stor_control_msg(struct us_data *us, unsigned int pipe,
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_control_msg\n");
|
/* pr_info("transport --- usb_stor_control_msg\n"); */
|
||||||
|
|
||||||
/* fill in the devrequest structure */
|
/* fill in the devrequest structure */
|
||||||
us->cr->bRequestType = requesttype;
|
us->cr->bRequestType = requesttype;
|
||||||
|
@ -107,7 +110,7 @@ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe)
|
||||||
int result;
|
int result;
|
||||||
int endp = usb_pipeendpoint(pipe);
|
int endp = usb_pipeendpoint(pipe);
|
||||||
|
|
||||||
//printk("transport --- usb_stor_clear_halt\n");
|
/* pr_info("transport --- usb_stor_clear_halt\n"); */
|
||||||
if (usb_pipein (pipe))
|
if (usb_pipein (pipe))
|
||||||
endp |= USB_DIR_IN;
|
endp |= USB_DIR_IN;
|
||||||
|
|
||||||
|
@ -128,41 +131,41 @@ int usb_stor_clear_halt(struct us_data *us, unsigned int pipe)
|
||||||
static int interpret_urb_result(struct us_data *us, unsigned int pipe,
|
static int interpret_urb_result(struct us_data *us, unsigned int pipe,
|
||||||
unsigned int length, int result, unsigned int partial)
|
unsigned int length, int result, unsigned int partial)
|
||||||
{
|
{
|
||||||
//printk("transport --- interpret_urb_result\n");
|
/* pr_info("transport --- interpret_urb_result\n"); */
|
||||||
switch (result) {
|
switch (result) {
|
||||||
/* no error code; did we send all the data? */
|
/* no error code; did we send all the data? */
|
||||||
case 0:
|
case 0:
|
||||||
if (partial != length)
|
if (partial != length)
|
||||||
{
|
{
|
||||||
//printk("-- short transfer\n");
|
/* pr_info("-- short transfer\n"); */
|
||||||
return USB_STOR_XFER_SHORT;
|
return USB_STOR_XFER_SHORT;
|
||||||
}
|
}
|
||||||
//printk("-- transfer complete\n");
|
/* pr_info("-- transfer complete\n"); */
|
||||||
return USB_STOR_XFER_GOOD;
|
return USB_STOR_XFER_GOOD;
|
||||||
case -EPIPE:
|
case -EPIPE:
|
||||||
if (usb_pipecontrol(pipe))
|
if (usb_pipecontrol(pipe))
|
||||||
{
|
{
|
||||||
//printk("-- stall on control pipe\n");
|
/* pr_info("-- stall on control pipe\n"); */
|
||||||
return USB_STOR_XFER_STALLED;
|
return USB_STOR_XFER_STALLED;
|
||||||
}
|
}
|
||||||
//printk("clearing endpoint halt for pipe 0x%x\n", pipe);
|
/* pr_info("clearing endpoint halt for pipe 0x%x\n", pipe); */
|
||||||
if (usb_stor_clear_halt(us, pipe) < 0)
|
if (usb_stor_clear_halt(us, pipe) < 0)
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
return USB_STOR_XFER_STALLED;
|
return USB_STOR_XFER_STALLED;
|
||||||
case -EOVERFLOW:
|
case -EOVERFLOW:
|
||||||
//printk("-- babble\n");
|
/* pr_info("-- babble\n"); */
|
||||||
return USB_STOR_XFER_LONG;
|
return USB_STOR_XFER_LONG;
|
||||||
case -ECONNRESET:
|
case -ECONNRESET:
|
||||||
//printk("-- transfer cancelled\n");
|
/* pr_info("-- transfer cancelled\n"); */
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
case -EREMOTEIO:
|
case -EREMOTEIO:
|
||||||
//printk("-- short read transfer\n");
|
/* pr_info("-- short read transfer\n"); */
|
||||||
return USB_STOR_XFER_SHORT;
|
return USB_STOR_XFER_SHORT;
|
||||||
case -EIO:
|
case -EIO:
|
||||||
//printk("-- abort or disconnect in progress\n");
|
/* pr_info("-- abort or disconnect in progress\n"); */
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
default:
|
default:
|
||||||
//printk("-- unknown error\n");
|
/* pr_info("-- unknown error\n"); */
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,7 +176,7 @@ int usb_stor_bulk_transfer_buf(struct us_data *us, unsigned int pipe,
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_bulk_transfer_buf\n");
|
/* pr_info("transport --- usb_stor_bulk_transfer_buf\n"); */
|
||||||
|
|
||||||
/* fill and submit the URB */
|
/* fill and submit the URB */
|
||||||
usb_fill_bulk_urb(us->current_urb, us->pusb_dev, pipe, buf, length, usb_stor_blocking_completion, NULL);
|
usb_fill_bulk_urb(us->current_urb, us->pusb_dev, pipe, buf, length, usb_stor_blocking_completion, NULL);
|
||||||
|
@ -193,7 +196,7 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe,
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_bulk_transfer_sglist\n");
|
/* pr_info("transport --- usb_stor_bulk_transfer_sglist\n"); */
|
||||||
if (test_bit(US_FLIDX_ABORTING, &us->dflags))
|
if (test_bit(US_FLIDX_ABORTING, &us->dflags))
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
|
|
||||||
|
@ -201,7 +204,7 @@ static int usb_stor_bulk_transfer_sglist(struct us_data *us, unsigned int pipe,
|
||||||
result = usb_sg_init(&us->current_sg, us->pusb_dev, pipe, 0, sg, num_sg, length, GFP_NOIO);
|
result = usb_sg_init(&us->current_sg, us->pusb_dev, pipe, 0, sg, num_sg, length, GFP_NOIO);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
//printk("usb_sg_init returned %d\n", result);
|
/* pr_info("usb_sg_init returned %d\n", result); */
|
||||||
return USB_STOR_XFER_ERROR;
|
return USB_STOR_XFER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +217,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 */
|
/* cancel the request, if it hasn't been cancelled already */
|
||||||
if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags))
|
if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- cancelling sg request\n");
|
/* pr_info("-- cancelling sg request\n"); */
|
||||||
usb_sg_cancel(&us->current_sg);
|
usb_sg_cancel(&us->current_sg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -249,7 +252,7 @@ int usb_stor_bulk_transfer_sg(struct us_data* us, unsigned int pipe,
|
||||||
int result;
|
int result;
|
||||||
unsigned int partial;
|
unsigned int partial;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_bulk_transfer_sg\n");
|
/* pr_info("transport --- usb_stor_bulk_transfer_sg\n"); */
|
||||||
/* are we scatter-gathering? */
|
/* are we scatter-gathering? */
|
||||||
if (use_sg)
|
if (use_sg)
|
||||||
{
|
{
|
||||||
|
@ -281,7 +284,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
int need_auto_sense;
|
int need_auto_sense;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_invoke_transport\n");
|
/* pr_info("transport --- usb_stor_invoke_transport\n"); */
|
||||||
usb_stor_print_cmd(srb);
|
usb_stor_print_cmd(srb);
|
||||||
/* send the command to the transport layer */
|
/* send the command to the transport layer */
|
||||||
scsi_set_resid(srb, 0);
|
scsi_set_resid(srb, 0);
|
||||||
|
@ -290,7 +293,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
/* if the command gets aborted by the higher layers, we need to short-circuit all other processing */
|
/* if the command gets aborted by the higher layers, we need to short-circuit all other processing */
|
||||||
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- command was aborted\n");
|
/* pr_info("-- command was aborted\n"); */
|
||||||
srb->result = DID_ABORT << 16;
|
srb->result = DID_ABORT << 16;
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
}
|
}
|
||||||
|
@ -298,7 +301,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
/* if there is a transport error, reset and don't auto-sense */
|
/* if there is a transport error, reset and don't auto-sense */
|
||||||
if (result == USB_STOR_TRANSPORT_ERROR)
|
if (result == USB_STOR_TRANSPORT_ERROR)
|
||||||
{
|
{
|
||||||
//printk("-- transport indicates error, resetting\n");
|
/* pr_info("-- transport indicates error, resetting\n"); */
|
||||||
srb->result = DID_ERROR << 16;
|
srb->result = DID_ERROR << 16;
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
}
|
}
|
||||||
|
@ -317,13 +320,13 @@ 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)
|
if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_DPCM_USB) && srb->sc_data_direction != DMA_FROM_DEVICE)
|
||||||
{
|
{
|
||||||
//printk("-- CB transport device requiring auto-sense\n");
|
/* pr_info("-- CB transport device requiring auto-sense\n"); */
|
||||||
need_auto_sense = 1;
|
need_auto_sense = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == USB_STOR_TRANSPORT_FAILED)
|
if (result == USB_STOR_TRANSPORT_FAILED)
|
||||||
{
|
{
|
||||||
//printk("-- transport indicates command failure\n");
|
/* pr_info("-- transport indicates command failure\n"); */
|
||||||
need_auto_sense = 1;
|
need_auto_sense = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,7 +336,7 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
int temp_result;
|
int temp_result;
|
||||||
struct scsi_eh_save ses;
|
struct scsi_eh_save ses;
|
||||||
|
|
||||||
printk("Issuing auto-REQUEST_SENSE\n");
|
pr_info("Issuing auto-REQUEST_SENSE\n");
|
||||||
|
|
||||||
scsi_eh_prep_cmnd(srb, &ses, NULL, 0, US_SENSE_SIZE);
|
scsi_eh_prep_cmnd(srb, &ses, NULL, 0, US_SENSE_SIZE);
|
||||||
|
|
||||||
|
@ -352,13 +355,13 @@ void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
|
|
||||||
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- auto-sense aborted\n");
|
/* pr_info("-- auto-sense aborted\n"); */
|
||||||
srb->result = DID_ABORT << 16;
|
srb->result = DID_ABORT << 16;
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
}
|
}
|
||||||
if (temp_result != USB_STOR_TRANSPORT_GOOD)
|
if (temp_result != USB_STOR_TRANSPORT_GOOD)
|
||||||
{
|
{
|
||||||
//printk("-- auto-sense failure\n");
|
/* pr_info("-- auto-sense failure\n"); */
|
||||||
srb->result = DID_ERROR << 16;
|
srb->result = DID_ERROR << 16;
|
||||||
if (!(us->fflags & US_FL_SCM_MULT_TARG))
|
if (!(us->fflags & US_FL_SCM_MULT_TARG))
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
|
@ -409,7 +412,7 @@ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
{
|
{
|
||||||
int result=0;
|
int result=0;
|
||||||
|
|
||||||
//printk("transport --- ENE_stor_invoke_transport\n");
|
/* pr_info("transport --- ENE_stor_invoke_transport\n"); */
|
||||||
usb_stor_print_cmd(srb);
|
usb_stor_print_cmd(srb);
|
||||||
/* send the command to the transport layer */
|
/* send the command to the transport layer */
|
||||||
scsi_set_resid(srb, 0);
|
scsi_set_resid(srb, 0);
|
||||||
|
@ -427,7 +430,7 @@ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
/* if the command gets aborted by the higher layers, we need to short-circuit all other processing */
|
/* if the command gets aborted by the higher layers, we need to short-circuit all other processing */
|
||||||
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- command was aborted\n");
|
/* pr_info("-- command was aborted\n"); */
|
||||||
srb->result = DID_ABORT << 16;
|
srb->result = DID_ABORT << 16;
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
}
|
}
|
||||||
|
@ -435,7 +438,7 @@ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
/* if there is a transport error, reset and don't auto-sense */
|
/* if there is a transport error, reset and don't auto-sense */
|
||||||
if (result == USB_STOR_TRANSPORT_ERROR)
|
if (result == USB_STOR_TRANSPORT_ERROR)
|
||||||
{
|
{
|
||||||
//printk("-- transport indicates error, resetting\n");
|
/* pr_info("-- transport indicates error, resetting\n"); */
|
||||||
srb->result = DID_ERROR << 16;
|
srb->result = DID_ERROR << 16;
|
||||||
goto Handle_Errors;
|
goto Handle_Errors;
|
||||||
}
|
}
|
||||||
|
@ -450,7 +453,7 @@ void ENE_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
srb->result = SAM_STAT_GOOD;
|
srb->result = SAM_STAT_GOOD;
|
||||||
if (result == USB_STOR_TRANSPORT_FAILED)
|
if (result == USB_STOR_TRANSPORT_FAILED)
|
||||||
{
|
{
|
||||||
//printk("-- transport indicates command failure\n");
|
/* pr_info("-- transport indicates command failure\n"); */
|
||||||
//need_auto_sense = 1;
|
//need_auto_sense = 1;
|
||||||
BuildSenseBuffer(srb, us->SrbStatus);
|
BuildSenseBuffer(srb, us->SrbStatus);
|
||||||
srb->result = SAM_STAT_CHECK_CONDITION;
|
srb->result = SAM_STAT_CHECK_CONDITION;
|
||||||
|
@ -488,7 +491,7 @@ void BuildSenseBuffer(struct scsi_cmnd *srb, int SrbStatus)
|
||||||
BYTE *buf = srb->sense_buffer;
|
BYTE *buf = srb->sense_buffer;
|
||||||
BYTE asc;
|
BYTE asc;
|
||||||
|
|
||||||
printk("transport --- BuildSenseBuffer\n");
|
pr_info("transport --- BuildSenseBuffer\n");
|
||||||
switch (SrbStatus)
|
switch (SrbStatus)
|
||||||
{
|
{
|
||||||
case SS_NOT_READY: asc = 0x3a; break; // sense key = 0x02
|
case SS_NOT_READY: asc = 0x3a; break; // sense key = 0x02
|
||||||
|
@ -507,17 +510,17 @@ void BuildSenseBuffer(struct scsi_cmnd *srb, int SrbStatus)
|
||||||
//----- usb_stor_stop_transport() ---------------------
|
//----- usb_stor_stop_transport() ---------------------
|
||||||
void usb_stor_stop_transport(struct us_data *us)
|
void usb_stor_stop_transport(struct us_data *us)
|
||||||
{
|
{
|
||||||
//printk("transport --- usb_stor_stop_transport\n");
|
/* pr_info("transport --- usb_stor_stop_transport\n"); */
|
||||||
|
|
||||||
if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags))
|
if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- cancelling URB\n");
|
/* pr_info("-- cancelling URB\n"); */
|
||||||
usb_unlink_urb(us->current_urb);
|
usb_unlink_urb(us->current_urb);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags))
|
if (test_and_clear_bit(US_FLIDX_SG_ACTIVE, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("-- cancelling sg request\n");
|
/* pr_info("-- cancelling sg request\n"); */
|
||||||
usb_sg_cancel(&us->current_sg);
|
usb_sg_cancel(&us->current_sg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -527,7 +530,7 @@ int usb_stor_Bulk_max_lun(struct us_data *us)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_Bulk_max_lun\n");
|
/* pr_info("transport --- usb_stor_Bulk_max_lun\n"); */
|
||||||
/* issue the command */
|
/* issue the command */
|
||||||
us->iobuf[0] = 0;
|
us->iobuf[0] = 0;
|
||||||
result = usb_stor_control_msg(us, us->recv_ctrl_pipe,
|
result = usb_stor_control_msg(us, us->recv_ctrl_pipe,
|
||||||
|
@ -536,7 +539,8 @@ int usb_stor_Bulk_max_lun(struct us_data *us)
|
||||||
USB_RECIP_INTERFACE,
|
USB_RECIP_INTERFACE,
|
||||||
0, us->ifnum, us->iobuf, 1, HZ);
|
0, us->ifnum, us->iobuf, 1, HZ);
|
||||||
|
|
||||||
//printk("GetMaxLUN command result is %d, data is %d\n", result, us->iobuf[0]);
|
/* pr_info("GetMaxLUN command result is %d, data is %d\n",
|
||||||
|
result, us->iobuf[0]); */
|
||||||
|
|
||||||
/* if we have a successful request, return the result */
|
/* if we have a successful request, return the result */
|
||||||
if (result > 0)
|
if (result > 0)
|
||||||
|
@ -557,7 +561,7 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
unsigned int cswlen;
|
unsigned int cswlen;
|
||||||
unsigned int cbwlen = US_BULK_CB_WRAP_LEN;
|
unsigned int cbwlen = US_BULK_CB_WRAP_LEN;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_Bulk_transport\n");
|
/* pr_info("transport --- usb_stor_Bulk_transport\n"); */
|
||||||
/* Take care of BULK32 devices; set extra byte to 0 */
|
/* Take care of BULK32 devices; set extra byte to 0 */
|
||||||
if (unlikely(us->fflags & US_FL_BULK32))
|
if (unlikely(us->fflags & US_FL_BULK32))
|
||||||
{
|
{
|
||||||
|
@ -581,13 +585,13 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
|
|
||||||
// send command
|
// send command
|
||||||
/* send it to out endpoint */
|
/* send it to out endpoint */
|
||||||
/*printk("Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n",
|
/* pr_info("Bulk Command S 0x%x T 0x%x L %d F %d Trg %d LUN %d CL %d\n",
|
||||||
le32_to_cpu(bcb->Signature), bcb->Tag,
|
le32_to_cpu(bcb->Signature), bcb->Tag,
|
||||||
le32_to_cpu(bcb->DataTransferLength), bcb->Flags,
|
le32_to_cpu(bcb->DataTransferLength), bcb->Flags,
|
||||||
(bcb->Lun >> 4), (bcb->Lun & 0x0F),
|
(bcb->Lun >> 4), (bcb->Lun & 0x0F),
|
||||||
bcb->Length); */
|
bcb->Length); */
|
||||||
result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb, cbwlen, NULL);
|
result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcb, cbwlen, NULL);
|
||||||
//printk("Bulk command transfer result=%d\n", result);
|
/* pr_info("Bulk command transfer result=%d\n", result); */
|
||||||
if (result != USB_STOR_XFER_GOOD)
|
if (result != USB_STOR_XFER_GOOD)
|
||||||
return USB_STOR_TRANSPORT_ERROR;
|
return USB_STOR_TRANSPORT_ERROR;
|
||||||
|
|
||||||
|
@ -599,7 +603,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;
|
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);
|
result = usb_stor_bulk_srb(us, pipe, srb);
|
||||||
//printk("Bulk data transfer result 0x%x\n", result);
|
/* pr_info("Bulk data transfer result 0x%x\n", result); */
|
||||||
if (result == USB_STOR_XFER_ERROR)
|
if (result == USB_STOR_XFER_ERROR)
|
||||||
return USB_STOR_TRANSPORT_ERROR;
|
return USB_STOR_TRANSPORT_ERROR;
|
||||||
|
|
||||||
|
@ -608,12 +612,12 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get CSW for device status */
|
/* get CSW for device status */
|
||||||
//printk("Attempting to get CSW...\n");
|
/* pr_info("Attempting to get CSW...\n"); */
|
||||||
result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen);
|
result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen);
|
||||||
|
|
||||||
if (result == USB_STOR_XFER_SHORT && cswlen == 0)
|
if (result == USB_STOR_XFER_SHORT && cswlen == 0)
|
||||||
{
|
{
|
||||||
//printk("Received 0-length CSW; retrying...\n");
|
/* pr_info("Received 0-length CSW; retrying...\n"); */
|
||||||
result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen);
|
result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, &cswlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,21 +625,23 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
if (result == USB_STOR_XFER_STALLED)
|
if (result == USB_STOR_XFER_STALLED)
|
||||||
{
|
{
|
||||||
/* get the status again */
|
/* get the status again */
|
||||||
//printk("Attempting to get CSW (2nd try)...\n");
|
/* pr_info("Attempting to get CSW (2nd try)...\n"); */
|
||||||
result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs, US_BULK_CS_WRAP_LEN, NULL);
|
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 */
|
/* if we still have a failure at this point, we're in trouble */
|
||||||
//printk("Bulk status result = %d\n", result);
|
/* pr_info("Bulk status result = %d\n", result); */
|
||||||
if (result != USB_STOR_XFER_GOOD)
|
if (result != USB_STOR_XFER_GOOD)
|
||||||
return USB_STOR_TRANSPORT_ERROR;
|
return USB_STOR_TRANSPORT_ERROR;
|
||||||
|
|
||||||
/* check bulk status */
|
/* check bulk status */
|
||||||
residue = le32_to_cpu(bcs->Residue);
|
residue = le32_to_cpu(bcs->Residue);
|
||||||
//printk("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n", le32_to_cpu(bcs->Signature), bcs->Tag, residue, bcs->Status);
|
/* pr_info("Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n",
|
||||||
|
le32_to_cpu(bcs->Signature),
|
||||||
|
bcs->Tag, residue, bcs->Status); */
|
||||||
if (!(bcs->Tag == us->tag || (us->fflags & US_FL_BULK_IGNORE_TAG)) || bcs->Status > US_BULK_STAT_PHASE)
|
if (!(bcs->Tag == us->tag || (us->fflags & US_FL_BULK_IGNORE_TAG)) || bcs->Status > US_BULK_STAT_PHASE)
|
||||||
{
|
{
|
||||||
//printk("Bulk logical error\n");
|
/* pr_info("Bulk logical error\n"); */
|
||||||
return USB_STOR_TRANSPORT_ERROR;
|
return USB_STOR_TRANSPORT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -643,11 +649,12 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
{
|
{
|
||||||
us->bcs_signature = bcs->Signature;
|
us->bcs_signature = bcs->Signature;
|
||||||
//if (us->bcs_signature != cpu_to_le32(US_BULK_CS_SIGN))
|
//if (us->bcs_signature != cpu_to_le32(US_BULK_CS_SIGN))
|
||||||
// printk("Learnt BCS signature 0x%08X\n", le32_to_cpu(us->bcs_signature));
|
/* pr_info("Learnt BCS signature 0x%08X\n",
|
||||||
|
le32_to_cpu(us->bcs_signature)); */
|
||||||
}
|
}
|
||||||
else if (bcs->Signature != us->bcs_signature)
|
else if (bcs->Signature != us->bcs_signature)
|
||||||
{
|
{
|
||||||
/*printk("Signature mismatch: got %08X, expecting %08X\n",
|
/* pr_info("Signature mismatch: got %08X, expecting %08X\n",
|
||||||
le32_to_cpu(bcs->Signature),
|
le32_to_cpu(bcs->Signature),
|
||||||
le32_to_cpu(us->bcs_signature)); */
|
le32_to_cpu(us->bcs_signature)); */
|
||||||
return USB_STOR_TRANSPORT_ERROR;
|
return USB_STOR_TRANSPORT_ERROR;
|
||||||
|
@ -710,47 +717,47 @@ static int usb_stor_reset_common(struct us_data *us,
|
||||||
int result;
|
int result;
|
||||||
int result2;
|
int result2;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_reset_common\n");
|
/* pr_info("transport --- usb_stor_reset_common\n"); */
|
||||||
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags))
|
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("No reset during disconnect\n");
|
/* pr_info("No reset during disconnect\n"); */
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = usb_stor_control_msg(us, us->send_ctrl_pipe, request, requesttype, value, index, data, size, 5*HZ);
|
result = usb_stor_control_msg(us, us->send_ctrl_pipe, request, requesttype, value, index, data, size, 5*HZ);
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
{
|
{
|
||||||
//printk("Soft reset failed: %d\n", result);
|
/* pr_info("Soft reset failed: %d\n", result); */
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_event_interruptible_timeout(us->delay_wait, test_bit(US_FLIDX_DISCONNECTING, &us->dflags), HZ*6);
|
wait_event_interruptible_timeout(us->delay_wait, test_bit(US_FLIDX_DISCONNECTING, &us->dflags), HZ*6);
|
||||||
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags))
|
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags))
|
||||||
{
|
{
|
||||||
//printk("Reset interrupted by disconnect\n");
|
/* pr_info("Reset interrupted by disconnect\n"); */
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
//printk("Soft reset: clearing bulk-in endpoint halt\n");
|
/* pr_info("Soft reset: clearing bulk-in endpoint halt\n"); */
|
||||||
result = usb_stor_clear_halt(us, us->recv_bulk_pipe);
|
result = usb_stor_clear_halt(us, us->recv_bulk_pipe);
|
||||||
|
|
||||||
//printk("Soft reset: clearing bulk-out endpoint halt\n");
|
/* pr_info("Soft reset: clearing bulk-out endpoint halt\n"); */
|
||||||
result2 = usb_stor_clear_halt(us, us->send_bulk_pipe);
|
result2 = usb_stor_clear_halt(us, us->send_bulk_pipe);
|
||||||
|
|
||||||
/* return a result code based on the result of the clear-halts */
|
/* return a result code based on the result of the clear-halts */
|
||||||
if (result >= 0)
|
if (result >= 0)
|
||||||
result = result2;
|
result = result2;
|
||||||
//if (result < 0)
|
//if (result < 0)
|
||||||
// printk("Soft reset failed\n");
|
/* pr_info("Soft reset failed\n"); */
|
||||||
//else
|
//else
|
||||||
// printk("Soft reset done\n");
|
/* pr_info("Soft reset done\n"); */
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----- usb_stor_Bulk_reset() ---------------------
|
//----- usb_stor_Bulk_reset() ---------------------
|
||||||
int usb_stor_Bulk_reset(struct us_data *us)
|
int usb_stor_Bulk_reset(struct us_data *us)
|
||||||
{
|
{
|
||||||
//printk("transport --- usb_stor_Bulk_reset\n");
|
/* pr_info("transport --- usb_stor_Bulk_reset\n"); */
|
||||||
return usb_stor_reset_common(us, US_BULK_RESET_REQUEST,
|
return usb_stor_reset_common(us, US_BULK_RESET_REQUEST,
|
||||||
USB_TYPE_CLASS | USB_RECIP_INTERFACE,
|
USB_TYPE_CLASS | USB_RECIP_INTERFACE,
|
||||||
0, us->ifnum, NULL, 0);
|
0, us->ifnum, NULL, 0);
|
||||||
|
@ -761,18 +768,19 @@ int usb_stor_port_reset(struct us_data *us)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
//printk("transport --- usb_stor_port_reset\n");
|
/* pr_info("transport --- usb_stor_port_reset\n"); */
|
||||||
result = usb_lock_device_for_reset(us->pusb_dev, us->pusb_intf);
|
result = usb_lock_device_for_reset(us->pusb_dev, us->pusb_intf);
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
printk("unable to lock device for reset: %d\n", result);
|
pr_info("unable to lock device for reset: %d\n", result);
|
||||||
else {
|
else {
|
||||||
/* Were we disconnected while waiting for the lock? */
|
/* Were we disconnected while waiting for the lock? */
|
||||||
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) {
|
if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) {
|
||||||
result = -EIO;
|
result = -EIO;
|
||||||
//printk("No reset during disconnect\n");
|
/* pr_info("No reset during disconnect\n"); */
|
||||||
} else {
|
} else {
|
||||||
result = usb_reset_device(us->pusb_dev);
|
result = usb_reset_device(us->pusb_dev);
|
||||||
//printk("usb_reset_composite_device returns %d\n", result);
|
/* pr_info("usb_reset_composite_device returns %d\n",
|
||||||
|
result); */
|
||||||
}
|
}
|
||||||
usb_unlock_device(us->pusb_dev);
|
usb_unlock_device(us->pusb_dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ MODULE_DEVICE_TABLE (usb, eucr_usb_ids);
|
||||||
int eucr_suspend(struct usb_interface *iface, pm_message_t message)
|
int eucr_suspend(struct usb_interface *iface, pm_message_t message)
|
||||||
{
|
{
|
||||||
struct us_data *us = usb_get_intfdata(iface);
|
struct us_data *us = usb_get_intfdata(iface);
|
||||||
printk("--- eucr_suspend ---\n");
|
pr_info("--- eucr_suspend ---\n");
|
||||||
/* Wait until no command is running */
|
/* Wait until no command is running */
|
||||||
mutex_lock(&us->dev_mutex);
|
mutex_lock(&us->dev_mutex);
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ int eucr_resume(struct usb_interface *iface)
|
||||||
BYTE tmp = 0;
|
BYTE tmp = 0;
|
||||||
|
|
||||||
struct us_data *us = usb_get_intfdata(iface);
|
struct us_data *us = usb_get_intfdata(iface);
|
||||||
printk("--- eucr_resume---\n");
|
pr_info("--- eucr_resume---\n");
|
||||||
mutex_lock(&us->dev_mutex);
|
mutex_lock(&us->dev_mutex);
|
||||||
|
|
||||||
//US_DEBUGP("%s\n", __func__);
|
//US_DEBUGP("%s\n", __func__);
|
||||||
|
@ -85,7 +85,7 @@ int eucr_reset_resume(struct usb_interface *iface)
|
||||||
BYTE tmp = 0;
|
BYTE tmp = 0;
|
||||||
struct us_data *us = usb_get_intfdata(iface);
|
struct us_data *us = usb_get_intfdata(iface);
|
||||||
|
|
||||||
printk("--- eucr_reset_resume---\n");
|
pr_info("--- eucr_reset_resume---\n");
|
||||||
//US_DEBUGP("%s\n", __func__);
|
//US_DEBUGP("%s\n", __func__);
|
||||||
|
|
||||||
/* Report the reset to the SCSI core */
|
/* Report the reset to the SCSI core */
|
||||||
|
@ -116,7 +116,7 @@ static int eucr_pre_reset(struct usb_interface *iface)
|
||||||
{
|
{
|
||||||
struct us_data *us = usb_get_intfdata(iface);
|
struct us_data *us = usb_get_intfdata(iface);
|
||||||
|
|
||||||
printk("usb --- eucr_pre_reset\n");
|
pr_info("usb --- eucr_pre_reset\n");
|
||||||
|
|
||||||
/* Make sure no command runs during the reset */
|
/* Make sure no command runs during the reset */
|
||||||
mutex_lock(&us->dev_mutex);
|
mutex_lock(&us->dev_mutex);
|
||||||
|
@ -128,7 +128,7 @@ static int eucr_post_reset(struct usb_interface *iface)
|
||||||
{
|
{
|
||||||
struct us_data *us = usb_get_intfdata(iface);
|
struct us_data *us = usb_get_intfdata(iface);
|
||||||
|
|
||||||
printk("usb --- eucr_post_reset\n");
|
pr_info("usb --- eucr_post_reset\n");
|
||||||
|
|
||||||
/* Report the reset to the SCSI core */
|
/* Report the reset to the SCSI core */
|
||||||
usb_stor_report_bus_reset(us);
|
usb_stor_report_bus_reset(us);
|
||||||
|
@ -140,7 +140,7 @@ static int eucr_post_reset(struct usb_interface *iface)
|
||||||
//----- fill_inquiry_response() ---------------------
|
//----- fill_inquiry_response() ---------------------
|
||||||
void fill_inquiry_response(struct us_data *us, unsigned char *data, unsigned int data_len)
|
void fill_inquiry_response(struct us_data *us, unsigned char *data, unsigned int data_len)
|
||||||
{
|
{
|
||||||
printk("usb --- fill_inquiry_response\n");
|
pr_info("usb --- fill_inquiry_response\n");
|
||||||
if (data_len<36) // You lose.
|
if (data_len<36) // You lose.
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ static int usb_stor_control_thread(void * __us)
|
||||||
struct us_data *us = (struct us_data *)__us;
|
struct us_data *us = (struct us_data *)__us;
|
||||||
struct Scsi_Host *host = us_to_host(us);
|
struct Scsi_Host *host = us_to_host(us);
|
||||||
|
|
||||||
printk("usb --- usb_stor_control_thread\n");
|
pr_info("usb --- usb_stor_control_thread\n");
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
if (wait_for_completion_interruptible(&us->cmnd_ready))
|
if (wait_for_completion_interruptible(&us->cmnd_ready))
|
||||||
|
@ -242,7 +242,7 @@ static int usb_stor_control_thread(void * __us)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SkipForAbort:
|
SkipForAbort:
|
||||||
printk("scsi command aborted\n");
|
pr_info("scsi command aborted\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
if (test_bit(US_FLIDX_TIMED_OUT, &us->dflags))
|
||||||
|
@ -277,7 +277,7 @@ SkipForAbort:
|
||||||
//----- associate_dev() ---------------------
|
//----- associate_dev() ---------------------
|
||||||
static int associate_dev(struct us_data *us, struct usb_interface *intf)
|
static int associate_dev(struct us_data *us, struct usb_interface *intf)
|
||||||
{
|
{
|
||||||
printk("usb --- associate_dev\n");
|
pr_info("usb --- associate_dev\n");
|
||||||
|
|
||||||
/* Fill in the device-related fields */
|
/* Fill in the device-related fields */
|
||||||
us->pusb_dev = interface_to_usbdev(intf);
|
us->pusb_dev = interface_to_usbdev(intf);
|
||||||
|
@ -291,21 +291,21 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf)
|
||||||
us->cr = usb_alloc_coherent(us->pusb_dev, sizeof(*us->cr), GFP_KERNEL, &us->cr_dma);
|
us->cr = usb_alloc_coherent(us->pusb_dev, sizeof(*us->cr), GFP_KERNEL, &us->cr_dma);
|
||||||
if (!us->cr)
|
if (!us->cr)
|
||||||
{
|
{
|
||||||
printk("usb_ctrlrequest allocation failed\n");
|
pr_info("usb_ctrlrequest allocation failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE, GFP_KERNEL, &us->iobuf_dma);
|
us->iobuf = usb_alloc_coherent(us->pusb_dev, US_IOBUF_SIZE, GFP_KERNEL, &us->iobuf_dma);
|
||||||
if (!us->iobuf)
|
if (!us->iobuf)
|
||||||
{
|
{
|
||||||
printk("I/O buffer allocation failed\n");
|
pr_info("I/O buffer allocation failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
us->sensebuf = kmalloc(US_SENSE_SIZE, GFP_KERNEL);
|
us->sensebuf = kmalloc(US_SENSE_SIZE, GFP_KERNEL);
|
||||||
if (!us->sensebuf)
|
if (!us->sensebuf)
|
||||||
{
|
{
|
||||||
printk("Sense buffer allocation failed\n");
|
pr_info("Sense buffer allocation failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -317,7 +317,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id)
|
||||||
struct usb_device *dev = us->pusb_dev;
|
struct usb_device *dev = us->pusb_dev;
|
||||||
struct usb_interface_descriptor *idesc = &us->pusb_intf->cur_altsetting->desc;
|
struct usb_interface_descriptor *idesc = &us->pusb_intf->cur_altsetting->desc;
|
||||||
|
|
||||||
printk("usb --- get_device_info\n");
|
pr_info("usb --- get_device_info\n");
|
||||||
|
|
||||||
us->subclass = idesc->bInterfaceSubClass;
|
us->subclass = idesc->bInterfaceSubClass;
|
||||||
us->protocol = idesc->bInterfaceProtocol;
|
us->protocol = idesc->bInterfaceProtocol;
|
||||||
|
@ -326,7 +326,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id)
|
||||||
|
|
||||||
if (us->fflags & US_FL_IGNORE_DEVICE)
|
if (us->fflags & US_FL_IGNORE_DEVICE)
|
||||||
{
|
{
|
||||||
printk("device ignored\n");
|
pr_info("device ignored\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id)
|
||||||
//----- get_transport() ---------------------
|
//----- get_transport() ---------------------
|
||||||
static int get_transport(struct us_data *us)
|
static int get_transport(struct us_data *us)
|
||||||
{
|
{
|
||||||
printk("usb --- get_transport\n");
|
pr_info("usb --- get_transport\n");
|
||||||
switch (us->protocol) {
|
switch (us->protocol) {
|
||||||
case USB_PR_BULK:
|
case USB_PR_BULK:
|
||||||
us->transport_name = "Bulk";
|
us->transport_name = "Bulk";
|
||||||
|
@ -350,7 +350,7 @@ static int get_transport(struct us_data *us)
|
||||||
default:
|
default:
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
//printk("Transport: %s\n", us->transport_name);
|
/* pr_info("Transport: %s\n", us->transport_name); */
|
||||||
|
|
||||||
/* fix for single-lun devices */
|
/* fix for single-lun devices */
|
||||||
if (us->fflags & US_FL_SINGLE_LUN)
|
if (us->fflags & US_FL_SINGLE_LUN)
|
||||||
|
@ -361,9 +361,11 @@ static int get_transport(struct us_data *us)
|
||||||
//----- get_protocol() ---------------------
|
//----- get_protocol() ---------------------
|
||||||
static int get_protocol(struct us_data *us)
|
static int get_protocol(struct us_data *us)
|
||||||
{
|
{
|
||||||
printk("usb --- get_protocol\n");
|
pr_info("usb --- get_protocol\n");
|
||||||
printk("us->pusb_dev->descriptor.idVendor = %x\n", us->pusb_dev->descriptor.idVendor);
|
pr_info("us->pusb_dev->descriptor.idVendor = %x\n",
|
||||||
printk("us->pusb_dev->descriptor.idProduct = %x\n", us->pusb_dev->descriptor.idProduct);
|
us->pusb_dev->descriptor.idVendor);
|
||||||
|
pr_info("us->pusb_dev->descriptor.idProduct = %x\n",
|
||||||
|
us->pusb_dev->descriptor.idProduct);
|
||||||
switch (us->subclass) {
|
switch (us->subclass) {
|
||||||
case USB_SC_SCSI:
|
case USB_SC_SCSI:
|
||||||
us->protocol_name = "Transparent SCSI";
|
us->protocol_name = "Transparent SCSI";
|
||||||
|
@ -376,7 +378,7 @@ static int get_protocol(struct us_data *us)
|
||||||
default:
|
default:
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
//printk("Protocol: %s\n", us->protocol_name);
|
/* pr_info("Protocol: %s\n", us->protocol_name); */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +392,7 @@ static int get_pipes(struct us_data *us)
|
||||||
struct usb_endpoint_descriptor *ep_out = NULL;
|
struct usb_endpoint_descriptor *ep_out = NULL;
|
||||||
struct usb_endpoint_descriptor *ep_int = NULL;
|
struct usb_endpoint_descriptor *ep_int = NULL;
|
||||||
|
|
||||||
printk("usb --- get_pipes\n");
|
pr_info("usb --- get_pipes\n");
|
||||||
|
|
||||||
for (i = 0; i < altsetting->desc.bNumEndpoints; i++)
|
for (i = 0; i < altsetting->desc.bNumEndpoints; i++)
|
||||||
{
|
{
|
||||||
|
@ -418,7 +420,7 @@ static int get_pipes(struct us_data *us)
|
||||||
|
|
||||||
if (!ep_in || !ep_out || (us->protocol == USB_PR_CBI && !ep_int))
|
if (!ep_in || !ep_out || (us->protocol == USB_PR_CBI && !ep_int))
|
||||||
{
|
{
|
||||||
printk("Endpoint sanity check failed! Rejecting dev.\n");
|
pr_info("Endpoint sanity check failed! Rejecting dev.\n");
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,11 +442,11 @@ static int usb_stor_acquire_resources(struct us_data *us)
|
||||||
{
|
{
|
||||||
struct task_struct *th;
|
struct task_struct *th;
|
||||||
|
|
||||||
printk("usb --- usb_stor_acquire_resources\n");
|
pr_info("usb --- usb_stor_acquire_resources\n");
|
||||||
us->current_urb = usb_alloc_urb(0, GFP_KERNEL);
|
us->current_urb = usb_alloc_urb(0, GFP_KERNEL);
|
||||||
if (!us->current_urb)
|
if (!us->current_urb)
|
||||||
{
|
{
|
||||||
printk("URB allocation failed\n");
|
pr_info("URB allocation failed\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -452,7 +454,7 @@ static int usb_stor_acquire_resources(struct us_data *us)
|
||||||
th = kthread_run(usb_stor_control_thread, us, "eucr-storage");
|
th = kthread_run(usb_stor_control_thread, us, "eucr-storage");
|
||||||
if (IS_ERR(th))
|
if (IS_ERR(th))
|
||||||
{
|
{
|
||||||
printk("Unable to start control thread\n");
|
pr_info("Unable to start control thread\n");
|
||||||
return PTR_ERR(th);
|
return PTR_ERR(th);
|
||||||
}
|
}
|
||||||
us->ctl_thread = th;
|
us->ctl_thread = th;
|
||||||
|
@ -463,7 +465,7 @@ static int usb_stor_acquire_resources(struct us_data *us)
|
||||||
//----- usb_stor_release_resources() ---------------------
|
//----- usb_stor_release_resources() ---------------------
|
||||||
static void usb_stor_release_resources(struct us_data *us)
|
static void usb_stor_release_resources(struct us_data *us)
|
||||||
{
|
{
|
||||||
printk("usb --- usb_stor_release_resources\n");
|
pr_info("usb --- usb_stor_release_resources\n");
|
||||||
|
|
||||||
SM_FreeMem();
|
SM_FreeMem();
|
||||||
|
|
||||||
|
@ -474,7 +476,7 @@ static void usb_stor_release_resources(struct us_data *us)
|
||||||
/* Call the destructor routine, if it exists */
|
/* Call the destructor routine, if it exists */
|
||||||
if (us->extra_destructor)
|
if (us->extra_destructor)
|
||||||
{
|
{
|
||||||
printk("-- calling extra_destructor()\n");
|
pr_info("-- calling extra_destructor()\n");
|
||||||
us->extra_destructor(us->extra);
|
us->extra_destructor(us->extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,7 +488,7 @@ static void usb_stor_release_resources(struct us_data *us)
|
||||||
//----- dissociate_dev() ---------------------
|
//----- dissociate_dev() ---------------------
|
||||||
static void dissociate_dev(struct us_data *us)
|
static void dissociate_dev(struct us_data *us)
|
||||||
{
|
{
|
||||||
printk("usb --- dissociate_dev\n");
|
pr_info("usb --- dissociate_dev\n");
|
||||||
|
|
||||||
kfree(us->sensebuf);
|
kfree(us->sensebuf);
|
||||||
|
|
||||||
|
@ -505,7 +507,7 @@ static void quiesce_and_remove_host(struct us_data *us)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *host = us_to_host(us);
|
struct Scsi_Host *host = us_to_host(us);
|
||||||
|
|
||||||
printk("usb --- quiesce_and_remove_host\n");
|
pr_info("usb --- quiesce_and_remove_host\n");
|
||||||
|
|
||||||
/* If the device is really gone, cut short reset delays */
|
/* If the device is really gone, cut short reset delays */
|
||||||
if (us->pusb_dev->state == USB_STATE_NOTATTACHED)
|
if (us->pusb_dev->state == USB_STATE_NOTATTACHED)
|
||||||
|
@ -535,7 +537,7 @@ static void quiesce_and_remove_host(struct us_data *us)
|
||||||
//----- release_everything() ---------------------
|
//----- release_everything() ---------------------
|
||||||
static void release_everything(struct us_data *us)
|
static void release_everything(struct us_data *us)
|
||||||
{
|
{
|
||||||
printk("usb --- release_everything\n");
|
pr_info("usb --- release_everything\n");
|
||||||
|
|
||||||
usb_stor_release_resources(us);
|
usb_stor_release_resources(us);
|
||||||
dissociate_dev(us);
|
dissociate_dev(us);
|
||||||
|
@ -547,8 +549,8 @@ static int usb_stor_scan_thread(void * __us)
|
||||||
{
|
{
|
||||||
struct us_data *us = (struct us_data *)__us;
|
struct us_data *us = (struct us_data *)__us;
|
||||||
|
|
||||||
printk("usb --- usb_stor_scan_thread\n");
|
pr_info("usb --- usb_stor_scan_thread\n");
|
||||||
printk("EUCR : device found at %d\n", us->pusb_dev->devnum);
|
pr_info("EUCR : device found at %d\n", us->pusb_dev->devnum);
|
||||||
|
|
||||||
set_freezable();
|
set_freezable();
|
||||||
/* Wait for the timeout to expire or for a disconnect */
|
/* Wait for the timeout to expire or for a disconnect */
|
||||||
|
@ -569,7 +571,7 @@ static int usb_stor_scan_thread(void * __us)
|
||||||
mutex_unlock(&us->dev_mutex);
|
mutex_unlock(&us->dev_mutex);
|
||||||
}
|
}
|
||||||
scsi_scan_host(us_to_host(us));
|
scsi_scan_host(us_to_host(us));
|
||||||
printk("EUCR : device scan complete\n");
|
pr_info("EUCR : device scan complete\n");
|
||||||
}
|
}
|
||||||
complete_and_exit(&us->scanning_done, 0);
|
complete_and_exit(&us->scanning_done, 0);
|
||||||
}
|
}
|
||||||
|
@ -583,12 +585,12 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||||
BYTE MiscReg03 = 0;
|
BYTE MiscReg03 = 0;
|
||||||
struct task_struct *th;
|
struct task_struct *th;
|
||||||
|
|
||||||
printk("usb --- eucr_probe\n");
|
pr_info("usb --- eucr_probe\n");
|
||||||
|
|
||||||
host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us));
|
host = scsi_host_alloc(&usb_stor_host_template, sizeof(*us));
|
||||||
if (!host)
|
if (!host)
|
||||||
{
|
{
|
||||||
printk("Unable to allocate the scsi host\n");
|
pr_info("Unable to allocate the scsi host\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,7 +633,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||||
result = scsi_add_host(host, &intf->dev);
|
result = scsi_add_host(host, &intf->dev);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
printk("Unable to add the scsi host\n");
|
pr_info("Unable to add the scsi host\n");
|
||||||
goto BadDevice;
|
goto BadDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -639,7 +641,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||||
th = kthread_create(usb_stor_scan_thread, us, "eucr-stor-scan");
|
th = kthread_create(usb_stor_scan_thread, us, "eucr-stor-scan");
|
||||||
if (IS_ERR(th))
|
if (IS_ERR(th))
|
||||||
{
|
{
|
||||||
printk("Unable to start the device-scanning thread\n");
|
pr_info("Unable to start the device-scanning thread\n");
|
||||||
complete(&us->scanning_done);
|
complete(&us->scanning_done);
|
||||||
quiesce_and_remove_host(us);
|
quiesce_and_remove_host(us);
|
||||||
result = PTR_ERR(th);
|
result = PTR_ERR(th);
|
||||||
|
@ -658,7 +660,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||||
if (!(MiscReg03 & 0x02)) {
|
if (!(MiscReg03 & 0x02)) {
|
||||||
result = -ENODEV;
|
result = -ENODEV;
|
||||||
quiesce_and_remove_host(us);
|
quiesce_and_remove_host(us);
|
||||||
printk(KERN_NOTICE "keucr: The driver only supports SM/MS card.\
|
pr_info("keucr: The driver only supports SM/MS card.\
|
||||||
To use SD card, \
|
To use SD card, \
|
||||||
please build driver/usb/storage/ums-eneub6250.ko\n");
|
please build driver/usb/storage/ums-eneub6250.ko\n");
|
||||||
goto BadDevice;
|
goto BadDevice;
|
||||||
|
@ -668,7 +670,7 @@ static int eucr_probe(struct usb_interface *intf, const struct usb_device_id *id
|
||||||
|
|
||||||
/* We come here if there are any problems */
|
/* We come here if there are any problems */
|
||||||
BadDevice:
|
BadDevice:
|
||||||
printk("usb --- eucr_probe failed\n");
|
pr_info("usb --- eucr_probe failed\n");
|
||||||
release_everything(us);
|
release_everything(us);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -678,7 +680,7 @@ static void eucr_disconnect(struct usb_interface *intf)
|
||||||
{
|
{
|
||||||
struct us_data *us = usb_get_intfdata(intf);
|
struct us_data *us = usb_get_intfdata(intf);
|
||||||
|
|
||||||
printk("usb --- eucr_disconnect\n");
|
pr_info("usb --- eucr_disconnect\n");
|
||||||
quiesce_and_remove_host(us);
|
quiesce_and_remove_host(us);
|
||||||
release_everything(us);
|
release_everything(us);
|
||||||
}
|
}
|
||||||
|
@ -705,11 +707,11 @@ static struct usb_driver usb_storage_driver = {
|
||||||
static int __init usb_stor_init(void)
|
static int __init usb_stor_init(void)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
printk("usb --- usb_stor_init start\n");
|
pr_info("usb --- usb_stor_init start\n");
|
||||||
|
|
||||||
retval = usb_register(&usb_storage_driver);
|
retval = usb_register(&usb_storage_driver);
|
||||||
if (retval == 0)
|
if (retval == 0)
|
||||||
printk("ENE USB Mass Storage support registered.\n");
|
pr_info("ENE USB Mass Storage support registered.\n");
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -717,7 +719,7 @@ static int __init usb_stor_init(void)
|
||||||
//----- usb_stor_exit() ---------------------
|
//----- usb_stor_exit() ---------------------
|
||||||
static void __exit usb_stor_exit(void)
|
static void __exit usb_stor_exit(void)
|
||||||
{
|
{
|
||||||
printk("usb --- usb_stor_exit\n");
|
pr_info("usb --- usb_stor_exit\n");
|
||||||
|
|
||||||
usb_deregister(&usb_storage_driver) ;
|
usb_deregister(&usb_storage_driver) ;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue