xref: /linux-6.15/include/linux/mfd/syscon.h (revision 769cb631)
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