Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1be1d6b7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (32 commits)
  USB GADGET/PERIPHERAL: g_file_storage Bulk-Only Transport compliance, clear-feature ignore
  USB GADGET/PERIPHERAL: g_file_storage Bulk-Only Transport compliance
  usb_serial: some coding style fixes
  USB: Remove redundant dependencies on USB_ATM.
  USB: UHCI: disable remote wakeup when it's not needed
  USB: OHCI: work around bogus compiler warning
  USB: add Cypress c67x00 OTG controller HCD driver
  USB: add Cypress c67x00 OTG controller core driver
  USB: add Cypress c67x00 low level interface code
  USB: airprime: unlock mutex instead of trying to lock it again
  USB: storage: Update mailling list address
  USB: storage: UNUSUAL_DEVS() for PanDigital Picture frame.
  USB: Add the USB 2.0 extension descriptor.
  USB: add more FTDI device ids
  USB: fix cannot work usb storage when using ohci-sm501
  usb: gadget zero timer init fix
  usb: gadget zero style fixups (mostly whitespace)
  usb serial gadget: CDC ACM fixes
  usb: pxa27x_udc driver
  USB: INTOVA Pixtreme camera mass storage device
  ...
parents 37b6a04f 62fd2cac
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -4051,6 +4051,12 @@ L: linux-usb@vger.kernel.org
S:	Maintained
S:	Maintained
W:	http://www.kroah.com/linux-usb/
W:	http://www.kroah.com/linux-usb/


USB CYPRESS C67X00 DRIVER
P:	Peter Korsgaard
M:	jacmet@sunsite.dk
L:	linux-usb@vger.kernel.org
S:	Maintained

