Drivers: Bluetooth: Infineon: Updating CYW920829 Bluetooth for B1

- Updates Bluetooth driver to include bluetooth firmware for B1 device
  revision.
- Changes build behavior to allow building without blobs being fetched
  to allow CI to verify build.
- Adds cmake warning if blobs are not present.

Signed-off-by: John Batch <john.batch@infineon.com>
diff --git a/drivers/bluetooth/hci/Kconfig.infineon b/drivers/bluetooth/hci/Kconfig.infineon
index c9ba3b9..9e7e8c2 100644
--- a/drivers/bluetooth/hci/Kconfig.infineon
+++ b/drivers/bluetooth/hci/Kconfig.infineon
@@ -1,5 +1,6 @@
-# Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company) or
-# an affiliate of Cypress Semiconductor Corporation
+# Copyright (c) 2025 Infineon Technologies AG,
+# or an affiliate of Infineon Technologies AG.
+#
 # SPDX-License-Identifier: Apache-2.0
 
 if BT_AIROC
@@ -136,6 +137,10 @@
 
 if CYW20829
 
+# We can't have commas in macro arguments
+DT_COMPAT_INFINEON_CYW20829_B0 := infineon,cyw20829-b0
+DT_COMPAT_INFINEON_CYW20829_B1 := infineon,cyw20829-b1
+
 config CYW20829_BT_FW_TX10DBM_POWER
 	bool "CYW20829_BT_FW_TX10DBM_POWER"
 	default y
@@ -144,49 +149,81 @@
 
 choice CYW20829_BT_FW
 	prompt "Select variant of default CYW20829 BT FW"
-	default CYW20829_BT_FW_ISOC_TX10 if BT_ISO &&  CYW20829_BT_FW_TX10DBM_POWER
-	default CYW20829_BT_FW_ISOC_TX0  if BT_ISO && !CYW20829_BT_FW_TX10DBM_POWER
-	default CYW20829_BT_FW_PAWR_TX10 if (BT_PER_ADV_RSP || BT_PER_ADV_SYNC_RSP) &&  CYW20829_BT_FW_TX10DBM_POWER
-	default CYW20829_BT_FW_PAWR_TX0  if (BT_PER_ADV_RSP || BT_PER_ADV_SYNC_RSP) && !CYW20829_BT_FW_TX10DBM_POWER
-	default CYW20829_BT_FW_TX10      if CYW20829_BT_FW_TX10DBM_POWER
-	default CYW20829_BT_FW_TX0
+	default CYW20829B0_BT_FW_ISOC_TX10 if BT_ISO && \
+					      CYW20829_BT_FW_TX10DBM_POWER && \
+					      $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B0_BT_FW_ISOC_TX0 if BT_ISO && \
+					     !CYW20829_BT_FW_TX10DBM_POWER && \
+					     $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B0_BT_FW_PAWR_TX10 if (BT_PER_ADV_RSP || BT_PER_ADV_SYNC_RSP) && \
+					      CYW20829_BT_FW_TX10DBM_POWER && \
+					      $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B0_BT_FW_PAWR_TX0 if (BT_PER_ADV_RSP || BT_PER_ADV_SYNC_RSP) && \
+					     !CYW20829_BT_FW_TX10DBM_POWER && \
+					     $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B0_BT_FW_TX10 if CYW20829_BT_FW_TX10DBM_POWER && \
+					 $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B0_BT_FW_TX0 if $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
+	default CYW20829B1_BT_FW_TX10 if CYW20829_BT_FW_TX10DBM_POWER && \
+					 $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B1))
+	default CYW20829B1_BT_FW_TX0 if $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B1))
 
-config CYW20829_BT_FW_TX0
-	bool "CYW20829_BT_FW_TX0"
+config CYW20829B0_BT_FW_TX0
+	bool "CYW20829B0_BT_FW_TX0"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch for 0dBm TX Power.
+	  Enable CYW20829B0 FW patch for 0dBm TX Power.
 	  This configuration should be used with non-PAWR and non-ISOC applications.
 
-config CYW20829_BT_FW_TX10
-	bool "CYW20829_BT_FW_TX10"
+config CYW20829B0_BT_FW_TX10
+	bool "CYW20829B0_BT_FW_TX10"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch for 10dBm TX Power.
+	  Enable CYW20829B0 FW patch for 10dBm TX Power.
 	  This configuration should be used with non-PAwR and non-ISOC applications.
 
-config CYW20829_BT_FW_PAWR_TX0
-	bool "CYW20829_BT_FW_PAWR_TX0"
+config CYW20829B0_BT_FW_PAWR_TX0
+	bool "CYW20829B0_BT_FW_PAWR_TX0"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch with PAwR support for 0dBm TX Power.
+	  Enable CYW20829B0 FW patch with PAwR support for 0dBm TX Power.
 	  This configuration should be used with PAwR applications.
 
