Re: [PATCH v4 6/8] Bluetooth: hci_sync: Add NVMEM-backed BD address retrieval
Dmitry Baryshkov <[email protected]> Fri, 12 Jun 2026 12:11:31 +0300
| Newsgroups | org.infradead.lists.ath10k,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-block,org.kernel.vger.linux-bluetooth,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc,org.kernel.vger.linux-wireless,org.kernel.vger.netdev |
|---|---|
| Message-ID | <sy2ofvdbcxspxtmfdavjvdz7oes5ieuep4znf4ayknmuwhrlgk@7lp3bkegaeif> |
On Tue, Jun 09, 2026 at 09:52:31AM +0200, Loic Poulain wrote: > Some devices store the Bluetooth BD address in non-volatile > memory, which can be accessed through the NVMEM framework. > Similar to Ethernet or WiFi MAC addresses, add support for > reading the BD address from a 'local-bd-address' NVMEM cell. > > As with the device-tree provided BD address, add a quirk to > indicate whether a device or platform should attempt to read > the address from NVMEM when no valid in-chip address is present. > Also add a quirk to indicate if the address is stored in > big-endian byte order. > > Reviewed-by: Bartosz Golaszewski <[email protected]> > Signed-off-by: Loic Poulain <[email protected]> > --- > include/net/bluetooth/hci.h | 18 ++++++++++++++++++ > net/bluetooth/hci_sync.c | 39 ++++++++++++++++++++++++++++++++++++++- > 2 files changed, 56 insertions(+), 1 deletion(-) > > diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h > index 572b1c620c5d653a1fe10b26c1b0ba33e8f4968f..7686466d1109253b0d75edeb5f6a99fb98ce4cc6 100644 > --- a/include/net/bluetooth/hci.h > +++ b/include/net/bluetooth/hci.h > @@ -164,6 +164,24 @@ enum { > */ > HCI_QUIRK_BDADDR_PROPERTY_BROKEN, > > + /* When this quirk is set, the public Bluetooth address > + * initially reported by HCI Read BD Address command > + * is considered invalid. The public BD Address can be > + * retrieved via a 'local-bd-address' NVMEM cell. Why do we need a quirk here? Can't we always assume that if there is an NVMEM cell, it contains a correct address, even if HCI command returned a seemingly-sensible one? > + * > + * This quirk can be set before hci_register_dev is called or > + * during the hdev->setup vendor callback. > + */ > + HCI_QUIRK_USE_BDADDR_NVMEM, > + > + /* When this quirk is set, the Bluetooth Device Address provided by > + * the 'local-bd-address' NVMEM is stored in big-endian order. > + * > + * This quirk can be set before hci_register_dev is called or > + * during the hdev->setup vendor callback. > + */ > + HCI_QUIRK_BDADDR_NVMEM_BE, Also, is this necessary? Are the devices which store the address in the wrong format in the NVMEM? > + > /* When this quirk is set, the duplicate filtering during > * scanning is based on Bluetooth devices addresses. To allow > * RSSI based updates, restart scanning if needed. -- With best wishes Dmitry