diff options
| author | Vojtech Pavlik <vojtech@suse.cz> | 2003-02-12 13:07:29 +0100 |
|---|---|---|
| committer | Vojtech Pavlik <vojtech@suse.cz> | 2003-02-12 13:07:29 +0100 |
| commit | a2b33c369679baf158fe88d774f260dc7db204ef (patch) | |
| tree | cdd08f111a753f1540fcc4fcb039ca80f211ea46 | |
| parent | b81c81a095364924a3fbf343058180dba8ba77a9 (diff) | |
input: Resurrect usb_set_report for Aiptek and Wacom tablets.
| -rw-r--r-- | drivers/usb/input/aiptek.c | 29 | ||||
| -rw-r--r-- | drivers/usb/input/wacom.c | 14 |
2 files changed, 29 insertions, 14 deletions
diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c index 6379f83cd965..cd842bb83f2a 100644 --- a/drivers/usb/input/aiptek.c +++ b/drivers/usb/input/aiptek.c @@ -224,13 +224,18 @@ aiptek_close(struct input_dev *dev) usb_unlink_urb(aiptek->irq); } -/* - * FIXME, either remove this call, or talk the maintainer into - * adding usb_set_report back into the core. - */ -#if 0 +#define USB_REQ_SET_REPORT 0x09 +static int +usb_set_report(struct usb_device *dev, struct usb_host_interface *inter, unsigned char type, + unsigned char id, void *buf, int size) +{ + return usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE, + (type << 8) + id, inter->desc.bInterfaceNumber, buf, size, HZ); +} + static void -aiptek_command(struct usb_device *dev, unsigned int ifnum, +aiptek_command(struct usb_device *dev, struct usb_host_interface *inter, unsigned char command, unsigned char data) { __u8 buf[3]; @@ -239,17 +244,17 @@ aiptek_command(struct usb_device *dev, unsigned int ifnum, buf[1] = command; buf[2] = data; - if (usb_set_report(dev, ifnum, 3, 2, buf, 3) != 3) { + if (usb_set_report(dev, inter, 3, 2, buf, 3) != 3) { dbg("aiptek_command: 0x%x 0x%x\n", command, data); } } -#endif static int aiptek_probe(struct usb_interface *intf, const struct usb_device_id *id) { struct usb_device *dev = interface_to_usbdev (intf); + struct usb_host_interface *interface = intf->altsetting + 0; struct usb_endpoint_descriptor *endpoint; struct aiptek *aiptek; @@ -271,11 +276,11 @@ aiptek_probe(struct usb_interface *intf, return -ENOMEM; } - // Resolution500LPI -// aiptek_command(dev, ifnum, 0x18, 0x04); + /* Resolution500LPI */ + aiptek_command(dev, interface, 0x18, 0x04); - // SwitchToTablet -// aiptek_command(dev, ifnum, 0x10, 0x01); + /* SwitchToTablet */ + aiptek_command(dev, interface, 0x10, 0x01); aiptek->features = aiptek_features + id->driver_info; diff --git a/drivers/usb/input/wacom.c b/drivers/usb/input/wacom.c index 66e9122a6e7f..f6b685dabb3e 100644 --- a/drivers/usb/input/wacom.c +++ b/drivers/usb/input/wacom.c @@ -102,6 +102,17 @@ struct wacom { char phys[32]; }; +#define USB_REQ_SET_REPORT 0x09 +static int usb_set_report(struct usb_interface *intf, unsigned char type, + unsigned char id, void *buf, int size) +{ + return usb_control_msg(interface_to_usbdev(intf), + usb_sndctrlpipe(interface_to_usbdev(intf), 0), + USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE, + (type << 8) + id, intf->altsetting[0].desc.bInterfaceNumber, + buf, size, HZ); +} + static void wacom_pl_irq(struct urb *urb, struct pt_regs *regs) { struct wacom *wacom = urb->context; @@ -488,6 +499,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i { struct usb_device *dev = interface_to_usbdev(intf); struct usb_endpoint_descriptor *endpoint; + char rep_data[2] = {0x02, 0x02}; struct wacom *wacom; char path[64]; @@ -582,11 +594,9 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i input_register_device(&wacom->dev); -#if 0 /* Missing usb_set_report() */ usb_set_report(intf, 3, 2, rep_data, 2); usb_set_report(intf, 3, 5, rep_data, 0); usb_set_report(intf, 3, 6, rep_data, 0); -#endif printk(KERN_INFO "input: %s on %s\n", wacom->features->name, path); |
