|
@@ -63,7 +63,7 @@ static const unsigned char us_direction[256/8] = {
|
|
};
|
|
};
|
|
#define US_DIRECTION(x) ((us_direction[x>>3] >> (x & 7)) & 1)
|
|
#define US_DIRECTION(x) ((us_direction[x>>3] >> (x & 7)) & 1)
|
|
|
|
|
|
-static ccb usb_ccb __attribute__((aligned(ARCH_DMA_MINALIGN)));
|
|
|
|
|
|
+static struct scsi_cmd usb_ccb __aligned(ARCH_DMA_MINALIGN);
|
|
static __u32 CBWTag;
|
|
static __u32 CBWTag;
|
|
|
|
|
|
static int usb_max_devs; /* number of highest available usb device */
|
|
static int usb_max_devs; /* number of highest available usb device */
|
|
@@ -73,7 +73,7 @@ static struct blk_desc usb_dev_desc[USB_MAX_STOR_DEV];
|
|
#endif
|
|
#endif
|
|
|
|
|
|
struct us_data;
|
|
struct us_data;
|
|
-typedef int (*trans_cmnd)(ccb *cb, struct us_data *data);
|
|
|
|
|
|
+typedef int (*trans_cmnd)(struct scsi_cmd *cb, struct us_data *data);
|
|
typedef int (*trans_reset)(struct us_data *data);
|
|
typedef int (*trans_reset)(struct us_data *data);
|
|
|
|
|
|
struct us_data {
|
|
struct us_data {
|
|
@@ -95,7 +95,7 @@ struct us_data {
|
|
unsigned int irqpipe; /* pipe for release_irq */
|
|
unsigned int irqpipe; /* pipe for release_irq */
|
|
unsigned char irqmaxp; /* max packed for irq Pipe */
|
|
unsigned char irqmaxp; /* max packed for irq Pipe */
|
|
unsigned char irqinterval; /* Intervall for IRQ Pipe */
|
|
unsigned char irqinterval; /* Intervall for IRQ Pipe */
|
|
- ccb *srb; /* current srb */
|
|
|
|
|
|
+ struct scsi_cmd *srb; /* current srb */
|
|
trans_reset transport_reset; /* reset routine */
|
|
trans_reset transport_reset; /* reset routine */
|
|
trans_cmnd transport; /* transport routine */
|
|
trans_cmnd transport; /* transport routine */
|
|
};
|
|
};
|
|
@@ -349,7 +349,7 @@ static int usb_stor_irq(struct usb_device *dev)
|
|
|
|
|
|
#ifdef DEBUG
|
|
#ifdef DEBUG
|
|
|
|
|
|
-static void usb_show_srb(ccb *pccb)
|
|
|
|
|
|
+static void usb_show_srb(struct scsi_cmd *pccb)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
printf("SRB: len %d datalen 0x%lX\n ", pccb->cmdlen, pccb->datalen);
|
|
printf("SRB: len %d datalen 0x%lX\n ", pccb->cmdlen, pccb->datalen);
|
|
@@ -541,7 +541,7 @@ static int usb_stor_CB_reset(struct us_data *us)
|
|
* Set up the command for a BBB device. Note that the actual SCSI
|
|
* Set up the command for a BBB device. Note that the actual SCSI
|
|
* command is copied into cbw.CBWCDB.
|
|
* command is copied into cbw.CBWCDB.
|
|
*/
|
|
*/
|
|
-static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
|
|
|
|
|
|
+static int usb_stor_BBB_comdat(struct scsi_cmd *srb, struct us_data *us)
|
|
{
|
|
{
|
|
int result;
|
|
int result;
|
|
int actlen;
|
|
int actlen;
|
|
@@ -590,7 +590,7 @@ static int usb_stor_BBB_comdat(ccb *srb, struct us_data *us)
|
|
/* FIXME: we also need a CBI_command which sets up the completion
|
|
/* FIXME: we also need a CBI_command which sets up the completion
|
|
* interrupt, and waits for it
|
|
* interrupt, and waits for it
|
|
*/
|
|
*/
|
|
-static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)
|
|
|
|
|
|
+static int usb_stor_CB_comdat(struct scsi_cmd *srb, struct us_data *us)
|
|
{
|
|
{
|
|
int result = 0;
|
|
int result = 0;
|
|
int dir_in, retry;
|
|
int dir_in, retry;
|
|
@@ -659,7 +659,7 @@ static int usb_stor_CB_comdat(ccb *srb, struct us_data *us)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static int usb_stor_CBI_get_status(ccb *srb, struct us_data *us)
|
|
|
|
|
|
+static int usb_stor_CBI_get_status(struct scsi_cmd *srb, struct us_data *us)
|
|
{
|
|
{
|
|
int timeout;
|
|
int timeout;
|
|
|
|
|
|
@@ -714,7 +714,7 @@ static int usb_stor_BBB_clear_endpt_stall(struct us_data *us, __u8 endpt)
|
|
endpt, NULL, 0, USB_CNTL_TIMEOUT * 5);
|
|
endpt, NULL, 0, USB_CNTL_TIMEOUT * 5);
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_stor_BBB_transport(ccb *srb, struct us_data *us)
|
|
|
|
|
|
+static int usb_stor_BBB_transport(struct scsi_cmd *srb, struct us_data *us)
|
|
{
|
|
{
|
|
int result, retry;
|
|
int result, retry;
|
|
int dir_in;
|
|
int dir_in;
|
|
@@ -837,11 +837,11 @@ again:
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_stor_CB_transport(ccb *srb, struct us_data *us)
|
|
|
|
|
|
+static int usb_stor_CB_transport(struct scsi_cmd *srb, struct us_data *us)
|
|
{
|
|
{
|
|
int result, status;
|
|
int result, status;
|
|
- ccb *psrb;
|
|
|
|
- ccb reqsrb;
|
|
|
|
|
|
+ struct scsi_cmd *psrb;
|
|
|
|
+ struct scsi_cmd reqsrb;
|
|
int retry, notready;
|
|
int retry, notready;
|
|
|
|
|
|
psrb = &reqsrb;
|
|
psrb = &reqsrb;
|
|
@@ -950,7 +950,7 @@ do_retry:
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static int usb_inquiry(ccb *srb, struct us_data *ss)
|
|
|
|
|
|
+static int usb_inquiry(struct scsi_cmd *srb, struct us_data *ss)
|
|
{
|
|
{
|
|
int retry, i;
|
|
int retry, i;
|
|
retry = 5;
|
|
retry = 5;
|
|
@@ -974,7 +974,7 @@ static int usb_inquiry(ccb *srb, struct us_data *ss)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_request_sense(ccb *srb, struct us_data *ss)
|
|
|
|
|
|
+static int usb_request_sense(struct scsi_cmd *srb, struct us_data *ss)
|
|
{
|
|
{
|
|
char *ptr;
|
|
char *ptr;
|
|
|
|
|
|
@@ -994,7 +994,7 @@ static int usb_request_sense(ccb *srb, struct us_data *ss)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_test_unit_ready(ccb *srb, struct us_data *ss)
|
|
|
|
|
|
+static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss)
|
|
{
|
|
{
|
|
int retries = 10;
|
|
int retries = 10;
|
|
|
|
|
|
@@ -1025,7 +1025,7 @@ static int usb_test_unit_ready(ccb *srb, struct us_data *ss)
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_read_capacity(ccb *srb, struct us_data *ss)
|
|
|
|
|
|
+static int usb_read_capacity(struct scsi_cmd *srb, struct us_data *ss)
|
|
{
|
|
{
|
|
int retry;
|
|
int retry;
|
|
/* XXX retries */
|
|
/* XXX retries */
|
|
@@ -1043,8 +1043,8 @@ static int usb_read_capacity(ccb *srb, struct us_data *ss)
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start,
|
|
|
|
- unsigned short blocks)
|
|
|
|
|
|
+static int usb_read_10(struct scsi_cmd *srb, struct us_data *ss,
|
|
|
|
+ unsigned long start, unsigned short blocks)
|
|
{
|
|
{
|
|
memset(&srb->cmd[0], 0, 12);
|
|
memset(&srb->cmd[0], 0, 12);
|
|
srb->cmd[0] = SCSI_READ10;
|
|
srb->cmd[0] = SCSI_READ10;
|
|
@@ -1060,8 +1060,8 @@ static int usb_read_10(ccb *srb, struct us_data *ss, unsigned long start,
|
|
return ss->transport(srb, ss);
|
|
return ss->transport(srb, ss);
|
|
}
|
|
}
|
|
|
|
|
|
-static int usb_write_10(ccb *srb, struct us_data *ss, unsigned long start,
|
|
|
|
- unsigned short blocks)
|
|
|
|
|
|
+static int usb_write_10(struct scsi_cmd *srb, struct us_data *ss,
|
|
|
|
+ unsigned long start, unsigned short blocks)
|
|
{
|
|
{
|
|
memset(&srb->cmd[0], 0, 12);
|
|
memset(&srb->cmd[0], 0, 12);
|
|
srb->cmd[0] = SCSI_WRITE10;
|
|
srb->cmd[0] = SCSI_WRITE10;
|
|
@@ -1115,7 +1115,7 @@ static unsigned long usb_stor_read(struct blk_desc *block_dev, lbaint_t blknr,
|
|
struct usb_device *udev;
|
|
struct usb_device *udev;
|
|
struct us_data *ss;
|
|
struct us_data *ss;
|
|
int retry;
|
|
int retry;
|
|
- ccb *srb = &usb_ccb;
|
|
|
|
|
|
+ struct scsi_cmd *srb = &usb_ccb;
|
|
#ifdef CONFIG_BLK
|
|
#ifdef CONFIG_BLK
|
|
struct blk_desc *block_dev;
|
|
struct blk_desc *block_dev;
|
|
#endif
|
|
#endif
|
|
@@ -1197,7 +1197,7 @@ static unsigned long usb_stor_write(struct blk_desc *block_dev, lbaint_t blknr,
|
|
struct usb_device *udev;
|
|
struct usb_device *udev;
|
|
struct us_data *ss;
|
|
struct us_data *ss;
|
|
int retry;
|
|
int retry;
|
|
- ccb *srb = &usb_ccb;
|
|
|
|
|
|
+ struct scsi_cmd *srb = &usb_ccb;
|
|
#ifdef CONFIG_BLK
|
|
#ifdef CONFIG_BLK
|
|
struct blk_desc *block_dev;
|
|
struct blk_desc *block_dev;
|
|
#endif
|
|
#endif
|
|
@@ -1395,7 +1395,7 @@ int usb_stor_get_info(struct usb_device *dev, struct us_data *ss,
|
|
ALLOC_CACHE_ALIGN_BUFFER(u32, cap, 2);
|
|
ALLOC_CACHE_ALIGN_BUFFER(u32, cap, 2);
|
|
ALLOC_CACHE_ALIGN_BUFFER(u8, usb_stor_buf, 36);
|
|
ALLOC_CACHE_ALIGN_BUFFER(u8, usb_stor_buf, 36);
|
|
u32 capacity, blksz;
|
|
u32 capacity, blksz;
|
|
- ccb *pccb = &usb_ccb;
|
|
|
|
|
|
+ struct scsi_cmd *pccb = &usb_ccb;
|
|
|
|
|
|
pccb->pdata = usb_stor_buf;
|
|
pccb->pdata = usb_stor_buf;
|
|
|
|
|