forked from mirrors/linux
		
	This adds syscon_regmap_lookup_by_phandle_optional() function to get an optional regmap. It behaves the same as syscon_regmap_lookup_by_phandle() except where there is no regmap phandle. In this case, instead of returning -ENODEV, the function returns NULL. This makes error checking simpler when the regmap phandle is optional. Suggested-by: Nicolas Boichat <drinkcat@chromium.org> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Lee Jones <lee.jones@linaro.org>
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-or-later */
 | 
						|
/*
 | 
						|
 * System Control Driver
 | 
						|
 *
 | 
						|
 * Copyright (C) 2012 Freescale Semiconductor, Inc.
 | 
						|
 * Copyright (C) 2012 Linaro Ltd.
 | 
						|
 *
 | 
						|
 * Author: Dong Aisheng <dong.aisheng@linaro.org>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __LINUX_MFD_SYSCON_H__
 | 
						|
#define __LINUX_MFD_SYSCON_H__
 | 
						|
 | 
						|
#include <linux/err.h>
 | 
						|
#include <linux/errno.h>
 | 
						|
 | 
						|
struct device_node;
 | 
						|
 | 
						|
#ifdef CONFIG_MFD_SYSCON
 | 
						|
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_phandle(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property);
 | 
						|
extern struct regmap *syscon_regmap_lookup_by_phandle_args(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property,
 | 
						|
					int arg_count,
 | 
						|
					unsigned int *out_args);
 | 
						|
extern struct regmap *syscon_regmap_lookup_by_phandle_optional(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property);
 | 
						|
#else
 | 
						|
static inline struct regmap *device_node_to_regmap(struct device_node *np)
 | 
						|
{
 | 
						|
	return ERR_PTR(-ENOTSUPP);
 | 
						|
}
 | 
						|
 | 
						|
static inline struct regmap *syscon_node_to_regmap(struct device_node *np)
 | 
						|
{
 | 
						|
	return ERR_PTR(-ENOTSUPP);
 | 
						|
}
 | 
						|
 | 
						|
static inline struct regmap *syscon_regmap_lookup_by_compatible(const char *s)
 | 
						|
{
 | 
						|
	return ERR_PTR(-ENOTSUPP);
 | 
						|
}
 | 
						|
 | 
						|
static inline struct regmap *syscon_regmap_lookup_by_phandle(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property)
 | 
						|
{
 | 
						|
	return ERR_PTR(-ENOTSUPP);
 | 
						|
}
 | 
						|
 | 
						|
static inline struct regmap *syscon_regmap_lookup_by_phandle_args(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property,
 | 
						|
					int arg_count,
 | 
						|
					unsigned int *out_args)
 | 
						|
{
 | 
						|
	return ERR_PTR(-ENOTSUPP);
 | 
						|
}
 | 
						|
 | 
						|
static inline struct regmap *syscon_regmap_lookup_by_phandle_optional(
 | 
						|
					struct device_node *np,
 | 
						|
					const char *property)
 | 
						|
{
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* __LINUX_MFD_SYSCON_H__ */
 |