1
2
3
4
5
6
7
8
9
10
11
12#ifndef _DEVICE_H_
13#define _DEVICE_H_
14
15#include <linux/dev_printk.h>
16#include <linux/energy_model.h>
17#include <linux/ioport.h>
18#include <linux/kobject.h>
19#include <linux/klist.h>
20#include <linux/list.h>
21#include <linux/lockdep.h>
22#include <linux/compiler.h>
23#include <linux/types.h>
24#include <linux/mutex.h>
25#include <linux/pm.h>
26#include <linux/atomic.h>
27#include <linux/uidgid.h>
28#include <linux/gfp.h>
29#include <linux/overflow.h>
30#include <linux/device/bus.h>
31#include <linux/device/class.h>
32#include <linux/device/driver.h>
33#include <asm/device.h>
34
35struct device;
36struct device_private;
37struct device_driver;
38struct driver_private;
39struct module;
40struct class;
41struct subsys_private;
42struct device_node;
43struct fwnode_handle;
44struct iommu_ops;
45struct iommu_group;
46struct dev_pin_info;
47struct dev_iommu;
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62struct subsys_interface {
63 const char *name;
64 struct bus_type *subsys;
65 struct list_head node;
66 int (*add_dev)(struct device *dev, struct subsys_interface *sif);
67 void (*remove_dev)(struct device *dev, struct subsys_interface *sif);
68};
69
70int subsys_interface_register(struct subsys_interface *sif);
71void subsys_interface_unregister(struct subsys_interface *sif);
72
73int subsys_system_register(struct bus_type *subsys,
74 const struct attribute_group **groups);
75int subsys_virtual_register(struct bus_type *subsys,
76 const struct attribute_group **groups);
77
78
79
80
81
82
83
84
85
86
87struct device_type {
88 const char *name;
89 const struct attribute_group **groups;
90 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
91 char *(*devnode)(struct device *dev, umode_t *mode,
92 kuid_t *uid, kgid_t *gid);
93 void (*release)(struct device *dev);
94
95 const struct dev_pm_ops *pm;
96};
97
98
99struct device_attribute {
100 struct attribute attr;
101 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
102 char *buf);
103 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
104 const char *buf, size_t count);
105};
106
107struct dev_ext_attribute {
108 struct device_attribute attr;
109 void *var;
110};
111
112ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr,
113 char *buf);
114ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr,
115 const char *buf, size_t count);
116ssize_t device_show_int(struct device *dev, struct device_attribute *attr,
117 char *buf);
118ssize_t device_store_int(struct device *dev, struct device_attribute *attr,
119 const char *buf, size_t count);
120ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,
121 char *buf);
122ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
123 const char *buf, size_t count);
124
125#define DEVICE_ATTR(_name, _mode, _show, _store) \
126 struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
127#define DEVICE_ATTR_PREALLOC(_name, _mode, _show, _store) \
128 struct device_attribute dev_attr_##_name = \
129 __ATTR_PREALLOC(_name, _mode, _show, _store)
130#define DEVICE_ATTR_RW(_name) \
131 struct device_attribute dev_attr_##_name = __ATTR_RW(_name)
132#define DEVICE_ATTR_ADMIN_RW(_name) \
133 struct device_attribute dev_attr_##_name = __ATTR_RW_MODE(_name, 0600)
134#define DEVICE_ATTR_RO(_name) \
135 struct device_attribute dev_attr_##_name = __ATTR_RO(_name)
136#define DEVICE_ATTR_ADMIN_RO(_name) \
137 struct device_attribute dev_attr_##_name = __ATTR_RO_MODE(_name, 0400)
138#define DEVICE_ATTR_WO(_name) \
139 struct device_attribute dev_attr_##_name = __ATTR_WO(_name)
140#define DEVICE_ULONG_ATTR(_name, _mode, _var) \
141 struct dev_ext_attribute dev_attr_##_name = \
142 { __ATTR(_name, _mode, device_show_ulong, device_store_ulong), &(_var) }
143#define DEVICE_INT_ATTR(_name, _mode, _var) \
144 struct dev_ext_attribute dev_attr_##_name = \
145 { __ATTR(_name, _mode, device_show_int, device_store_int), &(_var) }
146#define DEVICE_BOOL_ATTR(_name, _mode, _var) \
147 struct dev_ext_attribute dev_attr_##_name = \
148 { __ATTR(_name, _mode, device_show_bool, device_store_bool), &(_var) }
149#define DEVICE_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \
150 struct device_attribute dev_attr_##_name = \
151 __ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store)
152
153int device_create_file(struct device *device,
154 const struct device_attribute *entry);
155void device_remove_file(struct device *dev,
156 const struct device_attribute *attr);
157bool device_remove_file_self(struct device *dev,
158 const struct device_attribute *attr);
159int __must_check device_create_bin_file(struct device *dev,
160 const struct bin_attribute *attr);
161void device_remove_bin_file(struct device *dev,
162 const struct bin_attribute *attr);
163
164
165typedef void (*dr_release_t)(struct device *dev, void *res);
166typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
167
168#ifdef CONFIG_DEBUG_DEVRES
169void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
170 int nid, const char *name) __malloc;
171#define devres_alloc(release, size, gfp) \
172 __devres_alloc_node(release, size, gfp, NUMA_NO_NODE, #release)
173#define devres_alloc_node(release, size, gfp, nid) \
174 __devres_alloc_node(release, size, gfp, nid, #release)
175#else
176void *devres_alloc_node(dr_release_t release, size_t size,
177 gfp_t gfp, int nid) __malloc;
178static inline void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp)
179{
180 return devres_alloc_node(release, size, gfp, NUMA_NO_NODE);
181}
182#endif
183
184void devres_for_each_res(struct device *dev, dr_release_t release,
185 dr_match_t match, void *match_data,
186 void (*fn)(struct device *, void *, void *),
187 void *data);
188void devres_free(void *res);
189void devres_add(struct device *dev, void *res);
190void *devres_find(struct device *dev, dr_release_t release,
191 dr_match_t match, void *match_data);
192void *devres_get(struct device *dev, void *new_res,
193 dr_match_t match, void *match_data);
194void *devres_remove(struct device *dev, dr_release_t release,
195 dr_match_t match, void *match_data);
196int devres_destroy(struct device *dev, dr_release_t release,
197 dr_match_t match, void *match_data);
198int devres_release(struct device *dev, dr_release_t release,
199 dr_match_t match, void *match_data);
200
201
202void * __must_check devres_open_group(struct device *dev, void *id, gfp_t gfp);
203void devres_close_group(struct device *dev, void *id);
204void devres_remove_group(struct device *dev, void *id);
205int devres_release_group(struct device *dev, void *id);
206
207
208void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __malloc;
209void *devm_krealloc(struct device *dev, void *ptr, size_t size,
210 gfp_t gfp) __must_check;
211__printf(3, 0) char *devm_kvasprintf(struct device *dev, gfp_t gfp,
212 const char *fmt, va_list ap) __malloc;
213__printf(3, 4) char *devm_kasprintf(struct device *dev, gfp_t gfp,
214 const char *fmt, ...) __malloc;
215static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
216{
217 return devm_kmalloc(dev, size, gfp | __GFP_ZERO);
218}
219static inline void *devm_kmalloc_array(struct device *dev,
220 size_t n, size_t size, gfp_t flags)
221{
222 size_t bytes;
223
224 if (unlikely(check_mul_overflow(n, size, &bytes)))
225 return NULL;
226
227 return devm_kmalloc(dev, bytes, flags);
228}
229static inline void *devm_kcalloc(struct device *dev,
230 size_t n, size_t size, gfp_t flags)
231{
232 return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
233}
234void devm_kfree(struct device *dev, const void *p);
235char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc;
236const char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp);
237void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp);
238
239unsigned long devm_get_free_pages(struct device *dev,
240 gfp_t gfp_mask, unsigned int order);
241void devm_free_pages(struct device *dev, unsigned long addr);
242
243void __iomem *devm_ioremap_resource(struct device *dev,
244 const struct resource *res);
245void __iomem *devm_ioremap_resource_wc(struct device *dev,
246 const struct resource *res);
247
248void __iomem *devm_of_iomap(struct device *dev,
249 struct device_node *node, int index,
250 resource_size_t *size);
251
252
253int devm_add_action(struct device *dev, void (*action)(void *), void *data);
254void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
255void devm_release_action(struct device *dev, void (*action)(void *), void *data);
256
257static inline int devm_add_action_or_reset(struct device *dev,
258 void (*action)(void *), void *data)
259{
260 int ret;
261
262 ret = devm_add_action(dev, action, data);
263 if (ret)
264 action(data);
265
266 return ret;
267}
268
269
270
271
272
273
274
275
276
277
278
279
280#define devm_alloc_percpu(dev, type) \
281 ((typeof(type) __percpu *)__devm_alloc_percpu((dev), sizeof(type), \
282 __alignof__(type)))
283
284void __percpu *__devm_alloc_percpu(struct device *dev, size_t size,
285 size_t align);
286void devm_free_percpu(struct device *dev, void __percpu *pdata);
287
288struct device_dma_parameters {
289
290
291
292
293 unsigned int max_segment_size;
294 unsigned long segment_boundary_mask;
295};
296
297
298
299
300
301
302
303
304
305
306enum device_link_state {
307 DL_STATE_NONE = -1,
308 DL_STATE_DORMANT = 0,
309 DL_STATE_AVAILABLE,
310 DL_STATE_CONSUMER_PROBE,
311 DL_STATE_ACTIVE,
312 DL_STATE_SUPPLIER_UNBIND,
313};
314
315
316
317
318
319
320
321
322
323
324
325
326
327#define DL_FLAG_STATELESS BIT(0)
328#define DL_FLAG_AUTOREMOVE_CONSUMER BIT(1)
329#define DL_FLAG_PM_RUNTIME BIT(2)
330#define DL_FLAG_RPM_ACTIVE BIT(3)
331#define DL_FLAG_AUTOREMOVE_SUPPLIER BIT(4)
332#define DL_FLAG_AUTOPROBE_CONSUMER BIT(5)
333#define DL_FLAG_MANAGED BIT(6)
334#define DL_FLAG_SYNC_STATE_ONLY BIT(7)
335
336
337
338
339
340
341
342
343enum dl_dev_state {
344 DL_DEV_NO_DRIVER = 0,
345 DL_DEV_PROBING,
346 DL_DEV_DRIVER_BOUND,
347 DL_DEV_UNBINDING,
348};
349
350
351
352
353
354
355
356
357
358
359
360
361struct dev_links_info {
362 struct list_head suppliers;
363 struct list_head consumers;
364 struct list_head needs_suppliers;
365 struct list_head defer_hook;
366 bool need_for_probe;
367 enum dl_dev_state status;
368};
369
370
371
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
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461struct device {
462 struct kobject kobj;
463 struct device *parent;
464
465 struct device_private *p;
466
467 const char *init_name;
468 const struct device_type *type;
469
470 struct bus_type *bus;
471 struct device_driver *driver;
472
473 void *platform_data;
474
475 void *driver_data;
476
477#ifdef CONFIG_PROVE_LOCKING
478 struct mutex lockdep_mutex;
479#endif
480 struct mutex mutex;
481
482
483
484 struct dev_links_info links;
485 struct dev_pm_info power;
486 struct dev_pm_domain *pm_domain;
487
488#ifdef CONFIG_ENERGY_MODEL
489 struct em_perf_domain *em_pd;
490#endif
491
492#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
493 struct irq_domain *msi_domain;
494#endif
495#ifdef CONFIG_PINCTRL
496 struct dev_pin_info *pins;
497#endif
498#ifdef CONFIG_GENERIC_MSI_IRQ
499 struct list_head msi_list;
500#endif
501#ifdef CONFIG_DMA_OPS
502 const struct dma_map_ops *dma_ops;
503#endif
504 u64 *dma_mask;
505 u64 coherent_dma_mask;
506
507
508
509
510 u64 bus_dma_limit;
511 const struct bus_dma_region *dma_range_map;
512
513 struct device_dma_parameters *dma_parms;
514
515 struct list_head dma_pools;
516
517#ifdef CONFIG_DMA_DECLARE_COHERENT
518 struct dma_coherent_mem *dma_mem;
519
520#endif
521#ifdef CONFIG_DMA_CMA
522 struct cma *cma_area;
523
524#endif
525
526 struct dev_archdata archdata;
527
528 struct device_node *of_node;
529 struct fwnode_handle *fwnode;
530
531#ifdef CONFIG_NUMA
532 int numa_node;
533#endif
534 dev_t devt;
535 u32 id;
536
537 spinlock_t devres_lock;
538 struct list_head devres_head;
539
540 struct class *class;
541 const struct attribute_group **groups;
542
543 void (*release)(struct device *dev);
544 struct iommu_group *iommu_group;
545 struct dev_iommu *iommu;
546
547 bool offline_disabled:1;
548 bool offline:1;
549 bool of_node_reused:1;
550 bool state_synced:1;
551#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
552 defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
553 defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
554 bool dma_coherent:1;
555#endif
556#ifdef CONFIG_DMA_OPS_BYPASS
557 bool dma_ops_bypass : 1;
558#endif
559};
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575struct device_link {
576 struct device *supplier;
577 struct list_head s_node;
578 struct device *consumer;
579 struct list_head c_node;
580 struct device link_dev;
581 enum device_link_state status;
582 u32 flags;
583 refcount_t rpm_active;
584 struct kref kref;
585#ifdef CONFIG_SRCU
586 struct rcu_head rcu_head;
587#endif
588 bool supplier_preactivated;
589};
590
591static inline struct device *kobj_to_dev(struct kobject *kobj)
592{
593 return container_of(kobj, struct device, kobj);
594}
595
596
597
598
599
600
601static inline bool device_iommu_mapped(struct device *dev)
602{
603 return (dev->iommu_group != NULL);
604}
605
606
607#include <linux/pm_wakeup.h>
608
609static inline const char *dev_name(const struct device *dev)
610{
611
612 if (dev->init_name)
613 return dev->init_name;
614
615 return kobject_name(&dev->kobj);
616}
617
618__printf(2, 3) int dev_set_name(struct device *dev, const char *name, ...);
619
620#ifdef CONFIG_NUMA
621static inline int dev_to_node(struct device *dev)
622{
623 return dev->numa_node;
624}
625static inline void set_dev_node(struct device *dev, int node)
626{
627 dev->numa_node = node;
628}
629#else
630static inline int dev_to_node(struct device *dev)
631{
632 return NUMA_NO_NODE;
633}
634static inline void set_dev_node(struct device *dev, int node)
635{
636}
637#endif
638
639static inline struct irq_domain *dev_get_msi_domain(const struct device *dev)
640{
641#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
642 return dev->msi_domain;
643#else
644 return NULL;
645#endif
646}
647
648static inline void dev_set_msi_domain(struct device *dev, struct irq_domain *d)
649{
650#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
651 dev->msi_domain = d;
652#endif
653}
654
655static inline void *dev_get_drvdata(const struct device *dev)
656{
657 return dev->driver_data;
658}
659
660static inline void dev_set_drvdata(struct device *dev, void *data)
661{
662 dev->driver_data = data;
663}
664
665static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
666{
667 return dev ? dev->power.subsys_data : NULL;
668}
669
670static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
671{
672 return dev->kobj.uevent_suppress;
673}
674
675static inline void dev_set_uevent_suppress(struct device *dev, int val)
676{
677 dev->kobj.uevent_suppress = val;
678}
679
680static inline int device_is_registered(struct device *dev)
681{
682 return dev->kobj.state_in_sysfs;
683}
684
685static inline void device_enable_async_suspend(struct device *dev)
686{
687 if (!dev->power.is_prepared)
688 dev->power.async_suspend = true;
689}
690
691static inline void device_disable_async_suspend(struct device *dev)
692{
693 if (!dev->power.is_prepared)
694 dev->power.async_suspend = false;
695}
696
697static inline bool device_async_suspend_enabled(struct device *dev)
698{
699 return !!dev->power.async_suspend;
700}
701
702static inline bool device_pm_not_required(struct device *dev)
703{
704 return dev->power.no_pm;
705}
706
707static inline void device_set_pm_not_required(struct device *dev)
708{
709 dev->power.no_pm = true;
710}
711
712static inline void dev_pm_syscore_device(struct device *dev, bool val)
713{
714#ifdef CONFIG_PM_SLEEP
715 dev->power.syscore = val;
716#endif
717}
718
719static inline void dev_pm_set_driver_flags(struct device *dev, u32 flags)
720{
721 dev->power.driver_flags = flags;
722}
723
724static inline bool dev_pm_test_driver_flags(struct device *dev, u32 flags)
725{
726 return !!(dev->power.driver_flags & flags);
727}
728
729static inline void device_lock(struct device *dev)
730{
731 mutex_lock(&dev->mutex);
732}
733
734static inline int device_lock_interruptible(struct device *dev)
735{
736 return mutex_lock_interruptible(&dev->mutex);
737}
738
739static inline int device_trylock(struct device *dev)
740{
741 return mutex_trylock(&dev->mutex);
742}
743
744static inline void device_unlock(struct device *dev)
745{
746 mutex_unlock(&dev->mutex);
747}
748
749static inline void device_lock_assert(struct device *dev)
750{
751 lockdep_assert_held(&dev->mutex);
752}
753
754static inline struct device_node *dev_of_node(struct device *dev)
755{
756 if (!IS_ENABLED(CONFIG_OF) || !dev)
757 return NULL;
758 return dev->of_node;
759}
760
761static inline bool dev_has_sync_state(struct device *dev)
762{
763 if (!dev)
764 return false;
765 if (dev->driver && dev->driver->sync_state)
766 return true;
767 if (dev->bus && dev->bus->sync_state)
768 return true;
769 return false;
770}
771
772
773
774
775int __must_check device_register(struct device *dev);
776void device_unregister(struct device *dev);
777void device_initialize(struct device *dev);
778int __must_check device_add(struct device *dev);
779void device_del(struct device *dev);
780int device_for_each_child(struct device *dev, void *data,
781 int (*fn)(struct device *dev, void *data));
782int device_for_each_child_reverse(struct device *dev, void *data,
783 int (*fn)(struct device *dev, void *data));
784struct device *device_find_child(struct device *dev, void *data,
785 int (*match)(struct device *dev, void *data));
786struct device *device_find_child_by_name(struct device *parent,
787 const char *name);
788int device_rename(struct device *dev, const char *new_name);
789int device_move(struct device *dev, struct device *new_parent,
790 enum dpm_order dpm_order);
791int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid);
792const char *device_get_devnode(struct device *dev, umode_t *mode, kuid_t *uid,
793 kgid_t *gid, const char **tmp);
794int device_is_dependent(struct device *dev, void *target);
795
796static inline bool device_supports_offline(struct device *dev)
797{
798 return dev->bus && dev->bus->offline && dev->bus->online;
799}
800
801void lock_device_hotplug(void);
802void unlock_device_hotplug(void);
803int lock_device_hotplug_sysfs(void);
804int device_offline(struct device *dev);
805int device_online(struct device *dev);
806void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
807void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode);
808void device_set_of_node_from_dev(struct device *dev, const struct device *dev2);
809
810static inline int dev_num_vf(struct device *dev)
811{
812 if (dev->bus && dev->bus->num_vf)
813 return dev->bus->num_vf(dev);
814 return 0;
815}
816
817
818
819
820struct device *__root_device_register(const char *name, struct module *owner);
821
822
823#define root_device_register(name) \
824 __root_device_register(name, THIS_MODULE)
825
826void root_device_unregister(struct device *root);
827
828static inline void *dev_get_platdata(const struct device *dev)
829{
830 return dev->platform_data;
831}
832
833
834
835
836
837int __must_check device_bind_driver(struct device *dev);
838void device_release_driver(struct device *dev);
839int __must_check device_attach(struct device *dev);
840int __must_check driver_attach(struct device_driver *drv);
841void device_initial_probe(struct device *dev);
842int __must_check device_reprobe(struct device *dev);
843
844bool device_is_bound(struct device *dev);
845
846
847
848
849__printf(5, 6) struct device *
850device_create(struct class *cls, struct device *parent, dev_t devt,
851 void *drvdata, const char *fmt, ...);
852__printf(6, 7) struct device *
853device_create_with_groups(struct class *cls, struct device *parent, dev_t devt,
854 void *drvdata, const struct attribute_group **groups,
855 const char *fmt, ...);
856void device_destroy(struct class *cls, dev_t devt);
857
858int __must_check device_add_groups(struct device *dev,
859 const struct attribute_group **groups);
860void device_remove_groups(struct device *dev,
861 const struct attribute_group **groups);
862
863static inline int __must_check device_add_group(struct device *dev,
864 const struct attribute_group *grp)
865{
866 const struct attribute_group *groups[] = { grp, NULL };
867
868 return device_add_groups(dev, groups);
869}
870
871static inline void device_remove_group(struct device *dev,
872 const struct attribute_group *grp)
873{
874 const struct attribute_group *groups[] = { grp, NULL };
875
876 return device_remove_groups(dev, groups);
877}
878
879int __must_check devm_device_add_groups(struct device *dev,
880 const struct attribute_group **groups);
881void devm_device_remove_groups(struct device *dev,
882 const struct attribute_group **groups);
883int __must_check devm_device_add_group(struct device *dev,
884 const struct attribute_group *grp);
885void devm_device_remove_group(struct device *dev,
886 const struct attribute_group *grp);
887
888
889
890
891
892
893
894extern int (*platform_notify)(struct device *dev);
895
896extern int (*platform_notify_remove)(struct device *dev);
897
898
899
900
901
902
903struct device *get_device(struct device *dev);
904void put_device(struct device *dev);
905bool kill_device(struct device *dev);
906
907#ifdef CONFIG_DEVTMPFS
908int devtmpfs_mount(void);
909#else
910static inline int devtmpfs_mount(void) { return 0; }
911#endif
912
913
914void device_shutdown(void);
915
916
917const char *dev_driver_string(const struct device *dev);
918
919
920struct device_link *device_link_add(struct device *consumer,
921 struct device *supplier, u32 flags);
922void device_link_del(struct device_link *link);
923void device_link_remove(void *consumer, struct device *supplier);
924void device_links_supplier_sync_state_pause(void);
925void device_links_supplier_sync_state_resume(void);
926
927extern __printf(3, 4)
928int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);
929
930
931#define MODULE_ALIAS_CHARDEV(major,minor) \
932 MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
933#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
934 MODULE_ALIAS("char-major-" __stringify(major) "-*")
935
936#ifdef CONFIG_SYSFS_DEPRECATED
937extern long sysfs_deprecated;
938#else
939#define sysfs_deprecated 0
940#endif
941
942#endif
943