linux/include/linux/device.h
<<
>>
Prefs
   1/*
   2 * device.h - generic, centralized driver model
   3 *
   4 * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
   5 * Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de>
   6 * Copyright (c) 2008-2009 Novell Inc.
   7 *
   8 * This file is released under the GPLv2
   9 *
  10 * See Documentation/driver-model/ for more information.
  11 */
  12
  13#ifndef _DEVICE_H_
  14#define _DEVICE_H_
  15
  16#include <linux/ioport.h>
  17#include <linux/kobject.h>
  18#include <linux/klist.h>
  19#include <linux/list.h>
  20#include <linux/lockdep.h>
  21#include <linux/compiler.h>
  22#include <linux/types.h>
  23#include <linux/mutex.h>
  24#include <linux/pm.h>
  25#include <linux/atomic.h>
  26#include <asm/device.h>
  27
  28struct device;
  29struct device_private;
  30struct device_driver;
  31struct driver_private;
  32struct module;
  33struct class;
  34struct subsys_private;
  35struct bus_type;
  36struct device_node;
  37struct iommu_ops;
  38
  39struct bus_attribute {
  40        struct attribute        attr;
  41        ssize_t (*show)(struct bus_type *bus, char *buf);
  42        ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);
  43};
  44
  45#define BUS_ATTR(_name, _mode, _show, _store)   \
  46struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
  47
  48extern int __must_check bus_create_file(struct bus_type *,
  49                                        struct bus_attribute *);
  50extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
  51
  52/**
  53 * struct bus_type - The bus type of the device
  54 *
  55 * @name:       The name of the bus.
  56 * @bus_attrs:  Default attributes of the bus.
  57 * @dev_attrs:  Default attributes of the devices on the bus.
  58 * @drv_attrs:  Default attributes of the device drivers on the bus.
  59 * @match:      Called, perhaps multiple times, whenever a new device or driver
  60 *              is added for this bus. It should return a nonzero value if the
  61 *              given device can be handled by the given driver.
  62 * @uevent:     Called when a device is added, removed, or a few other things
  63 *              that generate uevents to add the environment variables.
  64 * @probe:      Called when a new device or driver add to this bus, and callback
  65 *              the specific driver's probe to initial the matched device.
  66 * @remove:     Called when a device removed from this bus.
  67 * @shutdown:   Called at shut-down time to quiesce the device.
  68 * @suspend:    Called when a device on this bus wants to go to sleep mode.
  69 * @resume:     Called to bring a device on this bus out of sleep mode.
  70 * @pm:         Power management operations of this bus, callback the specific
  71 *              device driver's pm-ops.
  72 * @iommu_ops:  IOMMU specific operations for this bus, used to attach IOMMU
  73 *              driver implementations to a bus and allow the driver to do
  74 *              bus-specific setup
  75 * @p:          The private data of the driver core, only the driver core can
  76 *              touch this.
  77 *
  78 * A bus is a channel between the processor and one or more devices. For the
  79 * purposes of the device model, all devices are connected via a bus, even if
  80 * it is an internal, virtual, "platform" bus. Buses can plug into each other.
  81 * A USB controller is usually a PCI device, for example. The device model
  82 * represents the actual connections between buses and the devices they control.
  83 * A bus is represented by the bus_type structure. It contains the name, the
  84 * default attributes, the bus' methods, PM operations, and the driver core's
  85 * private data.
  86 */
  87struct bus_type {
  88        const char              *name;
  89        struct bus_attribute    *bus_attrs;
  90        struct device_attribute *dev_attrs;
  91        struct driver_attribute *drv_attrs;
  92
  93        int (*match)(struct device *dev, struct device_driver *drv);
  94        int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
  95        int (*probe)(struct device *dev);
  96        int (*remove)(struct device *dev);
  97        void (*shutdown)(struct device *dev);
  98
  99        int (*suspend)(struct device *dev, pm_message_t state);
 100        int (*resume)(struct device *dev);
 101
 102        const struct dev_pm_ops *pm;
 103
 104        struct iommu_ops *iommu_ops;
 105
 106        struct subsys_private *p;
 107};
 108
 109extern int __must_check bus_register(struct bus_type *bus);
 110extern void bus_unregister(struct bus_type *bus);
 111
 112extern int __must_check bus_rescan_devices(struct bus_type *bus);
 113
 114/* iterator helpers for buses */
 115
 116int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data,
 117                     int (*fn)(struct device *dev, void *data));
 118struct device *bus_find_device(struct bus_type *bus, struct device *start,
 119                               void *data,
 120                               int (*match)(struct device *dev, void *data));
 121struct device *bus_find_device_by_name(struct bus_type *bus,
 122                                       struct device *start,
 123                                       const char *name);
 124
 125int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
 126                     void *data, int (*fn)(struct device_driver *, void *));
 127
 128void bus_sort_breadthfirst(struct bus_type *bus,
 129                           int (*compare)(const struct device *a,
 130                                          const struct device *b));
 131/*
 132 * Bus notifiers: Get notified of addition/removal of devices
 133 * and binding/unbinding of drivers to devices.
 134 * In the long run, it should be a replacement for the platform
 135 * notify hooks.
 136 */
 137struct notifier_block;
 138
 139extern int bus_register_notifier(struct bus_type *bus,
 140                                 struct notifier_block *nb);
 141extern int bus_unregister_notifier(struct bus_type *bus,
 142                                   struct notifier_block *nb);
 143
 144/* All 4 notifers below get called with the target struct device *
 145 * as an argument. Note that those functions are likely to be called
 146 * with the device lock held in the core, so be careful.
 147 */
 148#define BUS_NOTIFY_ADD_DEVICE           0x00000001 /* device added */
 149#define BUS_NOTIFY_DEL_DEVICE           0x00000002 /* device removed */
 150#define BUS_NOTIFY_BIND_DRIVER          0x00000003 /* driver about to be
 151                                                      bound */
 152#define BUS_NOTIFY_BOUND_DRIVER         0x00000004 /* driver bound to device */
 153#define BUS_NOTIFY_UNBIND_DRIVER        0x00000005 /* driver about to be
 154                                                      unbound */
 155#define BUS_NOTIFY_UNBOUND_DRIVER       0x00000006 /* driver is unbound
 156                                                      from the device */
 157
 158extern struct kset *bus_get_kset(struct bus_type *bus);
 159extern struct klist *bus_get_device_klist(struct bus_type *bus);
 160
 161/**
 162 * struct device_driver - The basic device driver structure
 163 * @name:       Name of the device driver.
 164 * @bus:        The bus which the device of this driver belongs to.
 165 * @owner:      The module owner.
 166 * @mod_name:   Used for built-in modules.
 167 * @suppress_bind_attrs: Disables bind/unbind via sysfs.
 168 * @of_match_table: The open firmware table.
 169 * @probe:      Called to query the existence of a specific device,
 170 *              whether this driver can work with it, and bind the driver
 171 *              to a specific device.
 172 * @remove:     Called when the device is removed from the system to
 173 *              unbind a device from this driver.
 174 * @shutdown:   Called at shut-down time to quiesce the device.
 175 * @suspend:    Called to put the device to sleep mode. Usually to a
 176 *              low power state.
 177 * @resume:     Called to bring a device from sleep mode.
 178 * @groups:     Default attributes that get created by the driver core
 179 *              automatically.
 180 * @pm:         Power management operations of the device which matched
 181 *              this driver.
 182 * @p:          Driver core's private data, no one other than the driver
 183 *              core can touch this.
 184 *
 185 * The device driver-model tracks all of the drivers known to the system.
 186 * The main reason for this tracking is to enable the driver core to match
 187 * up drivers with new devices. Once drivers are known objects within the
 188 * system, however, a number of other things become possible. Device drivers
 189 * can export information and configuration variables that are independent
 190 * of any specific device.
 191 */
 192struct device_driver {
 193        const char              *name;
 194        struct bus_type         *bus;
 195
 196        struct module           *owner;
 197        const char              *mod_name;      /* used for built-in modules */
 198
 199        bool suppress_bind_attrs;       /* disables bind/unbind via sysfs */
 200
 201        const struct of_device_id       *of_match_table;
 202
 203        int (*probe) (struct device *dev);
 204        int (*remove) (struct device *dev);
 205        void (*shutdown) (struct device *dev);
 206        int (*suspend) (struct device *dev, pm_message_t state);
 207        int (*resume) (struct device *dev);
 208        const struct attribute_group **groups;
 209
 210        const struct dev_pm_ops *pm;
 211
 212        struct driver_private *p;
 213};
 214
 215
 216extern int __must_check driver_register(struct device_driver *drv);
 217extern void driver_unregister(struct device_driver *drv);
 218
 219extern struct device_driver *get_driver(struct device_driver *drv);
 220extern void put_driver(struct device_driver *drv);
 221extern struct device_driver *driver_find(const char *name,
 222                                         struct bus_type *bus);
 223extern int driver_probe_done(void);
 224extern void wait_for_device_probe(void);
 225
 226
 227/* sysfs interface for exporting driver attributes */
 228
 229struct driver_attribute {
 230        struct attribute attr;
 231        ssize_t (*show)(struct device_driver *driver, char *buf);
 232        ssize_t (*store)(struct device_driver *driver, const char *buf,
 233                         size_t count);
 234};
 235
 236#define DRIVER_ATTR(_name, _mode, _show, _store)        \
 237struct driver_attribute driver_attr_##_name =           \
 238        __ATTR(_name, _mode, _show, _store)
 239
 240extern int __must_check driver_create_file(struct device_driver *driver,
 241                                        const struct driver_attribute *attr);
 242extern void driver_remove_file(struct device_driver *driver,
 243                               const struct driver_attribute *attr);
 244
 245extern int __must_check driver_add_kobj(struct device_driver *drv,
 246                                        struct kobject *kobj,
 247                                        const char *fmt, ...);
 248
 249extern int __must_check driver_for_each_device(struct device_driver *drv,
 250                                               struct device *start,
 251                                               void *data,
 252                                               int (*fn)(struct device *dev,
 253                                                         void *));
 254struct device *driver_find_device(struct device_driver *drv,
 255                                  struct device *start, void *data,
 256                                  int (*match)(struct device *dev, void *data));
 257
 258/**
 259 * struct class - device classes
 260 * @name:       Name of the class.
 261 * @owner:      The module owner.
 262 * @class_attrs: Default attributes of this class.
 263 * @dev_attrs:  Default attributes of the devices belong to the class.
 264 * @dev_bin_attrs: Default binary attributes of the devices belong to the class.
 265 * @dev_kobj:   The kobject that represents this class and links it into the hierarchy.
 266 * @dev_uevent: Called when a device is added, removed from this class, or a
 267 *              few other things that generate uevents to add the environment
 268 *              variables.
 269 * @devnode:    Callback to provide the devtmpfs.
 270 * @class_release: Called to release this class.
 271 * @dev_release: Called to release the device.
 272 * @suspend:    Used to put the device to sleep mode, usually to a low power
 273 *              state.
 274 * @resume:     Used to bring the device from the sleep mode.
 275 * @ns_type:    Callbacks so sysfs can detemine namespaces.
 276 * @namespace:  Namespace of the device belongs to this class.
 277 * @pm:         The default device power management operations of this class.
 278 * @p:          The private data of the driver core, no one other than the
 279 *              driver core can touch this.
 280 *
 281 * A class is a higher-level view of a device that abstracts out low-level
 282 * implementation details. Drivers may see a SCSI disk or an ATA disk, but,
 283 * at the class level, they are all simply disks. Classes allow user space
 284 * to work with devices based on what they do, rather than how they are
 285 * connected or how they work.
 286 */
 287struct class {
 288        const char              *name;
 289        struct module           *owner;
 290
 291        struct class_attribute          *class_attrs;
 292        struct device_attribute         *dev_attrs;
 293        struct bin_attribute            *dev_bin_attrs;
 294        struct kobject                  *dev_kobj;
 295
 296        int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
 297        char *(*devnode)(struct device *dev, mode_t *mode);
 298
 299        void (*class_release)(struct class *class);
 300        void (*dev_release)(struct device *dev);
 301
 302        int (*suspend)(struct device *dev, pm_message_t state);
 303        int (*resume)(struct device *dev);
 304
 305        const struct kobj_ns_type_operations *ns_type;
 306        const void *(*namespace)(struct device *dev);
 307
 308        const struct dev_pm_ops *pm;
 309
 310        struct subsys_private *p;
 311};
 312
 313struct class_dev_iter {
 314        struct klist_iter               ki;
 315        const struct device_type        *type;
 316};
 317
 318extern struct kobject *sysfs_dev_block_kobj;
 319extern struct kobject *sysfs_dev_char_kobj;
 320extern int __must_check __class_register(struct class *class,
 321                                         struct lock_class_key *key);
 322extern void class_unregister(struct class *class);
 323
 324/* This is a #define to keep the compiler from merging different
 325 * instances of the __key variable */
 326#define class_register(class)                   \
 327({                                              \
 328        static struct lock_class_key __key;     \
 329        __class_register(class, &__key);        \
 330})
 331
 332struct class_compat;
 333struct class_compat *class_compat_register(const char *name);
 334void class_compat_unregister(struct class_compat *cls);
 335int class_compat_create_link(struct class_compat *cls, struct device *dev,
 336                             struct device *device_link);
 337void class_compat_remove_link(struct class_compat *cls, struct device *dev,
 338                              struct device *device_link);
 339
 340extern void class_dev_iter_init(struct class_dev_iter *iter,
 341                                struct class *class,
 342                                struct device *start,
 343                                const struct device_type *type);
 344extern struct device *class_dev_iter_next(struct class_dev_iter *iter);
 345extern void class_dev_iter_exit(struct class_dev_iter *iter);
 346
 347extern int class_for_each_device(struct class *class, struct device *start,
 348                                 void *data,
 349                                 int (*fn)(struct device *dev, void *data));
 350extern struct device *class_find_device(struct class *class,
 351                                        struct device *start, void *data,
 352                                        int (*match)(struct device *, void *));
 353
 354struct class_attribute {
 355        struct attribute attr;
 356        ssize_t (*show)(struct class *class, struct class_attribute *attr,
 357                        char *buf);
 358        ssize_t (*store)(struct class *class, struct class_attribute *attr,
 359                        const char *buf, size_t count);
 360        const void *(*namespace)(struct class *class,
 361                                 const struct class_attribute *attr);
 362};
 363
 364#define CLASS_ATTR(_name, _mode, _show, _store)                 \
 365struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
 366
 367extern int __must_check class_create_file(struct class *class,
 368                                          const struct class_attribute *attr);
 369extern void class_remove_file(struct class *class,
 370                              const struct class_attribute *attr);
 371
 372/* Simple class attribute that is just a static string */
 373
 374struct class_attribute_string {
 375        struct class_attribute attr;
 376        char *str;
 377};
 378
 379/* Currently read-only only */
 380#define _CLASS_ATTR_STRING(_name, _mode, _str) \
 381        { __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
 382#define CLASS_ATTR_STRING(_name, _mode, _str) \
 383        struct class_attribute_string class_attr_##_name = \
 384                _CLASS_ATTR_STRING(_name, _mode, _str)
 385
 386extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
 387                        char *buf);
 388
 389struct class_interface {
 390        struct list_head        node;
 391        struct class            *class;
 392
 393        int (*add_dev)          (struct device *, struct class_interface *);
 394        void (*remove_dev)      (struct device *, struct class_interface *);
 395};
 396
 397extern int __must_check class_interface_register(struct class_interface *);
 398extern void class_interface_unregister(struct class_interface *);
 399
 400extern struct class * __must_check __class_create(struct module *owner,
 401                                                  const char *name,
 402                                                  struct lock_class_key *key);
 403extern void class_destroy(struct class *cls);
 404
 405/* This is a #define to keep the compiler from merging different
 406 * instances of the __key variable */
 407#define class_create(owner, name)               \
 408({                                              \
 409        static struct lock_class_key __key;     \
 410        __class_create(owner, name, &__key);    \
 411})
 412
 413/*
 414 * The type of device, "struct device" is embedded in. A class
 415 * or bus can contain devices of different types
 416 * like "partitions" and "disks", "mouse" and "event".
 417 * This identifies the device type and carries type-specific
 418 * information, equivalent to the kobj_type of a kobject.
 419 * If "name" is specified, the uevent will contain it in
 420 * the DEVTYPE variable.
 421 */
 422struct device_type {
 423        const char *name;
 424        const struct attribute_group **groups;
 425        int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
 426        char *(*devnode)(struct device *dev, mode_t *mode);
 427        void (*release)(struct device *dev);
 428
 429        const struct dev_pm_ops *pm;
 430};
 431
 432/* interface for exporting device attributes */
 433struct device_attribute {
 434        struct attribute        attr;
 435        ssize_t (*show)(struct device *dev, struct device_attribute *attr,
 436                        char *buf);
 437        ssize_t (*store)(struct device *dev, struct device_attribute *attr,
 438                         const char *buf, size_t count);
 439};
 440
 441#define DEVICE_ATTR(_name, _mode, _show, _store) \
 442struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
 443
 444extern int __must_check device_create_file(struct device *device,
 445                                        const struct device_attribute *entry);
 446extern void device_remove_file(struct device *dev,
 447                               const struct device_attribute *attr);
 448extern int __must_check device_create_bin_file(struct device *dev,
 449                                        const struct bin_attribute *attr);
 450extern void device_remove_bin_file(struct device *dev,
 451                                   const struct bin_attribute *attr);
 452extern int device_schedule_callback_owner(struct device *dev,
 453                void (*func)(struct device *dev), struct module *owner);
 454
 455/* This is a macro to avoid include problems with THIS_MODULE */
 456#define device_schedule_callback(dev, func)                     \
 457        device_schedule_callback_owner(dev, func, THIS_MODULE)
 458
 459/* device resource management */
 460typedef void (*dr_release_t)(struct device *dev, void *res);
 461typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
 462
 463#ifdef CONFIG_DEBUG_DEVRES
 464extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp,
 465                             const char *name);
 466#define devres_alloc(release, size, gfp) \
 467        __devres_alloc(release, size, gfp, #release)
 468#else
 469extern void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp);
 470#endif
 471extern void devres_free(void *res);
 472extern void devres_add(struct device *dev, void *res);
 473extern void *devres_find(struct device *dev, dr_release_t release,
 474                         dr_match_t match, void *match_data);
 475extern void *devres_get(struct device *dev, void *new_res,
 476                        dr_match_t match, void *match_data);
 477extern void *devres_remove(struct device *dev, dr_release_t release,
 478                           dr_match_t match, void *match_data);
 479extern int devres_destroy(struct device *dev, dr_release_t release,
 480                          dr_match_t match, void *match_data);
 481
 482/* devres group */
 483extern void * __must_check devres_open_group(struct device *dev, void *id,
 484                                             gfp_t gfp);
 485extern void devres_close_group(struct device *dev, void *id);
 486extern void devres_remove_group(struct device *dev, void *id);
 487extern int devres_release_group(struct device *dev, void *id);
 488
 489/* managed kzalloc/kfree for device drivers, no kmalloc, always use kzalloc */
 490extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);
 491extern void devm_kfree(struct device *dev, void *p);
 492
 493struct device_dma_parameters {
 494        /*
 495         * a low level driver may set these to teach IOMMU code about
 496         * sg limitations.
 497         */
 498        unsigned int max_segment_size;
 499        unsigned long segment_boundary_mask;
 500};
 501
 502/**
 503 * struct device - The basic device structure
 504 * @parent:     The device's "parent" device, the device to which it is attached.
 505 *              In most cases, a parent device is some sort of bus or host
 506 *              controller. If parent is NULL, the device, is a top-level device,
 507 *              which is not usually what you want.
 508 * @p:          Holds the private data of the driver core portions of the device.
 509 *              See the comment of the struct device_private for detail.
 510 * @kobj:       A top-level, abstract class from which other classes are derived.
 511 * @init_name:  Initial name of the device.
 512 * @type:       The type of device.
 513 *              This identifies the device type and carries type-specific
 514 *              information.
 515 * @mutex:      Mutex to synchronize calls to its driver.
 516 * @bus:        Type of bus device is on.
 517 * @driver:     Which driver has allocated this
 518 * @platform_data: Platform data specific to the device.
 519 *              Example: For devices on custom boards, as typical of embedded
 520 *              and SOC based hardware, Linux often uses platform_data to point
 521 *              to board-specific structures describing devices and how they
 522 *              are wired.  That can include what ports are available, chip
 523 *              variants, which GPIO pins act in what additional roles, and so
 524 *              on.  This shrinks the "Board Support Packages" (BSPs) and
 525 *              minimizes board-specific #ifdefs in drivers.
 526 * @power:      For device power management.
 527 *              See Documentation/power/devices.txt for details.
 528 * @pm_domain:  Provide callbacks that are executed during system suspend,
 529 *              hibernation, system resume and during runtime PM transitions
 530 *              along with subsystem-level and driver-level callbacks.
 531 * @numa_node:  NUMA node this device is close to.
 532 * @dma_mask:   Dma mask (if dma'ble device).
 533 * @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all
 534 *              hardware supports 64-bit addresses for consistent allocations
 535 *              such descriptors.
 536 * @dma_parms:  A low level driver may set these to teach IOMMU code about
 537 *              segment limitations.
 538 * @dma_pools:  Dma pools (if dma'ble device).
 539 * @dma_mem:    Internal for coherent mem override.
 540 * @archdata:   For arch-specific additions.
 541 * @of_node:    Associated device tree node.
 542 * @devt:       For creating the sysfs "dev".
 543 * @devres_lock: Spinlock to protect the resource of the device.
 544 * @devres_head: The resources list of the device.
 545 * @knode_class: The node used to add the device to the class list.
 546 * @class:      The class of the device.
 547 * @groups:     Optional attribute groups.
 548 * @release:    Callback to free the device after all references have
 549 *              gone away. This should be set by the allocator of the
 550 *              device (i.e. the bus driver that discovered the device).
 551 *
 552 * At the lowest level, every device in a Linux system is represented by an
 553 * instance of struct device. The device structure contains the information
 554 * that the device model core needs to model the system. Most subsystems,
 555 * however, track additional information about the devices they host. As a
 556 * result, it is rare for devices to be represented by bare device structures;
 557 * instead, that structure, like kobject structures, is usually embedded within
 558 * a higher-level representation of the device.
 559 */
 560struct device {
 561        struct device           *parent;
 562
 563        struct device_private   *p;
 564
 565        struct kobject kobj;
 566        const char              *init_name; /* initial name of the device */
 567        const struct device_type *type;
 568
 569        struct mutex            mutex;  /* mutex to synchronize calls to
 570                                         * its driver.
 571                                         */
 572
 573        struct bus_type *bus;           /* type of bus device is on */
 574        struct device_driver *driver;   /* which driver has allocated this
 575                                           device */
 576        void            *platform_data; /* Platform specific data, device
 577                                           core doesn't touch it */
 578        struct dev_pm_info      power;
 579        struct dev_pm_domain    *pm_domain;
 580
 581#ifdef CONFIG_NUMA
 582        int             numa_node;      /* NUMA node this device is close to */
 583#endif
 584        u64             *dma_mask;      /* dma mask (if dma'able device) */
 585        u64             coherent_dma_mask;/* Like dma_mask, but for
 586                                             alloc_coherent mappings as
 587                                             not all hardware supports
 588                                             64 bit addresses for consistent
 589                                             allocations such descriptors. */
 590
 591        struct device_dma_parameters *dma_parms;
 592
 593        struct list_head        dma_pools;      /* dma pools (if dma'ble) */
 594
 595        struct dma_coherent_mem *dma_mem; /* internal for coherent mem
 596                                             override */
 597        /* arch specific additions */
 598        struct dev_archdata     archdata;
 599
 600        struct device_node      *of_node; /* associated device tree node */
 601
 602        dev_t                   devt;   /* dev_t, creates the sysfs "dev" */
 603
 604        spinlock_t              devres_lock;
 605        struct list_head        devres_head;
 606
 607        struct klist_node       knode_class;
 608        struct class            *class;
 609        const struct attribute_group **groups;  /* optional groups */
 610
 611        void    (*release)(struct device *dev);
 612};
 613
 614/* Get the wakeup routines, which depend on struct device */
 615#include <linux/pm_wakeup.h>
 616
 617static inline const char *dev_name(const struct device *dev)
 618{
 619        /* Use the init name until the kobject becomes available */
 620        if (dev->init_name)
 621                return dev->init_name;
 622
 623        return kobject_name(&dev->kobj);
 624}
 625
 626extern __printf(2, 3)
 627int dev_set_name(struct device *dev, const char *name, ...);
 628
 629#ifdef CONFIG_NUMA
 630static inline int dev_to_node(struct device *dev)
 631{
 632        return dev->numa_node;
 633}
 634static inline void set_dev_node(struct device *dev, int node)
 635{
 636        dev->numa_node = node;
 637}
 638#else
 639static inline int dev_to_node(struct device *dev)
 640{
 641        return -1;
 642}
 643static inline void set_dev_node(struct device *dev, int node)
 644{
 645}
 646#endif
 647
 648static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
 649{
 650        return dev ? dev->power.subsys_data : NULL;
 651}
 652
 653static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
 654{
 655        return dev->kobj.uevent_suppress;
 656}
 657
 658static inline void dev_set_uevent_suppress(struct device *dev, int val)
 659{
 660        dev->kobj.uevent_suppress = val;
 661}
 662
 663static inline int device_is_registered(struct device *dev)
 664{
 665        return dev->kobj.state_in_sysfs;
 666}
 667
 668static inline void device_enable_async_suspend(struct device *dev)
 669{
 670        if (!dev->power.is_prepared)
 671                dev->power.async_suspend = true;
 672}
 673
 674static inline void device_disable_async_suspend(struct device *dev)
 675{
 676        if (!dev->power.is_prepared)
 677                dev->power.async_suspend = false;
 678}
 679
 680static inline bool device_async_suspend_enabled(struct device *dev)
 681{
 682        return !!dev->power.async_suspend;
 683}
 684
 685static inline void pm_suspend_ignore_children(struct device *dev, bool enable)
 686{
 687        dev->power.ignore_children = enable;
 688}
 689
 690static inline void device_lock(struct device *dev)
 691{
 692        mutex_lock(&dev->mutex);
 693}
 694
 695static inline int device_trylock(struct device *dev)
 696{
 697        return mutex_trylock(&dev->mutex);
 698}
 699
 700static inline void device_unlock(struct device *dev)
 701{
 702        mutex_unlock(&dev->mutex);
 703}
 704
 705void driver_init(void);
 706
 707/*
 708 * High level routines for use by the bus drivers
 709 */
 710extern int __must_check device_register(struct device *dev);
 711extern void device_unregister(struct device *dev);
 712extern void device_initialize(struct device *dev);
 713extern int __must_check device_add(struct device *dev);
 714extern void device_del(struct device *dev);
 715extern int device_for_each_child(struct device *dev, void *data,
 716                     int (*fn)(struct device *dev, void *data));
 717extern struct device *device_find_child(struct device *dev, void *data,
 718                                int (*match)(struct device *dev, void *data));
 719extern int device_rename(struct device *dev, const char *new_name);
 720extern int device_move(struct device *dev, struct device *new_parent,
 721                       enum dpm_order dpm_order);
 722extern const char *device_get_devnode(struct device *dev,
 723                                      mode_t *mode, const char **tmp);
 724extern void *dev_get_drvdata(const struct device *dev);
 725extern int dev_set_drvdata(struct device *dev, void *data);
 726
 727/*
 728 * Root device objects for grouping under /sys/devices
 729 */
 730extern struct device *__root_device_register(const char *name,
 731                                             struct module *owner);
 732
 733/*
 734 * This is a macro to avoid include problems with THIS_MODULE,
 735 * just as per what is done for device_schedule_callback() above.
 736 */
 737#define root_device_register(name) \
 738        __root_device_register(name, THIS_MODULE)
 739
 740extern void root_device_unregister(struct device *root);
 741
 742static inline void *dev_get_platdata(const struct device *dev)
 743{
 744        return dev->platform_data;
 745}
 746
 747/*
 748 * Manual binding of a device to driver. See drivers/base/bus.c
 749 * for information on use.
 750 */
 751extern int __must_check device_bind_driver(struct device *dev);
 752extern void device_release_driver(struct device *dev);
 753extern int  __must_check device_attach(struct device *dev);
 754extern int __must_check driver_attach(struct device_driver *drv);
 755extern int __must_check device_reprobe(struct device *dev);
 756
 757/*
 758 * Easy functions for dynamically creating devices on the fly
 759 */
 760extern struct device *device_create_vargs(struct class *cls,
 761                                          struct device *parent,
 762                                          dev_t devt,
 763                                          void *drvdata,
 764                                          const char *fmt,
 765                                          va_list vargs);
 766extern __printf(5, 6)
 767struct device *device_create(struct class *cls, struct device *parent,
 768                             dev_t devt, void *drvdata,
 769                             const char *fmt, ...);
 770extern void device_destroy(struct class *cls, dev_t devt);
 771
 772/*
 773 * Platform "fixup" functions - allow the platform to have their say
 774 * about devices and actions that the general device layer doesn't
 775 * know about.
 776 */
 777/* Notify platform of device discovery */
 778extern int (*platform_notify)(struct device *dev);
 779
 780extern int (*platform_notify_remove)(struct device *dev);
 781
 782
 783/*
 784 * get_device - atomically increment the reference count for the device.
 785 *
 786 */
 787extern struct device *get_device(struct device *dev);
 788extern void put_device(struct device *dev);
 789
 790extern void wait_for_device_probe(void);
 791
 792#ifdef CONFIG_DEVTMPFS
 793extern int devtmpfs_create_node(struct device *dev);
 794extern int devtmpfs_delete_node(struct device *dev);
 795extern int devtmpfs_mount(const char *mntdir);
 796#else
 797static inline int devtmpfs_create_node(struct device *dev) { return 0; }
 798static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
 799static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
 800#endif
 801
 802/* drivers/base/power/shutdown.c */
 803extern void device_shutdown(void);
 804
 805/* debugging and troubleshooting/diagnostic helpers. */
 806extern const char *dev_driver_string(const struct device *dev);
 807
 808
 809#ifdef CONFIG_PRINTK
 810
 811extern int __dev_printk(const char *level, const struct device *dev,
 812                        struct va_format *vaf);
 813extern __printf(3, 4)
 814int dev_printk(const char *level, const struct device *dev,
 815               const char *fmt, ...)
 816        ;
 817extern __printf(2, 3)
 818int dev_emerg(const struct device *dev, const char *fmt, ...);
 819extern __printf(2, 3)
 820int dev_alert(const struct device *dev, const char *fmt, ...);
 821extern __printf(2, 3)
 822int dev_crit(const struct device *dev, const char *fmt, ...);
 823extern __printf(2, 3)
 824int dev_err(const struct device *dev, const char *fmt, ...);
 825extern __printf(2, 3)
 826int dev_warn(const struct device *dev, const char *fmt, ...);
 827extern __printf(2, 3)
 828int dev_notice(const struct device *dev, const char *fmt, ...);
 829extern __printf(2, 3)
 830int _dev_info(const struct device *dev, const char *fmt, ...);
 831
 832#else
 833
 834static inline int __dev_printk(const char *level, const struct device *dev,
 835                               struct va_format *vaf)
 836{ return 0; }
 837static inline __printf(3, 4)
 838int dev_printk(const char *level, const struct device *dev,
 839               const char *fmt, ...)
 840{ return 0; }
 841
 842static inline __printf(2, 3)
 843int dev_emerg(const struct device *dev, const char *fmt, ...)
 844{ return 0; }
 845static inline __printf(2, 3)
 846int dev_crit(const struct device *dev, const char *fmt, ...)
 847{ return 0; }
 848static inline __printf(2, 3)
 849int dev_alert(const struct device *dev, const char *fmt, ...)
 850{ return 0; }
 851static inline __printf(2, 3)
 852int dev_err(const struct device *dev, const char *fmt, ...)
 853{ return 0; }
 854static inline __printf(2, 3)
 855int dev_warn(const struct device *dev, const char *fmt, ...)
 856{ return 0; }
 857static inline __printf(2, 3)
 858int dev_notice(const struct device *dev, const char *fmt, ...)
 859{ return 0; }
 860static inline __printf(2, 3)
 861int _dev_info(const struct device *dev, const char *fmt, ...)
 862{ return 0; }
 863
 864#endif
 865
 866/*
 867 * Stupid hackaround for existing uses of non-printk uses dev_info
 868 *
 869 * Note that the definition of dev_info below is actually _dev_info
 870 * and a macro is used to avoid redefining dev_info
 871 */
 872
 873#define dev_info(dev, fmt, arg...) _dev_info(dev, fmt, ##arg)
 874
 875#if defined(DEBUG)
 876#define dev_dbg(dev, format, arg...)            \
 877        dev_printk(KERN_DEBUG, dev, format, ##arg)
 878#elif defined(CONFIG_DYNAMIC_DEBUG)
 879#define dev_dbg(dev, format, ...)                    \
 880do {                                                 \
 881        dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
 882} while (0)
 883#else
 884#define dev_dbg(dev, format, arg...)                            \
 885({                                                              \
 886        if (0)                                                  \
 887                dev_printk(KERN_DEBUG, dev, format, ##arg);     \
 888        0;                                                      \
 889})
 890#endif
 891
 892#ifdef VERBOSE_DEBUG
 893#define dev_vdbg        dev_dbg
 894#else
 895#define dev_vdbg(dev, format, arg...)                           \
 896({                                                              \
 897        if (0)                                                  \
 898                dev_printk(KERN_DEBUG, dev, format, ##arg);     \
 899        0;                                                      \
 900})
 901#endif
 902
 903/*
 904 * dev_WARN*() acts like dev_printk(), but with the key difference
 905 * of using a WARN/WARN_ON to get the message out, including the
 906 * file/line information and a backtrace.
 907 */
 908#define dev_WARN(dev, format, arg...) \
 909        WARN(1, "Device: %s\n" format, dev_driver_string(dev), ## arg);
 910
 911#define dev_WARN_ONCE(dev, condition, format, arg...) \
 912        WARN_ONCE(condition, "Device %s\n" format, \
 913                        dev_driver_string(dev), ## arg)
 914
 915/* Create alias, so I can be autoloaded. */
 916#define MODULE_ALIAS_CHARDEV(major,minor) \
 917        MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
 918#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
 919        MODULE_ALIAS("char-major-" __stringify(major) "-*")
 920
 921#ifdef CONFIG_SYSFS_DEPRECATED
 922extern long sysfs_deprecated;
 923#else
 924#define sysfs_deprecated 0
 925#endif
 926
 927#endif /* _DEVICE_H_ */
 928
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.