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