From: Takashi Iwai <tiwai@suse.de>
Subject: kABI workaround for btintel symbol changes
Patch-mainline: Never, kABI workaround
References: bsc#1188893
The recent change for btintel changed symbols of btintel_version_info()
and btintel_download_firmware(). Add a workaround for those.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
drivers/bluetooth/btintel.c | 27 +++++++++++++++++++++++----
drivers/bluetooth/btintel.h | 7 +++++--
2 files changed, 28 insertions(+), 6 deletions(-)
--- a/drivers/bluetooth/btintel.c
+++ b/drivers/bluetooth/btintel.c
@@ -216,7 +216,7 @@ void btintel_hw_error(struct hci_dev *hd
}
EXPORT_SYMBOL_GPL(btintel_hw_error);
-int btintel_version_info(struct hci_dev *hdev, struct intel_version *ver)
+int __btintel_version_info(struct hci_dev *hdev, struct intel_version *ver)
{
const char *variant;
@@ -268,7 +268,7 @@ int btintel_version_info(struct hci_dev
return 0;
}
-EXPORT_SYMBOL_GPL(btintel_version_info);
+EXPORT_SYMBOL_GPL(__btintel_version_info);
int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type, u32 plen,
const void *param)
@@ -1015,7 +1015,7 @@ static bool btintel_firmware_version(str
return false;
}
-int btintel_download_firmware(struct hci_dev *hdev,
+int __btintel_download_firmware(struct hci_dev *hdev,
struct intel_version *ver,
const struct firmware *fw,
u32 *boot_param)
@@ -1064,7 +1064,7 @@ int btintel_download_firmware(struct hci
return btintel_download_firmware_payload(hdev, fw, RSA_HEADER_LEN);
}
-EXPORT_SYMBOL_GPL(btintel_download_firmware);
+EXPORT_SYMBOL_GPL(__btintel_download_firmware);
int btintel_download_firmware_newgen(struct hci_dev *hdev,
struct intel_version_tlv *ver,
@@ -1272,6 +1272,25 @@ int btintel_set_debug_features(struct hc
}
EXPORT_SYMBOL_GPL(btintel_set_debug_features);
+/* XXX SLE15-SP3 kABI-compatible symbols */
+#undef btintel_version_info
+#undef btintel_download_firmware
+
+void btintel_version_info(struct hci_dev *hdev, struct intel_version *ver)
+{
+ __btintel_version_info(hdev, ver);
+}
+EXPORT_SYMBOL_GPL(btintel_version_info);
+
+int btintel_download_firmware(struct hci_dev *hdev,
+ const struct firmware *fw,
+ u32 *boot_param)
+{
+ struct intel_version ver = {};
+ return __btintel_download_firmware(hdev, &ver, fw, boot_param);
+}
+EXPORT_SYMBOL_GPL(btintel_download_firmware);
+
MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");
MODULE_DESCRIPTION("Bluetooth support for Intel devices ver " VERSION);
MODULE_VERSION(VERSION);
--- a/drivers/bluetooth/btintel.h
+++ b/drivers/bluetooth/btintel.h
@@ -148,7 +148,7 @@ int btintel_set_diag(struct hci_dev *hde
int btintel_set_diag_mfg(struct hci_dev *hdev, bool enable);
void btintel_hw_error(struct hci_dev *hdev, u8 code);
-int btintel_version_info(struct hci_dev *hdev, struct intel_version *ver);
+int __btintel_version_info(struct hci_dev *hdev, struct intel_version *ver);
int btintel_version_info_tlv(struct hci_dev *hdev, struct intel_version_tlv *version);
int btintel_secure_send(struct hci_dev *hdev, u8 fragment_type, u32 plen,
const void *param);
@@ -163,7 +163,7 @@ struct regmap *btintel_regmap_init(struc
int btintel_send_intel_reset(struct hci_dev *hdev, u32 boot_param);
int btintel_read_boot_params(struct hci_dev *hdev,
struct intel_boot_params *params);
-int btintel_download_firmware(struct hci_dev *dev, struct intel_version *ver,
+int __btintel_download_firmware(struct hci_dev *dev, struct intel_version *ver,
const struct firmware *fw, u32 *boot_param);
int btintel_download_firmware_newgen(struct hci_dev *hdev,
struct intel_version_tlv *ver,
@@ -175,6 +175,9 @@ int btintel_read_debug_features(struct h
struct intel_debug_features *features);
int btintel_set_debug_features(struct hci_dev *hdev,
const struct intel_debug_features *features);
+/* XXX SLE15-SP3 kABI compatibility */
+#define btintel_version_info(h, v) __btintel_version_info(h, v)
+#define btintel_download_firmware(h, v, f, b) __btintel_download_firmware(h, v, f, b)
#else
static inline int btintel_check_bdaddr(struct hci_dev *hdev)