File: of_device_common.h

package info (click to toggle)
linux 3.16.7-ckt7-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 738,580 kB
  • ctags: 2,380,866
  • sloc: ansic: 12,216,621; asm: 277,336; perl: 53,978; xml: 47,771; makefile: 30,485; sh: 8,063; python: 6,597; cpp: 5,127; yacc: 4,254; lex: 2,215; awk: 741; pascal: 231; lisp: 218; sed: 30
file content (36 lines) | stat: -rw-r--r-- 1,088 bytes parent folder | download | duplicates (26)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#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 */