-config CYW20829_BT_FW_PAWR_TX10
-	bool "CYW20829_BT_FW_PAWR_TX10"
+config CYW20829B0_BT_FW_PAWR_TX10
+	bool "CYW20829B0_BT_FW_PAWR_TX10"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch for 10dBm TX Power.
+	  Enable CYW20829B0 FW patch for 10dBm TX Power.
 	  This configuration should be used with PAwR applications.
 
-config CYW20829_BT_FW_ISOC_TX0
-	bool "CYW20829_BT_FW_ISOC_TX0"
+config CYW20829B0_BT_FW_ISOC_TX0
+	bool "CYW20829B0_BT_FW_ISOC_TX0"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch for 0dBm TX Power.
+	  Enable CYW20829B0 FW patch for 0dBm TX Power.
 	  This configuration should be used with ISOC applications.
 
-config CYW20829_BT_FW_ISOC_TX10
-	bool "CYW20829_BT_FW_ISOC_TX10"
+config CYW20829B0_BT_FW_ISOC_TX10
+	bool "CYW20829B0_BT_FW_ISOC_TX10"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B0))
 	help
-	  Enable CYW20829 FW patch for 10dBm TX Power.
+	  Enable CYW20829B0 FW patch for 10dBm TX Power.
 	  This configuration should be used with ISOC applications.
 
+config CYW20829B1_BT_FW_TX0
+	bool "CYW20829B1_BT_FW_TX0"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B1))
+	help
+	  Enable CYW20829B1 FW patch for 0dBm TX Power.
+	  This configuration should be used with non-PAWR and non-ISOC applications.
+
+config CYW20829B1_BT_FW_TX10
+	bool "CYW20829B1_BT_FW_TX10"
+	depends on $(dt_compat_enabled,$(DT_COMPAT_INFINEON_CYW20829_B1))
+	help
+	  Enable CYW20829B1 FW patch for 10dBm TX Power.
+	  This configuration should be used with non-PAwR and non-ISOC applications.
+
 endchoice
 endif # CYW20829
 
diff --git a/drivers/bluetooth/hci/hci_ifx_cyw208xx.c b/drivers/bluetooth/hci/hci_ifx_cyw208xx.c
index f41cfe1..ac9c3fc 100644
--- a/drivers/bluetooth/hci/hci_ifx_cyw208xx.c
+++ b/drivers/bluetooth/hci/hci_ifx_cyw208xx.c
@@ -89,7 +89,7 @@
 	BT_HCI_VND_OP_SET_LOCAL_DEV_ADDR = 0xFC01,
 };
 
-/* Externs for CY43xxx controller FW */
+/* Externs for CY208xx controller FW */
 extern const uint8_t brcm_patchram_buf[];
 extern const int brcm_patch_ram_length;
 
diff --git a/modules/hal_infineon/btstack-integration/CMakeLists.txt b/modules/hal_infineon/btstack-integration/CMakeLists.txt
index 8033fe3..5b42178 100644
--- a/modules/hal_infineon/btstack-integration/CMakeLists.txt
+++ b/modules/hal_infineon/btstack-integration/CMakeLists.txt
@@ -1,4 +1,5 @@
-# Copyright (c) 2022 Cypress Semiconductor Corporation.
+# Copyright (c) 2025 Infineon Technologies AG,
+# or an affiliate of Infineon Technologies AG.
 #
 # SPDX-License-Identifier: Apache-2.0
 
@@ -37,63 +38,73 @@
 # HCD files for CYW43xx devices
 # CYW43012 modules
 if(CONFIG_CYW43012_MURATA_1LV)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_43012/COMPONENT_MURATA-1LV/bt_firmware.hcd)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_43012/COMPONENT_MURATA-1LV/bt_firmware.hcd)
 endif()
 
 # CYW4343W modules
 if(CONFIG_CYW4343W_MURATA_1DX)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_4343W/COMPONENT_MURATA-1DX/bt_firmware.hcd)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_4343W/COMPONENT_MURATA-1DX/bt_firmware.hcd)
 endif()
 
 # CYW43439 modules
 if(CONFIG_CYW43439_MURATA_1YN)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_43439/COMPONENT_MURATA-1YN/bt_firmware.hcd)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_43439/COMPONENT_MURATA-1YN/bt_firmware.hcd)
 endif()
 
 # CYW4373 modules
 if(CONFIG_CYW4373_STERLING_LWB5PLUS)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_4373/COMPONENT_STERLING-LWB5plus/bt_firmware.hcd)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_4373/COMPONENT_STERLING-LWB5plus/bt_firmware.hcd)
 endif()
 
 # HCD files for CYW208xx
 
-# CYW20829 device (FW patch for 0dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_TX0)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-TX0/bt_firmware.hcd)
+# CYW20829B0 device (FW patch for 0dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_TX0)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-TX0/bt_firmware.hcd)
 endif()
 
