Traverse regmap handle entry from firmware node handle. Signed-off-by: Dilip Kota <eswara.kota@xxxxxxxxxxxxxxx> --- Changes on v5: No changes Changes on v5: No changes Changes on v4: No changes drivers/mfd/syscon.c | 8 ++++++++ include/linux/mfd/syscon.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index 3a97816d0cba..e085c50816b9 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -178,6 +178,14 @@ struct regmap *device_node_to_regmap(struct device_node *np) } EXPORT_SYMBOL_GPL(device_node_to_regmap); +struct regmap *fwnode_to_regmap(struct fwnode_handle *fwnode) +{ + struct device_node *np = to_of_node(fwnode); + + return device_node_get_regmap(np, false); +} +EXPORT_SYMBOL_GPL(fwnode_to_regmap); + struct regmap *syscon_node_to_regmap(struct device_node *np) { if (!of_device_is_compatible(np, "syscon")) diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h index 7f20e9b502a5..dacab0b4a091 100644 --- a/include/linux/mfd/syscon.h +++ b/include/linux/mfd/syscon.h @@ -18,6 +18,7 @@ struct device_node; #ifdef CONFIG_MFD_SYSCON extern struct regmap *device_node_to_regmap(struct device_node *np); +extern struct regmap *fwnode_to_regmap(struct fwnode_handle *fwnode); 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_phandle( @@ -34,6 +35,11 @@ static inline struct regmap *device_node_to_regmap(struct device_node *np) return ERR_PTR(-ENOTSUPP); } +static inline struct regmap *fwnode_to_regmap(struct fwnode_handle *fwnode) +{ + return ERR_PTR(-ENOTSUPP); +} + static inline struct regmap *syscon_node_to_regmap(struct device_node *np) { return ERR_PTR(-ENOTSUPP); -- 2.11.0