From: Adrian Schmutzler Date: Fri, 03 Apr 2020 19:50:03 +0200 Subject: add removed helper syscon_regmap_lookup_by_pdevname The helper syscon_regmap_lookup_by_pdevname has been removed in 29d14b668d2f ("mfd: Remove unused helper syscon_regmap_lookup_by_pdevname") due to lack of users. Thus, we have to maintain it locally. This patch includes a fix due to changes in driver_find_device; kernel commit: 92ce7e83b4e5 ("driver_find_device: Unify the match function with class_find_device()") Signed-off-by: Adrian Schmutzler --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -204,6 +204,27 @@ struct regmap *syscon_regmap_lookup_by_c } EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_compatible); +static int syscon_match_pdevname(struct device *dev, const void *data) +{ + return !strcmp(dev_name(dev), (const char *)data); +} + +struct regmap *syscon_regmap_lookup_by_pdevname(const char *s) +{ + struct device *dev; + struct syscon *syscon; + + dev = driver_find_device(&syscon_driver.driver, NULL, (void *)s, + syscon_match_pdevname); + if (!dev) + return ERR_PTR(-EPROBE_DEFER); + + syscon = dev_get_drvdata(dev); + + return syscon->regmap; +} +EXPORT_SYMBOL_GPL(syscon_regmap_lookup_by_pdevname); + struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np, const char *property) { --- a/include/linux/mfd/syscon.h +++ b/include/linux/mfd/syscon.h @@ -20,6 +20,7 @@ struct device_node; extern struct regmap *device_node_to_regmap(struct device_node *np); extern struct regmap *syscon_node_to_regmap(struct device_node *np); extern struct regmap *syscon_regmap_lookup_by_compatible(const char *s); +extern struct regmap *syscon_regmap_lookup_by_pdevname(const char *s); extern struct regmap *syscon_regmap_lookup_by_phandle( struct device_node *np, const char *property); @@ -38,6 +39,11 @@ static inline struct regmap *syscon_regm { return ERR_PTR(-ENOTSUPP); } + +static inline struct regmap *syscon_regmap_lookup_by_pdevname(const char *s) +{ + return ERR_PTR(-ENOTSUPP); +} static inline struct regmap *syscon_regmap_lookup_by_phandle( struct device_node *np,