mbox series

[RFC,v4,00/11] Bluetooth: btintel: Refactoring setup routines

Message ID 20210727235127.173149-1-hj.tedd.an@gmail.com (mailing list archive)
Headers show
Series Bluetooth: btintel: Refactoring setup routines | expand

Message

Tedd Ho-Jeong An July 27, 2021, 11:51 p.m. UTC
From: Tedd Ho-Jeong An <tedd.an@intel.com>

This patch set refactors the multiple setup routines for various Intel devices
to a combined single entry. Here are the highlight of the changes:

0. Sync with the current tip of the master:
   acd5aea400 ("Bluetooth: btusb: Add valid le states quirk")

1. Updated hci_alloc_dev() to allocate the hdev object with an extra buffer
   for the private data. btintel introduces the btintel_data struct and
   store it to the private data in hdev object.

2. Added a single entry for setup and shutdown and uses the
   HCI_Intel_Read_Version command to identify the device, instead of
   relying on the USB VID and PID.

   Also, it uses the new format of HCI_Intel_Read_Version command for
   legacy ROM and legacy bootloader devices. Luckly legacy devices
   support the new format.

3. Keep the state of bootloader in btintel object. The bootloader state
   is agnostic to the transport type, so btintel uses the btintel_data
   to keep track of the state in the private data section in hdev.

4. After identifying the setup type for the device, it uses the
   correspond setup routines based on the setup type, and the setup
   routines were moved from btusb to btintel.
   However, actual work for the setup routines were not changed or very
   minimal.

5. Since many functions were moved from btusb to btintel, clean up the
   exported functions and make them static if possible.

6. From the JfP/ThP, the operational firmware support the new TLV based
   HCI_Intel_Read_Version command, which confues the usage during the
   setup routine. So, the check for firmware variant of those legacy
   bootloader sku is added to use the legacy bootloader setup call.

Tedd Ho-Jeong An (11):
  Bluetooth: Add support hdev to allocate private data
  Bluetooth: btintel: Add combined setup and shutdown functions
  Bluetooth: btintel: Refactoring setup routine for legacy ROM sku
  Bluetooth: btintel: Add btintel data struct
  Bluetooth: btintel: Fix the first HCI command not work with ROM
    device.
  Bluetooth: btintel: Fix the LED is not turning off immediately
  Bluetooth: btintel: Add combined set_diag functions
  Bluetooth: btintel: Refactoring setup routine for legacy bootloader
  Bluetooth: btintel: Refactoring setup routine for TLV based booloader
  Bluetooth: btintel: Clean the exported function to static
  Bluetooth: btintel: Fix the legacy bootloader returns tlv based
    version

 drivers/bluetooth/bfusb.c        |    2 +-
 drivers/bluetooth/bluecard_cs.c  |    2 +-
 drivers/bluetooth/bpa10x.c       |    2 +-
 drivers/bluetooth/bt3c_cs.c      |    2 +-
 drivers/bluetooth/btintel.c      | 1214 ++++++++++++++++++++++++++++--
 drivers/bluetooth/btintel.h      |   83 +-
 drivers/bluetooth/btmrvl_main.c  |    2 +-
 drivers/bluetooth/btmtksdio.c    |    2 +-
 drivers/bluetooth/btmtkuart.c    |    2 +-
 drivers/bluetooth/btqcomsmd.c    |    2 +-
 drivers/bluetooth/btrsi.c        |    2 +-
 drivers/bluetooth/btsdio.c       |    2 +-
 drivers/bluetooth/btusb.c        | 1105 ++-------------------------
 drivers/bluetooth/dtl1_cs.c      |    2 +-
 drivers/bluetooth/hci_ldisc.c    |    2 +-
 drivers/bluetooth/hci_serdev.c   |    2 +-
 drivers/bluetooth/hci_vhci.c     |    2 +-
 drivers/bluetooth/virtio_bt.c    |    2 +-
 include/net/bluetooth/hci_core.h |    7 +-
 net/bluetooth/hci_core.c         |   11 +-
 20 files changed, 1262 insertions(+), 1188 deletions(-)

Comments

An, Tedd July 28, 2021, 12:17 a.m. UTC | #1
Hi, 

Some level of testings were done and sharing the results:

Tests executed:
	1. Loading firmware
	2. Remove device (unplug USB)
	3. Reboot
	4. Cold boot
	5. Scan and connect
	6. Connect Mouse (HID)
	7. Connect Speaker (A2DP)
	8. Connect Headset (HFP)

