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