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 {
10 	MV_USB_MODE_OTG,
11 	MV_USB_MODE_HOST,
12 };
13 
14 enum {
15 	VBUS_LOW	= 0,
16 	VBUS_HIGH	= 1 << 0,
17 };
18 
19 struct mv_usb_addon_irq {
20 	unsigned int	irq;
21 	int		(*poll)(void);
22 };
23 
24 struct mv_usb_platform_data {
25 	struct mv_usb_addon_irq	*id;	/* Only valid for OTG. ID pin change*/
26 	struct mv_usb_addon_irq	*vbus;	/* valid for OTG/UDC. VBUS change*/
27 
28 	/* only valid for HCD. OTG or Host only*/
29 	unsigned int		mode;
30 
31 	/* This flag is used for that needs id pin checked by otg */
32 	unsigned int    disable_otg_clock_gating:1;
33 	/* Force a_bus_req to be asserted */
34 	 unsigned int    otg_force_a_bus_req:1;
35 
36 	int	(*phy_init)(void __iomem *regbase);
37 	void	(*phy_deinit)(void __iomem *regbase);
38 	int	(*set_vbus)(unsigned int vbus);
39 };
40 #endif
41