12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
287d68730SDong Aisheng /*
387d68730SDong Aisheng * System Control Driver
487d68730SDong Aisheng *
587d68730SDong Aisheng * Copyright (C) 2012 Freescale Semiconductor, Inc.
687d68730SDong Aisheng * Copyright (C) 2012 Linaro Ltd.
787d68730SDong Aisheng *
887d68730SDong Aisheng * Author: Dong Aisheng <[email protected]>
987d68730SDong Aisheng */
1087d68730SDong Aisheng
1187d68730SDong Aisheng #ifndef __LINUX_MFD_SYSCON_H__
1287d68730SDong Aisheng #define __LINUX_MFD_SYSCON_H__
1387d68730SDong Aisheng
143d237990STushar Behera #include <linux/err.h>
15adae28c5SArnd Bergmann #include <linux/errno.h>
163d237990STushar Behera
175fb1c2ddSSylwester Nawrocki struct device_node;
185fb1c2ddSSylwester Nawrocki
19df73de9bSPeter Chen #ifdef CONFIG_MFD_SYSCON
200db017f8SPeter Griffin struct regmap *device_node_to_regmap(struct device_node *np);
210db017f8SPeter Griffin struct regmap *syscon_node_to_regmap(struct device_node *np);
220db017f8SPeter Griffin struct regmap *syscon_regmap_lookup_by_compatible(const char *s);
230db017f8SPeter Griffin struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,
2487d68730SDong Aisheng const char *property);
250db017f8SPeter Griffin struct regmap *syscon_regmap_lookup_by_phandle_args(struct device_node *np,
266a24f567SOrson Zhai const char *property,
276a24f567SOrson Zhai int arg_count,
286a24f567SOrson Zhai unsigned int *out_args);
290db017f8SPeter Griffin struct regmap *syscon_regmap_lookup_by_phandle_optional(struct device_node *np,
3086b9d170SEnric Balletbo i Serra const char *property);
31*769cb631SPeter Griffin int of_syscon_register_regmap(struct device_node *np,
32*769cb631SPeter Griffin struct regmap *regmap);
33df73de9bSPeter Chen #else
device_node_to_regmap(struct device_node * np)3439233b7cSPaul Cercueil static inline struct regmap *device_node_to_regmap(struct device_node *np)
3539233b7cSPaul Cercueil {
3639233b7cSPaul Cercueil return ERR_PTR(-ENOTSUPP);
3739233b7cSPaul Cercueil }
3839233b7cSPaul Cercueil
syscon_node_to_regmap(struct device_node * np)39df73de9bSPeter Chen static inline struct regmap *syscon_node_to_regmap(struct device_node *np)
40df73de9bSPeter Chen {
418c037e0cSPhilipp Zabel return ERR_PTR(-ENOTSUPP);
42df73de9bSPeter Chen }
43df73de9bSPeter Chen
syscon_regmap_lookup_by_compatible(const char * s)44df73de9bSPeter Chen static inline struct regmap *syscon_regmap_lookup_by_compatible(const char *s)
45df73de9bSPeter Chen {
468c037e0cSPhilipp Zabel return ERR_PTR(-ENOTSUPP);
47df73de9bSPeter Chen }
48df73de9bSPeter Chen
syscon_regmap_lookup_by_phandle(struct device_node * np,const char * property)49df73de9bSPeter Chen static inline struct regmap *syscon_regmap_lookup_by_phandle(
50df73de9bSPeter Chen struct device_node *np,
51df73de9bSPeter Chen const char *property)
52df73de9bSPeter Chen {
538c037e0cSPhilipp Zabel return ERR_PTR(-ENOTSUPP);
54df73de9bSPeter Chen }
556a24f567SOrson Zhai
syscon_regmap_lookup_by_phandle_args(struct device_node * np,const char * property,int arg_count,unsigned int * out_args)565312f321SGeert Uytterhoeven static inline struct regmap *syscon_regmap_lookup_by_phandle_args(
576a24f567SOrson Zhai struct device_node *np,
586a24f567SOrson Zhai const char *property,
596a24f567SOrson Zhai int arg_count,
606a24f567SOrson Zhai unsigned int *out_args)
616a24f567SOrson Zhai {
626a24f567SOrson Zhai return ERR_PTR(-ENOTSUPP);
636a24f567SOrson Zhai }
6486b9d170SEnric Balletbo i Serra
syscon_regmap_lookup_by_phandle_optional(struct device_node * np,const char * property)6586b9d170SEnric Balletbo i Serra static inline struct regmap *syscon_regmap_lookup_by_phandle_optional(
6686b9d170SEnric Balletbo i Serra struct device_node *np,
6786b9d170SEnric Balletbo i Serra const char *property)
6886b9d170SEnric Balletbo i Serra {
6986b9d170SEnric Balletbo i Serra return NULL;
7086b9d170SEnric Balletbo i Serra }
7186b9d170SEnric Balletbo i Serra
of_syscon_register_regmap(struct device_node * np,struct regmap * regmap)72*769cb631SPeter Griffin static inline int of_syscon_register_regmap(struct device_node *np,
73*769cb631SPeter Griffin struct regmap *regmap)
74*769cb631SPeter Griffin {
75*769cb631SPeter Griffin return -EOPNOTSUPP;
76*769cb631SPeter Griffin }
77*769cb631SPeter Griffin
78df73de9bSPeter Chen #endif
79df73de9bSPeter Chen
8087d68730SDong Aisheng #endif /* __LINUX_MFD_SYSCON_H__ */
81