>
Sorry to reply to myself, but.
I reverted to the 2.5.75 version of isd200.c and
things now appear to work. Brute force..
Patch at end
cliffw
----------
> System: Via C3
> Mini-itx
> VIA USB controller on motherboard
>
> Device: Archos jukebox
> ISD-200
> (also using a CD-ROM via firewire, that works fine, tested
> with/witout)
>
> Life was good using <= linux-2.5.75. The 2.6.0-test* kernels are not happy.
> If the usb_storage module is compiled in, boot is normal, when
> device is plugged in, things stop here:
> --
> Aug 31 17:27:03 tinyOne kernel: hub 4-0:0: 2 ports detected
> Aug 31 17:27:03 tinyOne kernel: Initializing USB Mass Storage driver...
> Aug 31 17:27:03 tinyOne kernel: drivers/usb/core/usb.c: registered new driver
> usb-storage
> Aug 31 17:27:03 tinyOne kernel: USB Mass Storage support registered.
> ---
> No /dev/sd*, no good.
>
> < 2.5.75 i normally see this:
> -----------
> Aug 31 17:27:29 tinyOne kernel: scsi1 : SCSI emulation for USB Mass Storage devices
> Aug 31 17:27:29 tinyOne kernel: Vendor: HITACHI_ Model: DK23CA-20 Rev:
> 00H1
> ....and on
> ------------
> Device looks fine in /proc/scsi/usb-storage/1
>
> Host scsi1: usb-storage
> Vendor: In-System Design
> Product: USB Storage Adapter
> Serial Number: 4804A07970A2FFA1
> Protocol: Transparent SCSI
> Transport: Bulk
> Quirks:
>
>
> /sbin/rescan-scsi-bus.sh no longer detects the firewire device,
> echo 'scsi add-single-device 1 0 1 0' >/proc/scsi/scsi
> never returns.
>
> If usb_storage is compiled as a module, insmod usb_storage never returns.
> The system is useable otherwise. -test4 requires me to use 'acpi=off' (via-rhine)
> so i've tested that also :( Symptoms unchanged since -test1, have tried various -mm*
> patches also.
>
> I though i'd seen mention of this problem elsewhere, but i haven't been able to
> search out any email's with my problem. This involves possibly ide-scsi,scsi or
> usb_storage,
> so if someone could point me somewhere, i'd appreciate
>
> cliffw
----------
patch to revert isd200.c -> 2.5.75
-----------------
--- linux-2.6.0-test4-stk/drivers/usb/storage/isd200.c 2003-08-22 16:55:45.000000000
-0700
+++ linux-2.6.0-test4-old/drivers/usb/storage/isd200.c 2003-09-02 21:11:05.000000000
-0700
@@ -280,7 +280,6 @@
/* maximum number of LUNs supported */
unsigned char MaxLUNs;
- struct scsi_cmnd srb;
};
@@ -405,15 +404,15 @@
void* pointer, int value )
{
union ata_cdb ata;
+ struct scsi_cmnd srb;
struct scsi_device srb_dev;
struct isd200_info *info = (struct isd200_info *)us->extra;
- struct scsi_cmnd *srb = &info->srb;
int status;
memset(&ata, 0, sizeof(ata));
+ memset(&srb, 0, sizeof(srb));
memset(&srb_dev, 0, sizeof(srb_dev));
- srb->device = &srb_dev;
- ++srb->serial_number;
+ srb.device = &srb_dev;
ata.generic.SignatureByte0 = info->ConfigData.ATAMajorCommand;
ata.generic.SignatureByte1 = info->ConfigData.ATAMinorCommand;
@@ -426,9 +425,9 @@
ata.generic.RegisterSelect =
REG_CYLINDER_LOW | REG_CYLINDER_HIGH |
REG_STATUS | REG_ERROR;
- srb->sc_data_direction = SCSI_DATA_READ;
- srb->request_buffer = pointer;
- srb->request_bufflen = value;
+ srb.sc_data_direction = SCSI_DATA_READ;
+ srb.request_buffer = pointer;
+ srb.request_bufflen = value;
break;
case ACTION_ENUM:
@@ -438,7 +437,7 @@
ACTION_SELECT_5;
ata.generic.RegisterSelect = REG_DEVICE_HEAD;
ata.write.DeviceHeadByte = value;
- srb->sc_data_direction = SCSI_DATA_NONE;
+ srb.sc_data_direction = SCSI_DATA_NONE;
break;
case ACTION_RESET:
@@ -447,7 +446,7 @@
ACTION_SELECT_3|ACTION_SELECT_4;
ata.generic.RegisterSelect = REG_DEVICE_CONTROL;
ata.write.DeviceControlByte = ATA_DC_RESET_CONTROLLER;
- srb->sc_data_direction = SCSI_DATA_NONE;
+ srb.sc_data_direction = SCSI_DATA_NONE;
break;
case ACTION_REENABLE:
@@ -456,7 +455,7 @@
ACTION_SELECT_3|ACTION_SELECT_4;
ata.generic.RegisterSelect = REG_DEVICE_CONTROL;
ata.write.DeviceControlByte = ATA_DC_REENABLE_CONTROLLER;
- srb->sc_data_direction = SCSI_DATA_NONE;
+ srb.sc_data_direction = SCSI_DATA_NONE;
break;
case ACTION_SOFT_RESET:
@@ -465,16 +464,16 @@
ata.generic.RegisterSelect = REG_DEVICE_HEAD | REG_COMMAND;
ata.write.DeviceHeadByte = info->DeviceHead;
ata.write.CommandByte = WIN_SRST;
- srb->sc_data_direction = SCSI_DATA_NONE;
+ srb.sc_data_direction = SCSI_DATA_NONE;
break;
case ACTION_IDENTIFY:
US_DEBUGP(" isd200_action(IDENTIFY)\n");
ata.generic.RegisterSelect = REG_COMMAND;
ata.write.CommandByte = WIN_IDENTIFY;
- srb->sc_data_direction = SCSI_DATA_READ;
- srb->request_buffer = (void *)&info->drive;
- srb->request_bufflen = sizeof(struct hd_driveid);
+ srb.sc_data_direction = SCSI_DATA_READ;
+ srb.request_buffer = (void *)&info->drive;
+ srb.request_bufflen = sizeof(struct hd_driveid);
break;
default:
@@ -482,9 +481,9 @@
break;
}
- memcpy(srb->cmnd, &ata, sizeof(ata.generic));
- srb->cmd_len = sizeof(ata.generic);
- status = usb_stor_Bulk_transport(srb, us);
+ memcpy(srb.cmnd, &ata, sizeof(ata.generic));
+ srb.cmd_len = sizeof(ata.generic);
+ status = usb_stor_Bulk_transport(&srb, us);
if (status == USB_STOR_TRANSPORT_GOOD)
status = ISD200_GOOD;
else {
@@ -835,7 +834,7 @@
int detect )
{
int status = ISD200_GOOD;
- unsigned char *regs = us->iobuf;
+ unsigned char regs[8];
unsigned long endTime;
struct isd200_info *info = (struct isd200_info *)us->extra;
int recheckAsMaster = FALSE;
@@ -857,7 +856,7 @@
break;
status = isd200_action( us, ACTION_READ_STATUS,
- regs, 8 );
+ regs, sizeof(regs) );
if ( status != ISD200_GOOD )
break;
-------------
>
>
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> [EMAIL PROTECTED]
> To unsubscribe, use the last form field at:
> https://lists.sourceforge.net/lists/listinfo/linux-usb-users
>
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users