* [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address
@ 2025-01-14 13:35 Neeraj Sanjay Kale
2025-01-14 13:35 ` [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for " Neeraj Sanjay Kale
2025-01-14 13:39 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to " Krzysztof Kozlowski
0 siblings, 2 replies; 7+ messages in thread
From: Neeraj Sanjay Kale @ 2025-01-14 13:35 UTC (permalink / raw)
To: marcel, luiz.dentz, robh, krzk+dt, conor+dt
Cc: linux-bluetooth, linux-kernel, devicetree, amitkumar.karwar,
neeraj.sanjaykale, sherry.sun, ziniu.wang_1, johan.korsnes,
kristian.krohn, manjeet.gupta
This adds a new optional device tree property local-bd-address to allow
user to set custom BD address for NXP chipsets.
Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
---
v2: Add allOf and unevaluatedProperties: false (Krzysztof)
---
.../devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
index 0a2d7baf5db3..5d75a45cac14 100644
--- a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
+++ b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
@@ -17,6 +17,9 @@ description:
maintainers:
- Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
+allOf:
+ - $ref: bluetooth-controller.yaml#
+
properties:
compatible:
enum:
@@ -40,10 +43,12 @@ properties:
Host-To-Chip power save mechanism is driven by this GPIO
connected to BT_WAKE_IN pin of the NXP chipset.
+ local-bd-address: true
+
required:
- compatible
-additionalProperties: false
+unevaluatedProperties: false
examples:
- |
@@ -54,5 +59,6 @@ examples:
fw-init-baudrate = <3000000>;
firmware-name = "uartuart8987_bt_v0.bin";
device-wakeup-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+ local-bd-address = [11 22 33 44 55 66];
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for set BD address
2025-01-14 13:35 [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address Neeraj Sanjay Kale
@ 2025-01-14 13:35 ` Neeraj Sanjay Kale
2025-01-14 13:53 ` Johan Korsnes
2025-01-14 13:39 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to " Krzysztof Kozlowski
1 sibling, 1 reply; 7+ messages in thread
From: Neeraj Sanjay Kale @ 2025-01-14 13:35 UTC (permalink / raw)
To: marcel, luiz.dentz, robh, krzk+dt, conor+dt
Cc: linux-bluetooth, linux-kernel, devicetree, amitkumar.karwar,
neeraj.sanjaykale, sherry.sun, ziniu.wang_1, johan.korsnes,
kristian.krohn, manjeet.gupta
This adds support for setting BD address during hci registration. NXP
FW does not allow vendor commands unless it receives a reset command
after FW download and initialization done.
As a workaround, the .set_bdaddr callback function will first send the
HCI reset command, followed by the actual vendor command to set BD
address.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Signed-off-by: Johan Korsnes <johan.korsnes@remarkable.no>
Signed-off-by: Kristian Husevåg Krohn <kristian.krohn@remarkable.no>
Tested-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
---
drivers/bluetooth/btnxpuart.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index 1230045d78a5..deb546a4e664 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1197,6 +1197,34 @@ static int nxp_set_ind_reset(struct hci_dev *hdev, void *data)
return hci_recv_frame(hdev, skb);
}
+static int nxp_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
+{
+ u8 data[8] = { 0xfe, 0x06, 0, 0, 0, 0, 0, 0 };
+ struct sk_buff *skb;
+ int err;
+
+ memcpy(data + 2, bdaddr, 6);
+
+ skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
+ if (IS_ERR(skb)) {
+ err = PTR_ERR(skb);
+ bt_dev_err(hdev, "Reset before setting local-bd-addr failed (%ld)",
+ PTR_ERR(skb));
+ return err;
+ }
+ kfree_skb(skb);
+
+ skb = __hci_cmd_sync(hdev, 0xfc22, sizeof(data), data, HCI_CMD_TIMEOUT);
+ if (IS_ERR(skb)) {
+ err = PTR_ERR(skb);
+ bt_dev_err(hdev, "Changing device address failed (%d)", err);
+ return err;
+ }
+ kfree_skb(skb);
+
+ return 0;
+}
+
/* NXP protocol */
static int nxp_setup(struct hci_dev *hdev)
{
@@ -1547,8 +1575,12 @@ static int nxp_serdev_probe(struct serdev_device *serdev)
hdev->send = nxp_enqueue;
hdev->hw_error = nxp_hw_err;
hdev->shutdown = nxp_shutdown;
+ hdev->set_bdaddr = nxp_set_bdaddr;
+
SET_HCIDEV_DEV(hdev, &serdev->dev);
+ set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
+
if (hci_register_dev(hdev) < 0) {
dev_err(&serdev->dev, "Can't register HCI device\n");
goto probe_fail;
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address
2025-01-14 13:35 [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address Neeraj Sanjay Kale
2025-01-14 13:35 ` [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for " Neeraj Sanjay Kale
@ 2025-01-14 13:39 ` Krzysztof Kozlowski
2025-01-14 14:21 ` Neeraj Sanjay Kale
1 sibling, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2025-01-14 13:39 UTC (permalink / raw)
To: Neeraj Sanjay Kale, marcel, luiz.dentz, robh, krzk+dt, conor+dt
Cc: linux-bluetooth, linux-kernel, devicetree, amitkumar.karwar,
sherry.sun, ziniu.wang_1, johan.korsnes, kristian.krohn,
manjeet.gupta
On 14/01/2025 14:35, Neeraj Sanjay Kale wrote:
> This adds a new optional device tree property local-bd-address to allow
Please do not use "This commit/patch/change", but imperative mood. See
longer explanation here:
https://elixir.bootlin.com/linux/v5.17.1/source/Documentation/process/submitting-patches.rst#L95
> user to set custom BD address for NXP chipsets.
>
> Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
> ---
> v2: Add allOf and unevaluatedProperties: false (Krzysztof)
> ---
> .../devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> index 0a2d7baf5db3..5d75a45cac14 100644
> --- a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> +++ b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> @@ -17,6 +17,9 @@ description:
> maintainers:
> - Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
>
> +allOf:
> + - $ref: bluetooth-controller.yaml#
> +
> properties:
> compatible:
> enum:
> @@ -40,10 +43,12 @@ properties:
> Host-To-Chip power save mechanism is driven by this GPIO
> connected to BT_WAKE_IN pin of the NXP chipset.
>
> + local-bd-address: true
In case I was not clear: drop. And rephrase the commit msg to reflect this.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for set BD address
2025-01-14 13:35 ` [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for " Neeraj Sanjay Kale
@ 2025-01-14 13:53 ` Johan Korsnes
2025-01-14 14:07 ` Neeraj Sanjay Kale
0 siblings, 1 reply; 7+ messages in thread
From: Johan Korsnes @ 2025-01-14 13:53 UTC (permalink / raw)
To: Neeraj Sanjay Kale, marcel, luiz.dentz, robh, krzk+dt, conor+dt
Cc: linux-bluetooth, linux-kernel, devicetree, amitkumar.karwar,
sherry.sun, ziniu.wang_1, kristian.krohn, manjeet.gupta
On 1/14/25 2:35 PM, Neeraj Sanjay Kale wrote:
> This adds support for setting BD address during hci registration. NXP
> FW does not allow vendor commands unless it receives a reset command
> after FW download and initialization done.
> As a workaround, the .set_bdaddr callback function will first send the
> HCI reset command, followed by the actual vendor command to set BD
> address.
>
Hi Neeraj,
If NXP firmware does not allow vendor commands prior to this reset, would
it not be better to perform this reset during probe/init?
Kind regards,
Johan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for set BD address
2025-01-14 13:53 ` Johan Korsnes
@ 2025-01-14 14:07 ` Neeraj Sanjay Kale
2025-01-14 14:09 ` Johan Korsnes
0 siblings, 1 reply; 7+ messages in thread
From: Neeraj Sanjay Kale @ 2025-01-14 14:07 UTC (permalink / raw)
To: Johan Korsnes, marcel@holtmann.org, luiz.dentz@gmail.com,
robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org
Cc: linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Amitkumar Karwar, Sherry Sun,
Luke Wang, kristian.krohn@remarkable.no, Manjeet Gupta
Hi Johan,
>
> On 1/14/25 2:35 PM, Neeraj Sanjay Kale wrote:
> > This adds support for setting BD address during hci registration. NXP
> > FW does not allow vendor commands unless it receives a reset command
> > after FW download and initialization done.
> > As a workaround, the .set_bdaddr callback function will first send the
> > HCI reset command, followed by the actual vendor command to set BD
> > address.
> >
>
> Hi Neeraj,
>
> If NXP firmware does not allow vendor commands prior to this reset, would it
> not be better to perform this reset during probe/init?
>
HCI reset is already part of kernel init sequence hci_init0_sync().
However, .set_bdaddr() is called immediately after FW download is complete, but before this init sequence.
Also, if local-bd-address property is not defined in the DTB, sending HCI reset command in probe does not add any value.
With current implementation, if local-bd-address is defined, driver sends HCI reset, followed by set BD address vendor command, and kernel continues with the HCI init sequence.
Thanks,
Neeraj
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for set BD address
2025-01-14 14:07 ` Neeraj Sanjay Kale
@ 2025-01-14 14:09 ` Johan Korsnes
0 siblings, 0 replies; 7+ messages in thread
From: Johan Korsnes @ 2025-01-14 14:09 UTC (permalink / raw)
To: Neeraj Sanjay Kale, marcel@holtmann.org, luiz.dentz@gmail.com,
robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org
Cc: linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Amitkumar Karwar, Sherry Sun,
Luke Wang, kristian.krohn@remarkable.no, Manjeet Gupta
On 1/14/25 3:07 PM, Neeraj Sanjay Kale wrote:
>
> Hi Johan,
>
>>
>> On 1/14/25 2:35 PM, Neeraj Sanjay Kale wrote:
>>> This adds support for setting BD address during hci registration. NXP
>>> FW does not allow vendor commands unless it receives a reset command
>>> after FW download and initialization done.
>>> As a workaround, the .set_bdaddr callback function will first send the
>>> HCI reset command, followed by the actual vendor command to set BD
>>> address.
>>>
>>
>> Hi Neeraj,
>>
>> If NXP firmware does not allow vendor commands prior to this reset, would it
>> not be better to perform this reset during probe/init?
>>
> HCI reset is already part of kernel init sequence hci_init0_sync().
> However, .set_bdaddr() is called immediately after FW download is complete, but before this init sequence.
>
> Also, if local-bd-address property is not defined in the DTB, sending HCI reset command in probe does not add any value.
>
> With current implementation, if local-bd-address is defined, driver sends HCI reset, followed by set BD address vendor command, and kernel continues with the HCI init sequence.
>
Thanks for clarifying, that makes sense :-)
Kind regards,
Johan
> Thanks,
> Neeraj
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address
2025-01-14 13:39 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to " Krzysztof Kozlowski
@ 2025-01-14 14:21 ` Neeraj Sanjay Kale
0 siblings, 0 replies; 7+ messages in thread
From: Neeraj Sanjay Kale @ 2025-01-14 14:21 UTC (permalink / raw)
To: Krzysztof Kozlowski, marcel@holtmann.org, luiz.dentz@gmail.com,
robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org
Cc: linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, Amitkumar Karwar, Sherry Sun,
Luke Wang, johan.korsnes@remarkable.no,
kristian.krohn@remarkable.no, Manjeet Gupta
Hi Krzysztof,
Thank you for the review.
If I understood it correctly, local-bd-address property would be picked from bluetooth-controller.yaml ref. Updated commit msg accordingly.
Please let me know if any further comments.
Thanks,
Neeraj.
> -----Original Message-----
> From: Krzysztof Kozlowski <krzk@kernel.org>
> Sent: Tuesday, January 14, 2025 7:09 PM
> To: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>; marcel@holtmann.org;
> luiz.dentz@gmail.com; robh@kernel.org; krzk+dt@kernel.org;
> conor+dt@kernel.org
> Cc: linux-bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org;
> devicetree@vger.kernel.org; Amitkumar Karwar
> <amitkumar.karwar@nxp.com>; Sherry Sun <sherry.sun@nxp.com>; Luke
> Wang <ziniu.wang_1@nxp.com>; johan.korsnes@remarkable.no;
> kristian.krohn@remarkable.no; Manjeet Gupta <manjeet.gupta@nxp.com>
> Subject: [EXT] Re: [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add
> support to set BD address
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On 14/01/2025 14:35, Neeraj Sanjay Kale wrote:
> > This adds a new optional device tree property local-bd-address to
> > allow
>
> Please do not use "This commit/patch/change", but imperative mood. See
> longer explanation here:
> https://elixir.b/
> ootlin.com%2Flinux%2Fv5.17.1%2Fsource%2FDocumentation%2Fprocess%2F
> submitting-
> patches.rst%23L95&data=05%7C02%7Cneeraj.sanjaykale%40nxp.com%7C84b
> bc484675244ce050308dd34a0d9ac%7C686ea1d3bc2b4c6fa92cd99c5c301635
> %7C0%7C0%7C638724587636722337%7CUnknown%7CTWFpbGZsb3d8eyJFb
> XB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWF
> pbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=EH9V57j1ClNq7VMsUt%2
> BzcZ3sisbeSIrOCogGt02Ca1M%3D&reserved=0
>
> > user to set custom BD address for NXP chipsets.
>
>
> >
> > Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
> > ---
> > v2: Add allOf and unevaluatedProperties: false (Krzysztof)
> > ---
> > .../devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml | 8
> > +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git
> > a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> > b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> > index 0a2d7baf5db3..5d75a45cac14 100644
> > ---
> > a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml
> > +++ b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.y
> > +++ aml
> > @@ -17,6 +17,9 @@ description:
> > maintainers:
> > - Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
> >
> > +allOf:
> > + - $ref: bluetooth-controller.yaml#
> > +
> > properties:
> > compatible:
> > enum:
> > @@ -40,10 +43,12 @@ properties:
> > Host-To-Chip power save mechanism is driven by this GPIO
> > connected to BT_WAKE_IN pin of the NXP chipset.
> >
> > + local-bd-address: true
>
> In case I was not clear: drop. And rephrase the commit msg to reflect this.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-01-14 14:21 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-14 13:35 [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to set BD address Neeraj Sanjay Kale
2025-01-14 13:35 ` [PATCH v2 2/2] Bluetooth: btnxpuart: Add support for " Neeraj Sanjay Kale
2025-01-14 13:53 ` Johan Korsnes
2025-01-14 14:07 ` Neeraj Sanjay Kale
2025-01-14 14:09 ` Johan Korsnes
2025-01-14 13:39 ` [PATCH v2 1/2] dt-bindings: net: bluetooth: nxp: Add support to " Krzysztof Kozlowski
2025-01-14 14:21 ` Neeraj Sanjay Kale
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).