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/pm.h>
25#include <linux/atomic.h>
26#include <asm/device.h>
27
28struct device;
29struct device_private;
30struct device_driver;
31struct driver_private;
32struct module;
33struct class;
34struct subsys_private;
35struct bus_type;
36struct device_node;
37struct iommu_ops;
38
39struct bus_attribute {
40 struct attribute attr;
41 ssize_t (*show)(struct bus_type *bus, char *buf);
42 ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);
43};
44
45#define BUS_ATTR(_name, _mode, _show, _store) \
46struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
47
48extern int __must_check bus_create_file(struct bus_type *,
49 struct bus_attribute *);
50extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87struct bus_type {
88 const char *name;
89 struct bus_attribute *bus_attrs;
90 struct device_attribute *dev_attrs;
91 struct driver_attribute *drv_attrs;
92
93 int (*match)(struct device *dev, struct device_driver *drv);
94 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
95 int (*probe)(struct device *dev);
96 int (*remove)(struct device *dev);
97 void (*shutdown)(struct device *dev);
98
99 int (*suspend)(struct device *dev, pm_message_t state);
100 int (*resume)(struct device *dev);
101
102 const struct dev_pm_ops *pm;
103
104 struct iommu_ops *iommu_ops;
105
106 struct subsys_private *p;
107};
108
109extern int __must_check bus_register(struct bus_type *bus);
110extern void bus_unregister(struct bus_type *bus);
111
112extern int __must_check bus_rescan_devices(struct bus_type *bus);
113
114
115
116int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data,
117 int (*fn)(struct device *dev, void *data));
118struct device *bus_find_device(struct bus_type *bus, struct device *start,
119 void *data,
120 int (*match)(struct device *dev, void *data));
121struct device *bus_find_device_by_name(struct bus_type *bus,
122 struct device *start,
123 const char *name);
124
125int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,
126 void *data, int (*fn)(struct device_driver *, void *));
127
128void bus_sort_breadthfirst(struct bus_type *bus,
129 int (*compare)(const struct device *a,
130 const struct device *b));
131
132
133
134
135
136
137struct notifier_block;
138
139extern int bus_register_notifier(struct bus_type *bus,
140 struct notifier_block *nb);
141extern int bus_unregister_notifier(struct bus_type *bus,
142 struct notifier_block *nb);
143
144
145
146
147
148#define BUS_NOTIFY_ADD_DEVICE 0x00000001
149#define BUS_NOTIFY_DEL_DEVICE 0x00000002
150#define BUS_NOTIFY_BIND_DRIVER 0x00000003
151
152#define BUS_NOTIFY_BOUND_DRIVER 0x00000004
153#define BUS_NOTIFY_UNBIND_DRIVER 0x00000005
154
155#define BUS_NOTIFY_UNBOUND_DRIVER 0x00000006
156
157
158extern struct kset *bus_get_kset(struct bus_type *bus);
159extern struct klist *bus_get_device_klist(struct bus_type *bus);
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192struct device_driver {
193 const char *name;
194 struct bus_type *bus;
195
196 struct module *owner;
197 const char *mod_name;
198
199 bool suppress_bind_attrs;
200
201 const struct of_device_id *of_match_table;
202
203 int (*probe) (struct device *dev);
204 int (*remove) (struct device *dev);
205 void (*shutdown) (struct device *dev);
206 int (*suspend) (struct device *dev, pm_message_t state);
207 int (*resume) (struct device *dev);
208 const struct attribute_group **groups;
209
210 const struct dev_pm_ops *pm;
211
212 struct driver_private *p;
213};
214
215
216extern int __must_check driver_register(struct device_driver *drv);
217extern void driver_unregister(struct device_driver *drv);
218
219extern struct device_driver *get_driver(struct device_driver *drv);
220extern void put_driver(struct device_driver *drv);
221extern struct device_driver *driver_find(const char *name,
222 struct bus_type *bus);
223extern int driver_probe_done(void);
224extern void wait_for_device_probe(void);
225
226
227
228
229struct driver_attribute {
230 struct attribute attr;
231 ssize_t (*show)(struct device_driver *driver, char *buf);
232 ssize_t (*store)(struct device_driver *driver, const char *buf,
233 size_t count);
234};
235
236#define DRIVER_ATTR(_name, _mode, _show, _store) \
237struct driver_attribute driver_attr_##_name = \
238 __ATTR(_name, _mode, _show, _store)
239
240extern int __must_check driver_create_file(struct device_driver *driver,
241 const struct driver_attribute *attr);
242extern void driver_remove_file(struct device_driver *driver,
243 const struct driver_attribute *attr);
244
245extern int __must_check driver_add_kobj(struct device_driver *drv,
246 struct kobject *kobj,
247 const char *fmt, ...);
248
249extern int __must_check driver_for_each_device(struct device_driver *drv,
250 struct device *start,
251 void *data,
252 int (*fn)(struct device *dev,
253 void *));
254struct device *driver_find_device(struct device_driver *drv,
255 struct device *start, void *data,
256 int (*match)(struct device *dev, void *data));
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287struct class {
288 const char *name;
289 struct module *owner;
290
291 struct class_attribute *class_attrs;
292 struct device_attribute *dev_attrs;
293 struct bin_attribute *dev_bin_attrs;
294 struct kobject *dev_kobj;
295
296 int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
297 char *(*devnode)(struct device *dev, mode_t *mode);
298
299 void (*class_release)(struct class *class);
300 void (*dev_release)(struct device *dev);
301
302 int (*suspend)(struct device *dev, pm_message_t state);
303 int (*resume)(struct device *dev);
304
305 const struct kobj_ns_type_operations *ns_type;
306 const void *(*namespace)(struct device *dev);
307
308 const struct dev_pm_ops *pm;
309
310 struct subsys_private *p;
311};
312
313struct class_dev_iter {
314 struct klist_iter ki;
315 const struct device_type *type;
316};
317
318extern struct kobject *sysfs_dev_block_kobj;
319extern struct kobject *sysfs_dev_char_kobj;
320extern int __must_check __class_register(struct class *class,
321 struct lock_class_key *key);
322extern void class_unregister(struct class *class);
323
324
325
326#define class_register(class) \
327({ \
328 static struct lock_class_key __key; \
329 __class_register(class, &__key); \
330})
331
332struct class_compat;
333struct class_compat *class_compat_register(const char *name);
334void class_compat_unregister(struct class_compat *cls);
335int class_compat_create_link(struct class_compat *cls, struct device *dev,
336 struct device *device_link);
337void class_compat_remove_link(struct class_compat *cls, struct device *dev,
338 struct device *device_link);
339
340extern void class_dev_iter_init(struct class_dev_iter *iter,
341 struct class *class,
342 struct device *start,
343 const struct device_type *type);
344extern struct device *class_dev_iter_next(struct class_dev_iter *iter);
345extern void class_dev_iter_exit(struct class_dev_iter *iter);
346
347extern int class_for_each_device(struct class *class, struct device *start,
348 void *data,
349 int (*fn)(struct device *dev, void *data));
350extern struct device *class_find_device(struct class *class,
351 struct device *start, void *data,
352 int (*match)(struct device *, void *));
353
354struct class_attribute {
355 struct attribute attr;
356 ssize_t (*show)(struct class *class, struct class_attribute *attr,
357 char *buf);
358 ssize_t (*store)(struct class *class, struct class_attribute *attr,
359 const char *buf, size_t count);
360 const void *(*namespace)(struct class *class,
361 const struct class_attribute *attr);
362};
363
364#define CLASS_ATTR(_name, _mode, _show, _store) \
365struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
366
367extern int __must_check class_create_file(struct class *class,
368 const struct class_attribute *attr);
369extern void class_remove_file(struct class *class,
370 const struct class_attribute *attr);
371
372
373
374struct class_attribute_string {
375 struct class_attribute attr;
376 char *str;
377};
378
379
380#define _CLASS_ATTR_STRING(_name, _mode, _str) \
381 { __ATTR(_name, _mode, show_class_attr_string, NULL), _str }
382#define CLASS_ATTR_STRING(_name, _mode, _str) \
383 struct class_attribute_string class_attr_##_name = \
384 _CLASS_ATTR_STRING(_name, _mode, _str)
385
386extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr,
387 char *buf);
388
389struct class_interface {
390 struct list_head node;
391 struct class *class;
392
393 int (*add_dev) (struct device *, struct class_interface *);
394 void (*remove_dev) (struct device *, struct class_interface *);
395};
396
397extern int __must_check class_interface_register(struct class_interface *);
398extern void class_interface_unregister(struct class_interface *);
399
400extern struct class * __must_check __class_create(struct module *owner,
401 const char *name,
402 struct lock_class_key *key);
403extern void class_destroy(struct class *cls);
404
405
406
407#define class_create(owner, name) \
408({ \
409 static struct lock_class_key __key; \
410 __class_create(owner, name, &__key); \
411})
412
413
414
415
416
417
418
419
420
421
422struct device_type {
423 const char *name;
424 const struct attribute_group **groups;
425 int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
426 char *(*devnode)(struct device *dev, mode_t *mode);
427 void (*release)(struct device *dev);
428
429 const struct dev_pm_ops *pm;
430};
431
432
433struct device_attribute {
434 struct attribute attr;
435 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
436 char *buf);
437 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
438 const char *buf, size_t count);
439};
440
441#define DEVICE_ATTR(_name, _mode, _show, _store) \
442struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
443
444extern int __must_check device_create_file(struct device *device,
445 const struct device_attribute *entry);
446extern void device_remove_file(struct device *dev,
447 const struct device_attribute *attr);
448extern int __must_check device_create_bin_file(struct device *dev,
449 const struct bin_attribute *attr);
450extern void device_remove_bin_file(struct device *dev,
451 const struct bin_attribute *attr);
452extern int device_schedule_callback_owner(struct device *dev,
453 void (*func)(struct device *dev), struct module *owner);
454
455
456#define device_schedule_callback(dev, func) \
457 device_schedule_callback_owner(dev, func, THIS_MODULE)
458
459
460typedef void (*dr_release_t)(struct device *dev, void *res);
461typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
462
463#ifdef CONFIG_DEBUG_DEVRES
464extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp,
465 const char *name);
466#define devres_alloc(release, size, gfp) \
467 __devres_alloc(release, size, gfp, #release)
468#else
469extern void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp);
470#endif
471extern void devres_free(void *res);
472extern void devres_add(struct device *dev, void *res);
473extern void *devres_find(struct device *dev, dr_release_t release,
474 dr_match_t match, void *match_data);
475extern void *devres_get(struct device *dev, void *new_res,
476 dr_match_t match, void *match_data);
477extern void *devres_remove(struct device *dev, dr_release_t release,
478 dr_match_t match, void *match_data);
479extern int devres_destroy(struct device *dev, dr_release_t release,
480 dr_match_t match, void *match_data);
481
482
483extern void * __must_check devres_open_group(struct device *dev, void *id,
484 gfp_t gfp);
485extern void devres_close_group(struct device *dev, void *id);
486extern void devres_remove_group(struct device *dev, void *id);
487extern int devres_release_group(struct device *dev, void *id);
488
489
490extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);
491extern void devm_kfree(struct device *dev, void *p);
492
493struct device_dma_parameters {
494
495
496
497
498 unsigned int max_segment_size;
499 unsigned long segment_boundary_mask;
500};
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560struct device {
561 struct device *parent;
562
563 struct device_private *p;
564
565 struct kobject kobj;
566 const char *init_name;
567 const struct device_type *type;
568
569 struct mutex mutex;
570
571
572
573 struct bus_type *bus;
574 struct device_driver *driver;
575
576 void *platform_data;
577
578 struct dev_pm_info power;
579 struct dev_pm_domain *pm_domain;
580
581#ifdef CONFIG_NUMA
582 int numa_node;
583#endif
584 u64 *dma_mask;
585 u64 coherent_dma_mask;
586
587
588
589
590
591 struct device_dma_parameters *dma_parms;
592
593 struct list_head dma_pools;
594
595 struct dma_coherent_mem *dma_mem;
596
597
598 struct dev_archdata archdata;
599
600 struct device_node *of_node;
601
602 dev_t devt;
603
604 spinlock_t devres_lock;
605 struct list_head devres_head;
606
607 struct klist_node knode_class;
608 struct class *class;
609 const struct attribute_group **groups;
610
611 void (*release)(struct device *dev);
612};
613
614
615#include <linux/pm_wakeup.h>
616
617static inline const char *dev_name(const struct device *dev)
618{
619
620 if (dev->init_name)
621 return dev->init_name;
622
623 return kobject_name(&dev->kobj);
624}
625
626extern __printf(2, 3)
627int dev_set_name(struct device *dev, const char *name, ...);
628
629#ifdef CONFIG_NUMA
630static inline int dev_to_node(struct device *dev)
631{
632 return dev->numa_node;
633}
634static inline void set_dev_node(struct device *dev, int node)
635{
636 dev->numa_node = node;
637}
638#else
639static inline int dev_to_node(struct device *dev)
640{
641 return -1;
642}
643static inline void set_dev_node(struct device *dev, int node)
644{
645}
646#endif
647
648static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
649{
650 return dev ? dev->power.subsys_data : NULL;
651}
652
653static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
654{
655 return dev->kobj.uevent_suppress;
656}
657
658static inline void dev_set_uevent_suppress(struct device *dev, int val)
659{
660 dev->kobj.uevent_suppress = val;
661}
662
663static inline int device_is_registered(struct device *dev)
664{
665 return dev->kobj.state_in_sysfs;
666}
667
668static inline void device_enable_async_suspend(struct device *dev)
669{
670 if (!dev->power.is_prepared)
671 dev->power.async_suspend = true;
672}
673
674static inline void device_disable_async_suspend(struct device *dev)
675{
676 if (!dev->power.is_prepared)
677 dev->power.async_suspend = false;
678}
679
680static inline bool device_async_suspend_enabled(struct device *dev)
681{
682 return !!dev->power.async_suspend;
683}
684
685static inline void pm_suspend_ignore_children(struct device *dev, bool enable)
686{
687 dev->power.ignore_children = enable;
688}
689
690static inline void device_lock(struct device *dev)
691{
692 mutex_lock(&dev->mutex);
693}
694
695static inline int device_trylock(struct device *dev)
696{
697 return mutex_trylock(&dev->mutex);
698}
699
700static inline void device_unlock(struct device *dev)
701{
702 mutex_unlock(&dev->mutex);
703}
704
705void driver_init(void);
706
707
708
709
710extern int __must_check device_register(struct device *dev);
711extern void device_unregister(struct device *dev);
712extern void device_initialize(struct device *dev);
713extern int __must_check device_add(struct device *dev);
714extern void device_del(struct device *dev);
715extern int device_for_each_child(struct device *dev, void *data,
716 int (*fn)(struct device *dev, void *data));
717extern struct device *device_find_child(struct device *dev, void *data,
718 int (*match)(struct device *dev, void *data));
719extern int device_rename(struct device *dev, const char *new_name);
720extern int device_move(struct device *dev, struct device *new_parent,
721 enum dpm_order dpm_order);
722extern const char *device_get_devnode(struct device *dev,
723 mode_t *mode, const char **tmp);
724extern void *dev_get_drvdata(const struct device *dev);
725extern int dev_set_drvdata(struct device *dev, void *data);
726
727
728
729
730extern struct device *__root_device_register(const char *name,
731 struct module *owner);
732
733
734
735
736
737#define root_device_register(name) \
738 __root_device_register(name, THIS_MODULE)
739
740extern void root_device_unregister(struct device *root);
741
742static inline void *dev_get_platdata(const struct device *dev)
743{
744 return dev->platform_data;
745}
746
747
748
749
750
751extern int __must_check device_bind_driver(struct device *dev);
752extern void device_release_driver(struct device *dev);
753extern int __must_check device_attach(struct device *dev);
754extern int __must_check driver_attach(struct device_driver *drv);
755extern int __must_check device_reprobe(struct device *dev);
756
757
758
759
760extern struct device *device_create_vargs(struct class *cls,
761 struct device *parent,
762 dev_t devt,
763 void *drvdata,
764 const char *fmt,
765 va_list vargs);
766extern __printf(5, 6)
767struct device *device_create(struct class *cls, struct device *parent,
768 dev_t devt, void *drvdata,
769 const char *fmt, ...);
770extern void device_destroy(struct class *cls, dev_t devt);
771
772
773
774
775
776
777
778extern int (*platform_notify)(struct device *dev);
779
780extern int (*platform_notify_remove)(struct device *dev);
781
782
783
784
785
786
787extern struct device *get_device(struct device *dev);
788extern void put_device(struct device *dev);
789
790extern void wait_for_device_probe(void);
791
792#ifdef CONFIG_DEVTMPFS
793extern int devtmpfs_create_node(struct device *dev);
794extern int devtmpfs_delete_node(struct device *dev);
795extern int devtmpfs_mount(const char *mntdir);
796#else
797static inline int devtmpfs_create_node(struct device *dev) { return 0; }
798static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
799static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
800#endif
801
802
803extern void device_shutdown(void);
804
805
806extern const char *dev_driver_string(const struct device *dev);
807
808
809#ifdef CONFIG_PRINTK
810
811extern int __dev_printk(const char *level, const struct device *dev,
812 struct va_format *vaf);
813extern __printf(3, 4)
814int dev_printk(const char *level, const struct device *dev,
815 const char *fmt, ...)
816 ;
817extern __printf(2, 3)
818int dev_emerg(const struct device *dev, const char *fmt, ...);
819extern __printf(2, 3)
820int dev_alert(const struct device *dev, const char *fmt, ...);
821extern __printf(2, 3)
822int dev_crit(const struct device *dev, const char *fmt, ...);
823extern __printf(2, 3)
824int dev_err(const struct device *dev, const char *fmt, ...);
825extern __printf(2, 3)
826int dev_warn(const struct device *dev, const char *fmt, ...);
827extern __printf(2, 3)
828int dev_notice(const struct device *dev, const char *fmt, ...);
829extern __printf(2, 3)
830int _dev_info(const struct device *dev, const char *fmt, ...);
831
832#else
833
834static inline int __dev_printk(const char *level, const struct device *dev,
835 struct va_format *vaf)
836{ return 0; }
837static inline __printf(3, 4)
838int dev_printk(const char *level, const struct device *dev,
839 const char *fmt, ...)
840{ return 0; }
841
842static inline __printf(2, 3)
843int dev_emerg(const struct device *dev, const char *fmt, ...)
844{ return 0; }
845static inline __printf(2, 3)
846int dev_crit(const struct device *dev, const char *fmt, ...)
847{ return 0; }
848static inline __printf(2, 3)
849int dev_alert(const struct device *dev, const char *fmt, ...)
850{ return 0; }
851static inline __printf(2, 3)
852int dev_err(const struct device *dev, const char *fmt, ...)
853{ return 0; }
854static inline __printf(2, 3)
855int dev_warn(const struct device *dev, const char *fmt, ...)
856{ return 0; }
857static inline __printf(2, 3)
858int dev_notice(const struct device *dev, const char *fmt, ...)
859{ return 0; }
860static inline __printf(2, 3)
861int _dev_info(const struct device *dev, const char *fmt, ...)
862{ return 0; }
863
864#endif
865
866
867
868
869
870
871
872
873#define dev_info(dev, fmt, arg...) _dev_info(dev, fmt, ##arg)
874
875#if defined(DEBUG)
876#define dev_dbg(dev, format, arg...) \
877 dev_printk(KERN_DEBUG, dev, format, ##arg)
878#elif defined(CONFIG_DYNAMIC_DEBUG)
879#define dev_dbg(dev, format, ...) \
880do { \
881 dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
882} while (0)
883#else
884#define dev_dbg(dev, format, arg...) \
885({ \
886 if (0) \
887 dev_printk(KERN_DEBUG, dev, format, ##arg); \
888 0; \
889})
890#endif
891
892#ifdef VERBOSE_DEBUG
893#define dev_vdbg dev_dbg
894#else
895#define dev_vdbg(dev, format, arg...) \
896({ \
897 if (0) \
898 dev_printk(KERN_DEBUG, dev, format, ##arg); \
899 0; \
900})
901#endif
902
903
904
905
906
907
908#define dev_WARN(dev, format, arg...) \
909 WARN(1, "Device: %s\n" format, dev_driver_string(dev), ## arg);
910
911#define dev_WARN_ONCE(dev, condition, format, arg...) \
912 WARN_ONCE(condition, "Device %s\n" format, \
913 dev_driver_string(dev), ## arg)
914
915
916#define MODULE_ALIAS_CHARDEV(major,minor) \
917 MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
918#define MODULE_ALIAS_CHARDEV_MAJOR(major) \
919 MODULE_ALIAS("char-major-" __stringify(major) "-*")
920
921#ifdef CONFIG_SYSFS_DEPRECATED
922extern long sysfs_deprecated;
923#else
924#define sysfs_deprecated 0
925#endif
926
927#endif
928