2 * Copyright (C) 2011 Google, Inc.
5 * Colin Cross <ccross@android.com>
7 * This software is licensed under the terms of the GNU General Public
8 * License version 2, as published by the Free Software Foundation, and
9 * may be copied, distributed, and modified under those terms.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
18 #ifndef __LINUX_USB_OTG_ID_H
19 #define __LINUX_USB_OTG_ID_H
21 #include <linux/notifier.h>
22 #include <linux/plist.h>
25 * otg_id_notifier_block
27 * @priority: Order the notifications will be called in. Higher numbers
29 * @detect: Called during otg_id_notify. Return OTG_ID_HANDLED if the USB cable
31 * @proxy_wait: Called during otg_id_notify if a previous handler returns
32 * OTG_ID_PROXY_WAIT. This should wait on ID change then call otg_id_notify.
33 * This is used when a handler knows what's connected but can't detect
35 * @cancel: Called after detect has returned OTG_ID_HANDLED to ask it to
36 * release detection resources to allow a new identification to occur.
39 struct otg_id_notifier_block {
41 int (*detect)(struct otg_id_notifier_block *otg_id_nb);
42 int (*proxy_wait)(struct otg_id_notifier_block *otg_id_nb);
43 void (*cancel)(struct otg_id_notifier_block *otg_id_nb);
47 #define OTG_ID_PROXY_WAIT 2
48 #define OTG_ID_HANDLED 1
49 #define OTG_ID_UNHANDLED 0
51 int otg_id_register_notifier(struct otg_id_notifier_block *otg_id_nb);
52 void otg_id_unregister_notifier(struct otg_id_notifier_block *otg_id_nb);
54 void otg_id_notify(void);
55 int otg_id_suspend(void);
56 void otg_id_resume(void);
58 #endif /* __LINUX_USB_OTG_ID_H */