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

Commit f8e98843 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6

parents c801147c 8926bfa7
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -46,8 +46,9 @@ USB-specific:

-EMSGSIZE	(a) endpoint maxpacket size is zero; it is not usable
		    in the current interface altsetting.
		(b) ISO packet is biger than endpoint maxpacket
		(c) requested data transfer size is invalid (negative)
		(b) ISO packet is larger than the endpoint maxpacket.
		(c) requested data transfer length is invalid: negative
		    or too large for the host controller.

-ENOSPC		This request would overcommit the usb bandwidth reserved
		for periodic transfers (interrupt, isochronous).
+18 −7
Original line number Diff line number Diff line
@@ -193,6 +193,7 @@ static const u8 W83792D_REG_LEVELS[3][4] = {
	  0xE2 }	/* (bit3-0) SmartFanII: Fan3 Level 3 */
};

#define W83792D_REG_GPIO_EN		0x1A
#define W83792D_REG_CONFIG		0x40
#define W83792D_REG_VID_FANDIV		0x47
#define W83792D_REG_CHIPID		0x49
@@ -257,7 +258,7 @@ DIV_TO_REG(long val)
{
	int i;
	val = SENSORS_LIMIT(val, 1, 128) >> 1;
	for (i = 0; i < 6; i++) {
	for (i = 0; i < 7; i++) {
		if (val == 0)
			break;
		val >>= 1;
@@ -1282,8 +1283,8 @@ w83792d_detect(struct i2c_adapter *adapter, int address, int kind)
	w83792d_init_client(new_client);

	/* A few vars need to be filled upon startup */
	for (i = 1; i <= 7; i++) {
		data->fan_min[i - 1] = w83792d_read_value(new_client,
	for (i = 0; i < 7; i++) {
		data->fan_min[i] = w83792d_read_value(new_client,
					W83792D_REG_FAN_MIN[i]);
	}

@@ -1306,9 +1307,19 @@ w83792d_detect(struct i2c_adapter *adapter, int address, int kind)
	device_create_file_fan(new_client, 1);
	device_create_file_fan(new_client, 2);
	device_create_file_fan(new_client, 3);

	/* Read GPIO enable register to check if pins for fan 4,5 are used as
	   GPIO */
	val1 = w83792d_read_value(new_client, W83792D_REG_GPIO_EN);
	if (!(val1 & 0x40))
		device_create_file_fan(new_client, 4);
	if (!(val1 & 0x20))
		device_create_file_fan(new_client, 5);

	val1 = w83792d_read_value(new_client, W83792D_REG_PIN);
	if (val1 & 0x40)
		device_create_file_fan(new_client, 6);
	if (val1 & 0x04)
		device_create_file_fan(new_client, 7);

	device_create_file_temp1(new_client);		/* Temp1 */
+3 −0
Original line number Diff line number Diff line
@@ -787,6 +787,9 @@ static const struct usb_device_id cxacru_usb_ids[] = {
	{ /* V = Conexant			P = ADSL modem (Hasbani project)	*/
		USB_DEVICE(0x0572, 0xcb00),	.driver_info = (unsigned long) &cxacru_cb00
	},
	{ /* V = Conexant             P = ADSL modem (Well PTI-800 */
		USB_DEVICE(0x0572, 0xcb02),	.driver_info = (unsigned long) &cxacru_cb00
	},
	{ /* V = Conexant			P = ADSL modem				*/
		USB_DEVICE(0x0572, 0xcb01),	.driver_info = (unsigned long) &cxacru_cb00
	},
+2 −1
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
			goto done;
		}
	}
	synchronize_irq(dev->irq);

	/* FIXME until the generic PM interfaces change a lot more, this
	 * can't use PCI D1 and D2 states.  For example, the confusion
@@ -392,7 +393,7 @@ int usb_hcd_pci_resume (struct pci_dev *dev)

	dev->dev.power.power_state = PMSG_ON;

	hcd->saw_irq = 0;
	clear_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);

	if (hcd->driver->resume) {
		retval = hcd->driver->resume(hcd);
+10 −5
Original line number Diff line number Diff line
@@ -1315,11 +1315,12 @@ static int hcd_unlink_urb (struct urb *urb, int status)
	 * finish unlinking the initial failed usb_set_address()
	 * or device descriptor fetch.
	 */
	if (!hcd->saw_irq && hcd->self.root_hub != urb->dev) {
	if (!test_bit(HCD_FLAG_SAW_IRQ, &hcd->flags)
	    && hcd->self.root_hub != urb->dev) {
		dev_warn (hcd->self.controller, "Unlink after no-IRQ?  "
			"Controller is probably using the wrong IRQ."
			"\n");
		hcd->saw_irq = 1;
		set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);
	}

	urb->status = status;
@@ -1649,13 +1650,15 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs * r)
	struct usb_hcd		*hcd = __hcd;
	int			start = hcd->state;

	if (start == HC_STATE_HALT)
	if (unlikely(start == HC_STATE_HALT ||
	    !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)))
		return IRQ_NONE;
	if (hcd->driver->irq (hcd, r) == IRQ_NONE)
		return IRQ_NONE;

	hcd->saw_irq = 1;
	if (hcd->state == HC_STATE_HALT)
	set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);

	if (unlikely(hcd->state == HC_STATE_HALT))
		usb_hc_died (hcd);
	return IRQ_HANDLED;
}
@@ -1768,6 +1771,8 @@ int usb_add_hcd(struct usb_hcd *hcd,

	dev_info(hcd->self.controller, "%s\n", hcd->product_desc);

	set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);

	/* till now HC has been in an indeterminate state ... */
	if (hcd->driver->reset && (retval = hcd->driver->reset(hcd)) < 0) {
		dev_err(hcd->self.controller, "can't reset\n");
Loading