diff options
Diffstat (limited to 'include/asm-powerpc')
| -rw-r--r-- | include/asm-powerpc/of_device.h | 34 | ||||
| -rw-r--r-- | include/asm-powerpc/of_platform.h | 60 |
2 files changed, 62 insertions, 32 deletions
diff --git a/include/asm-powerpc/of_device.h b/include/asm-powerpc/of_device.h index c5c0b0b3cd52..1ef7e9edd1a7 100644 --- a/include/asm-powerpc/of_device.h +++ b/include/asm-powerpc/of_device.h | |||
| @@ -6,12 +6,6 @@ | |||
| 6 | #include <linux/mod_devicetable.h> | 6 | #include <linux/mod_devicetable.h> |
| 7 | #include <asm/prom.h> | 7 | #include <asm/prom.h> |
| 8 | 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 | */ | ||
| 14 | extern struct bus_type of_platform_bus_type; | ||
| 15 | 9 | ||
| 16 | /* | 10 | /* |
| 17 | * The of_device is a kind of "base class" that is a superset of | 11 | * The of_device is a kind of "base class" that is a superset of |
| @@ -26,40 +20,16 @@ struct of_device | |||
| 26 | }; | 20 | }; |
| 27 | #define to_of_device(d) container_of(d, struct of_device, dev) | 21 | #define to_of_device(d) container_of(d, struct of_device, dev) |
| 28 | 22 | ||
| 23 | extern const struct of_device_id *of_match_node( | ||
| 24 | const struct of_device_id *matches, const struct device_node *node); | ||
| 29 | extern const struct of_device_id *of_match_device( | 25 | extern const struct of_device_id *of_match_device( |
| 30 | const struct of_device_id *matches, const struct of_device *dev); | 26 | const struct of_device_id *matches, const struct of_device *dev); |
| 31 | 27 | ||
| 32 | extern struct of_device *of_dev_get(struct of_device *dev); | 28 | extern struct of_device *of_dev_get(struct of_device *dev); |
| 33 | extern void of_dev_put(struct of_device *dev); | 29 | extern void of_dev_put(struct of_device *dev); |
| 34 | 30 | ||
| 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); | 31 | extern int of_device_register(struct of_device *ofdev); |
| 59 | extern void of_device_unregister(struct of_device *ofdev); | 32 | 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); | 33 | extern void of_release_dev(struct device *dev); |
| 64 | 34 | ||
| 65 | #endif /* __KERNEL__ */ | 35 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-powerpc/of_platform.h b/include/asm-powerpc/of_platform.h new file mode 100644 index 000000000000..217eafb167e9 --- /dev/null +++ b/include/asm-powerpc/of_platform.h | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. | ||
| 3 | * <benh@kernel.crashing.org> | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU General Public License | ||
| 7 | * as published by the Free Software Foundation; either version | ||
| 8 | * 2 of the License, or (at your option) any later version. | ||
| 9 | * | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <asm/of_device.h> | ||
| 13 | |||
| 14 | /* | ||
| 15 | * The of_platform_bus_type is a bus type used by drivers that do not | ||
| 16 | * attach to a macio or similar bus but still use OF probing | ||
| 17 | * mechanism | ||
| 18 | */ | ||
| 19 | extern struct bus_type of_platform_bus_type; | ||
| 20 | |||
| 21 | /* | ||
| 22 | * An of_platform_driver driver is attached to a basic of_device on | ||
| 23 | * the "platform bus" (of_platform_bus_type) | ||
| 24 | */ | ||
| 25 | struct of_platform_driver | ||
| 26 | { | ||
| 27 | char *name; | ||
| 28 | struct of_device_id *match_table; | ||
| 29 | struct module *owner; | ||
| 30 | |||
| 31 | int (*probe)(struct of_device* dev, | ||
| 32 | const struct of_device_id *match); | ||
| 33 | int (*remove)(struct of_device* dev); | ||
| 34 | |||
| 35 | int (*suspend)(struct of_device* dev, pm_message_t state); | ||
| 36 | int (*resume)(struct of_device* dev); | ||
| 37 | int (*shutdown)(struct of_device* dev); | ||
| 38 | |||
| 39 | struct device_driver driver; | ||
| 40 | }; | ||
| 41 | #define to_of_platform_driver(drv) \ | ||
| 42 | container_of(drv,struct of_platform_driver, driver) | ||
| 43 | |||
| 44 | /* Platform drivers register/unregister */ | ||
| 45 | extern int of_register_platform_driver(struct of_platform_driver *drv); | ||
| 46 | extern void of_unregister_platform_driver(struct of_platform_driver *drv); | ||
| 47 | |||
| 48 | /* Platform devices and busses creation */ | ||
| 49 | extern struct of_device *of_platform_device_create(struct device_node *np, | ||
| 50 | const char *bus_id, | ||
| 51 | struct device *parent); | ||
| 52 | /* pseudo "matches" value to not do deep probe */ | ||
| 53 | #define OF_NO_DEEP_PROBE ((struct of_device_id *)-1) | ||
| 54 | |||
| 55 | extern int of_platform_bus_probe(struct device_node *root, | ||
| 56 | struct of_device_id *matches, | ||
| 57 | struct device *parent); | ||
| 58 | |||
| 59 | extern struct of_device *of_find_device_by_node(struct device_node *np); | ||
| 60 | extern struct of_device *of_find_device_by_phandle(phandle ph); | ||
