| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef _OF_DEVICE_COMMON_H | 
 | #define _OF_DEVICE_COMMON_H | 
 |  | 
 | static inline u64 of_read_addr(const u32 *cell, int size) | 
 | { | 
 | 	u64 r = 0; | 
 | 	while (size--) | 
 | 		r = (r << 32) | *(cell++); | 
 | 	return r; | 
 | } | 
 |  | 
 | void of_bus_default_count_cells(struct device_node *dev, int *addrc, | 
 | 				int *sizec); | 
 | int of_out_of_range(const u32 *addr, const u32 *base, | 
 | 		    const u32 *size, int na, int ns); | 
 | int of_bus_default_map(u32 *addr, const u32 *range, int na, int ns, int pna); | 
 | unsigned long of_bus_default_get_flags(const u32 *addr, unsigned long flags); | 
 |  | 
 | int of_bus_sbus_match(struct device_node *np); | 
 | void of_bus_sbus_count_cells(struct device_node *child, int *addrc, int *sizec); | 
 |  | 
 | /* Max address size we deal with */ | 
 | #define OF_MAX_ADDR_CELLS	4 | 
 |  | 
 | struct of_bus { | 
 | 	const char	*name; | 
 | 	const char	*addr_prop_name; | 
 | 	int		(*match)(struct device_node *parent); | 
 | 	void		(*count_cells)(struct device_node *child, | 
 | 				       int *addrc, int *sizec); | 
 | 	int		(*map)(u32 *addr, const u32 *range, | 
 | 			       int na, int ns, int pna); | 
 | 	unsigned long	(*get_flags)(const u32 *addr, unsigned long); | 
 | }; | 
 |  | 
 | #endif /* _OF_DEVICE_COMMON_H */ |