Message ID | 20230803103102.323987-2-biju.das.jz@bp.renesas.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | Extend device_get_match_data() to struct bus_type | expand |
On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > Extend device_get_match_data() to buses (for eg: I2C) by adding a > callback device_get_match_data() to struct bus_type() and call this method > as a fallback for generic fwnode based device_get_match_data(). With this resend you were too fast to forgot Sakari's tag...
On Thu, Aug 03, 2023 at 03:00:23PM +0300, Andy Shevchenko wrote: > On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > callback device_get_match_data() to struct bus_type() and call this method > > as a fallback for generic fwnode based device_get_match_data(). > > With this resend you were too fast to forgot Sakari's tag... I guess it arrived after the patches were resent?
Hi Andy Shevchenko, Thanks for the feedback. > Subject: Re: [PATCH v5 RESEND 1/4] drivers: fwnode: Extend > device_get_match_data() to struct bus_type > > On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > callback device_get_match_data() to struct bus_type() and call this > > method as a fallback for generic fwnode based device_get_match_data(). > > With this resend you were too fast to forgot Sakari's tag... In my mailbox, I received Sakari's tag after sending RESEND patch series. It may be some race situation with mailboxes. Cheers, Biju
On Thu, Aug 03, 2023 at 12:02:56PM +0000, Sakari Ailus wrote: > On Thu, Aug 03, 2023 at 03:00:23PM +0300, Andy Shevchenko wrote: > > On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > > callback device_get_match_data() to struct bus_type() and call this method > > > as a fallback for generic fwnode based device_get_match_data(). > > > > With this resend you were too fast to forgot Sakari's tag... > > I guess it arrived after the patches were resent? Yes, and this is my point, too fast to resend :-)
On Thu, Aug 03, 2023 at 12:05:58PM +0000, Biju Das wrote: > > Subject: Re: [PATCH v5 RESEND 1/4] drivers: fwnode: Extend > > device_get_match_data() to struct bus_type > > > > On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > > callback device_get_match_data() to struct bus_type() and call this > > > method as a fallback for generic fwnode based device_get_match_data(). > > > > With this resend you were too fast to forgot Sakari's tag... > > In my mailbox, I received Sakari's tag after sending RESEND patch series. > It may be some race situation with mailboxes. Right. My point is, give some time before resend even if something is wrong. Jest reply to your own message to inform people that "the vX is wrong and I am going to resend it soon",
Hi Sakari, > Subject: Re: [PATCH v5 RESEND 1/4] drivers: fwnode: Extend > device_get_match_data() to struct bus_type > > On Thu, Aug 03, 2023 at 03:00:23PM +0300, Andy Shevchenko wrote: > > On Thu, Aug 03, 2023 at 11:30:59AM +0100, Biju Das wrote: > > > Extend device_get_match_data() to buses (for eg: I2C) by adding a > > > callback device_get_match_data() to struct bus_type() and call this > > > method as a fallback for generic fwnode based > device_get_match_data(). > > > > With this resend you were too fast to forgot Sakari's tag... > > I guess it arrived after the patches were resent? I send v5 and v5 resent, then got Rb tag from you. OK, will add Rb tag in v6. Cheers, Biju
diff --git a/drivers/base/property.c b/drivers/base/property.c index 8c40abed7852..a3c188cf68bb 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -1275,9 +1275,34 @@ int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode, } EXPORT_SYMBOL(fwnode_graph_parse_endpoint); +/** + * device_get_match_data - get match data from OF/ACPI/Bus match tables + * @dev: device to find the match data + * + * Find match data using generic fwnode-based lookup and if there is no + * match, call the bus->get_match_data() for finding match data. + * + * Return: a match data pointer or NULL if there is no match in the matching + * table. + * + * Besides the fact that some drivers abuse the device ID driver_data type + * and claim it to be integer, for the bus specific ID tables the driver_data + * may be defined as kernel_ulong_t. For these tables 0 is a valid response, + * but not for this function. It's recommended to convert those either to avoid + * 0 or use a real pointer to the predefined driver data. + */ const void *device_get_match_data(const struct device *dev) { - return fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, dev); + const void *data; + + data = fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data, dev); + if (data) + return data; + + if (dev->bus && dev->bus->get_match_data) + return dev->bus->get_match_data(dev); + + return NULL; } EXPORT_SYMBOL_GPL(device_get_match_data); diff --git a/include/linux/device/bus.h b/include/linux/device/bus.h index ae10c4322754..2e15b0ae5384 100644 --- a/include/linux/device/bus.h +++ b/include/linux/device/bus.h @@ -60,6 +60,7 @@ struct fwnode_handle; * this bus. * @dma_cleanup: Called to cleanup DMA configuration on a device on * this bus. + * @get_match_data: Called to get match data on a device on this bus. * @pm: Power management operations of this bus, callback the specific * device driver's pm-ops. * @iommu_ops: IOMMU specific operations for this bus, used to attach IOMMU @@ -102,6 +103,8 @@ struct bus_type { int (*dma_configure)(struct device *dev); void (*dma_cleanup)(struct device *dev); + const void *(*get_match_data)(const struct device *dev); + const struct dev_pm_ops *pm; const struct iommu_ops *iommu_ops;