at v2.6.18-rc2 66 lines 2.1 kB view raw
1#ifndef _ASM_POWERPC_OF_DEVICE_H 2#define _ASM_POWERPC_OF_DEVICE_H 3#ifdef __KERNEL__ 4 5#include <linux/device.h> 6#include <linux/mod_devicetable.h> 7#include <asm/prom.h> 8 9/* 10 * The of_platform_bus_type is a bus type used by drivers that do not 11 * attach to a macio or similar bus but still use OF probing 12 * mechanism 13 */ 14extern struct bus_type of_platform_bus_type; 15 16/* 17 * The of_device is a kind of "base class" that is a superset of 18 * struct device for use by devices attached to an OF node and 19 * probed using OF properties 20 */ 21struct of_device 22{ 23 struct device_node *node; /* OF device node */ 24 u64 dma_mask; /* DMA mask */ 25 struct device dev; /* Generic device interface */ 26}; 27#define to_of_device(d) container_of(d, struct of_device, dev) 28 29extern const struct of_device_id *of_match_device( 30 const struct of_device_id *matches, const struct of_device *dev); 31 32extern struct of_device *of_dev_get(struct of_device *dev); 33extern void of_dev_put(struct of_device *dev); 34 35/* 36 * An of_platform_driver driver is attached to a basic of_device on 37 * the "platform bus" (of_platform_bus_type) 38 */ 39struct of_platform_driver 40{ 41 char *name; 42 struct of_device_id *match_table; 43 struct module *owner; 44 45 int (*probe)(struct of_device* dev, const struct of_device_id *match); 46 int (*remove)(struct of_device* dev); 47 48 int (*suspend)(struct of_device* dev, pm_message_t state); 49 int (*resume)(struct of_device* dev); 50 int (*shutdown)(struct of_device* dev); 51 52 struct device_driver driver; 53}; 54#define to_of_platform_driver(drv) container_of(drv,struct of_platform_driver, driver) 55 56extern int of_register_driver(struct of_platform_driver *drv); 57extern void of_unregister_driver(struct of_platform_driver *drv); 58extern int of_device_register(struct of_device *ofdev); 59extern void of_device_unregister(struct of_device *ofdev); 60extern struct of_device *of_platform_device_create(struct device_node *np, 61 const char *bus_id, 62 struct device *parent); 63extern void of_release_dev(struct device *dev); 64 65#endif /* __KERNEL__ */ 66#endif /* _ASM_POWERPC_OF_DEVICE_H */