@@ -68,6 +68,9 @@ static const struct usb_device_id btusb_table[] = {
6868 /* Generic Bluetooth AMP device */
6969 { USB_DEVICE_INFO (0xe0 , 0x01 , 0x04 ), .driver_info = BTUSB_AMP },
7070
71+ /* Generic Bluetooth USB interface */
72+ { USB_INTERFACE_INFO (0xe0 , 0x01 , 0x01 ) },
73+
7174 /* Apple-specific (Broadcom) devices */
7275 { USB_VENDOR_AND_INTERFACE_INFO (0x05ac , 0xff , 0x01 , 0x01 ),
7376 .driver_info = BTUSB_BCM_APPLE },
@@ -1878,51 +1881,6 @@ static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb)
18781881 return - EILSEQ ;
18791882}
18801883
1881- static int btusb_intel_secure_send (struct hci_dev * hdev , u8 fragment_type ,
1882- u32 plen , const void * param )
1883- {
1884- while (plen > 0 ) {
1885- struct sk_buff * skb ;
1886- u8 cmd_param [253 ], fragment_len = (plen > 252 ) ? 252 : plen ;
1887-
1888- cmd_param [0 ] = fragment_type ;
1889- memcpy (cmd_param + 1 , param , fragment_len );
1890-
1891- skb = __hci_cmd_sync (hdev , 0xfc09 , fragment_len + 1 ,
1892- cmd_param , HCI_INIT_TIMEOUT );
1893- if (IS_ERR (skb ))
1894- return PTR_ERR (skb );
1895-
1896- kfree_skb (skb );
1897-
1898- plen -= fragment_len ;
1899- param += fragment_len ;
1900- }
1901-
1902- return 0 ;
1903- }
1904-
1905- static void btusb_intel_version_info (struct hci_dev * hdev ,
1906- struct intel_version * ver )
1907- {
1908- const char * variant ;
1909-
1910- switch (ver -> fw_variant ) {
1911- case 0x06 :
1912- variant = "Bootloader" ;
1913- break ;
1914- case 0x23 :
1915- variant = "Firmware" ;
1916- break ;
1917- default :
1918- return ;
1919- }
1920-
1921- BT_INFO ("%s: %s revision %u.%u build %u week %u %u" , hdev -> name ,
1922- variant , ver -> fw_revision >> 4 , ver -> fw_revision & 0x0f ,
1923- ver -> fw_build_num , ver -> fw_build_ww , 2000 + ver -> fw_build_yy );
1924- }
1925-
19261884static int btusb_setup_intel_new (struct hci_dev * hdev )
19271885{
19281886 static const u8 reset_param [] = { 0x00 , 0x01 , 0x00 , 0x01 ,
@@ -1984,7 +1942,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
19841942 return - EINVAL ;
19851943 }
19861944
1987- btusb_intel_version_info (hdev , ver );
1945+ btintel_version_info (hdev , ver );
19881946
19891947 /* The firmware variant determines if the device is in bootloader
19901948 * mode or is running operational firmware. The value 0x06 identifies
@@ -2104,7 +2062,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
21042062 /* Start the firmware download transaction with the Init fragment
21052063 * represented by the 128 bytes of CSS header.
21062064 */
2107- err = btusb_intel_secure_send (hdev , 0x00 , 128 , fw -> data );
2065+ err = btintel_secure_send (hdev , 0x00 , 128 , fw -> data );
21082066 if (err < 0 ) {
21092067 BT_ERR ("%s: Failed to send firmware header (%d)" ,
21102068 hdev -> name , err );
@@ -2114,7 +2072,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
21142072 /* Send the 256 bytes of public key information from the firmware
21152073 * as the PKey fragment.
21162074 */
2117- err = btusb_intel_secure_send (hdev , 0x03 , 256 , fw -> data + 128 );
2075+ err = btintel_secure_send (hdev , 0x03 , 256 , fw -> data + 128 );
21182076 if (err < 0 ) {
21192077 BT_ERR ("%s: Failed to send firmware public key (%d)" ,
21202078 hdev -> name , err );
@@ -2124,7 +2082,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
21242082 /* Send the 256 bytes of signature information from the firmware
21252083 * as the Sign fragment.
21262084 */
2127- err = btusb_intel_secure_send (hdev , 0x02 , 256 , fw -> data + 388 );
2085+ err = btintel_secure_send (hdev , 0x02 , 256 , fw -> data + 388 );
21282086 if (err < 0 ) {
21292087 BT_ERR ("%s: Failed to send firmware signature (%d)" ,
21302088 hdev -> name , err );
@@ -2148,8 +2106,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
21482106 * firmware data buffer as a single Data fragement.
21492107 */
21502108 if (!(frag_len % 4 )) {
2151- err = btusb_intel_secure_send (hdev , 0x01 , frag_len ,
2152- fw_ptr );
2109+ err = btintel_secure_send (hdev , 0x01 , frag_len , fw_ptr );
21532110 if (err < 0 ) {
21542111 BT_ERR ("%s: Failed to send firmware data (%d)" ,
21552112 hdev -> name , err );
@@ -2291,39 +2248,6 @@ static int btusb_setup_intel_new(struct hci_dev *hdev)
22912248 return 0 ;
22922249}
22932250
2294- static void btusb_hw_error_intel (struct hci_dev * hdev , u8 code )
2295- {
2296- struct sk_buff * skb ;
2297- u8 type = 0x00 ;
2298-
2299- BT_ERR ("%s: Hardware error 0x%2.2x" , hdev -> name , code );
2300-
2301- skb = __hci_cmd_sync (hdev , HCI_OP_RESET , 0 , NULL , HCI_INIT_TIMEOUT );
2302- if (IS_ERR (skb )) {
2303- BT_ERR ("%s: Reset after hardware error failed (%ld)" ,
2304- hdev -> name , PTR_ERR (skb ));
2305- return ;
2306- }
2307- kfree_skb (skb );
2308-
2309- skb = __hci_cmd_sync (hdev , 0xfc22 , 1 , & type , HCI_INIT_TIMEOUT );
2310- if (IS_ERR (skb )) {
2311- BT_ERR ("%s: Retrieving Intel exception info failed (%ld)" ,
2312- hdev -> name , PTR_ERR (skb ));
2313- return ;
2314- }
2315-
2316- if (skb -> len != 13 ) {
2317- BT_ERR ("%s: Exception info size mismatch" , hdev -> name );
2318- kfree_skb (skb );
2319- return ;
2320- }
2321-
2322- BT_ERR ("%s: Exception info %s" , hdev -> name , (char * )(skb -> data + 1 ));
2323-
2324- kfree_skb (skb );
2325- }
2326-
23272251static int btusb_shutdown_intel (struct hci_dev * hdev )
23282252{
23292253 struct sk_buff * skb ;
@@ -2783,7 +2707,7 @@ static int btusb_probe(struct usb_interface *intf,
27832707 if (id -> driver_info & BTUSB_INTEL_NEW ) {
27842708 hdev -> send = btusb_send_frame_intel ;
27852709 hdev -> setup = btusb_setup_intel_new ;
2786- hdev -> hw_error = btusb_hw_error_intel ;
2710+ hdev -> hw_error = btintel_hw_error ;
27872711 hdev -> set_bdaddr = btintel_set_bdaddr ;
27882712 set_bit (HCI_QUIRK_STRICT_DUPLICATE_FILTER , & hdev -> quirks );
27892713 }
0 commit comments