-# CYW20829 device (FW patch for 10dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_TX10)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-TX10/bt_firmware.hcd)
+# CYW20829B0 device (FW patch for 10dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_TX10)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-TX10/bt_firmware.hcd)
 endif()
 
-# CYW20829 device (FW patch with PAwR support for 0dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_PAWR_TX0)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-PAWR-TX0/bt_firmware.hcd)
+# CYW20829B0 device (FW patch with PAwR support for 0dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_PAWR_TX0)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-PAWR-TX0/bt_firmware.hcd)
 endif()
 
-# CYW20829 device (FW patch with PAwR support for 10dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_PAWR_TX10)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-PAWR-TX10/bt_firmware.hcd)
+# CYW20829B0 device (FW patch with PAwR support for 10dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_PAWR_TX10)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-PAWR-TX10/bt_firmware.hcd)
 endif()
 
-# CYW20829 device (FW patch with ISOC support for 0dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_ISOC_TX0)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-ISOC-TX0/bt_firmware.hcd)
+# CYW20829B0 device (FW patch with ISOC support for 0dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_ISOC_TX0)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-ISOC-TX0/bt_firmware.hcd)
 endif()
 
-# CYW20829 device (FW patch with ISOC support for 10dBm TX Power)
-if(CONFIG_CYW20829_BT_FW_ISOC_TX10)
-  set(blob_hcd_file  ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-ISOC-TX10/bt_firmware.hcd)
+# CYW20829B0 device (FW patch with ISOC support for 10dBm TX Power)
+if(CONFIG_CYW20829B0_BT_FW_ISOC_TX10)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B0/COMPONENT_BTFW-ISOC-TX10/bt_firmware.hcd)
+endif()
+
+# CYW20829B1 device (FW patch for 0dBm TX Power)
+if(CONFIG_CYW20829B1_BT_FW_TX0)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B1/COMPONENT_BTFW-TX0/bt_firmware.hcd)
+endif()
+
+# CYW20829B1 device (FW patch for 10dBm TX Power)
+if(CONFIG_CYW20829B1_BT_FW_TX10)
+  set(blob_hcd_file ${hal_blobs_dir}/COMPONENT_CYW20829B1/COMPONENT_BTFW-TX10/bt_firmware.hcd)
 endif()
 
 # use user provided FIRMWARE HCD file (path must be defined in CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB)
 if(CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB)
   # Allowed to pass absolute path to HCD blob file, or relative path from Application folder.
   if(IS_ABSOLUTE ${CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB})
-    set(blob_hcd_file  ${CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB})
+    set(blob_hcd_file ${CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB})
   else()
-    set(blob_hcd_file  ${APPLICATION_SOURCE_DIR}/${CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB})
+    set(blob_hcd_file ${APPLICATION_SOURCE_DIR}/${CONFIG_AIROC_CUSTOM_FIRMWARE_HCD_BLOB})
   endif()
 endif()
 
@@ -102,5 +113,12 @@
   message(INFO " generate include of blob Bluetooth file: ${blob_hcd_file}")
 
   generate_inc_file_for_target(app ${blob_hcd_file} ${blob_gen_inc_file})
-  zephyr_library_sources(${CMAKE_CURRENT_SOURCE_DIR}/w_bt_firmware_controller.c)
+else()
+  message(WARNING "
+    Bluetooth firmware file not found: ${blob_hcd_file}.
+    Please download the Binary Blobs:  west blobs fetch hal_infineon")
 endif()
+
+# Always compile the firmware controller file.
+# If no blob file is available, an empty array will be used.
+zephyr_library_sources(${CMAKE_CURRENT_SOURCE_DIR}/w_bt_firmware_controller.c)
diff --git a/modules/hal_infineon/btstack-integration/w_bt_firmware_controller.c b/modules/hal_infineon/btstack-integration/w_bt_firmware_controller.c
index 1fd05cb..d7c9b48 100644
--- a/modules/hal_infineon/btstack-integration/w_bt_firmware_controller.c
+++ b/modules/hal_infineon/btstack-integration/w_bt_firmware_controller.c
@@ -7,11 +7,16 @@
 #include <stdint.h>
 
 const uint8_t brcm_patchram_format = 0x01;
+
 /* Configuration Data Records (Write_RAM) */
 #ifndef FW_DATBLOCK_SEPARATE_FROM_APPLICATION
+
 const uint8_t brcm_patchram_buf[] = {
-   #include <bt_firmware.hcd.inc>
+#if __has_include(<bt_firmware.hcd.inc>)
+#include <bt_firmware.hcd.inc>
+#endif /* __has_include(<bt_firmware.hcd.inc>) */
 };
 
 const int brcm_patch_ram_length = sizeof(brcm_patchram_buf);
+
 #endif /* FW_DATBLOCK_SEPARATE_FROM_APPLICATION */