@@ -1277,7 +1277,13 @@ EXPORT_SYMBOL(fwnode_graph_parse_endpoint);
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 && dev->bus && dev->bus->get_match_data)
+ data = dev->bus->get_match_data(dev);
+
+ return data;
}
EXPORT_SYMBOL_GPL(device_get_match_data);
@@ -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;