Message ID | 20200603101523.12547-1-kiran.k@intel.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Marcel Holtmann |
Headers | show |
Series | [v2,1/2] Bluetooth: Add support to Intel read supported feature | expand |
Hi Kiran, > The command shall read the Intel controller supported > feature. Based on the supported features addtional debug > configuration shall be enabled. > > Signed-off-by: Chethan T N <chethan.tumkur.narayan@intel.com> > Signed-off-by: Ps, AyappadasX <AyappadasX.Ps@intel.com> > Signed-off-by: Kiran K <kiran.k@intel.com> > --- > drivers/bluetooth/btintel.c | 34 ++++++++++++++++++++++++++++++++++ > drivers/bluetooth/btintel.h | 14 ++++++++++++++ > drivers/bluetooth/btusb.c | 8 +++++++- > 3 files changed, 55 insertions(+), 1 deletion(-) > > diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c > index 6a0e2c5a8beb..09e697b92426 100644 > --- a/drivers/bluetooth/btintel.c > +++ b/drivers/bluetooth/btintel.c > @@ -754,6 +754,40 @@ void btintel_reset_to_bootloader(struct hci_dev *hdev) > } > EXPORT_SYMBOL_GPL(btintel_reset_to_bootloader); > > +int btintel_read_supported_features(struct hci_dev *hdev, > + struct intel_supported_features *supported_features) > +{ > + struct sk_buff *skb; > + u8 page_no = 1; > + > + /* Intel controller supports two pages, each page is of 128-bit > + * feature bit mask. And each bit defines specific feature support > + */ > + skb = __hci_cmd_sync(hdev, 0xfca6, sizeof(page_no), &page_no, > + HCI_INIT_TIMEOUT); Please get the coding style right first. We have plenty of examples in the same file on how to do this. Regards Marcel
Hi Marcel, > -----Original Message----- > From: linux-bluetooth-owner@vger.kernel.org <linux-bluetooth- > owner@vger.kernel.org> On Behalf Of Marcel Holtmann > Sent: Wednesday, June 3, 2020 11:12 PM > To: K, Kiran <kiran.k@intel.com> > Cc: Bluez mailing list <linux-bluetooth@vger.kernel.org>; Srivatsa, Ravishankar > <ravishankar.srivatsa@intel.com>; Tumkur Narayan, Chethan > <chethan.tumkur.narayan@intel.com>; Ps@vger.kernel.org; Ps, AyappadasX > <ayappadasx.ps@intel.com> > Subject: Re: [PATCH v2 1/2] Bluetooth: Add support to Intel read supported > feature > > Hi Kiran, > > > The command shall read the Intel controller supported feature. Based > > on the supported features addtional debug configuration shall be > > enabled. > > > > Signed-off-by: Chethan T N <chethan.tumkur.narayan@intel.com> > > Signed-off-by: Ps, AyappadasX <AyappadasX.Ps@intel.com> > > Signed-off-by: Kiran K <kiran.k@intel.com> > > --- > > drivers/bluetooth/btintel.c | 34 ++++++++++++++++++++++++++++++++++ > > drivers/bluetooth/btintel.h | 14 ++++++++++++++ > > drivers/bluetooth/btusb.c | 8 +++++++- > > 3 files changed, 55 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c > > index 6a0e2c5a8beb..09e697b92426 100644 > > --- a/drivers/bluetooth/btintel.c > > +++ b/drivers/bluetooth/btintel.c > > @@ -754,6 +754,40 @@ void btintel_reset_to_bootloader(struct hci_dev > > *hdev) } EXPORT_SYMBOL_GPL(btintel_reset_to_bootloader); > > > > +int btintel_read_supported_features(struct hci_dev *hdev, > > + struct intel_supported_features *supported_features) { > > + struct sk_buff *skb; > > + u8 page_no = 1; > > + > > + /* Intel controller supports two pages, each page is of 128-bit > > + * feature bit mask. And each bit defines specific feature support > > + */ > > + skb = __hci_cmd_sync(hdev, 0xfca6, sizeof(page_no), &page_no, > > + HCI_INIT_TIMEOUT); > > Please get the coding style right first. We have plenty of examples in the same > file on how to do this. I have addressed all the issues reported by 'checkpatch.pl --strict' and sent updated patches. Thanks. > > Regards > > Marcel
diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index 6a0e2c5a8beb..09e697b92426 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -754,6 +754,40 @@ void btintel_reset_to_bootloader(struct hci_dev *hdev) } EXPORT_SYMBOL_GPL(btintel_reset_to_bootloader); +int btintel_read_supported_features(struct hci_dev *hdev, + struct intel_supported_features *supported_features) +{ + struct sk_buff *skb; + u8 page_no = 1; + + /* Intel controller supports two pages, each page is of 128-bit + * feature bit mask. And each bit defines specific feature support + */ + skb = __hci_cmd_sync(hdev, 0xfca6, sizeof(page_no), &page_no, + HCI_INIT_TIMEOUT); + if (IS_ERR(skb)) { + BT_ERR("Reading supported features(page1) failed (%ld)", + PTR_ERR(skb)); + return PTR_ERR(skb); + } + + if (skb->len != (sizeof(supported_features->page1) + 3)) { + bt_dev_err(hdev, + "Supported feature(page1) event size mismatch"); + kfree_skb(skb); + return -EILSEQ; + } + + memcpy(supported_features->page1, skb->data + 3, + sizeof(supported_features->page1)); + + /* Read the supported features page2 if required in future. + */ + kfree_skb(skb); + return 0; +} +EXPORT_SYMBOL_GPL(btintel_read_supported_features); + MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); MODULE_DESCRIPTION("Bluetooth support for Intel devices ver " VERSION); MODULE_VERSION(VERSION); diff --git a/drivers/bluetooth/btintel.h b/drivers/bluetooth/btintel.h index a69ea8a87b9b..f3892c0233f4 100644 --- a/drivers/bluetooth/btintel.h +++ b/drivers/bluetooth/btintel.h @@ -62,6 +62,11 @@ struct intel_reset { __le32 boot_param; } __packed; + +struct intel_supported_features { + __u8 page1[16]; +} __packed; + #if IS_ENABLED(CONFIG_BT_INTEL) int btintel_check_bdaddr(struct hci_dev *hdev); @@ -88,6 +93,9 @@ int btintel_read_boot_params(struct hci_dev *hdev, int btintel_download_firmware(struct hci_dev *dev, const struct firmware *fw, u32 *boot_param); void btintel_reset_to_bootloader(struct hci_dev *hdev); +int btintel_read_supported_features(struct hci_dev *hdev, + struct intel_supported_features *supported_features); + #else static inline int btintel_check_bdaddr(struct hci_dev *hdev) @@ -186,4 +194,10 @@ static inline int btintel_download_firmware(struct hci_dev *dev, static inline void btintel_reset_to_bootloader(struct hci_dev *hdev) { } +static int btintel_read_supported_features(struct hci_dev *hdev, + struct intel_supported_features *supported_features) +{ + return -EOPNOTSUPP; +} + #endif diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 5f022e9cf667..a5a971e7025b 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -5,7 +5,6 @@ * * Copyright (C) 2005-2008 Marcel Holtmann <marcel@holtmann.org> */ - #include <linux/dmi.h> #include <linux/module.h> #include <linux/usb.h> @@ -2273,6 +2272,7 @@ static int btusb_setup_intel_new(struct hci_dev *hdev) ktime_t calltime, delta, rettime; unsigned long long duration; int err; + struct intel_supported_features supported_features; BT_DBG("%s", hdev->name); @@ -2542,6 +2542,12 @@ static int btusb_setup_intel_new(struct hci_dev *hdev) */ btintel_load_ddc_config(hdev, fwname); + /* Read the Intel supported features and if new exception formats + * supported, need to load the additional DDC config to enable. + */ + btintel_read_supported_features(hdev, &supported_features); + + /* Read the Intel version information after loading the FW */ err = btintel_read_version(hdev, &ver); if (err)