usb: document device authorization
[deliverable/linux.git] / drivers / usb / core / usb.h
CommitLineData
1da177e4
LT
1/* Functions local to drivers/usb/core/ */
2
1b21d5e1 3extern int usb_create_sysfs_dev_files (struct usb_device *dev);
1da177e4 4extern void usb_remove_sysfs_dev_files (struct usb_device *dev);
1b21d5e1 5extern int usb_create_sysfs_intf_files (struct usb_interface *intf);
1da177e4 6extern void usb_remove_sysfs_intf_files (struct usb_interface *intf);
1b21d5e1 7extern int usb_create_ep_files(struct device *parent, struct usb_host_endpoint *endpoint,
84412f62
GKH
8 struct usb_device *udev);
9extern void usb_remove_ep_files(struct usb_host_endpoint *endpoint);
1da177e4 10
bdd016ba
AS
11extern void usb_enable_endpoint(struct usb_device *dev,
12 struct usb_host_endpoint *ep);
1da177e4
LT
13extern void usb_disable_endpoint (struct usb_device *dev, unsigned int epaddr);
14extern void usb_disable_interface (struct usb_device *dev,
15 struct usb_interface *intf);
16extern void usb_release_interface_cache(struct kref *ref);
17extern void usb_disable_device (struct usb_device *dev, int skip_ep0);
93993a0a
IPG
18extern int usb_deauthorize_device (struct usb_device *);
19extern int usb_authorize_device (struct usb_device *);
7ceec1f1 20extern void usb_detect_quirks(struct usb_device *udev);
1da177e4
LT
21
22extern int usb_get_device_descriptor(struct usb_device *dev,
23 unsigned int size);
4f62efe6 24extern char *usb_cache_string(struct usb_device *udev, int index);
1da177e4 25extern int usb_set_configuration(struct usb_device *dev, int configuration);
93993a0a 26extern int choose_configuration(struct usb_device *udev);
1da177e4 27
1da177e4 28extern void usb_kick_khubd(struct usb_device *dev);
bb417020
GKH
29extern int usb_match_device(struct usb_device *dev,
30 const struct usb_device_id *id);
1da177e4 31
6d5e8254
GK
32extern int usb_hub_init(void);
33extern void usb_hub_cleanup(void);
34extern int usb_major_init(void);
35extern void usb_major_cleanup(void);
36extern int usb_host_init(void);
37extern void usb_host_cleanup(void);
38
d388dab7
AS
39#ifdef CONFIG_PM
40
718efa64 41extern void usb_autosuspend_work(struct work_struct *work);
140d8f68
AS
42extern int usb_port_suspend(struct usb_device *dev);
43extern int usb_port_resume(struct usb_device *dev);
6b157c9b
AS
44extern int usb_external_suspend_device(struct usb_device *udev,
45 pm_message_t msg);
46extern int usb_external_resume_device(struct usb_device *udev);
5edbfb7c 47
e0318ebf
AS
48static inline void usb_pm_lock(struct usb_device *udev)
49{
50 mutex_lock_nested(&udev->pm_mutex, udev->level);
51}
52
53static inline void usb_pm_unlock(struct usb_device *udev)
54{
55 mutex_unlock(&udev->pm_mutex);
56}
57
d388dab7
AS
58#else
59
4956eccd
AS
60static inline int usb_port_suspend(struct usb_device *udev)
61{
62 return 0;
63}
64
65static inline int usb_port_resume(struct usb_device *udev)
66{
67 return 0;
68}
69
e0318ebf
AS
70static inline void usb_pm_lock(struct usb_device *udev) {}
71static inline void usb_pm_unlock(struct usb_device *udev) {}
d388dab7
AS
72
73#endif
74
645daaab
AS
75#ifdef CONFIG_USB_SUSPEND
76
94fcda1f 77extern void usb_autosuspend_device(struct usb_device *udev);
19c26239 78extern void usb_try_autosuspend_device(struct usb_device *udev);
94fcda1f 79extern int usb_autoresume_device(struct usb_device *udev);
645daaab
AS
80
81#else
82
19c26239
AS
83#define usb_autosuspend_device(udev) do {} while (0)
84#define usb_try_autosuspend_device(udev) do {} while (0)
94fcda1f 85static inline int usb_autoresume_device(struct usb_device *udev)
e0318ebf
AS
86{
87 return 0;
88}
645daaab
AS
89
90#endif
91
bd859281 92extern struct workqueue_struct *ksuspend_usb_wq;
36e56a34 93extern struct bus_type usb_bus_type;
9f8b17e6
KS
94extern struct device_type usb_device_type;
95extern struct device_type usb_if_device_type;
8bb54ab5
AS
96extern struct usb_device_driver usb_generic_driver;
97
095bc335 98static inline int is_usb_device(const struct device *dev)
8bb54ab5 99{
9f8b17e6 100 return dev->type == &usb_device_type;
8bb54ab5
AS
101}
102
103/* Do the same for device drivers and interface drivers. */
104
105static inline int is_usb_device_driver(struct device_driver *drv)
106{
107 return container_of(drv, struct usbdrv_wrap, driver)->
108 for_devices;
109}
5edbfb7c 110
db690874
DB
111/* Interfaces and their "power state" are owned by usbcore */
112
113static inline void mark_active(struct usb_interface *f)
114{
4d064c08 115 f->is_active = 1;
784a6e1c 116 f->dev.power.power_state.event = PM_EVENT_ON;
db690874
DB
117}
118
119static inline void mark_quiesced(struct usb_interface *f)
120{
4d064c08 121 f->is_active = 0;
784a6e1c 122 f->dev.power.power_state.event = PM_EVENT_SUSPEND;
db690874
DB
123}
124
095bc335 125static inline int is_active(const struct usb_interface *f)
db690874 126{
4d064c08 127 return f->is_active;
db690874
DB
128}
129
130
1da177e4
LT
131/* for labeling diagnostics */
132extern const char *usbcore_name;
133
134/* usbfs stuff */
4a2a8a2c 135extern struct mutex usbfs_mutex;
1da177e4 136extern struct usb_driver usbfs_driver;
066202dd 137extern const struct file_operations usbfs_devices_fops;
9f8b17e6 138extern const struct file_operations usbdev_file_operations;
1da177e4
LT
139extern void usbfs_conn_disc_event(void);
140
9f8b17e6
KS
141extern int usb_devio_init(void);
142extern void usb_devio_cleanup(void);
6d5e8254 143
1da177e4
LT
144struct dev_state {
145 struct list_head list; /* state list */
146 struct usb_device *dev;
147 struct file *file;
148 spinlock_t lock; /* protects the async urb lists */
149 struct list_head async_pending;
150 struct list_head async_completed;
151 wait_queue_head_t wait; /* wake up if a request completed */
152 unsigned int discsignr;
2425c08b 153 struct pid *disc_pid;
d7dd8a72 154 uid_t disc_uid, disc_euid;
1da177e4
LT
155 void __user *disccontext;
156 unsigned long ifclaimed;
7a01955f 157 u32 secid;
1da177e4
LT
158};
159
3099e75a
GKH
160/* internal notify stuff */
161extern void usb_notify_add_device(struct usb_device *udev);
162extern void usb_notify_remove_device(struct usb_device *udev);
163extern void usb_notify_add_bus(struct usb_bus *ubus);
164extern void usb_notify_remove_bus(struct usb_bus *ubus);
165
This page took 0.316321 seconds and 5 git commands to generate.