59 lines
1.9 KiB
C
59 lines
1.9 KiB
C
/*
|
|
* Copyright (C) 2011 Google, Inc.
|
|
*
|
|
* Author:
|
|
* Colin Cross <ccross@android.com>
|
|
*
|
|
* This software is licensed under the terms of the GNU General Public
|
|
* License version 2, as published by the Free Software Foundation, and
|
|
* may be copied, distributed, and modified under those terms.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#ifndef __LINUX_USB_OTG_ID_H
|
|
#define __LINUX_USB_OTG_ID_H
|
|
|
|
#include <linux/notifier.h>
|
|
#include <linux/plist.h>
|
|
|
|
/**
|
|
* otg_id_notifier_block
|
|
*
|
|
* @priority: Order the notifications will be called in. Higher numbers
|
|
* get called first.
|
|
* @detect: Called during otg_id_notify. Return OTG_ID_HANDLED if the USB cable
|
|
* has been identified
|
|
* @proxy_wait: Called during otg_id_notify if a previous handler returns
|
|
* OTG_ID_PROXY_WAIT. This should wait on ID change then call otg_id_notify.
|
|
* This is used when a handler knows what's connected but can't detect
|
|
* the change itself.
|
|
* @cancel: Called after detect has returned OTG_ID_HANDLED to ask it to
|
|
* release detection resources to allow a new identification to occur.
|
|
*/
|
|
|
|
struct otg_id_notifier_block {
|
|
int priority;
|
|
int (*detect)(struct otg_id_notifier_block *otg_id_nb);
|
|
int (*proxy_wait)(struct otg_id_notifier_block *otg_id_nb);
|
|
void (*cancel)(struct otg_id_notifier_block *otg_id_nb);
|
|
struct plist_node p;
|
|
};
|
|
|
|
#define OTG_ID_PROXY_WAIT 2
|
|
#define OTG_ID_HANDLED 1
|
|
#define OTG_ID_UNHANDLED 0
|
|
|
|
int otg_id_register_notifier(struct otg_id_notifier_block *otg_id_nb);
|
|
void otg_id_unregister_notifier(struct otg_id_notifier_block *otg_id_nb);
|
|
|
|
void otg_id_notify(void);
|
|
int otg_id_suspend(void);
|
|
void otg_id_resume(void);
|
|
|
|
#endif /* __LINUX_USB_OTG_ID_H */
|