Device firmwares:
	TIP from the linux-firmware tree
	commit: 168452e ("Merge tag 'iwlwifi-fw-2021-07-19' of ...")

BlueZ:
	5.53 on Ubuntu 20.04.2 LTS

Devices tested:
	Legacy ROM: StP, SdP
	Legacy Bootloader: SfP, WsP, ThP, ThP2, CcP
	TLV Bootloader: GfP

Results:
	All devices passed the tests.

Regards,
Tedd

On Tue, 2021-07-27 at 16:51 -0700, Tedd Ho-Jeong An wrote:
> From: Tedd Ho-Jeong An <tedd.an@intel.com>
> 
> This patch set refactors the multiple setup routines for various Intel devices
> to a combined single entry. Here are the highlight of the changes:
> 
> 0. Sync with the current tip of the master:
>    acd5aea400 ("Bluetooth: btusb: Add valid le states quirk")
> 
> 1. Updated hci_alloc_dev() to allocate the hdev object with an extra buffer
>    for the private data. btintel introduces the btintel_data struct and
>    store it to the private data in hdev object.
> 
> 2. Added a single entry for setup and shutdown and uses the
>    HCI_Intel_Read_Version command to identify the device, instead of
>    relying on the USB VID and PID.
> 
>    Also, it uses the new format of HCI_Intel_Read_Version command for
>    legacy ROM and legacy bootloader devices. Luckly legacy devices
>    support the new format.
> 
> 3. Keep the state of bootloader in btintel object. The bootloader state
>    is agnostic to the transport type, so btintel uses the btintel_data
>    to keep track of the state in the private data section in hdev.
> 
> 4. After identifying the setup type for the device, it uses the
>    correspond setup routines based on the setup type, and the setup
>    routines were moved from btusb to btintel.
>    However, actual work for the setup routines were not changed or very
>    minimal.
> 
> 5. Since many functions were moved from btusb to btintel, clean up the
>    exported functions and make them static if possible.
> 
> 6. From the JfP/ThP, the operational firmware support the new TLV based
>    HCI_Intel_Read_Version command, which confues the usage during the
>    setup routine. So, the check for firmware variant of those legacy
>    bootloader sku is added to use the legacy bootloader setup call.
> 
> Tedd Ho-Jeong An (11):
>   Bluetooth: Add support hdev to allocate private data
>   Bluetooth: btintel: Add combined setup and shutdown functions
>   Bluetooth: btintel: Refactoring setup routine for legacy ROM sku
>   Bluetooth: btintel: Add btintel data struct
>   Bluetooth: btintel: Fix the first HCI command not work with ROM
>     device.
>   Bluetooth: btintel: Fix the LED is not turning off immediately
>   Bluetooth: btintel: Add combined set_diag functions
>   Bluetooth: btintel: Refactoring setup routine for legacy bootloader
>   Bluetooth: btintel: Refactoring setup routine for TLV based booloader
>   Bluetooth: btintel: Clean the exported function to static
>   Bluetooth: btintel: Fix the legacy bootloader returns tlv based
>     version
> 
>  drivers/bluetooth/bfusb.c        |    2 +-
>  drivers/bluetooth/bluecard_cs.c  |    2 +-
>  drivers/bluetooth/bpa10x.c       |    2 +-
>  drivers/bluetooth/bt3c_cs.c      |    2 +-
>  drivers/bluetooth/btintel.c      | 1214 ++++++++++++++++++++++++++++--
>  drivers/bluetooth/btintel.h      |   83 +-
>  drivers/bluetooth/btmrvl_main.c  |    2 +-
>  drivers/bluetooth/btmtksdio.c    |    2 +-
>  drivers/bluetooth/btmtkuart.c    |    2 +-
>  drivers/bluetooth/btqcomsmd.c    |    2 +-
>  drivers/bluetooth/btrsi.c        |    2 +-
>  drivers/bluetooth/btsdio.c       |    2 +-
>  drivers/bluetooth/btusb.c        | 1105 ++-------------------------
>  drivers/bluetooth/dtl1_cs.c      |    2 +-
>  drivers/bluetooth/hci_ldisc.c    |    2 +-
>  drivers/bluetooth/hci_serdev.c   |    2 +-
>  drivers/bluetooth/hci_vhci.c     |    2 +-
>  drivers/bluetooth/virtio_bt.c    |    2 +-
>  include/net/bluetooth/hci_core.h |    7 +-
>  net/bluetooth/hci_core.c         |   11 +-
>  20 files changed, 1262 insertions(+), 1188 deletions(-)
>