chipidea.h 1.0 KB
Newer Older
1 2 3 4 5 6 7
/*
 * Platform data for the chipidea USB dual role controller
 */

#ifndef __LINUX_USB_CHIPIDEA_H
#define __LINUX_USB_CHIPIDEA_H

8 9
#include <linux/usb/otg.h>

10 11
struct ci_hdrc;
struct ci_hdrc_platform_data {
12 13 14
	const char	*name;
	/* offset of the capability registers */
	uintptr_t	 capoffset;
15
	unsigned	 power_budget;
16
	struct usb_phy	*phy;
17
	enum usb_phy_interface phy_mode;
18
	unsigned long	 flags;
19 20 21 22
#define CI_HDRC_REGS_SHARED		BIT(0)
#define CI_HDRC_REQUIRE_TRANSCEIVER	BIT(1)
#define CI_HDRC_PULLUP_ON_VBUS		BIT(2)
#define CI_HDRC_DISABLE_STREAMING	BIT(3)
23
	enum usb_dr_mode	dr_mode;
24 25 26
#define CI_HDRC_CONTROLLER_RESET_EVENT		0
#define CI_HDRC_CONTROLLER_STOPPED_EVENT	1
	void	(*notify_event) (struct ci_hdrc *ci, unsigned event);
27 28 29 30 31
};

/* Default offset of capability registers */
#define DEF_CAPOFFSET		0x100

32 33
/* Add ci hdrc device */
struct platform_device *ci_hdrc_add_device(struct device *dev,
34
			struct resource *res, int nres,
35 36 37
			struct ci_hdrc_platform_data *platdata);
/* Remove ci hdrc device */
void ci_hdrc_remove_device(struct platform_device *pdev);
38

39
#endif