Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28321
b: refs/heads/master
c: bdcfd9e
h: refs/heads/master
i:
  28319: 83f860c
v: v3
  • Loading branch information
Peter Chubb authored and Greg Kroah-Hartman committed Jun 21, 2006
1 parent 0acfee3 commit b724a2e
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 141804d401631f0384feabfa5fc3e2ce1321c0f0
refs/heads/master: bdcfd9e349eff9398a1d85eaa517294f493bb3c8
51 changes: 36 additions & 15 deletions trunk/drivers/usb/storage/shuttle_usbat.c
Original file line number Diff line number Diff line change
Expand Up @@ -893,22 +893,28 @@ static int usbat_identify_device(struct us_data *us,
* Set the transport function based on the device type
*/
static int usbat_set_transport(struct us_data *us,
struct usbat_info *info)
struct usbat_info *info,
int devicetype)
{
int rc;

if (!info->devicetype) {
rc = usbat_identify_device(us, info);
if (rc != USB_STOR_TRANSPORT_GOOD) {
US_DEBUGP("usbat_set_transport: Could not identify device\n");
return 1;
}
}
if (!info->devicetype)
info->devicetype = devicetype;

if (usbat_get_device_type(us) == USBAT_DEV_HP8200)
if (!info->devicetype)
usbat_identify_device(us, info);

switch (info->devicetype) {
default:
return USB_STOR_TRANSPORT_ERROR;

case USBAT_DEV_HP8200:
us->transport = usbat_hp8200e_transport;
else if (usbat_get_device_type(us) == USBAT_DEV_FLASH)
break;

case USBAT_DEV_FLASH:
us->transport = usbat_flash_transport;
break;
}

return 0;
}
Expand Down Expand Up @@ -1316,7 +1322,7 @@ static int usbat_select_and_test_registers(struct us_data *us)
/*
* Initialize the USBAT processor and the storage device
*/
int init_usbat(struct us_data *us)
static int init_usbat(struct us_data *us, int devicetype)
{
int rc;
struct usbat_info *info;
Expand Down Expand Up @@ -1398,7 +1404,7 @@ int init_usbat(struct us_data *us)
US_DEBUGP("INIT 9\n");

/* At this point, we need to detect which device we are using */
if (usbat_set_transport(us, info))
if (usbat_set_transport(us, info, devicetype))
return USB_STOR_TRANSPORT_ERROR;

US_DEBUGP("INIT 10\n");
Expand Down Expand Up @@ -1701,6 +1707,22 @@ static int usbat_flash_transport(struct scsi_cmnd * srb, struct us_data *us)
return USB_STOR_TRANSPORT_FAILED;
}

int init_usbat_cd(struct us_data *us)
{
return init_usbat(us, USBAT_DEV_HP8200);
}


int init_usbat_flash(struct us_data *us)
{
return init_usbat(us, USBAT_DEV_FLASH);
}

int init_usbat_probe(struct us_data *us)
{
return init_usbat(us, 0);
}

/*
* Default transport function. Attempts to detect which transport function
* should be called, makes it the new default, and calls it.
Expand All @@ -1714,9 +1736,8 @@ int usbat_transport(struct scsi_cmnd *srb, struct us_data *us)
{
struct usbat_info *info = (struct usbat_info*) (us->extra);

if (usbat_set_transport(us, info))
if (usbat_set_transport(us, info, 0))
return USB_STOR_TRANSPORT_ERROR;

return us->transport(srb, us);
}

4 changes: 3 additions & 1 deletion trunk/drivers/usb/storage/shuttle_usbat.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,9 @@
#define USBAT_FEAT_ET2 0x01

extern int usbat_transport(struct scsi_cmnd *srb, struct us_data *us);
extern int init_usbat(struct us_data *us);
extern int init_usbat_cd(struct us_data *us);
extern int init_usbat_flash(struct us_data *us);
extern int init_usbat_probe(struct us_data *us);

struct usbat_info {
int devicetype;
Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/usb/storage/unusual_devs.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ UNUSUAL_DEV( 0x03f0, 0x0107, 0x0200, 0x0200,
UNUSUAL_DEV( 0x03f0, 0x0207, 0x0001, 0x0001,
"HP",
"CD-Writer+ 8200e",
US_SC_8070, US_PR_USBAT, init_usbat, 0),
US_SC_8070, US_PR_USBAT, init_usbat_cd, 0),

UNUSUAL_DEV( 0x03f0, 0x0307, 0x0001, 0x0001,
"HP",
"CD-Writer+ CD-4e",
US_SC_8070, US_PR_USBAT, init_usbat, 0),
US_SC_8070, US_PR_USBAT, init_usbat_cd, 0),
#endif

/* Reported by Sebastian Kapfer <sebastian_kapfer@gmx.net>
Expand Down Expand Up @@ -393,7 +393,7 @@ UNUSUAL_DEV( 0x04fc, 0x80c2, 0x0100, 0x0100,
UNUSUAL_DEV( 0x04e6, 0x1010, 0x0000, 0x9999,
"Shuttle/SCM",
"USBAT-02",
US_SC_SCSI, US_PR_USBAT, init_usbat,
US_SC_SCSI, US_PR_USBAT, init_usbat_probe,
US_FL_SINGLE_LUN),
#endif

Expand Down Expand Up @@ -797,7 +797,7 @@ UNUSUAL_DEV( 0x0781, 0x0002, 0x0009, 0x0009,
UNUSUAL_DEV( 0x0781, 0x0005, 0x0005, 0x0005,
"Sandisk",
"ImageMate SDDR-05b",
US_SC_SCSI, US_PR_USBAT, init_usbat,
US_SC_SCSI, US_PR_USBAT, init_usbat_flash,
US_FL_SINGLE_LUN ),
#endif

Expand Down

0 comments on commit b724a2e

Please sign in to comment.