1. 17 2月, 2017 5 次提交
    • W
      Bluetooth: btusb: Add support for 413c:8143 · fdfddc60
      Wen-chien Jesse Sung 提交于
      This is a Boardcom module and requires patchram to work.
      
      T: Bus=01 Lev=03 Prnt=03 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
      D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
      P: Vendor=413c ProdID=8143 Rev= 1.12
      S: Manufacturer=Broadcom Corp
      S: Product=BCM20702A0
      S: SerialNumber=20689D1FAF94
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr= 0mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
      E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
      E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
      I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
      I: If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
      I: If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
      I: If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
      I: If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms
      E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      Signed-off-by: NWen-chien Jesse Sung <jesse.sung@canonical.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      fdfddc60
    • R
      Bluetooth: btusb: Configure Marvell to use one of the pins for oob wakeup · a4ccc9e3
      Rajat Jain 提交于
      The Marvell devices may have many gpio pins, and hence for wakeup
      on these out-of-band pins, the chip needs to be told which pin is
      to be used for wakeup, using an hci command.
      
      Thus, we read the pin number etc from the device tree node and send
      a command to the chip.
      Signed-off-by: NRajat Jain <rajatja@google.com>
      Reviewed-by: NBrian Norris <briannorris@chromium.org>
      Acked-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a4ccc9e3
    • R
      Bluetooth: btusb: Add out-of-band wakeup support · fd913ef7
      Rajat Jain 提交于
      Some onboard BT chips (e.g. Marvell 8997) contain a wakeup pin that
      can be connected to a gpio on the CPU side, and can be used to wakeup
      the host out-of-band. This can be useful in situations where the
      in-band wakeup is not possible or not preferable (e.g. the in-band
      wakeup may require the USB host controller to remain active, and
      hence consuming more system power during system sleep).
      
      The oob gpio interrupt to be used for wakeup on the CPU side, is
      read from the device tree node, (using standard interrupt descriptors).
      A devcie tree binding document is also added for the driver. The
      compatible string is in compliance with
      Documentation/devicetree/bindings/usb/usb-device.txt
      Signed-off-by: NRajat Jain <rajatja@google.com>
      Reviewed-by: NBrian Norris <briannorris@chromium.org>
      Acked-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      fd913ef7
    • R
      Bluetooth: btusb: Use an error label for error paths · 10ab133b
      Rajat Jain 提交于
      Use a label to remove the repetetive cleanup, for error cases.
      Signed-off-by: NRajat Jain <rajatja@google.com>
      Reviewed-by: NBrian Norris <briannorris@chromium.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      10ab133b
    • C
      Bluetooth: btusb: add support for 0bb4:0306 · a57bac43
      Christoph Haag 提交于
      It's a custom USB ID for the broadcom bt adapter in the HTC Vive.
      
      T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  6 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0bb4 ProdID=0306 Rev= 1.12
      S:  Manufacturer=Broadcom Corp
      S:  Product=BCM2045A0
      S:  SerialNumber=AC3743E110CE
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=btusb
      E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      
      dmesg:
      Bluetooth: hci0: BCM: chip id 102
      Bluetooth: hci0: c-l
      Bluetooth: hci0: BCM (001.001.005) build 0000
      Bluetooth: hci0: BCM (001.001.005) build 0481
      Bluetooth: hci0: BCM20703A1 Generic USB 20Mhz fcbga_BU
      Signed-off-by: NChristoph Haag <haagch@frickel.club>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a57bac43
  2. 07 10月, 2016 1 次提交
    • E
      Bluetooth: btusb: Fix atheros firmware download error · c7e163fe
      Ethan Hsieh 提交于
      Move usb_autopm_get_interface() ahead of setup_on_usb() to prevent
      device from sending usb control message in usb suspend mode.
      
      The error message is as below:
      
      [   83.944103] btusb 1-2:1.1: usb_suspend_interface: status 0
      [   83.944107] btusb 1-2:1.0: usb_suspend_interface: status 0
      [   83.960132] usb 1-2: usb auto-suspend, wakeup 0
      [   83.976156] usb 1-2: usb_suspend_device: status 0
      [   83.976162] usb 1-2: usb_suspend_both: status 0
      [  298.689106] Bluetooth: hci0
      [  298.689399] Bluetooth: hci0: Failed to access otp area (-113)
      Signed-off-by: NEthan Hsieh <ethan.hsieh@canonical.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      c7e163fe
  3. 06 10月, 2016 1 次提交
  4. 22 9月, 2016 1 次提交
  5. 20 9月, 2016 3 次提交
    • S
      Bluetooth: btusb: Mark CW6622 devices to have broken link key commands · 418678b0
      Szymon Janc 提交于
      Conwise CW6622 seems to have a problem with the stored link key
      commands so just mark it as broken.
      
      < HCI Command: Read Local Supported Features (0x04|0x0003) plen 0
      > HCI Event: Command Complete (0x0e) plen 12
          Read Local Supported Features (0x04|0x0003) ncmd 1
          status 0x00
          Features: 0xff 0x3e 0x85 0x38 0x18 0x18 0x00 0x00
      < HCI Command: Read Local Version Information (0x04|0x0001) plen 0
      > HCI Event: Command Complete (0x0e) plen 12
          Read Local Version Information (0x04|0x0001) ncmd 1
          status 0x00
          HCI Version: 2.0 (0x3) HCI Revision: 0x1f4
          LMP Version: 2.0 (0x3) LMP Subversion: 0x1f4
          Manufacturer: CONWISE Technology Corporation Ltd (66)
      ...
      < HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0
      > HCI Event: Command Complete (0x0e) plen 68
          Read Local Supported Commands (0x04|0x0002) ncmd 1
          status 0x00
          Commands: 7fffef03cedfffffffffff1ff20ff8ff3f
      ...
      < HCI Command: Read Stored Link Key (0x03|0x000d) plen 7
          bdaddr 00:00:00:00:00:00 all 1
      > HCI Event: Command Complete (0x0e) plen 8
          Read Stored Link Key (0x03|0x000d) ncmd 1
          status 0x11 max 0 num 0
          Error: Unsupported Feature or Parameter Value
      Signed-off-by: NSzymon Janc <szymon.janc@codecoup.pl>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      418678b0
    • K
      Bluetooth: btusb: Add support for 0cf3:e009 · 93519934
      Kai-Heng Feng 提交于
      Device 0cf3:e009 is one of the QCA ROME family.
      
      T:  Bus=01 Lev=01 Prnt=01 Port=07 Cnt=04 Dev#=  4 Spd=12  MxCh= 0
      D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0cf3 ProdID=e009 Rev=00.01
      C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      Signed-off-by: NKai-Heng Feng <kai.heng.feng@canonical.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      93519934
    • B
      Bluetooth: btusb, hci_intel: Fix wait_on_bit_timeout() return value checks · f0a70a04
      Bart Van Assche 提交于
      wait_on_bit_timeout() returns one of the following three values:
      * 0 to indicate success.
      * -EINTR to indicate that a signal has been received;
      * -EAGAIN to indicate timeout;
      Make the wait_on_bit_timeout() callers check for these values.
      Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      f0a70a04
  6. 12 7月, 2016 1 次提交
  7. 10 7月, 2016 1 次提交
    • M
      Bluetooth: Rename HCI_BREDR into HCI_PRIMARY · ca8bee5d
      Marcel Holtmann 提交于
      The HCI_BREDR naming is confusing since it actually stands for Primary
      Bluetooth Controller. Which is a term that has been used in the latest
      standard. However from a legacy point of view there only really have
      been Basic Rate (BR) and Enhanced Data Rate (EDR). Recent versions of
      Bluetooth introduced Low Energy (LE) and made this terminology a little
      bit confused since Dual Mode Controllers include BR/EDR and LE. To
      simplify this the name HCI_PRIMARY stands for the Primary Controller
      which can be a single mode or dual mode controller.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      ca8bee5d
  8. 08 7月, 2016 3 次提交
    • Y
      Bluetooth: btusb: add support for device 0489:e092 · 47ca5898
      Yvain THONNART 提交于
      With current btusb.ko kernel module, Bluetooth pretends to be active
      but there is no real activity.
      
      I'm using an Acer Aspire VN7-791.
      
      Output of lsusb:
      Bus 003 Device 007: ID 0489:e092 Foxconn / Hon Hai
      
      On my laptop, this device is actually used as a combo with wifi chipset
      Atheros Qualcomm Killer N1525 Wireless-AC [168c:003e],
      
      * Fix by adding a declaration in kernel sources drivers/bluetooth/btusb.c
      
              { USB_DEVICE(0x0489, 0xe092), .driver_info = BTUSB_QCA_ROME },
      
      * Compiled extra module /lib/modules/4.4.0-22-generic/extra/btusb.ko
      
      * Successfully tested against my phone (obex file transfer)
      Signed-off-by: NYvain THONNART <yvain.thonnart@m4x.org>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      47ca5898
    • T
      Bluetooth: Replace constant hw_variant from Intel Bluetooth firmware filename · 230b04ac
      Tedd Ho-Jeong An 提交于
      The format of Intel Bluetooth firmware filename for bootloader product
      is ibt-<hw_variant>-<device_revision_id>.sfi
      
      Currently the driver uses a constant value 11 (0x0b) for hw_variant
      to support LnP/SfP product. But new product like WsP product has
      a different value such as 12 (0x0c).
      
      To support the multiple products, this patch replaces the constant
      value of hw_variant to the actual hw_variant value read from
      the device.
      Signed-off-by: NTedd Ho-Jeong An <tedd.an@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      230b04ac
    • T
      Bluetooth: Add support for Intel Bluetooth device 3168 [8087:0aa7] · 439e65d3
      Tedd Ho-Jeong An 提交于
      This patch adds support for Intel Bluetooth device 3168 also known
      as Sandy Peak (SdP).
      
      T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=8087 ProdID=0aa7 Rev= 0.01
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: NTedd Ho-Jeong An <tedd.an@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      439e65d3
  9. 13 5月, 2016 1 次提交
    • L
      Bluetooth: Add USB ID 13D3:3487 to ath3k · 72f9f8b5
      Lauro Costa 提交于
      Add hw id to ath3k usb device list and btusb blacklist
      
      T:  Bus=01 Lev=01 Prnt=01 Port=08 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=13d3 ProdID=3487 Rev=00.02
      C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      
      Requires these firmwares:
      ar3k/AthrBT_0x11020100.dfu and ar3k/ramps_0x11020100_40.dfu
      Firmwares are available in linux-firmware.
      
      Device found in a laptop ASUS model N552VW. It's an Atheros AR9462 chip.
      Signed-off-by: NLauro Costa <lauro@polilinux.com.br>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      72f9f8b5
  10. 07 5月, 2016 1 次提交
    • T
      Bluetooth: Add support for Intel Bluetooth device 8265 [8087:0a2b] · a0af53b5
      Tedd Ho-Jeong An 提交于
      This patch adds support for Intel Bluetooth device 8265 also known
      as Windstorm Peak (WsP).
      
      T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  6 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=8087 ProdID=0a2b Rev= 0.10
      C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      Signed-off-by: NTedd Ho-Jeong An <tedd.an@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a0af53b5
  11. 11 3月, 2016 1 次提交
  12. 29 2月, 2016 1 次提交
  13. 24 2月, 2016 2 次提交
  14. 10 12月, 2015 3 次提交
  15. 20 11月, 2015 1 次提交
  16. 05 11月, 2015 1 次提交
    • K
      Bluetooth: Fix possible deadlock in btusb · f6fc86f2
      Kuba Pawlak 提交于
      commit 8f9d02f4 introduced spinlocks
      in btusb_work. This is run in a context of a worqueue and can be interrupted
      by hardware irq. If it happens while spinlock is held, we have a deadlock.
      Solution is to use _irqsave/_resore version of locking
      
      [  466.460560] =================================
      [  466.460565] [ INFO: inconsistent lock state ]
      [  466.460572] 4.3.0-rc6+ #1 Tainted: G        W
      [  466.460576] ---------------------------------
      [  466.460582] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
      [  466.460589] kworker/0:2/94 [HC0[0]:SC0[0]:HE1:SE1] takes:
      [  466.460595]  (&(&data->rxlock)->rlock){?.-...}, at: [<ffffffffa0526923>] btusb_work+0xa3/0x3fd [btusb]
      [  466.460621] {IN-HARDIRQ-W} state was registered at:
      [  466.460625]   [<ffffffff811021b5>] __lock_acquire+0xc45/0x1e80
      [  466.460638]   [<ffffffff811040d5>] lock_acquire+0xe5/0x1f0
      [  466.460646]   [<ffffffff8182f108>] _raw_spin_lock+0x38/0x50
      [  466.460657]   [<ffffffffa0525448>] btusb_recv_intr+0x38/0x170 [btusb]
      [  466.460668]   [<ffffffffa0525626>] btusb_intr_complete+0xa6/0x130 [btusb]
      [  466.460679]   [<ffffffff815d8f1e>] __usb_hcd_giveback_urb+0x8e/0x160
      [  466.460690]   [<ffffffff815d911f>] usb_hcd_giveback_urb+0x3f/0x120
      [  466.460698]   [<ffffffff81606e4d>] uhci_giveback_urb+0xad/0x280
      [  466.460706]   [<ffffffff81608f64>] uhci_scan_schedule.part.33+0x6b4/0xbe0
      [  466.460714]   [<ffffffff81609b50>] uhci_irq+0xd0/0x180
      [  466.460722]   [<ffffffff815d8296>] usb_hcd_irq+0x26/0x40
      [  466.460729]   [<ffffffff81117d40>] handle_irq_event_percpu+0x40/0x300
      [  466.460739]   [<ffffffff81118040>] handle_irq_event+0x40/0x60
      [  466.460746]   [<ffffffff8111af39>] handle_fasteoi_irq+0x89/0x150
      [  466.460754]   [<ffffffff8101e0f3>] handle_irq+0x73/0x120
      [  466.460763]   [<ffffffff81832f11>] do_IRQ+0x61/0x120
      [  466.460772]   [<ffffffff8183084c>] ret_from_intr+0x0/0x31
      [  466.460780]   [<ffffffff81697a77>] cpuidle_enter+0x17/0x20
      [  466.460790]   [<ffffffff810f62c2>] call_cpuidle+0x32/0x60
      [  466.460800]   [<ffffffff810f65a8>] cpu_startup_entry+0x2b8/0x3f0
      [  466.460807]   [<ffffffff818214ca>] rest_init+0x13a/0x140
      [  466.460817]   [<ffffffff81f76029>] start_kernel+0x4a3/0x4c4
      [  466.460827]   [<ffffffff81f75339>] x86_64_start_reservations+0x2a/0x2c
      [  466.460837]   [<ffffffff81f75485>] x86_64_start_kernel+0x14a/0x16d
      [  466.460846] irq event stamp: 754913
      [  466.460851] hardirqs last  enabled at (754913): [<ffffffff8182f4cc>] _raw_spin_unlock_irq+0x2c/0x40
      [  466.460861] hardirqs last disabled at (754912): [<ffffffff8182f28d>] _raw_spin_lock_irq+0x1d/0x60
      [  466.460869] softirqs last  enabled at (753024): [<ffffffff810aeaa0>] __do_softirq+0x380/0x490
      [  466.460880] softirqs last disabled at (753009): [<ffffffff810aedef>] irq_exit+0x10f/0x120
      [  466.460888]
                     other info that might help us debug this:
      [  466.460894]  Possible unsafe locking scenario:
      
      [  466.460899]        CPU0
      [  466.460903]        ----
      [  466.460907]   lock(&(&data->rxlock)->rlock);
      [  466.460915]   <Interrupt>
      [  466.460918]     lock(&(&data->rxlock)->rlock);
      [  466.460926]
                      *** DEADLOCK ***
      
      [  466.460935] 2 locks held by kworker/0:2/94:
      [  466.460939]  #0:  ("events"){.+.+.+}, at: [<ffffffff810c69bb>] process_one_work+0x16b/0x660
      [  466.460958]  #1:  ((&data->work)){+.+...}, at: [<ffffffff810c69bb>] process_one_work+0x16b/0x660
      [  466.460974]
      Signed-off-by: NKuba Pawlak <kubax.t.pawlak@intel.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      f6fc86f2
  17. 21 10月, 2015 13 次提交
    • M
      Bluetooth: btintel: Enable extra Intel vendor events · 213445b2
      Marcel Holtmann 提交于
      The Intel Bluetooth controllers can emit extra vendor specific events in
      error conditions or for debugging purposes. To make the life easier for
      engineers, enable them by default. When the vendor_diag options has been
      enabled, then additional debug events are also enabled.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      213445b2
    • M
      Bluetooth: btusb: Set manufacturer for Intel bootloader devices · e4c534bb
      Marcel Holtmann 提交于
      For Intel bootloader devices, set the manufacturer information so that
      it becomes possible to decode the boot process.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      e4c534bb
    • M
      Bluetooth: btusb: Add support for latest Apple controllers · 22f8e9db
      Marcel Holtmann 提交于
      The latest Apple Bluetooth controllers with Broadcom chip in it have
      a small design change. Instead of including a USB hub with mouse and
      keyboard devices, they are now HID interfaces on the same device.
      
      T:  Bus=04 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 39 Spd=12   MxCh= 0
      D:  Ver= 2.01 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=05ac ProdID=8290 Rev= 0.79
      S:  Manufacturer=Broadcom Corp.
      S:  Product=Bluetooth USB Host Controller
      C:* #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=  0mA
      A:  FirstIf#= 2 IfCount= 4 Cls=ff(vend.) Sub=01 Prot=01
      I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
      E:  Ad=85(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
      I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
      E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
      I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 3 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 3 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 3 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 3 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 3 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=btusb
      E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      
      The general layout of Bluetooth devices is that interface 0 is the main
      interface and interface 1 is for audio data. This design obviously moves
      it to main interface 2 and audio data on interface 3.
      
      Starting with the MacBookPro12,1 (early 2015 models) the new Broadcom
      BCM943602CS cards are used which show this interface layout.
      
      usb 4-1.5: New USB device found, idVendor=05ac, idProduct=8290
      usb 4-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
      usb 4-1.5: Product: Bluetooth USB Host Controller
      usb 4-1.5: Manufacturer: Broadcom Corp.
      Bluetooth: hci0: BCM: chip id 102 build 0243
      Bluetooth: hci0: BCM: product 05ac:8290
      Bluetooth: hci0: BCM20703A1 Generic USB UHE Apple 20Mhz fcbga_X87
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      22f8e9db
    • M
      Bluetooth: btusb: Set early vendor info for Intel and Broadcom · 49a5f782
      Marcel Holtmann 提交于
      For the controllers from Intel and Broadcom (including Apple), it is
      helpful to have the information about the manufacturer send out early.
      
      This patch sets the hdev->manufacturer information which will be send
      out before actually calling the vendor specific hdev->setup driver
      callback.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      49a5f782
    • D
      Bluetooth: ath3k: Add support of AR3012 0cf3:817b device · 18e0afab
      Dmitry Tunin 提交于
      T: Bus=04 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
      D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
      P: Vendor=0cf3 ProdID=817b Rev=00.02
      C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      
      BugLink: https://bugs.launchpad.net/bugs/1506615Signed-off-by: NDmitry Tunin <hanipouspilot@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: stable@vger.kernel.org
      18e0afab
    • D
      Bluetooth: ath3k: Add new AR3012 0930:021c id · cd355ff0
      Dmitry Tunin 提交于
      This adapter works with the existing linux-firmware.
      
      T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
      D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=0930 ProdID=021c Rev=00.01
      C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      
      BugLink: https://bugs.launchpad.net/bugs/1502781Signed-off-by: NDmitry Tunin <hanipouspilot@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: stable@vger.kernel.org
      cd355ff0
    • S
      Bluetooth: btusb: Add support for Foxconn/Lenovo BCM43142A0 (105b:e065) · 2faf71ce
      Santtu Rekilä 提交于
      Recently salvaged this 'BCM43142A0' WiFi/Bluetooth module from a Lenovo laptop
      and noticed it doesn't work automatically, because the USB IDs are missing
      from btusb.c.
      
      Plugging in the adapter on Linux 4.1 (dmesg):
      usb 3-3.3.3: new full-speed USB device number 90 using xhci_hcd
      usb 3-3.3.3: New USB device found, idVendor=105b, idProduct=e065
      usb 3-3.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
      usb 3-3.3.3: Product: BCM43142A0
      usb 3-3.3.3: Manufacturer: Broadcom Corp
      usb 3-3.3.3: SerialNumber: 0090A286559E
      
      /sys/kernel/debug/usb/devices:
      T:  Bus=03 Lev=03 Prnt=22 Port=02 Cnt=02 Dev#= 90 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=105b ProdID=e065 Rev= 1.12
      S:  Manufacturer=Broadcom Corp
      S:  Product=BCM43142A0
      S:  SerialNumber=0090A286559E
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      
      Support for the chipset was added in commit 88f9b65d and a similar BCM43142
      based device was added in commit 8f0c304c.
      
      To work around the issue, I got the firmware
      (BCM43142A0_001.001.011.0122.0153) off a Windows installation of Broadcom
      bluetooth driver and converted it to a .hcd -file via. hex2hcd and placed it
      in /lib/firmware/brcm/BCM.hcd. After that:
      
      $ echo "105b e065 0 19ff 0239" > /sys/bus/usb/drivers/btusb/new_id
      ...(plug in the adapter)
      usb 3-3.3.3: new full-speed USB device number 91 using xhci_hcd
      usb 3-3.3.3: New USB device found, idVendor=105b, idProduct=e065
      usb 3-3.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
      usb 3-3.3.3: Product: BCM43142A0
      usb 3-3.3.3: Manufacturer: Broadcom Corp
      usb 3-3.3.3: SerialNumber: 0090A286559E
      Bluetooth: hci0: BCM: chip id 70
      Bluetooth: hci0: BCM (001.001.011) build 0000
      bluetooth hci0: firmware: direct-loading firmware brcm/BCM.hcd
      Bluetooth: hci0: BCM (001.001.011) build 0154
      
      Bam, now it works for me!
      
      /sys/kernel/debug/usb/devices:
      T:  Bus=03 Lev=03 Prnt=22 Port=02 Cnt=02 Dev#= 92 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=105b ProdID=e065 Rev= 1.12
      S:  Manufacturer=Broadcom Corp
      S:  Product=BCM43142A0
      S:  SerialNumber=0090A286559E
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      Signed-off-by: NSanttu Rekilä <sare@r00t3d.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      2faf71ce
    • M
      Bluetooth: btusb: Mark BCM2045 devices to have broken link key commands · 6c9d435d
      Marcel Holtmann 提交于
      The BCM2045 seems to have a problem with the stored link key commands
      and thus just mark them as broken.
      
        HCI Event: Command Complete (0x0e) plen 12
           Read Local Supported Features (0x04|0x0003) ncmd 1
           status 0x00
           Features: 0xff 0xff 0x8d 0xfe 0x8f 0xf9 0x00 0x80
        HCI Event: Command Complete (0x0e) plen 12
           Read Local Version Information (0x04|0x0001) ncmd 1
           status 0x00
           HCI Version: 2.0 (0x3) HCI Revision: 0x2000
           LMP Version: 2.0 (0x3) LMP Subversion: 0x410d
           Manufacturer: Broadcom Corporation (15)
        HCI Event: Command Complete (0x0e) plen 11
           Read Buffer Size (0x04|0x0005) ncmd 1
           status 0x00
           ACL MTU 1017:8 SCO MTU 64:0
        HCI Event: Command Complete (0x0e) plen 68
           Read Local Supported Commands (0x04|0x0002) ncmd 1
           status 0x00
           Commands: ffffff03feffcfffffffffff0300f8ff07
        HCI Event: Command Complete (0x0e) plen 4
           Delete Stored Link Key (0x03|0x0012) ncmd 1
           status 0x11 deleted 2048
           Error: Unsupported Feature or Parameter Value
      
      From the looks of it, this device seems genuine and not one of the
      devices that are neither Broadcom nor CSR devices in reality.
      
      T: Bus=04 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
      D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
      P: Vendor=0a5c ProdID=2045 Rev= 1.12
      S: Manufacturer=Broadcom Corp
      S: Product=BCM2045A
      S: SerialNumber=000000000000
      C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
      E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
      E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
      I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
      I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
      I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
      I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
      I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
      E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
      E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E: Ad=84(I) Atr=02(Bulk) MxPS= 32 Ivl=0ms
      E: Ad=04(O) Atr=02(Bulk) MxPS= 32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=00 Driver=(none)
      Reported-and-tested-by: NJulio González Mejías <juliolokooo@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      6c9d435d
    • M
      Bluetooth: btintel: Add diagnostic support for older controllers · 3e24767b
      Marcel Holtmann 提交于
      For the older controllers like Wilkens Peak and Stone Peak, enabling the
      traces requires to switch into manufacturer mode first. This patch does
      exactly that, but only for these older controllers.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      3e24767b
    • M
      Bluetooth: btintel: Set quirk for non-persistent diagnostic settings · d8270fbb
      Marcel Holtmann 提交于
      For Intel controllers the diagnostics settings are not persistent over
      HCI Reset. So set the quirk to programm them again on every power up.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      d8270fbb
    • M
      Bluetooth: btusb: Print information of Intel SfP lock states · 2220994e
      Marcel Holtmann 提交于
      The lock states from Intel SfP controllers can only be read once before
      loading the firmware. So for debugging purposes, print them out.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      2220994e
    • M
      Bluetooth: btintel: Add support for enabling tracing functionality · 6d2e50d2
      Marcel Holtmann 提交于
      For Intel controllers with firmware that allows tracing of baseband
      functionality this allows enabling it via set_diag driver callback.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      6d2e50d2
    • M
      Bluetooth: btusb: Add support for Broadcom LM_DIAG interface · 9d08f504
      Marcel Holtmann 提交于
      The Broadcom Bluetooth USB devices have a third interface that is
      dedicated for LM_DIAG messages. The If#= 2 describes this interface
      and it consists of one bulk in and one bulk endpoint.
      
      T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 38 Spd=12   MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=19ff ProdID=0239 Rev= 1.12
      S:  Manufacturer=Broadcom Corp
      S:  Product=BCM20702A0
      C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
      I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
      I:  If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
      I:  If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
      I:  If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
      I:  If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
      E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=btusb
      E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
      I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
      
      For all Broadcom based devices with this interface, the driver now
      claims it and schedules URBs for it. This allows to capture the
      LM_DIAG messages and allows forwarding them via hci_recv_diag into
      the diagnostic channel of the Bluetooth subsystem.
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
      9d08f504