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