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