1
2
3
4
5
6
7
8
9
10
11
12#ifndef _DEVICE_H_
13#define _DEVICE_H_
14
15#include <linux/ioport.h>
16#include <linux/kobject.h>
17#include <linux/klist.h>
18#include <linux/list.h>
19#include <linux/lockdep.h>
20#include <linux/compiler.h>
21#include <linux/types.h>
22#include <linux/mutex.h>
23#include <linux/pm.h>
24#include <linux/atomic.h>
25#include <linux/ratelimit.h>
26#include <linux/uidgid.h>
27#include <linux/gfp.h>
28#include <linux/overflow.h>
29#include <asm/device.h>
30
31struct device;
32struct device_private;
33struct device_driver;
34struct driver_private;
35struct module;
36struct class;
37struct subsys_private;
38struct bus_type;
39struct device_node;
40struct fwnode_handle;
41struct iommu_ops;
42struct iommu_group;
43struct iommu_fwspec;
44struct dev_pin_info;
45
46struct bus_attribute {
47 struct attribute attr;
48 ssize_t (*show)(struct bus_type *bus, char *buf);
49 ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);
50};
51
52#define BUS_ATTR(_name, _mode, _show, _store) \
53 struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
54#define BUS_ATTR_RW(_name) \
55 struct bus_attribute bus_attr_##_name = __ATTR_RW(_name)
56#define BUS_ATTR_RO(_name) \
57 struct bus_attribute bus_attr_##_name = __ATTR_RO(_name)
58
59extern int __must_check bus_create_file(struct bus_type *,
60 struct bus_attribute *);
61extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114struct bus_type {
115 const char *name;
116 const char *dev_name;
117 struct device *dev_root;
118 const struct attribute_group **bus_groups;
119 const struct attribute_group **dev_groups;
120 const struct attribute_group **drv_groups;
121
122 int (*match)(struct device *dev, struct device_driver *drv);
123 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
124 int (*probe)(struct device *dev);
125 int (*remove)(struct device *dev);
126 void (*shutdown)(struct device *dev);
127
128 int (*online)(struct device *dev);
129 int (*offline)(struct device *dev);
130
131 int (*suspend)(struct device *dev, pm_message_t state);
132 int (*resume)(struct device *dev);
133
134 int (*num_vf)(struct device *dev);
135
136 int (*dma_configure)(struct device *dev);
137
138 const struct dev_pm_ops *pm;
139
140 const struct iommu_ops *iommu_ops;
141
142 struct subsys_private *p;
143 struct lock_class_key lock_key;
144
145 bool need_parent_lock;
146};
147
148extern int __must_check bus_register(struct bus_type *bus);
149
150extern void bus_unregister(struct bus_type *bus);
151
152extern int __must_check bus_rescan_devices(struct bus_type *bus);
153
154
155struct subsys_dev_iter {
156 struct klist_iter ki;
157 const struct device_type *type;
158};
159void subsys_dev_iter_init(struct subsys_dev_iter *iter,
160 struct bus_type *subsys,
161 struct device *start,
162 const struct device_type *type);
163struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter);
164void subsys_dev_iter_exit(struct subsys_dev_iter *iter);
165
166int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data,
167 int (*fn)(struct device *dev, void *data));
168struct device *bus_find_device(struct bus_type *bus, struct device *start,
169 void *data,
170 int (*match)(struct device *dev, void *data));
171struct device *bus_find_device_by_name(struct bus_type *bus,
172 struct device *start,
173 const char *name);
174struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int id,
175 struct device *hint);
176int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
177 void *data, int (*fn)(struct device_driver *, void *));
178void bus_sort_breadthfirst(struct bus_type *bus,
179 int (*compare)(const struct device *a,
180 const struct device *b));
181
182
183
184
185
186
187struct notifier_block;
188
189extern int bus_register_notifier(struct bus_type *bus,
190 struct notifier_block *nb);
191extern int bus_unregister_notifier(struct bus_type *bus,
192 struct notifier_block *nb);
193
194
195
196
197
198#define BUS_NOTIFY_ADD_DEVICE 0x00000001
199#define BUS_NOTIFY_DEL_DEVICE 0x00000002
200#define BUS_NOTIFY_REMOVED_DEVICE 0x00000003
201#define BUS_NOTIFY_BIND_DRIVER 0x00000004
202
203#define BUS_NOTIFY_BOUND_DRIVER 0x00000005
204#define BUS_NOTIFY_UNBIND_DRIVER 0x00000006
205
206#define BUS_NOTIFY_UNBOUND_DRIVER 0x00000007
207
208#define BUS_NOTIFY_DRIVER_NOT_BOUND 0x00000008
209
210extern struct kset *bus_get_kset(struct bus_type *bus);
211extern struct klist *bus_get_device_klist(struct bus_type *bus);
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235enum probe_type {
236 PROBE_DEFAULT_STRATEGY,
237 PROBE_PREFER_ASYNCHRONOUS,
238 PROBE_FORCE_SYNCHRONOUS,
239};
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277struct device_driver {
278 const char *name;
279 struct bus_type *bus;
280
281 struct module *owner;
282 const char *mod_name;
283
284 bool suppress_bind_attrs;
285 enum probe_type probe_type;
286
287 const struct of_device_id *of_match_table;
288 const struct acpi_device_id *acpi_match_table;
289
290 int (*probe) (struct device *dev);
291 int (*remove) (struct device *dev);
292 void (*shutdown) (struct device *dev);
293 int (*suspend) (struct device *dev, pm_message_t state);
294 int (*resume) (struct device *dev);
295 const struct attribute_group **groups;
296
297 const struct dev_pm_ops *pm;
298 void (*coredump) (struct device *dev);
299
300 struct driver_private *p;
301};
302
303
304extern int __must_check driver_register(struct device_driver *drv);
305extern void driver_unregister(struct device_driver *drv);
306
307extern struct device_driver *driver_find(const char *name,
308 struct bus_type *bus);
309extern int driver_probe_done(void);
310extern void wait_for_device_probe(void);
311
312
313
314struct driver_attribute {
315 struct attribute attr;
316 ssize_t (*show)(struct device_driver *driver, char *buf);
317 ssize_t (*store)(struct device_driver *driver, const char *buf,
318 size_t count);
319};
320
321#define DRIVER_ATTR_RW(_name) \
322 struct driver_attribute driver_attr_##_name = __ATTR_RW(_name)
323#define DRIVER_ATTR_RO(_name) \
324 struct driver_attribute driver_attr_##_name = __ATTR_RO(_name)
325#define DRIVER_ATTR_WO(_name) \
326 struct driver_attribute driver_attr_##_name = __ATTR_WO(_name)
327
328extern int __must_check driver_create_file(struct device_driver *driver,
329 const struct driver_attribute *attr);
330extern void driver_remove_file(struct device_driver *driver,
331 const struct driver_attribute *attr);
332
333extern int __must_check driver_for_each_device(struct device_driver *drv,
334 struct device *start,
335 void *data,
336 int (*fn)(struct device *dev,
337 void *));
338struct device *driver_find_device(struct device_driver *drv,
339 struct device *start, void *data,
340 int (*match)(struct device *dev, void *data));
341
342int driver_deferred_probe_check_state(struct device *dev);
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357struct subsys_interface {
358 const char *name;
359 struct bus_type *subsys;
360 struct list_head node;
361 int (*add_dev)(struct device *dev, struct subsys_interface *sif);
362 void (*remove_dev)(struct device *dev, struct subsys_interface *sif);
363};
364
365int subsys_interface_register(struct subsys_interface *sif);
366void subsys_interface_unregister(struct subsys_interface *sif);
367
368int subsys_system_register(struct bus_type *subsys,
369 const struct attribute_group **groups);
370int subsys_virtual_register(struct bus_type *subsys,
371 const struct attribute_group **groups);
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402struct class {
403 const char *name;
404 struct module *owner;
405
406 const struct attribute_group **class_groups;
407 const struct attribute_group **dev_groups;
408 struct kobject *dev_kobj;
409
410 int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
411 char *(*devnode)(struct device *dev, umode_t *mode);
412
413 void (*class_release)(struct class *class);
414 void (*dev_release)(struct device *dev);
415
416 int (*shutdown_pre)(struct device *dev);
417
418 const struct kobj_ns_type_operations *ns_type;
419 const void *(*namespace)(struct device *dev);
420
421 void (*get_ownership)(struct device *dev, kuid_t *uid, kgid_t *gid);
422
423 const struct dev_pm_ops *pm;
424
425 struct subsys_private *p;
426};
427
428struct class_dev_iter {
429 struct klist_iter ki;
430 const struct device_type *type;
431};
432
433extern struct kobject *sysfs_dev_block_kobj;
434extern struct kobject *sysfs_dev_char_kobj;
435extern int __must_check __class_register(struct class *class,
436 struct lock_class_key *key);
437extern void class_unregister(struct class *class);
438
439
440
441#define class_register(class) \
442({ \
443 static struct lock_class_key __key; \
444 __class_register(class, &__key); \
445})
446
447struct class_compat;
448struct class_compat *class_compat_register(const char *name);
449void class_compat_unregister(struct class_compat *cls);
450int class_compat_create_link(struct class_compat *cls, struct device *dev,
451 struct device *device_link);
452void class_compat_remove_link(struct class_compat *cls, struct device *dev,
453 struct device *device_link);
454
455extern void class_dev_iter_init(struct class_dev_iter *iter,
456 struct class *class,
457 struct device *start,
458 const struct device_type *type);
459extern struct device *class_dev_iter_next(struct class_dev_iter *iter);
460extern void class_dev_iter_exit(struct class_dev_iter *iter);
461
462extern int class_for_each_device(struct class *class, struct device *start,
463 void *data,
464 int (*fn)(struct device *dev, void *data));
465extern struct device *class_find_device(struct class *class,
466 struct device *start, const void *data,
467 int (*match)(struct device *, const void *));
468
469struct class_attribute {
470 struct attribute attr;
471 ssize_t (*show)(struct class *class, struct class_attribute *attr,
472 char *buf);
473 ssize_t (*store)(struct class *class, struct class_attribute *attr,
474 const char *buf, size_t count);
475};
476
477#define CLASS_ATTR_RW(_name) \
478 struct class_attribute class_attr_##_name = __ATTR_RW(_name)
479#define CLASS_ATTR_RO(_name) \
480 struct class_attribute class_attr_##_name = __ATTR_RO(_name)
481#define CLASS_ATTR_WO(_name) \
482 struct class_attribute class_attr_##_name = __ATTR_WO(_name)
483
484extern int __must_check class_create_file_ns(struct class *class,
485 const struct class_attribute *attr,
486 const void *ns);
487extern void class_remove_file_ns(struct class *class,
488 const struct class_attribute *attr,
489 const void *ns);
490
491static inline int __must_check class_create_file(struct class *class,
492 const struct class_attribute *attr)
493{
494 return class_create_file_ns(class, attr, NULL);
495}
496
497static inline void class_remove_file(struct class *class,
498 const struct class_attribute *attr)
499{
500 return class_remove_file_ns(class, attr, NULL);
501}
502
503
504struct class_attribute_string {
505 struct class_attribute attr;
506 char *str;
507};
508
509
510#define _CLASS_ATTR_STRING(_name, _mode, _str) \
511 { __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
512#define CLASS_ATTR_STRING(_name, _mode, _str) \
513 struct class_attribute_string class_attr_##_name = \
514 _CLASS_ATTR_STRING(_name, _mode, _str)
515
516extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
517 char *buf);
518
519struct class_interface {
520 struct list_head node;
521 struct class *class;
522
523 int (*add_dev) (struct device *, struct class_interface *);
524 void (*remove_dev) (struct device *, struct class_interface *);
525};
526
527extern int __must_check class_interface_register(struct class_interface *);
528extern void class_interface_unregister(struct class_interface *);
529
530extern struct class * __must_check __class_create(struct module *owner,
531 const char *name,
532 struct lock_class_key *key);
533extern void class_destroy(struct class *cls);
534
535
536
537#define class_create(owner, name) \
538({ \
539 static struct lock_class_key __key; \
540 __class_create(owner, name, &__key); \
541})
542
543
544
545
546
547
548
549
550
551
552struct device_type {
553 const char *name;
554 const struct attribute_group **groups;
555 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
556 char *(*devnode)(struct device *dev, umode_t *mode,
557 kuid_t *uid, kgid_t *gid);
558 void (*release)(struct device *dev);
559
560 const struct dev_pm_ops *pm;
561};
562
563
564struct device_attribute {
565 struct attribute attr;
566 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
567 char *buf);
568 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
569 const char *buf, size_t count);
570};
571
572struct dev_ext_attribute {
573 struct device_attribute attr;
574 void *var;
575};
576
577ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
578 char *buf);
579ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr,
580 const char *buf, size_t count);
581ssize_t device_show_int(struct device *dev, struct device_attribute *attr,
582 char *buf);
583ssize_t device_store_int(struct device *dev, struct device_attribute *attr,
584 const char *buf, size_t count);
585ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
586 char *buf);
587ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
588 const char *buf, size_t count);
589
590#define DEVICE_ATTR(_name, _mode, _show, _store) \
591 struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
592#define DEVICE_ATTR_PREALLOC(_name, _mode, _show, _store) \
593 struct device_attribute dev_attr_##_name = \
594 __ATTR_PREALLOC(_name, _mode, _show, _store)
595#define DEVICE_ATTR_RW(_name) \
596 struct device_attribute dev_attr_##_name = __ATTR_RW(_name)
597#define DEVICE_ATTR_RO(_name) \
598 struct device_attribute dev_attr_##_name = __ATTR_RO(_name)
599#define DEVICE_ATTR_WO(_name) \
600 struct device_attribute dev_attr_##_name = __ATTR_WO(_name)
601#define DEVICE_ULONG_ATTR(_name, _mode, _var) \
602 struct dev_ext_attribute dev_attr_##_name = \
603 { __ATTR(_name, _mode, device_show_ulong, device_store_ulong), &(_var) }
604#define DEVICE_INT_ATTR(_name, _mode, _var) \
605 struct dev_ext_attribute dev_attr_##_name = \
606 { __ATTR(_name, _mode, device_show_int, device_store_int), &(_var) }
607#define DEVICE_BOOL_ATTR(_name, _mode, _var) \
608 struct dev_ext_attribute dev_attr_##_name = \
609 { __ATTR(_name, _mode, device_show_bool, device_store_bool), &(_var) }
610#define DEVICE_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \
611 struct device_attribute dev_attr_##_name = \
612 __ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store)
613
614extern int device_create_file(struct device *device,
615 const struct device_attribute *entry);
616extern void device_remove_file(struct device *dev,
617 const struct device_attribute *attr);
618extern bool device_remove_file_self(struct device *dev,
619 const struct device_attribute *attr);
620extern int __must_check device_create_bin_file(struct device *dev,
621 const struct bin_attribute *attr);
622extern void device_remove_bin_file(struct device *dev,
623 const struct bin_attribute *attr);
624
625
626typedef void (*dr_release_t)(struct device *dev, void *res);
627typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
628
629#ifdef CONFIG_DEBUG_DEVRES
630extern void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
631 int nid, const char *name) __malloc;
632#define devres_alloc(release, size, gfp) \
633 __devres_alloc_node(release, size, gfp, NUMA_NO_NODE, #release)
634#define devres_alloc_node(release, size, gfp, nid) \
635 __devres_alloc_node(release, size, gfp, nid, #release)
636#else
637extern void *devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
638 int nid) __malloc;
639static inline void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp)
640{
641 return devres_alloc_node(release, size, gfp, NUMA_NO_NODE);
642}
643#endif
644
645extern void devres_for_each_res(struct device *dev, dr_release_t release,
646 dr_match_t match, void *match_data,
647 void (*fn)(struct device *, void *, void *),
648 void *data);
649extern void devres_free(void *res);
650extern void devres_add(struct device *dev, void *res);
651extern void *devres_find(struct device *dev, dr_release_t release,
652 dr_match_t match, void *match_data);
653extern void *devres_get(struct device *dev, void *new_res,
654 dr_match_t match, void *match_data);
655extern void *devres_remove(struct device *dev, dr_release_t release,
656 dr_match_t match, void *match_data);
657extern int devres_destroy(struct device *dev, dr_release_t release,
658 dr_match_t match, void *match_data);
659extern int devres_release(struct device *dev, dr_release_t release,
660 dr_match_t match, void *match_data);
661
662
663extern void * __must_check devres_open_group(struct device *dev, void *id,
664 gfp_t gfp);
665extern void devres_close_group(struct device *dev, void *id);
666extern void devres_remove_group(struct device *dev, void *id);
667extern int devres_release_group(struct device *dev, void *id);
668
669
670extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __malloc;
671extern __printf(3, 0)
672char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt,
673 va_list ap) __malloc;
674extern __printf(3, 4)
675char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...) __malloc;
676static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
677{
678 return devm_kmalloc(dev, size, gfp | __GFP_ZERO);
679}
680static inline void *devm_kmalloc_array(struct device *dev,
681 size_t n, size_t size, gfp_t flags)
682{
683 size_t bytes;
684
685 if (unlikely(check_mul_overflow(n, size, &bytes)))
686 return NULL;
687
688 return devm_kmalloc(dev, bytes, flags);
689}
690static inline void *devm_kcalloc(struct device *dev,
691 size_t n, size_t size, gfp_t flags)
692{
693 return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
694}
695extern void devm_kfree(struct device *dev, void *p);
696extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc;
697extern void *devm_kmemdup(struct device *dev, const void *src, size_t len,
698 gfp_t gfp);
699
700extern unsigned long devm_get_free_pages(struct device *dev,
701 gfp_t gfp_mask, unsigned int order);
702extern void devm_free_pages(struct device *dev, unsigned long addr);
703
704void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);
705
706void __iomem *devm_of_iomap(struct device *dev,
707 struct device_node *node, int index,
708 resource_size_t *size);
709
710
711int devm_add_action(struct device *dev, void (*action)(void *), void *data);
712void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
713
714static inline int devm_add_action_or_reset(struct device *dev,
715 void (*action)(void *), void *data)
716{
717 int ret;
718
719 ret = devm_add_action(dev, action, data);
720 if (ret)
721 action(data);
722
723 return ret;
724}
725
726
727
728
729
730
731
732
733
734
735
736
737#define devm_alloc_percpu(dev, type) \
738 ((typeof(type) __percpu *)__devm_alloc_percpu((dev), sizeof(type), \
739 __alignof__(type)))
740
741void __percpu *__devm_alloc_percpu(struct device *dev, size_t size,
742 size_t align);
743void devm_free_percpu(struct device *dev, void __percpu *pdata);
744
745struct device_dma_parameters {
746
747
748
749
750 unsigned int max_segment_size;
751 unsigned long segment_boundary_mask;
752};
753
754
755
756
757
758
759
760struct device_connection {
761 const char *endpoint[2];
762 const char *id;
763 struct list_head list;
764};
765
766void *device_connection_find_match(struct device *dev, const char *con_id,
767 void *data,
768 void *(*match)(struct device_connection *con,
769 int ep, void *data));
770
771struct device *device_connection_find(struct device *dev, const char *con_id);
772
773void device_connection_add(struct device_connection *con);
774void device_connection_remove(struct device_connection *con);
775
776
777
778
779
780
781
782
783
784
785enum device_link_state {
786 DL_STATE_NONE = -1,
787 DL_STATE_DORMANT = 0,
788 DL_STATE_AVAILABLE,
789 DL_STATE_CONSUMER_PROBE,
790 DL_STATE_ACTIVE,
791 DL_STATE_SUPPLIER_UNBIND,
792};
793
794
795
796
797
798
799
800
801
802
803#define DL_FLAG_STATELESS BIT(0)
804#define DL_FLAG_AUTOREMOVE_CONSUMER BIT(1)
805#define DL_FLAG_PM_RUNTIME BIT(2)
806#define DL_FLAG_RPM_ACTIVE BIT(3)
807#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4)
808
809
810
811
812
813
814
815
816
817
818
819
820
821struct device_link {
822 struct device *supplier;
823 struct list_head s_node;
824 struct device *consumer;
825 struct list_head c_node;
826 enum device_link_state status;
827 u32 flags;
828 bool rpm_active;
829 struct kref kref;
830#ifdef CONFIG_SRCU
831 struct rcu_head rcu_head;
832#endif
833};
834
835
836
837
838
839
840
841
842enum dl_dev_state {
843 DL_DEV_NO_DRIVER = 0,
844 DL_DEV_PROBING,
845 DL_DEV_DRIVER_BOUND,
846 DL_DEV_UNBINDING,
847};
848
849
850
851
852
853
854
855struct dev_links_info {
856 struct list_head suppliers;
857 struct list_head consumers;
858 enum dl_dev_state status;
859};
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939struct device {
940 struct device *parent;
941
942 struct device_private *p;
943
944 struct kobject kobj;
945 const char *init_name;
946 const struct device_type *type;
947
948 struct mutex mutex;
949
950
951
952 struct bus_type *bus;
953 struct device_driver *driver;
954
955 void *platform_data;
956
957 void *driver_data;
958
959 struct dev_links_info links;
960 struct dev_pm_info power;
961 struct dev_pm_domain *pm_domain;
962
963#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
964 struct irq_domain *msi_domain;
965#endif
966#ifdef CONFIG_PINCTRL
967 struct dev_pin_info *pins;
968#endif
969#ifdef CONFIG_GENERIC_MSI_IRQ
970 struct list_head msi_list;
971#endif
972
973#ifdef CONFIG_NUMA
974 int numa_node;
975#endif
976 const struct dma_map_ops *dma_ops;
977 u64 *dma_mask;
978 u64 coherent_dma_mask;
979
980
981
982
983 u64 bus_dma_mask;
984 unsigned long dma_pfn_offset;
985
986 struct device_dma_parameters *dma_parms;
987
988 struct list_head dma_pools;
989
990 struct dma_coherent_mem *dma_mem;
991
992#ifdef CONFIG_DMA_CMA
993 struct cma *cma_area;
994
995#endif
996
997 struct dev_archdata archdata;
998
999 struct device_node *of_node;
1000 struct fwnode_handle *fwnode;
1001
1002 dev_t devt;
1003 u32 id;
1004
1005 spinlock_t devres_lock;
1006 struct list_head devres_head;
1007
1008 struct klist_node knode_class;
1009 struct class *class;
1010 const struct attribute_group **groups;
1011
1012 void (*release)(struct device *dev);
1013 struct iommu_group *iommu_group;
1014 struct iommu_fwspec *iommu_fwspec;
1015
1016 bool offline_disabled:1;
1017 bool offline:1;
1018 bool of_node_reused:1;
1019};
1020
1021static inline struct device *kobj_to_dev(struct kobject *kobj)
1022{
1023 return container_of(kobj, struct device, kobj);
1024}
1025
1026
1027#include <linux/pm_wakeup.h>
1028
1029static inline const char *dev_name(const struct device *dev)
1030{
1031
1032 if (dev->init_name)
1033 return dev->init_name;
1034
1035 return kobject_name(&dev->kobj);
1036}
1037
1038extern __printf(2, 3)
1039int dev_set_name(struct device *dev, const char *name, ...);
1040
1041#ifdef CONFIG_NUMA
1042static inline int dev_to_node(struct device *dev)
1043{
1044 return dev->numa_node;
1045}
1046static inline void set_dev_node(struct device *dev, int node)
1047{
1048 dev->numa_node = node;
1049}
1050#else
1051static inline int dev_to_node(struct device *dev)
1052{
1053 return -1;
1054}
1055static inline void set_dev_node(struct device *dev, int node)
1056{
1057}
1058#endif
1059
1060static inline struct irq_domain *dev_get_msi_domain(const struct device *dev)
1061{
1062#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
1063 return dev->msi_domain;
1064#else
1065 return NULL;
1066#endif
1067}
1068
1069static inline void dev_set_msi_domain(struct device *dev, struct irq_domain *d)
1070{
1071#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
1072 dev->msi_domain = d;
1073#endif
1074}
1075
1076static inline void *dev_get_drvdata(const struct device *dev)
1077{
1078 return dev->driver_data;
1079}
1080
1081static inline void dev_set_drvdata(struct device *dev, void *data)
1082{
1083 dev->driver_data = data;
1084}
1085
1086static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
1087{
1088 return dev ? dev->power.subsys_data : NULL;
1089}
1090
1091static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
1092{
1093 return dev->kobj.uevent_suppress;
1094}
1095
1096static inline void dev_set_uevent_suppress(struct device *dev, int val)
1097{
1098 dev->kobj.uevent_suppress = val;
1099}
1100
1101static inline int device_is_registered(struct device *dev)
1102{
1103 return dev->kobj.state_in_sysfs;
1104}
1105
1106static inline void device_enable_async_suspend(struct device *dev)
1107{
1108 if (!dev->power.is_prepared)
1109 dev->power.async_suspend = true;
1110}
1111
1112static inline void device_disable_async_suspend(struct device *dev)
1113{
1114 if (!dev->power.is_prepared)
1115 dev->power.async_suspend = false;
1116}
1117
1118static inline bool device_async_suspend_enabled(struct device *dev)
1119{
1120 return !!dev->power.async_suspend;
1121}
1122
1123static inline void dev_pm_syscore_device(struct device *dev, bool val)
1124{
1125#ifdef CONFIG_PM_SLEEP
1126 dev->power.syscore = val;
1127#endif
1128}
1129
1130static inline void dev_pm_set_driver_flags(struct device *dev, u32 flags)
1131{
1132 dev->power.driver_flags = flags;
1133}
1134
1135static inline bool dev_pm_test_driver_flags(struct device *dev, u32 flags)
1136{
1137 return !!(dev->power.driver_flags & flags);
1138}
1139
1140static inline void device_lock(struct device *dev)
1141{
1142 mutex_lock(&dev->mutex);
1143}
1144
1145static inline int device_lock_interruptible(struct device *dev)
1146{
1147 return mutex_lock_interruptible(&dev->mutex);
1148}
1149
1150static inline int device_trylock(struct device *dev)
1151{
1152 return mutex_trylock(&dev->mutex);
1153}
1154
1155static inline void device_unlock(struct device *dev)
1156{
1157 mutex_unlock(&dev->mutex);
1158}
1159
1160static inline void device_lock_assert(struct device *dev)
1161{
1162 lockdep_assert_held(&dev->mutex);
1163}
1164
1165static inline struct device_node *dev_of_node(struct device *dev)
1166{
1167 if (!IS_ENABLED(CONFIG_OF))
1168 return NULL;
1169 return dev->of_node;
1170}
1171
1172void driver_init(void);
1173
1174
1175
1176
1177extern int __must_check device_register(struct device *dev);
1178extern void device_unregister(struct device *dev);
1179extern void device_initialize(struct device *dev);
1180extern int __must_check device_add(struct device *dev);
1181extern void device_del(struct device *dev);
1182extern int device_for_each_child(struct device *dev, void *data,
1183 int (*fn)(struct device *dev, void *data));
1184extern int device_for_each_child_reverse(struct device *dev, void *data,
1185 int (*fn)(struct device *dev, void *data));
1186extern struct device *device_find_child(struct device *dev, void *data,
1187 int (*match)(struct device *dev, void *data));
1188extern int device_rename(struct device *dev, const char *new_name);
1189extern int device_move(struct device *dev, struct device *new_parent,
1190 enum dpm_order dpm_order);
1191extern const char *device_get_devnode(struct device *dev,
1192 umode_t *mode, kuid_t *uid, kgid_t *gid,
1193 const char **tmp);
1194
1195static inline bool device_supports_offline(struct device *dev)
1196{
1197 return dev->bus && dev->bus->offline && dev->bus->online;
1198}
1199
1200extern void lock_device_hotplug(void);
1201extern void unlock_device_hotplug(void);
1202extern int lock_device_hotplug_sysfs(void);
1203extern int device_offline(struct device *dev);
1204extern int device_online(struct device *dev);
1205extern void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
1206extern void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
1207void device_set_of_node_from_dev(struct device *dev, const struct device *dev2);
1208
1209static inline int dev_num_vf(struct device *dev)
1210{
1211 if (dev->bus && dev->bus->num_vf)
1212 return dev->bus->num_vf(dev);
1213 return 0;
1214}
1215
1216
1217
1218
1219extern struct device *__root_device_register(const char *name,
1220 struct module *owner);
1221
1222
1223#define root_device_register(name) \
1224 __root_device_register(name, THIS_MODULE)
1225
1226extern void root_device_unregister(struct device *root);
1227
1228static inline void *dev_get_platdata(const struct device *dev)
1229{
1230 return dev->platform_data;
1231}
1232
1233
1234
1235
1236
1237extern int __must_check device_bind_driver(struct device *dev);
1238extern void device_release_driver(struct device *dev);
1239extern int __must_check device_attach(struct device *dev);
1240extern int __must_check driver_attach(struct device_driver *drv);
1241extern void device_initial_probe(struct device *dev);
1242extern int __must_check device_reprobe(struct device *dev);
1243
1244extern bool device_is_bound(struct device *dev);
1245
1246
1247
1248
1249extern __printf(5, 0)
1250struct device *device_create_vargs(struct class *cls, struct device *parent,
1251 dev_t devt, void *drvdata,
1252 const char *fmt, va_list vargs);
1253extern __printf(5, 6)
1254struct device *device_create(struct class *cls, struct device *parent,
1255 dev_t devt, void *drvdata,
1256 const char *fmt, ...);
1257extern __printf(6, 7)
1258struct device *device_create_with_groups(struct class *cls,
1259 struct device *parent, dev_t devt, void *drvdata,
1260 const struct attribute_group **groups,
1261 const char *fmt, ...);
1262extern void device_destroy(struct class *cls, dev_t devt);
1263
1264extern int __must_check device_add_groups(struct device *dev,
1265 const struct attribute_group **groups);
1266extern void device_remove_groups(struct device *dev,
1267 const struct attribute_group **groups);
1268
1269static inline int __must_check device_add_group(struct device *dev,
1270 const struct attribute_group *grp)
1271{
1272 const struct attribute_group *groups[] = { grp, NULL };
1273
1274 return device_add_groups(dev, groups);
1275}
1276
1277static inline void device_remove_group(struct device *dev,
1278 const struct attribute_group *grp)
1279{
1280 const struct attribute_group *groups[] = { grp, NULL };
1281
1282 return device_remove_groups(dev, groups);
1283}
1284
1285extern int __must_check devm_device_add_groups(struct device *dev,
1286 const struct attribute_group **groups);
1287extern void devm_device_remove_groups(struct device *dev,
1288 const struct attribute_group **groups);
1289extern int __must_check devm_device_add_group(struct device *dev,
1290 const struct attribute_group *grp);
1291extern void devm_device_remove_group(struct device *dev,
1292 const struct attribute_group *grp);
1293
1294
1295
1296
1297
1298
1299
1300extern int (*platform_notify)(struct device *dev);
1301
1302extern int (*platform_notify_remove)(struct device *dev);
1303
1304
1305
1306
1307
1308
1309extern struct device *get_device(struct device *dev);
1310extern void put_device(struct device *dev);
1311
1312#ifdef CONFIG_DEVTMPFS
1313extern int devtmpfs_create_node(struct device *dev);
1314extern int devtmpfs_delete_node(struct device *dev);
1315extern int devtmpfs_mount(const char *mntdir);
1316#else
1317static inline int devtmpfs_create_node(struct device *dev) { return 0; }
1318static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
1319static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
1320#endif
1321
1322
1323extern void device_shutdown(void);
1324
1325
1326extern const char *dev_driver_string(const struct device *dev);
1327
1328
1329struct device_link *device_link_add(struct device *consumer,
1330 struct device *supplier, u32 flags);
1331void device_link_del(struct device_link *link);
1332void device_link_remove(void *consumer, struct device *supplier);
1333
1334#ifndef dev_fmt
1335#define dev_fmt(fmt) fmt
1336#endif
1337
1338#ifdef CONFIG_PRINTK
1339
1340__printf(3, 0)
1341int dev_vprintk_emit(int level, const struct device *dev,
1342 const char *fmt, va_list args);
1343__printf(3, 4)
1344int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...);
1345
1346__printf(3, 4)
1347void dev_printk(const char *level, const struct device *dev,
1348 const char *fmt, ...);
1349__printf(2, 3)
1350void _dev_emerg(const struct device *dev, const char *fmt, ...);
1351__printf(2, 3)
1352void _dev_alert(const struct device *dev, const char *fmt, ...);
1353__printf(2, 3)
1354void _dev_crit(const struct device *dev, const char *fmt, ...);
1355__printf(2, 3)
1356void _dev_err(const struct device *dev, const char *fmt, ...);
1357__printf(2, 3)
1358void _dev_warn(const struct device *dev, const char *fmt, ...);
1359__printf(2, 3)
1360void _dev_notice(const struct device *dev, const char *fmt, ...);
1361__printf(2, 3)
1362void _dev_info(const struct device *dev, const char *fmt, ...);
1363
1364#else
1365
1366static inline __printf(3, 0)
1367int dev_vprintk_emit(int level, const struct device *dev,
1368 const char *fmt, va_list args)
1369{ return 0; }
1370static inline __printf(3, 4)
1371int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...)
1372{ return 0; }
1373
1374static inline void __dev_printk(const char *level, const struct device *dev,
1375 struct va_format *vaf)
1376{}
1377static inline __printf(3, 4)
1378void dev_printk(const char *level, const struct device *dev,
1379 const char *fmt, ...)
1380{}
1381
1382static inline __printf(2, 3)
1383void _dev_emerg(const struct device *dev, const char *fmt, ...)
1384{}
1385static inline __printf(2, 3)
1386void _dev_crit(const struct device *dev, const char *fmt, ...)
1387{}
1388static inline __printf(2, 3)
1389void _dev_alert(const struct device *dev, const char *fmt, ...)
1390{}
1391static inline __printf(2, 3)
1392void _dev_err(const struct device *dev, const char *fmt, ...)
1393{}
1394static inline __printf(2, 3)
1395void _dev_warn(const struct device *dev, const char *fmt, ...)
1396{}
1397static inline __printf(2, 3)
1398void _dev_notice(const struct device *dev, const char *fmt, ...)
1399{}
1400static inline __printf(2, 3)
1401void _dev_info(const struct device *dev, const char *fmt, ...)
1402{}
1403
1404#endif
1405
1406
1407
1408
1409
1410
1411#define dev_emerg(dev, fmt, ...) \
1412 _dev_emerg(dev, dev_fmt(fmt), ##__VA_ARGS__)
1413#define dev_crit(dev, fmt, ...) \
1414 _dev_crit(dev, dev_fmt(fmt), ##__VA_ARGS__)
1415#define dev_alert(dev, fmt, ...) \
1416 _dev_alert(dev, dev_fmt(fmt), ##__VA_ARGS__)
1417#define dev_err(dev, fmt, ...) \
1418 _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
1419#define dev_warn(dev, fmt, ...) \
1420 _dev_warn(dev, dev_fmt(fmt), ##__VA_ARGS__)
1421#define dev_notice(dev, fmt, ...) \
1422 _dev_notice(dev, dev_fmt(fmt), ##__VA_ARGS__)
1423#define dev_info(dev, fmt, ...) \
1424 _dev_info(dev, dev_fmt(fmt), ##__VA_ARGS__)
1425
1426#if defined(CONFIG_DYNAMIC_DEBUG)
1427#define dev_dbg(dev, fmt, ...) \
1428 dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
1429#elif defined(DEBUG)
1430#define dev_dbg(dev, fmt, ...) \
1431 dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
1432#else
1433#define dev_dbg(dev, fmt, ...) \
1434({ \
1435 if (0) \
1436 dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
1437})
1438#endif
1439
1440#ifdef CONFIG_PRINTK
1441#define dev_level_once(dev_level, dev, fmt, ...) \
1442do { \
1443 static bool __print_once __read_mostly; \
1444 \
1445 if (!__print_once) { \
1446 __print_once = true; \
1447 dev_level(dev, fmt, ##__VA_ARGS__); \
1448 } \
1449} while (0)
1450#else
1451#define dev_level_once(dev_level, dev, fmt, ...) \
1452do { \
1453 if (0) \
1454 dev_level(dev, fmt, ##__VA_ARGS__); \
1455} while (0)
1456#endif
1457
1458#define dev_emerg_once(dev, fmt, ...) \
1459 dev_level_once(dev_emerg, dev, fmt, ##__VA_ARGS__)
1460#define dev_alert_once(dev, fmt, ...) \
1461 dev_level_once(dev_alert, dev, fmt, ##__VA_ARGS__)
1462#define dev_crit_once(dev, fmt, ...) \
1463 dev_level_once(dev_crit, dev, fmt, ##__VA_ARGS__)
1464#define dev_err_once(dev, fmt, ...) \
1465 dev_level_once(dev_err, dev, fmt, ##__VA_ARGS__)
1466#define dev_warn_once(dev, fmt, ...) \
1467 dev_level_once(dev_warn, dev, fmt, ##__VA_ARGS__)
1468#define dev_notice_once(dev, fmt, ...) \
1469 dev_level_once(dev_notice, dev, fmt, ##__VA_ARGS__)
1470#define dev_info_once(dev, fmt, ...) \
1471 dev_level_once(dev_info, dev, fmt, ##__VA_ARGS__)
1472#define dev_dbg_once(dev, fmt, ...) \
1473 dev_level_once(dev_dbg, dev, fmt, ##__VA_ARGS__)
1474
1475#define dev_level_ratelimited(dev_level, dev, fmt, ...) \
1476do { \
1477 static DEFINE_RATELIMIT_STATE(_rs, \
1478 DEFAULT_RATELIMIT_INTERVAL, \
1479 DEFAULT_RATELIMIT_BURST); \
1480 if (__ratelimit(&_rs)) \
1481 dev_level(dev, fmt, ##__VA_ARGS__); \
1482} while (0)
1483
1484#define dev_emerg_ratelimited(dev, fmt, ...) \
1485 dev_level_ratelimited(dev_emerg, dev, fmt, ##__VA_ARGS__)
1486#define dev_alert_ratelimited(dev, fmt, ...) \
1487 dev_level_ratelimited(dev_alert, dev, fmt, ##__VA_ARGS__)
1488#define dev_crit_ratelimited(dev, fmt, ...) \
1489 dev_level_ratelimited(dev_crit, dev, fmt, ##__VA_ARGS__)
1490#define dev_err_ratelimited(dev, fmt, ...) \
1491 dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
1492#define dev_warn_ratelimited(dev, fmt, ...) \
1493 dev_level_ratelimited(dev_warn, dev, fmt, ##__VA_ARGS__)
1494#define dev_notice_ratelimited(dev, fmt, ...) \
1495 dev_level_ratelimited(dev_notice, dev, fmt, ##__VA_ARGS__)
1496#define dev_info_ratelimited(dev, fmt, ...) \
1497 dev_level_ratelimited(dev_info, dev, fmt, ##__VA_ARGS__)
1498#if defined(CONFIG_DYNAMIC_DEBUG)
1499
1500#define dev_dbg_ratelimited(dev, fmt, ...) \
1501do { \
1502 static DEFINE_RATELIMIT_STATE(_rs, \
1503 DEFAULT_RATELIMIT_INTERVAL, \
1504 DEFAULT_RATELIMIT_BURST); \
1505 DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
1506 if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) && \
1507 __ratelimit(&_rs)) \
1508 __dynamic_dev_dbg(&descriptor, dev, dev_fmt(fmt), \
1509 ##__VA_ARGS__); \
1510} while (0)
1511#elif defined(DEBUG)
1512#define dev_dbg_ratelimited(dev, fmt, ...) \
1513do { \
1514 static DEFINE_RATELIMIT_STATE(_rs, \
1515 DEFAULT_RATELIMIT_INTERVAL, \
1516 DEFAULT_RATELIMIT_BURST); \
1517 if (__ratelimit(&_rs)) \
1518 dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
1519} while (0)
1520#else
1521#define dev_dbg_ratelimited(dev, fmt, ...) \
1522do { \
1523 if (0) \
1524 dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
1525} while (0)
1526#endif
1527
1528#ifdef VERBOSE_DEBUG
1529#define dev_vdbg dev_dbg
1530#else
1531#define dev_vdbg(dev, fmt, ...) \
1532({ \
1533 if (0) \
1534 dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
1535})
1536#endif
1537
1538
1539
1540
1541
1542#define dev_WARN(dev, format, arg...) \
1543 WARN(1, "%s %s: " format, dev_driver_string(dev), dev_name(dev), ## arg);
1544
1545#define dev_WARN_ONCE(dev, condition, format, arg...) \
1546 WARN_ONCE(condition, "%s %s: " format, \
1547 dev_driver_string(dev), dev_name(dev), ## arg)
1548
1549
1550#define MODULE_ALIAS_CHARDEV(major,minor) \
1551 MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
1552#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
1553 MODULE_ALIAS("char-major-" __stringify(major) "-*")
1554
1555#ifdef CONFIG_SYSFS_DEPRECATED
1556extern long sysfs_deprecated;
1557#else
1558#define sysfs_deprecated 0
1559#endif
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575#define module_driver(__driver, __register, __unregister, ...) \
1576static int __init __driver##_init(void) \
1577{ \
1578 return __register(&(__driver) , ##__VA_ARGS__); \
1579} \
1580module_init(__driver##_init); \
1581static void __exit __driver##_exit(void) \
1582{ \
1583 __unregister(&(__driver) , ##__VA_ARGS__); \
1584} \
1585module_exit(__driver##_exit);
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602#define builtin_driver(__driver, __register, ...) \
1603static int __init __driver##_init(void) \
1604{ \
1605 return __register(&(__driver) , ##__VA_ARGS__); \
1606} \
1607device_initcall(__driver##_init);
1608
1609#endif
1610