1dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang/* 2dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * Copyright (C) 2011 Marvell International Ltd. All rights reserved. 3dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * 4dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * This program is free software; you can redistribute it and/or modify it 5dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * under the terms of the GNU General Public License as published by the 6dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * Free Software Foundation; either version 2 of the License, or (at your 7dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang * option) any later version. 8dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang */ 9dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 10dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang#ifndef __MV_PLATFORM_USB_H 11dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang#define __MV_PLATFORM_USB_H 12dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 13dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhangenum pxa_ehci_type { 14dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang EHCI_UNDEFINED = 0, 15dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang PXA_U2OEHCI, /* pxa 168, 9xx */ 16dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang PXA_SPH, /* pxa 168, 9xx SPH */ 17dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang MMP3_HSIC, /* mmp3 hsic */ 18dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang MMP3_FSIC, /* mmp3 fsic */ 19dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang}; 20dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 21dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhangenum { 22dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang MV_USB_MODE_OTG, 23dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang MV_USB_MODE_HOST, 24dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang}; 25dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 26dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhangenum { 27dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang VBUS_LOW = 0, 28dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang VBUS_HIGH = 1 << 0, 29dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang}; 30dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 31dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhangstruct mv_usb_addon_irq { 32dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang unsigned int irq; 33dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang int (*poll)(void); 34dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang}; 35dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 36dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhangstruct mv_usb_platform_data { 37dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang struct mv_usb_addon_irq *id; /* Only valid for OTG. ID pin change*/ 38dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang struct mv_usb_addon_irq *vbus; /* valid for OTG/UDC. VBUS change*/ 39dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 40dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang /* only valid for HCD. OTG or Host only*/ 41dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang unsigned int mode; 42dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang 43277164f03f466b7a1ea0d0c3dac8b8a0599ce0dcNeil Zhang /* This flag is used for that needs id pin checked by otg */ 44277164f03f466b7a1ea0d0c3dac8b8a0599ce0dcNeil Zhang unsigned int disable_otg_clock_gating:1; 45277164f03f466b7a1ea0d0c3dac8b8a0599ce0dcNeil Zhang /* Force a_bus_req to be asserted */ 46277164f03f466b7a1ea0d0c3dac8b8a0599ce0dcNeil Zhang unsigned int otg_force_a_bus_req:1; 47277164f03f466b7a1ea0d0c3dac8b8a0599ce0dcNeil Zhang 485e6c86b017691230b6b47f19b7d5449997e8a0b8Neil Zhang int (*phy_init)(void __iomem *regbase); 495e6c86b017691230b6b47f19b7d5449997e8a0b8Neil Zhang void (*phy_deinit)(void __iomem *regbase); 50dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang int (*set_vbus)(unsigned int vbus); 513a082ec9b2f544a81e977cfa259e3f990a995dc8Neil Zhang int (*private_init)(void __iomem *opregs, void __iomem *phyregs); 52dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang}; 53dde34cc5019b51088c18ca789d4b1a20cf9bc617Neil Zhang#endif 54