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