Hi Marek, 2017-01-17 21:44 GMT+09:00 Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>: > PMU is something like a SoC wide service, so add a helper function to get > PMU regmap. This will be used by other Exynos device drivers. This way it > can be avoided to model this dependency in device tree (as phandles to PMU > node) for almost every device in the SoC. > > Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > --- > drivers/soc/samsung/exynos-pmu.c | 11 +++++++++++ > include/linux/soc/samsung/exynos-pmu.h | 7 +++++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/soc/samsung/exynos-pmu.c b/drivers/soc/samsung/exynos-pmu.c > index 0acdfd82e751..5c269bf23210 100644 > --- a/drivers/soc/samsung/exynos-pmu.c > +++ b/drivers/soc/samsung/exynos-pmu.c > @@ -11,6 +11,7 @@ > > #include <linux/of.h> > #include <linux/of_address.h> > +#include <linux/mfd/syscon.h> > #include <linux/platform_device.h> > #include <linux/delay.h> > > @@ -92,6 +93,16 @@ void exynos_sys_powerdown_conf(enum sys_powerdown mode) > { /*sentinel*/ }, > }; > > +struct regmap *exynos_get_pmu_regmap(void) > +{ > + struct device_node *np = of_find_matching_node(NULL, > + exynos_pmu_of_device_ids); > + if (np) > + return syscon_node_to_regmap(np); > + return ERR_PTR(-ENODEV); > +} > +EXPORT_SYMBOL_GPL(exynos_get_pmu_regmap); > + > static int exynos_pmu_probe(struct platform_device *pdev) > { > const struct of_device_id *match; > diff --git a/include/linux/soc/samsung/exynos-pmu.h b/include/linux/soc/samsung/exynos-pmu.h > index e2e9de1acc5b..2a841a474684 100644 > --- a/include/linux/soc/samsung/exynos-pmu.h > +++ b/include/linux/soc/samsung/exynos-pmu.h > @@ -12,6 +12,8 @@ > #ifndef __LINUX_SOC_EXYNOS_PMU_H > #define __LINUX_SOC_EXYNOS_PMU_H > > +#include <linux/regmap.h> > + nit: It would save some compilation time to just add a forward declaration of struct regmap here instead, in case of files that include this header, but don't need regmap functionality. > enum sys_powerdown { > SYS_AFTR, > SYS_LPA, > @@ -20,5 +22,10 @@ enum sys_powerdown { > }; > > extern void exynos_sys_powerdown_conf(enum sys_powerdown mode); > +#ifdef CONFIG_EXYNOS_PMU > +extern struct regmap *exynos_get_pmu_regmap(void); > +#else > +static inline struct regmap *exynos_get_pmu_regmap(void) { return NULL; } Shouldn't be some ERR_PTR() instead? Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html