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