}
 
 static int __ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
-                                          size_t name_len, bool with_variant)
+                                          size_t name_len, bool with_variant,
+                                          bool bus_type_mode)
 {
        /* strlen(',variant=') + strlen(ab->qmi.target.bdf_ext) */
        char variant[9 + ATH12K_QMI_BDF_EXT_STR_LENGTH] = { 0 };
 
        switch (ab->id.bdf_search) {
        case ATH12K_BDF_SEARCH_BUS_AND_BOARD:
-               scnprintf(name, name_len,
-                         "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x,qmi-chip-id=%d,qmi-board-id=%d%s",
-                         ath12k_bus_str(ab->hif.bus),
-                         ab->id.vendor, ab->id.device,
-                         ab->id.subsystem_vendor,
-                         ab->id.subsystem_device,
-                         ab->qmi.target.chip_id,
-                         ab->qmi.target.board_id,
-                         variant);
+               if (bus_type_mode)
+                       scnprintf(name, name_len,
+                                 "bus=%s",
+                                 ath12k_bus_str(ab->hif.bus));
+               else
+                       scnprintf(name, name_len,
+                                 "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x,qmi-chip-id=%d,qmi-board-id=%d%s",
+                                 ath12k_bus_str(ab->hif.bus),
+                                 ab->id.vendor, ab->id.device,
+                                 ab->id.subsystem_vendor,
+                                 ab->id.subsystem_device,
+                                 ab->qmi.target.chip_id,
+                                 ab->qmi.target.board_id,
+                                 variant);
                break;
        default:
                scnprintf(name, name_len,
 static int ath12k_core_create_board_name(struct ath12k_base *ab, char *name,
                                         size_t name_len)
 {
-       return __ath12k_core_create_board_name(ab, name, name_len, true);
+       return __ath12k_core_create_board_name(ab, name, name_len, true, false);
 }
 
 static int ath12k_core_create_fallback_board_name(struct ath12k_base *ab, char *name,
                                                  size_t name_len)
 {
-       return __ath12k_core_create_board_name(ab, name, name_len, false);
+       return __ath12k_core_create_board_name(ab, name, name_len, false, false);
+}
+
+static int ath12k_core_create_bus_type_board_name(struct ath12k_base *ab, char *name,
+                                                 size_t name_len)
+{
+       return __ath12k_core_create_board_name(ab, name, name_len, false, true);
 }
 
 const struct firmware *ath12k_core_firmware_request(struct ath12k_base *ab,
 
 int ath12k_core_fetch_regdb(struct ath12k_base *ab, struct ath12k_board_data *bd)
 {
-       char boardname[BOARD_NAME_SIZE];
+       char boardname[BOARD_NAME_SIZE], default_boardname[BOARD_NAME_SIZE];
        int ret;
 
        ret = ath12k_core_create_board_name(ab, boardname, BOARD_NAME_SIZE);
        if (!ret)
                goto exit;
 
+       ret = ath12k_core_create_bus_type_board_name(ab, default_boardname,
+                                                    BOARD_NAME_SIZE);
+       if (ret) {
+               ath12k_dbg(ab, ATH12K_DBG_BOOT,
+                          "failed to create default board name for regdb: %d", ret);
+               goto exit;
+       }
+
+       ret = ath12k_core_fetch_board_data_api_n(ab, bd, default_boardname,
+                                                ATH12K_BD_IE_REGDB,
+                                                ATH12K_BD_IE_REGDB_NAME,
+                                                ATH12K_BD_IE_REGDB_DATA);
+       if (!ret)
+               goto exit;
+
        ret = ath12k_core_fetch_board_data_api_1(ab, bd, ATH12K_REGDB_FILE_NAME);
        if (ret)
                ath12k_dbg(ab, ATH12K_DBG_BOOT, "failed to fetch %s from %s\n",