at v2.6.22 80 lines 2.5 kB view raw
1#ifndef _ASM_SPARC64_OF_DEVICE_H 2#define _ASM_SPARC64_OF_DEVICE_H 3#ifdef __KERNEL__ 4 5#include <linux/device.h> 6#include <linux/mod_devicetable.h> 7#include <asm/openprom.h> 8#include <asm/prom.h> 9 10extern struct bus_type isa_bus_type; 11extern struct bus_type ebus_bus_type; 12extern struct bus_type sbus_bus_type; 13extern struct bus_type of_bus_type; 14 15/* 16 * The of_device is a kind of "base class" that is a superset of 17 * struct device for use by devices attached to an OF node and 18 * probed using OF properties. 19 */ 20struct of_device 21{ 22 struct device_node *node; 23 struct device dev; 24 struct resource resource[PROMREG_MAX]; 25 unsigned int irqs[PROMINTR_MAX]; 26 int num_irqs; 27 28 void *sysdata; 29 30 int slot; 31 int portid; 32 int clock_freq; 33}; 34#define to_of_device(d) container_of(d, struct of_device, dev) 35 36extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); 37extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size); 38 39extern struct of_device *of_find_device_by_node(struct device_node *); 40 41extern const struct of_device_id *of_match_device( 42 const struct of_device_id *matches, const struct of_device *dev); 43 44extern struct of_device *of_dev_get(struct of_device *dev); 45extern void of_dev_put(struct of_device *dev); 46 47/* 48 * An of_platform_driver driver is attached to a basic of_device on 49 * the ISA, EBUS, and SBUS busses on sparc64. 50 */ 51struct of_platform_driver 52{ 53 char *name; 54 struct of_device_id *match_table; 55 struct module *owner; 56 57 int (*probe)(struct of_device* dev, const struct of_device_id *match); 58 int (*remove)(struct of_device* dev); 59 60 int (*suspend)(struct of_device* dev, pm_message_t state); 61 int (*resume)(struct of_device* dev); 62 int (*shutdown)(struct of_device* dev); 63 64 struct device_driver driver; 65}; 66#define to_of_platform_driver(drv) container_of(drv,struct of_platform_driver, driver) 67 68extern int of_register_driver(struct of_platform_driver *drv, 69 struct bus_type *bus); 70extern void of_unregister_driver(struct of_platform_driver *drv); 71extern int of_device_register(struct of_device *ofdev); 72extern void of_device_unregister(struct of_device *ofdev); 73extern struct of_device *of_platform_device_create(struct device_node *np, 74 const char *bus_id, 75 struct device *parent, 76 struct bus_type *bus); 77extern void of_release_dev(struct device *dev); 78 79#endif /* __KERNEL__ */ 80#endif /* _ASM_SPARC64_OF_DEVICE_H */