diff -urN linux-2.4.22/drivers/bluetooth/hci_usb.c linux-2.4.22-digianswer/drivers/bluetooth/hci_usb.c --- linux-2.4.22/drivers/bluetooth/hci_usb.c Mon Aug 25 13:44:41 2003 +++ linux-2.4.22-digianswer/drivers/bluetooth/hci_usb.c Sat Aug 30 01:59:59 2003 @@ -79,6 +79,9 @@ /* Bluetooth Ultraport Module from IBM */ { USB_DEVICE(0x04bf, 0x030a) }, + /* Digianswer device */ + { USB_DEVICE(0x08fd, 0x0001), driver_info: HCI_DIGIANSWER }, + { } /* Terminating entry */ }; @@ -427,7 +430,7 @@ } else dr = (void *) _urb->urb.setup_packet; - dr->bRequestType = HCI_CTRL_REQ; + dr->bRequestType = husb->ctrl_req; dr->bRequest = 0; dr->wIndex = 0; dr->wValue = 0; @@ -872,6 +875,11 @@ husb->bulk_out_ep = bulk_out_ep[0]; husb->bulk_in_ep = bulk_in_ep[0]; husb->intr_in_ep = intr_in_ep[0]; + + if (id->driver_info & HCI_DIGIANSWER) + husb->ctrl_req = HCI_DIGI_REQ; + else + husb->ctrl_req = HCI_CTRL_REQ; #ifdef CONFIG_BLUEZ_USB_SCO if (isoc_iface) { diff -urN linux-2.4.22/drivers/bluetooth/hci_usb.h linux-2.4.22-digianswer/drivers/bluetooth/hci_usb.h --- linux-2.4.22/drivers/bluetooth/hci_usb.h Fri Jun 13 16:51:32 2003 +++ linux-2.4.22-digianswer/drivers/bluetooth/hci_usb.h Sat Aug 30 02:02:46 2003 @@ -35,6 +35,9 @@ #define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */ #define HCI_CTRL_REQ 0x20 +#define HCI_DIGI_REQ 0x40 + +#define HCI_DIGIANSWER 0x01 #define HCI_MAX_IFACE_NUM 3 @@ -118,6 +121,8 @@ struct usb_interface *isoc_iface; struct usb_endpoint_descriptor *isoc_out_ep; struct usb_endpoint_descriptor *isoc_in_ep; + + __u8 ctrl_req; struct sk_buff_head transmit_q[4]; struct sk_buff *reassembly[4]; // Reassembly buffers