On Wed, Sep 26, 2018 at 02:36:25PM +0300, Heikki Krogerus wrote: > On Tue, Sep 25, 2018 at 12:10:13PM -0700, Matthias Kaehlcke wrote: > > +/** > > + * 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)); > > + if (ret < 0) > > + return ret; > > + if (is_zero_ether_addr((u8 *)&ba)) > > + return -ENODATA; > > + > > + memcpy(bd_addr, &ba, sizeof(bdaddr_t)); > > + > > + return 0; > > +} > > +EXPORT_SYMBOL_GPL(fwnode_get_bd_address); > > + > > +/** > > + * device_get_bd_address - Get the Bluetooth Device Address (BD_ADDR) for a > > + * given device > > + * @dev: Pointer to the device > > + * @bd_addr: Pointer to struct to store the BD address in > > + */ > > +int device_get_bd_address(struct device *dev, bdaddr_t *bd_addr) > > +{ > > + return fwnode_get_bd_address(dev_fwnode(dev), bd_addr); > > +} > > +EXPORT_SYMBOL_GPL(device_get_bd_address); > > Let's not fill property.c with framework specific helper functions any > more! > > Those functions are completely bluetooth specific, so they do not > belong here. The fact that some other framework already managed to > slip their helpers in does not justify others to do the same. You have a point, I'll see if I can find a better place. Thanks Matthias