1
2
3
4
5
6
7
8
9
10
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89struct bus_type {
90 const char *name;
91 const char *dev_name;
92 struct device *dev_root;
93 struct bus_attribute *bus_attrs;
94 struct device_attribute *dev_attrs;
95 struct driver_attribute *drv_attrs;
96
97 int (*match)(struct device *dev, struct device_driver *drv);
98 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
99 int (*probe)(struct device *dev);
100 int (*remove)(struct device *dev);
101 void (*shutdown)(struct device *dev);
102
103 int (*suspend)(struct device *dev, pm_message_t state);
104 int (*resume)(struct device *dev);
105
106 const struct dev_pm_ops *pm;
107
108 struct iommu_ops *iommu_ops;
109
110 struct subsys_private *p;
111};
112
113
114
115#define bus_register(subsys) \
116({ \
117 static struct lock_class_key __key; \
118 __bus_register(subsys, &__key); \
119})
120extern int __must_check __bus_register(struct bus_type *bus,
121 struct lock_class_key *key);
122extern void bus_unregister(struct bus_type *bus);
123
124extern int __must_check bus_rescan_devices(struct bus_type *bus);
125
126
127struct subsys_dev_iter {
128 struct klist_iter ki;
129 const struct device_type *type;
130};
131void subsys_dev_iter_init(struct subsys_dev_iter *iter,
132 struct bus_type *subsys,
133 struct device *start,
134 const struct device_type *type);
135struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter);
136void subsys_dev_iter_exit(struct subsys_dev_iter *iter);
137
138int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data,
139 int (*fn)(struct device *dev, void *data));
140struct device *bus_find_device(struct bus_type *bus, struct device *start,
141 void *data,
142 int (*match)(struct device *dev, void *data));
143struct device *bus_find_device_by_name(struct bus_type *bus,
144 struct device *start,
145 const char *name);
146struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int id,
147 struct device *hint);
148int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
149 void *data, int (*fn)(struct device_driver *, void *));
150void bus_sort_breadthfirst(struct bus_type *bus,
151 int (*compare)(const struct device *a,
152 const struct device *b));
153
154
155
156
157
158
159struct notifier_block;
160
161extern int bus_register_notifier(struct bus_type *bus,
162 struct notifier_block *nb);
163extern int bus_unregister_notifier(struct bus_type *bus,
164 struct notifier_block *nb);
165
166
167
168
169
170#define BUS_NOTIFY_ADD_DEVICE 0x00000001
171#define BUS_NOTIFY_DEL_DEVICE 0x00000002
172#define BUS_NOTIFY_BIND_DRIVER 0x00000003
173
174#define BUS_NOTIFY_BOUND_DRIVER 0x00000004
175#define BUS_NOTIFY_UNBIND_DRIVER 0x00000005
176
177#define BUS_NOTIFY_UNBOUND_DRIVER 0x00000006
178
179
180extern struct kset *bus_get_kset(struct bus_type *bus);
181extern struct klist *bus_get_device_klist(struct bus_type *bus);
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214struct device_driver {
215 const char *name;
216 struct bus_type *bus;
217
218 struct module *owner;
219 const char *mod_name;
220
221 bool suppress_bind_attrs;
222
223 const struct of_device_id *of_match_table;
224
225 int (*probe) (struct device *dev);
226 int (*remove) (struct device *dev);
227 void (*shutdown) (struct device *dev);
228 int (*suspend) (struct device *dev, pm_message_t state);
229 int (*resume) (struct device *dev);
230 const struct attribute_group **groups;
231
232 const struct dev_pm_ops *pm;
233
234 struct driver_private *p;
235};
236
237
238extern int __must_check driver_register(struct device_driver *drv);
239extern void driver_unregister(struct device_driver *drv);
240
241extern struct device_driver *get_driver(struct device_driver *drv);
242extern void put_driver(struct device_driver *drv);
243extern struct device_driver *driver_find(const char *name,
244 struct bus_type *bus);
245extern int driver_probe_done(void);
246extern void wait_for_device_probe(void);
247
248
249
250
251struct driver_attribute {
252 struct attribute attr;
253 ssize_t (*show)(struct device_driver *driver, char *buf);
254 ssize_t (*store)(struct device_driver *driver, const char *buf,
255 size_t count);
256};
257
258#define DRIVER_ATTR(_name, _mode, _show, _store) \
259struct driver_attribute driver_attr_##_name = \
260 __ATTR(_name, _mode, _show, _store)
261
262extern int __must_check driver_create_file(struct device_driver *driver,
263 const struct driver_attribute *attr);
264extern void driver_remove_file(struct device_driver *driver,
265 const struct driver_attribute *attr);
266
267extern int __must_check driver_add_kobj(struct device_driver *drv,
268 struct kobject *kobj,
269 const char *fmt, ...);
270
271extern int __must_check driver_for_each_device(struct device_driver *drv,
272 struct device *start,
273 void *data,
274 int (*fn)(struct device *dev,
275 void *));
276struct device *driver_find_device(struct device_driver *drv,
277 struct device *start, void *data,
278 int (*match)(struct device *dev, void *data));
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293struct subsys_interface {
294 const char *name;
295 struct bus_type *subsys;
296 struct list_head node;
297 int (*add_dev)(struct device *dev, struct subsys_interface *sif);
298 int (*remove_dev)(struct device *dev, struct subsys_interface *sif);
299};
300
301int subsys_interface_register(struct subsys_interface *sif);
302void subsys_interface_unregister(struct subsys_interface *sif);
303
304int subsys_system_register(struct bus_type *subsys,
305 const struct attribute_group **groups);
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336struct class {
337 const char *name;
338 struct module *owner;
339
340 struct class_attribute *class_attrs;
341 struct device_attribute *dev_attrs;
342 struct bin_attribute *dev_bin_attrs;
343 struct kobject *dev_kobj;
344
345 int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
346 char *(*devnode)(struct device *dev, umode_t *mode);
347
348 void (*class_release)(struct class *class);
349 void (*dev_release)(struct device *dev);
350
351 int (*suspend)(struct device *dev, pm_message_t state);
352 int (*resume)(struct device *dev);
353
354 const struct kobj_ns_type_operations *ns_type;
355 const void *(*namespace)(struct device *dev);
356
357 const struct dev_pm_ops *pm;
358
359 struct subsys_private *p;
360};
361
362struct class_dev_iter {
363 struct klist_iter ki;
364 const struct device_type *type;
365};
366
367extern struct kobject *sysfs_dev_block_kobj;
368extern struct kobject *sysfs_dev_char_kobj;
369extern int __must_check __class_register(struct class *class,
370 struct lock_class_key *key);
371extern void class_unregister(struct class *class);
372
373
374
375#define class_register(class) \
376({ \
377 static struct lock_class_key __key; \
378 __class_register(class, &__key); \
379})
380
381struct class_compat;
382struct class_compat *class_compat_register(const char *name);
383void class_compat_unregister(struct class_compat *cls);
384int class_compat_create_link(struct class_compat *cls, struct device *dev,
385 struct device *device_link);
386void class_compat_remove_link(struct class_compat *cls, struct device *dev,
387 struct device *device_link);
388
389extern void class_dev_iter_init(struct class_dev_iter *iter,
390 struct class *class,
391 struct device *start,
392 const struct device_type *type);
393extern struct device *class_dev_iter_next(struct class_dev_iter *iter);
394extern void class_dev_iter_exit(struct class_dev_iter *iter);
395
396extern int class_for_each_device(struct class *class, struct device *start,
397 void *data,
398 int (*fn)(struct device *dev, void *data));
399extern struct device *class_find_device(struct class *class,
400 struct device *start, void *data,
401 int (*match)(struct device *, void *));
402
403struct class_attribute {
404 struct attribute attr;
405 ssize_t (*show)(struct class *class, struct class_attribute *attr,
406 char *buf);
407 ssize_t (*store)(struct class *class, struct class_attribute *attr,
408 const char *buf, size_t count);
409 const void *(*namespace)(struct class *class,
410 const struct class_attribute *attr);
411};
412
413#define CLASS_ATTR(_name, _mode, _show, _store) \
414struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
415
416extern int __must_check class_create_file(struct class *class,
417 const struct class_attribute *attr);
418extern void class_remove_file(struct class *class,
419 const struct class_attribute *attr);
420
421
422
423struct class_attribute_string {
424 struct class_attribute attr;
425 char *str;
426};
427
428
429#define _CLASS_ATTR_STRING(_name, _mode, _str) \
430 { __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
431#define CLASS_ATTR_STRING(_name, _mode, _str) \
432 struct class_attribute_string class_attr_##_name = \
433 _CLASS_ATTR_STRING(_name, _mode, _str)
434
435extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
436 char *buf);
437
438struct class_interface {
439 struct list_head node;
440 struct class *class;
441
442 int (*add_dev) (struct device *, struct class_interface *);
443 void (*remove_dev) (struct device *, struct class_interface *);
444};
445
446extern int __must_check class_interface_register(struct class_interface *);
447extern void class_interface_unregister(struct class_interface *);
448
449extern struct class * __must_check __class_create(struct module *owner,
450 const char *name,
451 struct lock_class_key *key);
452extern void class_destroy(struct class *cls);
453
454
455
456#define class_create(owner, name) \
457({ \
458 static struct lock_class_key __key; \
459 __class_create(owner, name, &__key); \
460})
461
462
463
464
465
466
467
468
469
470
471struct device_type {
472 const char *name;
473 const struct attribute_group **groups;
474 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
475 char *(*devnode)(struct device *dev, umode_t *mode);
476 void (*release)(struct device *dev);
477
478 const struct dev_pm_ops *pm;
479};
480
481
482struct device_attribute {
483 struct attribute attr;
484 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
485 char *buf);
486 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
487 const char *buf, size_t count);
488};
489
490struct dev_ext_attribute {
491 struct device_attribute attr;
492 void *var;
493};
494
495ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
496 char *buf);
497ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr,
498 const char *buf, size_t count);
499ssize_t device_show_int(struct device *dev, struct device_attribute *attr,
500 char *buf);
501ssize_t device_store_int(struct device *dev, struct device_attribute *attr,
502 const char *buf, size_t count);
503
504#define DEVICE_ATTR(_name, _mode, _show, _store) \
505 struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
506#define DEVICE_ULONG_ATTR(_name, _mode, _var) \
507 struct dev_ext_attribute dev_attr_##_name = \
508 { __ATTR(_name, _mode, device_show_ulong, device_store_ulong), &(_var) }
509#define DEVICE_INT_ATTR(_name, _mode, _var) \
510 struct dev_ext_attribute dev_attr_##_name = \
511 { __ATTR(_name, _mode, device_show_ulong, device_store_ulong), &(_var) }
512
513extern int device_create_file(struct device *device,
514 const struct device_attribute *entry);
515extern void device_remove_file(struct device *dev,
516 const struct device_attribute *attr);
517extern int __must_check device_create_bin_file(struct device *dev,
518 const struct bin_attribute *attr);
519extern void device_remove_bin_file(struct device *dev,
520 const struct bin_attribute *attr);
521extern int device_schedule_callback_owner(struct device *dev,
522 void (*func)(struct device *dev), struct module *owner);
523
524
525#define device_schedule_callback(dev, func) \
526 device_schedule_callback_owner(dev, func, THIS_MODULE)
527
528
529typedef void (*dr_release_t)(struct device *dev, void *res);
530typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
531
532#ifdef CONFIG_DEBUG_DEVRES
533extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp,
534 const char *name);
535#define devres_alloc(release, size, gfp) \
536 __devres_alloc(release, size, gfp, #release)
537#else
538extern void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp);
539#endif
540extern void devres_free(void *res);
541extern void devres_add(struct device *dev, void *res);
542extern void *devres_find(struct device *dev, dr_release_t release,
543 dr_match_t match, void *match_data);
544extern void *devres_get(struct device *dev, void *new_res,
545 dr_match_t match, void *match_data);
546extern void *devres_remove(struct device *dev, dr_release_t release,
547 dr_match_t match, void *match_data);
548extern int devres_destroy(struct device *dev, dr_release_t release,
549 dr_match_t match, void *match_data);
550
551
552extern void * __must_check devres_open_group(struct device *dev, void *id,
553 gfp_t gfp);
554extern void devres_close_group(struct device *dev, void *id);
555extern void devres_remove_group(struct device *dev, void *id);
556extern int devres_release_group(struct device *dev, void *id);
557
558
559extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);
560extern void devm_kfree(struct device *dev, void *p);
561
562void __iomem *devm_request_and_ioremap(struct device *dev,
563 struct resource *res);
564
565struct device_dma_parameters {
566
567
568
569
570 unsigned int max_segment_size;
571 unsigned long segment_boundary_mask;
572};
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633struct device {
634 struct device *parent;
635
636 struct device_private *p;
637
638 struct kobject kobj;
639 const char *init_name;
640 const struct device_type *type;
641
642 struct mutex mutex;
643
644
645
646 struct bus_type *bus;
647 struct device_driver *driver;
648
649 void *platform_data;
650
651 struct dev_pm_info power;
652 struct dev_pm_domain *pm_domain;
653
654#ifdef CONFIG_NUMA
655 int numa_node;
656#endif
657 u64 *dma_mask;
658 u64 coherent_dma_mask;
659
660
661
662
663
664 struct device_dma_parameters *dma_parms;
665
666 struct list_head dma_pools;
667
668 struct dma_coherent_mem *dma_mem;
669
670
671 struct dev_archdata archdata;
672
673 struct device_node *of_node;
674
675 dev_t devt;
676 u32 id;
677
678 spinlock_t devres_lock;
679 struct list_head devres_head;
680
681 struct klist_node knode_class;
682 struct class *class;
683 const struct attribute_group **groups;
684
685 void (*release)(struct device *dev);
686};
687
688
689#include <linux/pm_wakeup.h>
690
691static inline const char *dev_name(const struct device *dev)
692{
693
694 if (dev->init_name)
695 return dev->init_name;
696
697 return kobject_name(&dev->kobj);
698}
699
700extern __printf(2, 3)
701int dev_set_name(struct device *dev, const char *name, ...);
702
703#ifdef CONFIG_NUMA
704static inline int dev_to_node(struct device *dev)
705{
706 return dev->numa_node;
707}
708static inline void set_dev_node(struct device *dev, int node)
709{
710 dev->numa_node = node;
711}
712#else
713static inline int dev_to_node(struct device *dev)
714{
715 return -1;
716}
717static inline void set_dev_node(struct device *dev, int node)
718{
719}
720#endif
721
722static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
723{
724 return dev ? dev->power.subsys_data : NULL;
725}
726
727static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
728{
729 return dev->kobj.uevent_suppress;
730}
731
732static inline void dev_set_uevent_suppress(struct device *dev, int val)
733{
734 dev->kobj.uevent_suppress = val;
735}
736
737static inline int device_is_registered(struct device *dev)
738{
739 return dev->kobj.state_in_sysfs;
740}
741
742static inline void device_enable_async_suspend(struct device *dev)
743{
744 if (!dev->power.is_prepared)
745 dev->power.async_suspend = true;
746}
747
748static inline void device_disable_async_suspend(struct device *dev)
749{
750 if (!dev->power.is_prepared)
751 dev->power.async_suspend = false;
752}
753
754static inline bool device_async_suspend_enabled(struct device *dev)
755{
756 return !!dev->power.async_suspend;
757}
758
759static inline void pm_suspend_ignore_children(struct device *dev, bool enable)
760{
761 dev->power.ignore_children = enable;
762}
763
764static inline void device_lock(struct device *dev)
765{
766 mutex_lock(&dev->mutex);
767}
768
769static inline int device_trylock(struct device *dev)
770{
771 return mutex_trylock(&dev->mutex);
772}
773
774static inline void device_unlock(struct device *dev)
775{
776 mutex_unlock(&dev->mutex);
777}
778
779void driver_init(void);
780
781
782
783
784extern int __must_check device_register(struct device *dev);
785extern void device_unregister(struct device *dev);
786extern void device_initialize(struct device *dev);
787extern int __must_check device_add(struct device *dev);
788extern void device_del(struct device *dev);
789extern int device_for_each_child(struct device *dev, void *data,
790 int (*fn)(struct device *dev, void *data));
791extern struct device *device_find_child(struct device *dev, void *data,
792 int (*match)(struct device *dev, void *data));
793extern int device_rename(struct device *dev, const char *new_name);
794extern int device_move(struct device *dev, struct device *new_parent,
795 enum dpm_order dpm_order);
796extern const char *device_get_devnode(struct device *dev,
797 umode_t *mode, const char **tmp);
798extern void *dev_get_drvdata(const struct device *dev);
799extern int dev_set_drvdata(struct device *dev, void *data);
800
801
802
803
804extern struct device *__root_device_register(const char *name,
805 struct module *owner);
806
807
808
809
810
811#define root_device_register(name) \
812 __root_device_register(name, THIS_MODULE)
813
814extern void root_device_unregister(struct device *root);
815
816static inline void *dev_get_platdata(const struct device *dev)
817{
818 return dev->platform_data;
819}
820
821
822
823
824
825extern int __must_check device_bind_driver(struct device *dev);
826extern void device_release_driver(struct device *dev);
827extern int __must_check device_attach(struct device *dev);
828extern int __must_check driver_attach(struct device_driver *drv);
829extern int __must_check device_reprobe(struct device *dev);
830
831
832
833
834extern struct device *device_create_vargs(struct class *cls,
835 struct device *parent,
836 dev_t devt,
837 void *drvdata,
838 const char *fmt,
839 va_list vargs);
840extern __printf(5, 6)
841struct device *device_create(struct class *cls, struct device *parent,
842 dev_t devt, void *drvdata,
843 const char *fmt, ...);
844extern void device_destroy(struct class *cls, dev_t devt);
845
846
847
848
849
850
851
852extern int (*platform_notify)(struct device *dev);
853
854extern int (*platform_notify_remove)(struct device *dev);
855
856
857
858
859
860
861extern struct device *get_device(struct device *dev);
862extern void put_device(struct device *dev);
863
864extern void wait_for_device_probe(void);
865
866#ifdef CONFIG_DEVTMPFS
867extern int devtmpfs_create_node(struct device *dev);
868extern int devtmpfs_delete_node(struct device *dev);
869extern int devtmpfs_mount(const char *mntdir);
870#else
871static inline int devtmpfs_create_node(struct device *dev) { return 0; }
872static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
873static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
874#endif
875
876
877extern void device_shutdown(void);
878
879
880extern const char *dev_driver_string(const struct device *dev);
881
882
883#ifdef CONFIG_PRINTK
884
885extern int __dev_printk(const char *level, const struct device *dev,
886 struct va_format *vaf);
887extern __printf(3, 4)
888int dev_printk(const char *level, const struct device *dev,
889 const char *fmt, ...)
890 ;
891extern __printf(2, 3)
892int dev_emerg(const struct device *dev, const char *fmt, ...);
893extern __printf(2, 3)
894int dev_alert(const struct device *dev, const char *fmt, ...);
895extern __printf(2, 3)
896int dev_crit(const struct device *dev, const char *fmt, ...);
897extern __printf(2, 3)
898int dev_err(const struct device *dev, const char *fmt, ...);
899extern __printf(2, 3)
900int dev_warn(const struct device *dev, const char *fmt, ...);
901extern __printf(2, 3)
902int dev_notice(const struct device *dev, const char *fmt, ...);
903extern __printf(2, 3)
904int _dev_info(const struct device *dev, const char *fmt, ...);
905
906#else
907
908static inline int __dev_printk(const char *level, const struct device *dev,
909 struct va_format *vaf)
910{ return 0; }
911static inline __printf(3, 4)
912int dev_printk(const char *level, const struct device *dev,
913 const char *fmt, ...)
914{ return 0; }
915
916static inline __printf(2, 3)
917int dev_emerg(const struct device *dev, const char *fmt, ...)
918{ return 0; }
919static inline __printf(2, 3)
920int dev_crit(const struct device *dev, const char *fmt, ...)
921{ return 0; }
922static inline __printf(2, 3)
923int dev_alert(const struct device *dev, const char *fmt, ...)
924{ return 0; }
925static inline __printf(2, 3)
926int dev_err(const struct device *dev, const char *fmt, ...)
927{ return 0; }
928static inline __printf(2, 3)
929int dev_warn(const struct device *dev, const char *fmt, ...)
930{ return 0; }
931static inline __printf(2, 3)
932int dev_notice(const struct device *dev, const char *fmt, ...)
933{ return 0; }
934static inline __printf(2, 3)
935int _dev_info(const struct device *dev, const char *fmt, ...)
936{ return 0; }
937
938#endif
939
940
941
942
943
944
945
946
947#define dev_info(dev, fmt, arg...) _dev_info(dev, fmt, ##arg)
948
949#if defined(DEBUG)
950#define dev_dbg(dev, format, arg...) \
951 dev_printk(KERN_DEBUG, dev, format, ##arg)
952#elif defined(CONFIG_DYNAMIC_DEBUG)
953#define dev_dbg(dev, format, ...) \
954do { \
955 dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
956} while (0)
957#else
958#define dev_dbg(dev, format, arg...) \
959({ \
960 if (0) \
961 dev_printk(KERN_DEBUG, dev, format, ##arg); \
962 0; \
963})
964#endif
965
966#ifdef VERBOSE_DEBUG
967#define dev_vdbg dev_dbg
968#else
969#define dev_vdbg(dev, format, arg...) \
970({ \
971 if (0) \
972 dev_printk(KERN_DEBUG, dev, format, ##arg); \
973 0; \
974})
975#endif
976
977
978
979
980
981
982#define dev_WARN(dev, format, arg...) \
983 WARN(1, "Device: %s\n" format, dev_driver_string(dev), ## arg);
984
985#define dev_WARN_ONCE(dev, condition, format, arg...) \
986 WARN_ONCE(condition, "Device %s\n" format, \
987 dev_driver_string(dev), ## arg)
988
989
990#define MODULE_ALIAS_CHARDEV(major,minor) \
991 MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
992#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
993 MODULE_ALIAS("char-major-" __stringify(major) "-*")
994
995#ifdef CONFIG_SYSFS_DEPRECATED
996extern long sysfs_deprecated;
997#else
998#define sysfs_deprecated 0
999#endif
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014#define module_driver(__driver, __register, __unregister) \
1015static int __init __driver##_init(void) \
1016{ \
1017 return __register(&(__driver)); \
1018} \
1019module_init(__driver##_init); \
1020static void __exit __driver##_exit(void) \
1021{ \
1022 __unregister(&(__driver)); \
1023} \
1024module_exit(__driver##_exit);
1025
1026#endif
1027