home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-powerpc / of_device.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.0 KB  |  67 lines

  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.  * mecanism
  13.  */
  14. extern 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.  */
  21. struct 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.  
  29. extern const struct of_device_id *of_match_device(
  30.     const struct of_device_id *matches, const struct of_device *dev);
  31.  
  32. extern struct of_device *of_dev_get(struct of_device *dev);
  33. extern 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.  */
  39. struct 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.  
  56. extern int of_register_driver(struct of_platform_driver *drv);
  57. extern void of_unregister_driver(struct of_platform_driver *drv);
  58. extern int of_device_register(struct of_device *ofdev);
  59. extern void of_device_unregister(struct of_device *ofdev);
  60. extern struct of_device *of_platform_device_create(struct device_node *np,
  61.                            const char *bus_id,
  62.                            struct device *parent);
  63. extern void of_release_dev(struct device *dev);
  64.  
  65. #endif /* __KERNEL__ */
  66. #endif /* _ASM_POWERPC_OF_DEVICE_H */
  67.