From: Tedd Ho-Jeong An <tedd.an@intel.com>
To: "linux-bluetooth@vger.kernel.org" <linux-bluetooth@vger.kernel.org>
Cc: Johan Hedberg <johan.hedberg@gmail.com>,
"An, Tedd" <tedd.an@intel.com>,
Marcel Holtmann <marcel@holtmann.org>
Subject: [RFC v2 2/4] Bluetooth: Set the firmware file extension based on firmware type
Date: Mon, 8 Dec 2014 15:24:48 -0800 [thread overview]
Message-ID: <20141208152448.594b9659@tedd-test> (raw)
From: Tedd Ho-Jeong An <tedd.an@intel.com>
This patch sets the extension of Intel Bluetooth firmware file based on
firmware type.
Signed-off-by: Tedd Ho-Jeong An <tedd.an@intel.com>
---
drivers/bluetooth/btusb.c | 43 +++++++++++++++++++++++++++++--------------
1 file changed, 29 insertions(+), 14 deletions(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 9ab396b..b3ce85f 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -1334,12 +1334,18 @@ struct intel_version {
u8 fw_patch_num;
} __packed;
-static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev)
+enum {
+ INTEL_FW_MODE_OP,
+};
+
+static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev,
+ int fw_mode)
{
const struct firmware *fw;
struct sk_buff *skb;
struct intel_version *ver;
char fwname[64];
+ char ext[6] = {0};
int ret;
BT_DBG("%s", hdev->name);
@@ -1377,23 +1383,32 @@ static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev)
ver->fw_build_num, ver->fw_build_ww, ver->fw_build_yy,
ver->fw_patch_num);
- /* fw_patch_num indicates the version of patch the device currently
- * have. If there is no patch data in the device, it is always 0x00.
- * So, if it is other than 0x00, no need to patch the device again.
- */
- if (ver->fw_patch_num) {
- BT_INFO("%s: Intel device is already patched. patch num: %02x",
- hdev->name, ver->fw_patch_num);
- btusb_check_bdaddr_intel(hdev);
+ /* set the extension of firmware file based on firmware type */
+ if (fw_mode == INTEL_FW_MODE_OP) {
+ /* fw_patch_num indicates the version of patch the device
+ * currently have. If there is no patch data in the device,
+ * it is always 0x00. So, if it is other than 0x00, no need
+ * to patch the device again.
+ */
+ if (ver->fw_patch_num) {
+ BT_INFO("%s: Intel device is already patched",
+ hdev->name);
+ btusb_check_bdaddr_intel(hdev);
+ return NULL;
+ }
+ strncpy(ext, "bseq", 4);
+ } else {
+ BT_ERR("%s: Invalid Intel firmware type: %d",
+ hdev->name, fw_mode);
return NULL;
}
/* Open the firwmare file if it exists */
snprintf(fwname, sizeof(fwname),
- "intel/ibt-hw-%x.%x.%x-fw-%x.%x.%x.%x.%x.bseq",
+ "intel/ibt-hw-%x.%x.%x-fw-%x.%x.%x.%x.%x.%s",
ver->hw_platform, ver->hw_variant, ver->hw_revision,
ver->fw_variant, ver->fw_revision, ver->fw_build_num,
- ver->fw_build_ww, ver->fw_build_yy);
+ ver->fw_build_ww, ver->fw_build_yy, ext);
ret = request_firmware(&fw, fwname, &hdev->dev);
if (ret < 0) {
@@ -1409,8 +1424,8 @@ static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev)
/* If the correct firmware patch file is not found, use the
* default firmware patch file instead
*/
- snprintf(fwname, sizeof(fwname), "intel/ibt-hw-%x.%x.bseq",
- ver->hw_platform, ver->hw_variant);
+ snprintf(fwname, sizeof(fwname), "intel/ibt-hw-%x.%x.%s",
+ ver->hw_platform, ver->hw_variant, ext);
if (request_firmware(&fw, fwname, &hdev->dev) < 0) {
BT_ERR("%s failed to open default Intel fw file: %s",
hdev->name, fwname);
@@ -1574,7 +1589,7 @@ static int btusb_setup_intel(struct hci_dev *hdev)
* If no patch file is found, allow the device to operate without
* a patch.
*/
- fw = btusb_setup_intel_get_fw(hdev);
+ fw = btusb_setup_intel_get_fw(hdev, INTEL_FW_MODE_OP);
if (!fw) {
btusb_check_bdaddr_intel(hdev);
return 0;
--
1.9.1
next reply other threads:[~2014-12-08 23:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-08 23:24 Tedd Ho-Jeong An [this message]
2014-12-09 5:42 ` [RFC v2 2/4] Bluetooth: Set the firmware file extension based on firmware type Marcel Holtmann
2014-12-09 23:16 ` An, Tedd
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141208152448.594b9659@tedd-test \
--to=tedd.an@intel.com \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.