18e22978cSAlexander Shishkin /*
28e22978cSAlexander Shishkin  * Copyright 2012 Freescale Semiconductor, Inc.
38e22978cSAlexander Shishkin  *
48e22978cSAlexander Shishkin  * The code contained herein is licensed under the GNU General Public
58e22978cSAlexander Shishkin  * License. You may obtain a copy of the GNU General Public License
68e22978cSAlexander Shishkin  * Version 2 or later at the following locations:
78e22978cSAlexander Shishkin  *
88e22978cSAlexander Shishkin  * http://www.opensource.org/licenses/gpl-license.html
98e22978cSAlexander Shishkin  * http://www.gnu.org/copyleft/gpl.html
108e22978cSAlexander Shishkin  */
118e22978cSAlexander Shishkin 
128e22978cSAlexander Shishkin /* Used to set SoC specific callbacks */
138e22978cSAlexander Shishkin struct usbmisc_ops {
148e22978cSAlexander Shishkin 	/* It's called once when probe a usb device */
158e22978cSAlexander Shishkin 	int (*init)(struct device *dev);
168e22978cSAlexander Shishkin 	/* It's called once after adding a usb device */
178e22978cSAlexander Shishkin 	int (*post)(struct device *dev);
188e22978cSAlexander Shishkin };
198e22978cSAlexander Shishkin 
208e22978cSAlexander Shishkin struct usbmisc_usb_device {
218e22978cSAlexander Shishkin 	struct device *dev; /* usb controller device */
228e22978cSAlexander Shishkin 	int index;
238e22978cSAlexander Shishkin 
248e22978cSAlexander Shishkin 	unsigned int disable_oc:1; /* over current detect disabled */
258e22978cSAlexander Shishkin 	unsigned int evdo:1; /* set external vbus divider option */
268e22978cSAlexander Shishkin };
278e22978cSAlexander Shishkin 
288e22978cSAlexander Shishkin int usbmisc_set_ops(const struct usbmisc_ops *ops);
298e22978cSAlexander Shishkin void usbmisc_unset_ops(const struct usbmisc_ops *ops);
308e22978cSAlexander Shishkin int
318e22978cSAlexander Shishkin usbmisc_get_init_data(struct device *dev, struct usbmisc_usb_device *usbdev);
32