Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3386e0fa authored by Joachim Eastwood's avatar Joachim Eastwood Committed by Rob Herring
Browse files

of: add helper function to retrive match data



It's a common operation for device drivers to retrive the data
member from of_device_id struct in their probe function.

Most driver end up doing:
    const struct of_device_id *match;
    match = of_match_device(driver_of_match, &pdev->dev);
    driver->data = match->data;

With the of_device_get_match_data helper function all this can
done in one go.

Signed-off-by: default avatarJoachim Eastwood <manabian@gmail.com>
[robh: add missing inline to dummmy declaration]
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 31712c98
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -163,6 +163,18 @@ void of_device_unregister(struct platform_device *ofdev)
}
EXPORT_SYMBOL(of_device_unregister);

const void *of_device_get_match_data(const struct device *dev)
{
	const struct of_device_id *match;

	match = of_match_device(dev->driver->of_match_table, dev);
	if (!match)
		return NULL;

	return match->data;
}
EXPORT_SYMBOL(of_device_get_match_data);

ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len)
{
	const char *compat;
+7 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ extern int of_device_add(struct platform_device *pdev);
extern int of_device_register(struct platform_device *ofdev);
extern void of_device_unregister(struct platform_device *ofdev);

extern const void *of_device_get_match_data(const struct device *dev);

extern ssize_t of_device_get_modalias(struct device *dev,
					char *str, ssize_t len);

@@ -65,6 +67,11 @@ static inline int of_driver_match_device(struct device *dev,
static inline void of_device_uevent(struct device *dev,
			struct kobj_uevent_env *env) { }

static inline const void *of_device_get_match_data(const struct device *dev)
{
	return NULL;
}

static inline int of_device_get_modalias(struct device *dev,
				   char *str, ssize_t len)
{