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 Original line Diff line number Diff line
@@ -46,8 +46,9 @@ USB-specific:


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


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


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


	/* A few vars need to be filled upon startup */
	/* A few vars need to be filled upon startup */
	for (i = 1; i <= 7; i++) {
	for (i = 0; i < 7; i++) {
		data->fan_min[i - 1] = w83792d_read_value(new_client,
		data->fan_min[i] = w83792d_read_value(new_client,
					W83792D_REG_FAN_MIN[i]);
					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, 1);
	device_create_file_fan(new_client, 2);
	device_create_file_fan(new_client, 2);
	device_create_file_fan(new_client, 3);
	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);
		device_create_file_fan(new_client, 4);
	if (!(val1 & 0x20))
		device_create_file_fan(new_client, 5);
		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);
		device_create_file_fan(new_client, 6);
	if (val1 & 0x04)
		device_create_file_fan(new_client, 7);
		device_create_file_fan(new_client, 7);


	device_create_file_temp1(new_client);		/* Temp1 */
	device_create_file_temp1(new_client);		/* Temp1 */
+3 −0
Original line number Original line 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)	*/
	{ /* V = Conexant			P = ADSL modem (Hasbani project)	*/
		USB_DEVICE(0x0572, 0xcb00),	.driver_info = (unsigned long) &cxacru_cb00
		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				*/
	{ /* V = Conexant			P = ADSL modem				*/
		USB_DEVICE(0x0572, 0xcb01),	.driver_info = (unsigned long) &cxacru_cb00
		USB_DEVICE(0x0572, 0xcb01),	.driver_info = (unsigned long) &cxacru_cb00
	},
	},
+2 −1
Original line number Original line Diff line number Diff line
@@ -219,6 +219,7 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
			goto done;
			goto done;
		}
		}
	}
	}
	synchronize_irq(dev->irq);


	/* FIXME until the generic PM interfaces change a lot more, this
	/* FIXME until the generic PM interfaces change a lot more, this
	 * can't use PCI D1 and D2 states.  For example, the confusion
	 * 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;
	dev->dev.power.power_state = PMSG_ON;


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


	if (hcd->driver->resume) {
	if (hcd->driver->resume) {
		retval = hcd->driver->resume(hcd);
		retval = hcd->driver->resume(hcd);
+10 −5
Original line number Original line 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()
	 * finish unlinking the initial failed usb_set_address()
	 * or device descriptor fetch.
	 * 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?  "
		dev_warn (hcd->self.controller, "Unlink after no-IRQ?  "
			"Controller is probably using the wrong IRQ."
			"Controller is probably using the wrong IRQ."
			"\n");
			"\n");
		hcd->saw_irq = 1;
		set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags);
	}
	}


	urb->status = status;
	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;
	struct usb_hcd		*hcd = __hcd;
	int			start = hcd->state;
	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;
		return IRQ_NONE;
	if (hcd->driver->irq (hcd, r) == IRQ_NONE)
	if (hcd->driver->irq (hcd, r) == IRQ_NONE)
		return IRQ_NONE;
		return IRQ_NONE;


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

	if (unlikely(hcd->state == HC_STATE_HALT))
		usb_hc_died (hcd);
		usb_hc_died (hcd);
	return IRQ_HANDLED;
	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);
	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 ... */
	/* till now HC has been in an indeterminate state ... */
	if (hcd->driver->reset && (retval = hcd->driver->reset(hcd)) < 0) {
	if (hcd->driver->reset && (retval = hcd->driver->reset(hcd)) < 0) {
		dev_err(hcd->self.controller, "can't reset\n");
		dev_err(hcd->self.controller, "can't reset\n");
Loading