Hi Sakari, thanks for the reviews On Wed, Sep 26, 2018 at 12:33:22AM +0300, Sakari Ailus wrote: > Hi Matthias, > > On Tue, Sep 25, 2018 at 12:10:13PM -0700, Matthias Kaehlcke wrote: > > Provide an API for Bluetooth drivers to retrieve the Bluetooth Device > > address (BD_ADDR) for a device. If the device node has a property > > 'local-bd-address' the BD address is read from this property. > > > > The definition of bdaddr_t is moved to types.h to make it visible in > > property.h without having to include (the mostly unrelated) bluetooth.h > > > > Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > > Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> > > --- > > Changes in v3: > > - move definition of bdaddr_t to types.h to avoid include of > > bluetooth.h from property.h > > - add stubs for the new functions > > > > Changes in v2: > > - use bdaddr_t instead of byte pointer + len > > - use EXPORT_SYMBOL_GPL for the new functions instead of EXPORT_SYMBOL > > - put new functions inside #if IS_ENABLED(CONFIG_BT) > > - some new line juggling in property.h > > - added 'Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>' tag > > --- > > drivers/base/property.c | 46 +++++++++++++++++++++++++++++++ > > include/linux/property.h | 18 ++++++++++++ > > include/linux/types.h | 5 ++++ > > include/net/bluetooth/bluetooth.h | 5 ---- > > 4 files changed, 69 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/base/property.c b/drivers/base/property.c > > index 240ab5230ff6..afe412133188 100644 > > --- a/drivers/base/property.c > > +++ b/drivers/base/property.c > > @@ -1315,6 +1315,52 @@ void *device_get_mac_address(struct device *dev, char *addr, int alen) > > } > > EXPORT_SYMBOL(device_get_mac_address); > > > > +#if IS_ENABLED(CONFIG_BT) > > + > > +/** > > + * fwnode_get_bd_address - Get the Bluetooth Device Address (BD_ADDR) from the > > + * firmware node > > + * @fwnode: Pointer to the firmware node > > + * @bd_addr: Pointer to struct to store the BD address in > > + * > > + * Search the firmware node for 'local-bd-address'. > > + * > > + * All-zero BD addresses are rejected, because those could be properties > > + * that exist in the firmware tables, but were not updated by the firmware. For > > + * example, the DTS could define 'local-bd-address', with zero BD addresses. > > + */ > > +int fwnode_get_bd_address(struct fwnode_handle *fwnode, bdaddr_t *bd_addr) > > +{ > > + bdaddr_t ba; > > + int ret; > > + > > + ret = fwnode_property_read_u8_array(fwnode, "local-bd-address", > > + (u8 *)&ba, sizeof(bdaddr_t)); > > sizeof(ba) > > > + if (ret < 0) > > + return ret; > > + if (is_zero_ether_addr((u8 *)&ba)) > > + return -ENODATA; > > + > > + memcpy(bd_addr, &ba, sizeof(bdaddr_t)); > > How about simply: > > *bd_addr = ba; > > Either way, > > Reviewed-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> Thanks I'll address your comments in v4. I'll wait a day or two before re-spinning for if others have additional feedback. Cheers Matthias