xref: /linux/include/linux/platform_data/mv_usb.h (revision 44f57d78)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2011 Marvell International Ltd. All rights reserved.
4  */
5 
6 #ifndef __MV_PLATFORM_USB_H
7 #define __MV_PLATFORM_USB_H
8 
9 enum pxa_ehci_type {
10 	EHCI_UNDEFINED = 0,
11 	PXA_U2OEHCI,	/* pxa 168, 9xx */
12 	PXA_SPH,	/* pxa 168, 9xx SPH */
13 	MMP3_HSIC,	/* mmp3 hsic */
14 	MMP3_FSIC,	/* mmp3 fsic */
15 };
16 
17 enum {
18 	MV_USB_MODE_OTG,
19 	MV_USB_MODE_HOST,
20 };
21 
22 enum {
23 	VBUS_LOW	= 0,
24 	VBUS_HIGH	= 1 << 0,
25 };
26 
27 struct mv_usb_addon_irq {
28 	unsigned int	irq;
29 	int		(*poll)(void);
30 };
31 
32 struct mv_usb_platform_data {
33 	struct mv_usb_addon_irq	*id;	/* Only valid for OTG. ID pin change*/
34 	struct mv_usb_addon_irq	*vbus;	/* valid for OTG/UDC. VBUS change*/
35 
36 	/* only valid for HCD. OTG or Host only*/
37 	unsigned int		mode;
38 
39 	/* This flag is used for that needs id pin checked by otg */
40 	unsigned int    disable_otg_clock_gating:1;
41 	/* Force a_bus_req to be asserted */
42 	 unsigned int    otg_force_a_bus_req:1;
43 
44 	int	(*phy_init)(void __iomem *regbase);
45 	void	(*phy_deinit)(void __iomem *regbase);
46 	int	(*set_vbus)(unsigned int vbus);
47 };
48 #endif
49