This patch unifies all the bit tests and various flags into a single, unified system.
Greg, please apply.
Matt
# This is a BitKeeper generated patch for the following project:
# Project Name: greg k-h's linux 2.5 USB kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.587 -> 1.588
# drivers/usb/storage/scsiglue.c 1.18 -> 1.19
# drivers/usb/storage/transport.c 1.30 -> 1.31
# drivers/usb/storage/usb.h 1.13 -> 1.14
# drivers/usb/storage/usb.c 1.28 -> 1.29
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/07/06 [EMAIL PROTECTED] 1.588
# Merge all bit fields and flags into one unified system.
# --------------------------------------------
#
diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
--- a/drivers/usb/storage/scsiglue.c Sat Jul 6 22:19:28 2002
+++ b/drivers/usb/storage/scsiglue.c Sat Jul 6 22:19:28 2002
@@ -198,7 +198,7 @@
US_DEBUGP("device_reset() called\n" );
/* if the device was removed, then we're already reset */
- if (!test_bit(DEV_ATTACHED, &us->bitflags))
+ if (!(us->flags & US_FL_DEV_ATTACHED))
return SUCCESS;
scsi_unlock(srb->host);
@@ -229,7 +229,7 @@
US_DEBUGP("bus_reset() called\n");
/* if the device has been removed, this worked */
- if (!test_bit(DEV_ATTACHED, &us->bitflags)) {
+ if (!(us->flags & US_FL_DEV_ATTACHED)) {
US_DEBUGP("-- device removed already\n");
return SUCCESS;
}
@@ -331,8 +331,8 @@
/* show the GUID of the device */
SPRINTF(" GUID: " GUID_FORMAT "\n", GUID_ARGS(us->guid));
- SPRINTF(" Attached: %s\n", (test_bit(DEV_ATTACHED, &us->bitflags)
- ? "Yes" : "No"));
+ SPRINTF(" Attached: %s\n", (us->flags & US_FL_DEV_ATTACHED ?
+ "Yes" : "No"));
/*
* Calculate start of next buffer, and return value.
diff -Nru a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
--- a/drivers/usb/storage/transport.c Sat Jul 6 22:19:28 2002
+++ b/drivers/usb/storage/transport.c Sat Jul 6 22:19:28 2002
@@ -878,7 +878,7 @@
up(&(us->current_urb_sem));
/* If we are waiting for an IRQ, simulate it */
- if (test_bit(IP_WANTED, &us->bitflags)) {
+ if (test_bit(US_FLIDX_IP_WANTED, &us->flags)) {
US_DEBUGP("-- simulating missing IRQ\n");
usb_stor_CBI_irq(us->irq_urb);
}
@@ -903,7 +903,7 @@
if (atomic_read(&us->sm_state) == US_STATE_ABORTING) {
/* was this a wanted interrupt? */
- if (!test_and_clear_bit(IP_WANTED, &us->bitflags)) {
+ if (!test_and_clear_bit(US_FLIDX_IP_WANTED, &us->flags)) {
US_DEBUGP("ERROR: Unwanted interrupt received!\n");
return;
}
@@ -919,7 +919,7 @@
US_DEBUGP("-- device has been removed\n");
/* was this a wanted interrupt? */
- if (!test_and_clear_bit(IP_WANTED, &us->bitflags))
+ if (!test_and_clear_bit(US_FLIDX_IP_WANTED, &us->flags))
return;
/* indicate a transport error -- this is the best we can do */
@@ -943,7 +943,7 @@
}
/* was this a wanted interrupt? */
- if (!test_and_clear_bit(IP_WANTED, &us->bitflags)) {
+ if (!test_and_clear_bit(US_FLIDX_IP_WANTED, &us->flags)) {
US_DEBUGP("ERROR: Unwanted interrupt received!\n");
return;
}
@@ -965,7 +965,7 @@
init_MUTEX_LOCKED(&(us->ip_waitq));
/* Set up for status notification */
- set_bit(IP_WANTED, &us->bitflags);
+ set_bit(US_FLIDX_IP_WANTED, &us->flags);
/* COMMAND STAGE */
/* let's send the command via the control pipe */
@@ -978,7 +978,7 @@
US_DEBUGP("Call to usb_stor_control_msg() returned %d\n", result);
if (result < 0) {
/* Reset flag for status notification */
- clear_bit(IP_WANTED, &us->bitflags);
+ clear_bit(US_FLIDX_IP_WANTED, &us->flags);
}
/* did we abort this command? */
@@ -1016,11 +1016,11 @@
/* report any errors */
if (result == US_BULK_TRANSFER_ABORTED) {
- clear_bit(IP_WANTED, &us->bitflags);
+ clear_bit(US_FLIDX_IP_WANTED, &us->flags);
return USB_STOR_TRANSPORT_ABORTED;
}
if (result == US_BULK_TRANSFER_FAILED) {
- clear_bit(IP_WANTED, &us->bitflags);
+ clear_bit(US_FLIDX_IP_WANTED, &us->flags);
return USB_STOR_TRANSPORT_FAILED;
}
}
diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
--- a/drivers/usb/storage/usb.c Sat Jul 6 22:19:28 2002
+++ b/drivers/usb/storage/usb.c Sat Jul 6 22:19:28 2002
@@ -396,7 +396,7 @@
}
/* our device has gone - pretend not ready */
- else if (!test_bit(DEV_ATTACHED, &us->bitflags)) {
+ else if (!(us->flags & US_FL_DEV_ATTACHED)) {
US_DEBUGP("Request is for removed device\n");
/* For REQUEST_SENSE, it's the data. But
* for anything else, it should look like
@@ -420,7 +420,7 @@
sizeof(usb_stor_sense_notready));
us->srb->result = CHECK_CONDITION << 1;
}
- } /* test_bit(DEV_ATTACHED, &us->bitflags) */
+ } /* !(us->flags & US_FL_DEV_ATTACHED) */
/* Handle those devices which need us to fake
* their inquiry data */
@@ -570,7 +570,7 @@
}
/* mark the device as gone */
- clear_bit(DEV_ATTACHED, &ss->bitflags);
+ ss->flags &= ~ US_FL_DEV_ATTACHED;
usb_put_dev(ss->pusb_dev);
ss->pusb_dev = NULL;
}
@@ -726,7 +726,7 @@
*/
ss = us_list;
while ((ss != NULL) &&
- (test_bit(DEV_ATTACHED, &ss->bitflags) ||
+ ((ss->flags & US_FL_DEV_ATTACHED) ||
!GUID_EQUAL(guid, ss->guid)))
ss = ss->next;
@@ -741,7 +741,7 @@
/* establish the connection to the new device upon reconnect */
ss->ifnum = ifnum;
ss->pusb_dev = dev;
- set_bit(DEV_ATTACHED, &ss->bitflags);
+ ss->flags |= US_FL_DEV_ATTACHED;
/* copy over the endpoint data */
ss->ep_in = ep_in->bEndpointAddress &
@@ -785,7 +785,7 @@
/* copy over the subclass and protocol data */
ss->subclass = subclass;
ss->protocol = protocol;
- ss->flags = flags;
+ ss->flags = flags | US_FL_DEV_ATTACHED;
ss->unusual_dev = unusual_dev;
/* copy over the endpoint data */
@@ -1000,7 +1000,6 @@
/* start up our control thread */
atomic_set(&ss->sm_state, US_STATE_IDLE);
- set_bit(DEV_ATTACHED, &ss->bitflags);
ss->pid = kernel_thread(usb_stor_control_thread, ss,
CLONE_VM);
if (ss->pid < 0) {
diff -Nru a/drivers/usb/storage/usb.h b/drivers/usb/storage/usb.h
--- a/drivers/usb/storage/usb.h Sat Jul 6 22:19:28 2002
+++ b/drivers/usb/storage/usb.h Sat Jul 6 22:19:28 2002
@@ -100,8 +100,11 @@
Win/MacOS compatibility */
#define US_FL_START_STOP 0x00000004 /* ignore START_STOP commands */
#define US_FL_IGNORE_SER 0x00000010 /* Ignore the serial number given */
-#define US_FL_SCM_MULT_TARG 0x00000020 /* supports multiple targets */
-#define US_FL_FIX_INQUIRY 0x00000040 /* INQUIRY response needs fixing */
+#define US_FL_SCM_MULT_TARG 0x00000020 /* supports multiple targets */
+#define US_FL_FIX_INQUIRY 0x00000040 /* INQUIRY response needs fixing */
+
+#define US_FL_DEV_ATTACHED 0x00010000 /* is the device attached? */
+#define US_FLIDX_IP_WANTED 17 /* 0x00020000 is an IRQ expected? */
/* kernel thread actions */
@@ -128,12 +131,12 @@
/* The device we're working with
* It's important to note:
* (o) you must hold dev_semaphore to change pusb_dev
- * (o) DEV_ATTACHED in bitflags should change whenever pusb_dev does
+ * (o) DEV_ATTACHED in flags should change whenever pusb_dev does
*/
struct semaphore dev_semaphore; /* protect pusb_dev */
struct usb_device *pusb_dev; /* this usb_device */
- unsigned int flags; /* from filter initially */
+ unsigned long flags; /* from filter initially */
/* information about the device -- always good */
char vendor[USB_STOR_STRING_LEN];
@@ -172,9 +175,6 @@
/* interrupt info for CBI devices -- only good if attached */
struct semaphore ip_waitq; /* for CBI interrupts */
- unsigned long bitflags; /* single-bit flags: */
-#define IP_WANTED 1 /* is an IRQ expected? */
-#define DEV_ATTACHED 2 /* is the dev. attached?*/
/* interrupt communications data */
struct semaphore irq_urb_sem; /* to protect irq_urb */
--
Matthew Dharm Home: [EMAIL PROTECTED]
Maintainer, Linux USB Mass Storage Driver
Hi. I have my back hairs caught in my computer fan.
-- Customer
User Friendly, 8/20/1998
msg07621/pgp00000.pgp
Description: PGP signature