USB DAVICOM DM9601 DRIVER
USB DAVICOM DM9601 DRIVER
P:	Peter Korsgaard
P:	Peter Korsgaard
M:	jacmet@sunsite.dk
M:	jacmet@sunsite.dk
+39 −24
Original line number Original line Diff line number Diff line
@@ -205,6 +205,7 @@ struct ub_scsi_cmd {
	unsigned char key, asc, ascq;	/* May be valid if error==-EIO */
	unsigned char key, asc, ascq;	/* May be valid if error==-EIO */


	int stat_count;			/* Retries getting status. */
	int stat_count;			/* Retries getting status. */
	unsigned int timeo;		/* jiffies until rq->timeout changes */


	unsigned int len;		/* Requested length */
	unsigned int len;		/* Requested length */
	unsigned int current_sg;
	unsigned int current_sg;
@@ -318,6 +319,7 @@ struct ub_dev {
	int openc;			/* protected by ub_lock! */
	int openc;			/* protected by ub_lock! */
					/* kref is too implicit for our taste */
					/* kref is too implicit for our taste */
	int reset;			/* Reset is running */
	int reset;			/* Reset is running */
	int bad_resid;
	unsigned int tagcnt;
	unsigned int tagcnt;
	char name[12];
	char name[12];
	struct usb_device *dev;
	struct usb_device *dev;
@@ -764,6 +766,12 @@ static void ub_cmd_build_packet(struct ub_dev *sc, struct ub_lun *lun,
	cmd->cdb_len = rq->cmd_len;
	cmd->cdb_len = rq->cmd_len;


	cmd->len = rq->data_len;
	cmd->len = rq->data_len;

	/*
	 * To reapply this to every URB is not as incorrect as it looks.
	 * In return, we avoid any complicated tracking calculations.
	 */
	cmd->timeo = rq->timeout;
}
}


static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
@@ -785,10 +793,6 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
			scsi_status = 0;
			scsi_status = 0;
		} else {
		} else {
			if (cmd->act_len != cmd->len) {
			if (cmd->act_len != cmd->len) {
				if ((cmd->key == MEDIUM_ERROR ||
				     cmd->key == UNIT_ATTENTION) &&
				    ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
					return;
				scsi_status = SAM_STAT_CHECK_CONDITION;
				scsi_status = SAM_STAT_CHECK_CONDITION;
			} else {
			} else {
				scsi_status = 0;
				scsi_status = 0;
@@ -804,7 +808,10 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
			else
			else
				scsi_status = DID_ERROR << 16;
				scsi_status = DID_ERROR << 16;
		} else {
		} else {
			if (cmd->error == -EIO) {
			if (cmd->error == -EIO &&
			    (cmd->key == 0 ||
			     cmd->key == MEDIUM_ERROR ||
			     cmd->key == UNIT_ATTENTION)) {
				if (ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
				if (ub_rw_cmd_retry(sc, lun, urq, cmd) == 0)
					return;
					return;
			}
			}
@@ -1259,14 +1266,19 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
			return;
			return;
		}
		}


		if (!sc->bad_resid) {
			len = le32_to_cpu(bcs->Residue);
			len = le32_to_cpu(bcs->Residue);
			if (len != cmd->len - cmd->act_len) {
			if (len != cmd->len - cmd->act_len) {
				/*
				/*
			 * It is all right to transfer less, the caller has
				 * Only start ignoring if this cmd ended well.
			 * to check. But it's not all right if the device
			 * counts disagree with our counts.
				 */
				 */
			goto Bad_End;
				if (cmd->len == cmd->act_len) {
					printk(KERN_NOTICE "%s: "
					    "bad residual %d of %d, ignoring\n",
					    sc->name, len, cmd->len);
					sc->bad_resid = 1;
				}
			}
		}
		}


		switch (bcs->Status) {
		switch (bcs->Status) {
@@ -1297,8 +1309,7 @@ static void ub_scsi_urb_compl(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
		ub_state_done(sc, cmd, -EIO);
		ub_state_done(sc, cmd, -EIO);


	} else {
	} else {
		printk(KERN_WARNING "%s: "
		printk(KERN_WARNING "%s: wrong command state %d\n",
		    "wrong command state %d\n",
		    sc->name, cmd->state);
		    sc->name, cmd->state);
		ub_state_done(sc, cmd, -EINVAL);
		ub_state_done(sc, cmd, -EINVAL);
		return;
		return;
@@ -1336,6 +1347,9 @@ static void ub_data_start(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
		return;
		return;
	}
	}


	if (cmd->timeo)
		sc->work_timer.expires = jiffies + cmd->timeo;
	else
		sc->work_timer.expires = jiffies + UB_DATA_TIMEOUT;
		sc->work_timer.expires = jiffies + UB_DATA_TIMEOUT;
	add_timer(&sc->work_timer);
	add_timer(&sc->work_timer);


@@ -1376,6 +1390,9 @@ static int __ub_state_stat(struct ub_dev *sc, struct ub_scsi_cmd *cmd)
		return -1;
		return -1;
	}
	}


	if (cmd->timeo)
		sc->work_timer.expires = jiffies + cmd->timeo;
	else
		sc->work_timer.expires = jiffies + UB_STAT_TIMEOUT;
		sc->work_timer.expires = jiffies + UB_STAT_TIMEOUT;
	add_timer(&sc->work_timer);
	add_timer(&sc->work_timer);
	return 0;
	return 0;
@@ -1515,8 +1532,7 @@ static void ub_top_sense_done(struct ub_dev *sc, struct ub_scsi_cmd *scmd)
		return;
		return;
	}
	}
	if (cmd->state != UB_CMDST_SENSE) {
	if (cmd->state != UB_CMDST_SENSE) {
		printk(KERN_WARNING "%s: "
		printk(KERN_WARNING "%s: sense done with bad cmd state %d\n",
		    "sense done with bad cmd state %d\n",
		    sc->name, cmd->state);
		    sc->name, cmd->state);
		return;
		return;
	}
	}
@@ -1720,7 +1736,7 @@ static int ub_bd_ioctl(struct inode *inode, struct file *filp,
}
}


/*
/*
 * This is called once a new disk was seen by the block layer or by ub_probe().
 * This is called by check_disk_change if we reported a media change.
 * The main onjective here is to discover the features of the media such as
 * The main onjective here is to discover the features of the media such as
 * the capacity, read-only status, etc. USB storage generally does not
 * the capacity, read-only status, etc. USB storage generally does not
 * need to be spun up, but if we needed it, this would be the place.
 * need to be spun up, but if we needed it, this would be the place.
@@ -2136,8 +2152,7 @@ static int ub_get_pipes(struct ub_dev *sc, struct usb_device *dev,
	}
	}


	if (ep_in == NULL || ep_out == NULL) {
	if (ep_in == NULL || ep_out == NULL) {
		printk(KERN_NOTICE "%s: failed endpoint check\n",
		printk(KERN_NOTICE "%s: failed endpoint check\n", sc->name);
		    sc->name);
		return -ENODEV;
		return -ENODEV;
	}
	}


@@ -2354,7 +2369,7 @@ static void ub_disconnect(struct usb_interface *intf)
	spin_unlock_irqrestore(&ub_lock, flags);
	spin_unlock_irqrestore(&ub_lock, flags);


	/*
	/*
	 * Fence stall clearnings, operations triggered by unlinkings and so on.
	 * Fence stall clearings, operations triggered by unlinkings and so on.
	 * We do not attempt to unlink any URBs, because we do not trust the
	 * We do not attempt to unlink any URBs, because we do not trust the
	 * unlink paths in HC drivers. Also, we get -84 upon disconnect anyway.
	 * unlink paths in HC drivers. Also, we get -84 upon disconnect anyway.
	 */
	 */
