1/*
2 * Copyright 2009, Colin G��nther, coling@gmx.de. All Rights Reserved.
3 * Copyright 2007, Axel D��rfler, axeld@pinc-software.de. All Rights Reserved.
4 * Copyright 2007, Hugo Santos. All Rights Reserved.
5 * Copyright 2004, Marcus Overhagen. All Rights Reserved.
6 * Distributed under the terms of the MIT License.
7 */
8#ifndef SHARED_H_
9#define SHARED_H_
10
11
12#define MAX_DEVICES	8
13
14
15struct ifnet;
16
17struct device {
18	struct device	*parent;
19	struct device	*root;
20
21	driver_t		*driver;
22	struct list		children;
23
24	uint32			flags;
25
26	char			device_name[128];
27	int				unit;
28	char			nameunit[64];
29	const char		*description;
30	void			*softc;
31	void			*ivars;
32
33	struct {
34		int (*probe)(device_t dev);
35		int (*attach)(device_t dev);
36		int (*detach)(device_t dev);
37		int (*suspend)(device_t dev);
38		int (*resume)(device_t dev);
39		void (*shutdown)(device_t dev);
40
41		int (*miibus_readreg)(device_t, int, int);
42		int (*miibus_writereg)(device_t, int, int, int);
43		void (*miibus_statchg)(device_t);
44		void (*miibus_linkchg)(device_t);
45		void (*miibus_mediainit)(device_t);
46	} methods;
47
48	struct list_link link;
49};
50
51
52extern const char *gDeviceNameList[];
53extern struct ifnet *gDevices[];
54extern int32 gDeviceCount;
55
56#endif /* SHARED_H_ */
57