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