UIO: remove 'default n' from Kconfig
[deliverable/linux.git] / drivers / usb / core / usb.h
CommitLineData
65bfd296
AS
1#include <linux/pm.h>
2
1da177e4
LT
3/* Functions local to drivers/usb/core/ */
4
84cca820
GKH
5extern int usb_create_sysfs_dev_files(struct usb_device *dev);
6extern void usb_remove_sysfs_dev_files(struct usb_device *dev);
7extern int usb_create_sysfs_intf_files(struct usb_interface *intf);
8extern void usb_remove_sysfs_intf_files(struct usb_interface *intf);
3b23dd6f 9extern int usb_create_ep_devs(struct device *parent,
84cca820 10 struct usb_host_endpoint *endpoint,
84412f62 11 struct usb_device *udev);
3b23dd6f 12extern void usb_remove_ep_devs(struct usb_host_endpoint *endpoint);
1da177e4 13
bdd016ba 14extern void usb_enable_endpoint(struct usb_device *dev,
2caf7fcd
AS
15 struct usb_host_endpoint *ep, bool reset_toggle);
16extern void usb_enable_interface(struct usb_device *dev,
17 struct usb_interface *intf, bool reset_toggles);
ddeac4e7
AS
18extern void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,
19 bool reset_hardware);
84cca820 20extern void usb_disable_interface(struct usb_device *dev,
ddeac4e7 21 struct usb_interface *intf, bool reset_hardware);
1da177e4 22extern void usb_release_interface_cache(struct kref *ref);
84cca820
GKH
23extern void usb_disable_device(struct usb_device *dev, int skip_ep0);
24extern int usb_deauthorize_device(struct usb_device *);
25extern int usb_authorize_device(struct usb_device *);
7ceec1f1 26extern void usb_detect_quirks(struct usb_device *udev);
1da177e4
LT
27
28extern int usb_get_device_descriptor(struct usb_device *dev,
29 unsigned int size);
4f62efe6 30extern char *usb_cache_string(struct usb_device *udev, int index);
1da177e4 31extern int usb_set_configuration(struct usb_device *dev, int configuration);
b5ea060f 32extern int usb_choose_configuration(struct usb_device *udev);
1da177e4 33
1da177e4 34extern void usb_kick_khubd(struct usb_device *dev);
bb417020
GKH
35extern int usb_match_device(struct usb_device *dev,
36 const struct usb_device_id *id);
78d9a487
AS
37extern void usb_forced_unbind_intf(struct usb_interface *intf);
38extern void usb_rebind_intf(struct usb_interface *intf);
1da177e4 39
6d5e8254
GK
40extern int usb_hub_init(void);
41extern void usb_hub_cleanup(void);
42extern int usb_major_init(void);
43extern void usb_major_cleanup(void);
6d5e8254 44
d388dab7
AS
45#ifdef CONFIG_PM
46
f2189c47 47extern int usb_suspend(struct device *dev, pm_message_t msg);
65bfd296 48extern int usb_resume(struct device *dev, pm_message_t msg);
f2189c47 49
718efa64 50extern void usb_autosuspend_work(struct work_struct *work);
9ac39f28 51extern void usb_autoresume_work(struct work_struct *work);
65bfd296
AS
52extern int usb_port_suspend(struct usb_device *dev, pm_message_t msg);
53extern int usb_port_resume(struct usb_device *dev, pm_message_t msg);
6b157c9b
AS
54extern int usb_external_suspend_device(struct usb_device *udev,
55 pm_message_t msg);
65bfd296
AS
56extern int usb_external_resume_device(struct usb_device *udev,
57 pm_message_t msg);
5edbfb7c 58
e0318ebf
AS
59static inline void usb_pm_lock(struct usb_device *udev)
60{
61 mutex_lock_nested(&udev->pm_mutex, udev->level);
62}
63
64static inline void usb_pm_unlock(struct usb_device *udev)
65{
66 mutex_unlock(&udev->pm_mutex);
67}
68
d388dab7
AS
69#else
70
65bfd296 71static inline int usb_port_suspend(struct usb_device *udev, pm_message_t msg)
4956eccd
AS
72{
73 return 0;
74}
75
65bfd296 76static inline int usb_port_resume(struct usb_device *udev, pm_message_t msg)
4956eccd
AS
77{
78 return 0;
79}
80
e0318ebf
AS
81static inline void usb_pm_lock(struct usb_device *udev) {}
82static inline void usb_pm_unlock(struct usb_device *udev) {}
d388dab7
AS
83
84#endif
85
645daaab
AS
86#ifdef CONFIG_USB_SUSPEND
87
94fcda1f 88extern void usb_autosuspend_device(struct usb_device *udev);
19c26239 89extern void usb_try_autosuspend_device(struct usb_device *udev);
94fcda1f 90extern int usb_autoresume_device(struct usb_device *udev);
645daaab
AS
91
92#else
93
19c26239
AS
94#define usb_autosuspend_device(udev) do {} while (0)
95#define usb_try_autosuspend_device(udev) do {} while (0)
94fcda1f 96static inline int usb_autoresume_device(struct usb_device *udev)
e0318ebf
AS
97{
98 return 0;
99}
645daaab
AS
100
101#endif
102
bd859281 103extern struct workqueue_struct *ksuspend_usb_wq;
36e56a34 104extern struct bus_type usb_bus_type;
9f8b17e6
KS
105extern struct device_type usb_device_type;
106extern struct device_type usb_if_device_type;
55129666 107extern struct device_type usb_ep_device_type;
8bb54ab5
AS
108extern struct usb_device_driver usb_generic_driver;
109
095bc335 110static inline int is_usb_device(const struct device *dev)
8bb54ab5 111{
9f8b17e6 112 return dev->type == &usb_device_type;
8bb54ab5
AS
113}
114
55129666
KS
115static inline int is_usb_interface(const struct device *dev)
116{
117 return dev->type == &usb_if_device_type;
118}
119
120static inline int is_usb_endpoint(const struct device *dev)
121{
122 return dev->type == &usb_ep_device_type;
123}
124
8bb54ab5
AS
125/* Do the same for device drivers and interface drivers. */
126
127static inline int is_usb_device_driver(struct device_driver *drv)
128{
129 return container_of(drv, struct usbdrv_wrap, driver)->
130 for_devices;
131}
5edbfb7c 132
db690874
DB
133/* Interfaces and their "power state" are owned by usbcore */
134
135static inline void mark_active(struct usb_interface *f)
136{
4d064c08 137 f->is_active = 1;
db690874
DB
138}
139
140static inline void mark_quiesced(struct usb_interface *f)
141{
4d064c08 142 f->is_active = 0;
db690874
DB
143}
144
095bc335 145static inline int is_active(const struct usb_interface *f)
db690874 146{
4d064c08 147 return f->is_active;
db690874
DB
148}
149
150
1da177e4
LT
151/* for labeling diagnostics */
152extern const char *usbcore_name;
153
2e5f10e4
AS
154/* sysfs stuff */
155extern struct attribute_group *usb_device_groups[];
156extern struct attribute_group *usb_interface_groups[];
157
1da177e4 158/* usbfs stuff */
4a2a8a2c 159extern struct mutex usbfs_mutex;
1da177e4 160extern struct usb_driver usbfs_driver;
066202dd 161extern const struct file_operations usbfs_devices_fops;
9f8b17e6 162extern const struct file_operations usbdev_file_operations;
1da177e4
LT
163extern void usbfs_conn_disc_event(void);
164
9f8b17e6
KS
165extern int usb_devio_init(void);
166extern void usb_devio_cleanup(void);
6d5e8254 167
3099e75a
GKH
168/* internal notify stuff */
169extern void usb_notify_add_device(struct usb_device *udev);
170extern void usb_notify_remove_device(struct usb_device *udev);
171extern void usb_notify_add_bus(struct usb_bus *ubus);
172extern void usb_notify_remove_bus(struct usb_bus *ubus);
173
This page took 0.678546 seconds and 5 git commands to generate.