]> err.no Git - linux-2.6/blobdiff - include/linux/device.h
Pull style into test branch
[linux-2.6] / include / linux / device.h
index 00b29e0c5ce0fc62345bd17652cc9198ca30453f..49ab53ce92dc5d79a55218192de5a9b60d8934a0 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/pm.h>
 #include <asm/semaphore.h>
 #include <asm/atomic.h>
+#include <asm/device.h>
 
 #define DEVICE_NAME_SIZE       50
 #define DEVICE_NAME_HALF       __stringify(20) /* Less than half to accommodate slop */
@@ -368,10 +369,11 @@ struct device {
        void            *driver_data;   /* data private to the driver */
        void            *platform_data; /* Platform specific data, device
                                           core doesn't touch it */
-       void            *firmware_data; /* Firmware specific data (e.g. ACPI,
-                                          BIOS data),reserved for device core*/
        struct dev_pm_info      power;
 
+#ifdef CONFIG_NUMA
+       int             numa_node;      /* NUMA node this device is close to */
+#endif
        u64             *dma_mask;      /* dma mask (if dma'able device) */
        u64             coherent_dma_mask;/* Like dma_mask, but for
                                             alloc_coherent mappings as
@@ -383,6 +385,8 @@ struct device {
 
        struct dma_coherent_mem *dma_mem; /* internal for coherent mem
                                             override */
+       /* arch specific additions */
+       struct dev_archdata     archdata;
 
        /* class_device migration path */
        struct list_head        node;
@@ -393,6 +397,25 @@ struct device {
        void    (*release)(struct device * dev);
 };
 
+#ifdef CONFIG_NUMA
+static inline int dev_to_node(struct device *dev)
+{
+       return dev->numa_node;
+}
+static inline void set_dev_node(struct device *dev, int node)
+{
+       dev->numa_node = node;
+}
+#else
+static inline int dev_to_node(struct device *dev)
+{
+       return -1;
+}
+static inline void set_dev_node(struct device *dev, int node)
+{
+}
+#endif
+
 static inline void *
 dev_get_drvdata (struct device *dev)
 {
@@ -420,7 +443,10 @@ extern int __must_check device_add(struct device * dev);
 extern void device_del(struct device * dev);
 extern int device_for_each_child(struct device *, void *,
                     int (*fn)(struct device *, void *));
+extern struct device *device_find_child(struct device *, void *data,
+                                       int (*match)(struct device *, void *));
 extern int device_rename(struct device *dev, char *new_name);
+extern int device_move(struct device *dev, struct device *new_parent);
 
 /*
  * Manual binding of a device to driver. See drivers/base/bus.c