]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: btintel: Add DSBR support for BlazarIW, BlazarU and GaP
authorKiran K <kiran.k@intel.com>
Tue, 15 Oct 2024 12:27:07 +0000 (17:57 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 14 Nov 2024 20:31:30 +0000 (15:31 -0500)
Add DSBR support for BlazarIW, BlazarU and Gale Peak2 cores.

Refer commit eb9e749c0182 ("Bluetooth: btintel: Allow configuring drive
strength of BRI") for details about DSBR.

Signed-off-by: Kiran K <kiran.k@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btintel.c
drivers/bluetooth/btintel.h

index c34ff4e1a8938ef6665365e81cc1c7b7576d195e..2be6d48a2a656a839b12075995512066eaa48803 100644 (file)
@@ -2747,20 +2747,32 @@ static int btintel_set_dsbr(struct hci_dev *hdev, struct intel_version_tlv *ver)
 
        struct btintel_dsbr_cmd cmd;
        struct sk_buff *skb;
+       u32 dsbr, cnvi;
        u8 status;
-       u32 dsbr;
-       bool apply_dsbr;
        int err;
 
-       /* DSBR command needs to be sent for BlazarI + B0 step product after
-        * downloading IML image.
+       cnvi = ver->cnvi_top & 0xfff;
+       /* DSBR command needs to be sent for,
+        * 1. BlazarI or BlazarIW + B0 step product in IML image.
+        * 2. Gale Peak2 or BlazarU in OP image.
         */
-       apply_dsbr = (ver->img_type == BTINTEL_IMG_IML &&
-               ((ver->cnvi_top & 0xfff) == BTINTEL_CNVI_BLAZARI) &&
-               INTEL_CNVX_TOP_STEP(ver->cnvi_top) == 0x01);
 
-       if (!apply_dsbr)
+       switch (cnvi) {
+       case BTINTEL_CNVI_BLAZARI:
+       case BTINTEL_CNVI_BLAZARIW:
+               if (ver->img_type == BTINTEL_IMG_IML &&
+                   INTEL_CNVX_TOP_STEP(ver->cnvi_top) == 0x01)
+                       break;
+               return 0;
+       case BTINTEL_CNVI_GAP:
+       case BTINTEL_CNVI_BLAZARU:
+               if (ver->img_type == BTINTEL_IMG_OP &&
+                   hdev->bus == HCI_USB)
+                       break;
                return 0;
+       default:
+               return 0;
+       }
 
        dsbr = 0;
        err = btintel_uefi_get_dsbr(&dsbr);
index b448c67e8ed94def87258fb8cf8bd6a7358208db..fa43eb137821817def72f6c21b627d79322486c8 100644 (file)
@@ -53,6 +53,9 @@ struct intel_tlv {
 } __packed;
 
 #define BTINTEL_CNVI_BLAZARI           0x900
+#define BTINTEL_CNVI_BLAZARIW          0x901
+#define BTINTEL_CNVI_GAP               0x910
+#define BTINTEL_CNVI_BLAZARU           0x930
 
 #define BTINTEL_IMG_BOOTLOADER         0x01    /* Bootloader image */
 #define BTINTEL_IMG_IML                        0x02    /* Intermediate image */