@@ -2417,7 +2432,7 @@ static void ub_disconnect(struct usb_interface *intf)
	spin_unlock_irqrestore(sc->lock, flags);
	spin_unlock_irqrestore(sc->lock, flags);


	/*
	/*
	 * There is virtually no chance that other CPU runs times so long
	 * There is virtually no chance that other CPU runs a timeout so long
	 * after ub_urb_complete should have called del_timer, but only if HCD
	 * after ub_urb_complete should have called del_timer, but only if HCD
	 * didn't forget to deliver a callback on unlink.
	 * didn't forget to deliver a callback on unlink.
	 */
	 */
+2 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,8 @@ obj-$(CONFIG_USB_SL811_HCD) += host/
obj-$(CONFIG_USB_U132_HCD)	+= host/
obj-$(CONFIG_USB_U132_HCD)	+= host/
obj-$(CONFIG_USB_R8A66597_HCD)	+= host/
obj-$(CONFIG_USB_R8A66597_HCD)	+= host/


obj-$(CONFIG_USB_C67X00_HCD)	+= c67x00/

obj-$(CONFIG_USB_ACM)		+= class/
obj-$(CONFIG_USB_ACM)		+= class/
obj-$(CONFIG_USB_PRINTER)	+= class/
obj-$(CONFIG_USB_PRINTER)	+= class/


+0 −4
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ if USB_ATM


config USB_SPEEDTOUCH
config USB_SPEEDTOUCH
	tristate "Speedtouch USB support"
	tristate "Speedtouch USB support"
	depends on USB_ATM
	select FW_LOADER
	select FW_LOADER
	help
	help
	  Say Y here if you have an SpeedTouch USB or SpeedTouch 330
	  Say Y here if you have an SpeedTouch USB or SpeedTouch 330
@@ -32,7 +31,6 @@ config USB_SPEEDTOUCH


config USB_CXACRU
config USB_CXACRU
	tristate "Conexant AccessRunner USB support"
	tristate "Conexant AccessRunner USB support"
	depends on USB_ATM
	select FW_LOADER
	select FW_LOADER
	help
	help
	  Say Y here if you have an ADSL USB modem based on the Conexant
	  Say Y here if you have an ADSL USB modem based on the Conexant
@@ -45,7 +43,6 @@ config USB_CXACRU


config USB_UEAGLEATM
config USB_UEAGLEATM
	tristate "ADI 930 and eagle USB DSL modem"
	tristate "ADI 930 and eagle USB DSL modem"
	depends on USB_ATM
	select FW_LOADER
	select FW_LOADER
	help
	help
	  Say Y here if you have an ADSL USB modem based on the ADI 930
	  Say Y here if you have an ADSL USB modem based on the ADI 930
@@ -58,7 +55,6 @@ config USB_UEAGLEATM


config USB_XUSBATM
config USB_XUSBATM
	tristate "Other USB DSL modem support"
	tristate "Other USB DSL modem support"
	depends on USB_ATM
	help
	help
	  Say Y here if you have a DSL USB modem not explicitly supported by
	  Say Y here if you have a DSL USB modem not explicitly supported by
	  another USB DSL drivers.  In order to use your modem you will need to
	  another USB DSL drivers.  In order to use your modem you will need to
+9 −0
Original line number Original line Diff line number Diff line
#
# Makefile for Cypress C67X00 USB Controller
#

ccflags-$(CONFIG_USB_DEBUG)		+= -DDEBUG

obj-$(CONFIG_USB_C67X00_HCD)		+= c67x00.o

c67x00-objs := c67x00-drv.o c67x00-ll-hpi.o c67x00-hcd.o c67x00-sched.o
Loading