diff options
Diffstat (limited to 'include/linux/usb')
-rw-r--r-- | include/linux/usb/ch11.h | 47 | ||||
-rw-r--r-- | include/linux/usb/ch9.h | 10 | ||||
-rw-r--r-- | include/linux/usb/hcd.h | 4 | ||||
-rw-r--r-- | include/linux/usb/msm_hsusb.h | 112 | ||||
-rw-r--r-- | include/linux/usb/msm_hsusb_hw.h | 59 | ||||
-rw-r--r-- | include/linux/usb/musb.h | 8 | ||||
-rw-r--r-- | include/linux/usb/otg.h | 2 |
7 files changed, 237 insertions, 5 deletions
diff --git a/include/linux/usb/ch11.h b/include/linux/usb/ch11.h index 119194c85d10..10ec0699bea4 100644 --- a/include/linux/usb/ch11.h +++ b/include/linux/usb/ch11.h | |||
@@ -28,6 +28,13 @@ | |||
28 | #define HUB_STOP_TT 11 | 28 | #define HUB_STOP_TT 11 |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * Hub class additional requests defined by USB 3.0 spec | ||
32 | * See USB 3.0 spec Table 10-6 | ||
33 | */ | ||
34 | #define HUB_SET_DEPTH 12 | ||
35 | #define HUB_GET_PORT_ERR_COUNT 13 | ||
36 | |||
37 | /* | ||
31 | * Hub Class feature numbers | 38 | * Hub Class feature numbers |
32 | * See USB 2.0 spec Table 11-17 | 39 | * See USB 2.0 spec Table 11-17 |
33 | */ | 40 | */ |
@@ -56,6 +63,20 @@ | |||
56 | #define USB_PORT_FEAT_C_PORT_L1 23 | 63 | #define USB_PORT_FEAT_C_PORT_L1 23 |
57 | 64 | ||
58 | /* | 65 | /* |
66 | * Port feature selectors added by USB 3.0 spec. | ||
67 | * See USB 3.0 spec Table 10-7 | ||
68 | */ | ||
69 | #define USB_PORT_FEAT_LINK_STATE 5 | ||
70 | #define USB_PORT_FEAT_U1_TIMEOUT 23 | ||
71 | #define USB_PORT_FEAT_U2_TIMEOUT 24 | ||
72 | #define USB_PORT_FEAT_C_LINK_STATE 25 | ||
73 | #define USB_PORT_FEAT_C_CONFIG_ERR 26 | ||
74 | #define USB_PORT_FEAT_REMOTE_WAKE_MASK 27 | ||
75 | #define USB_PORT_FEAT_BH_PORT_RESET 28 | ||
76 | #define USB_PORT_FEAT_C_BH_PORT_RESET 29 | ||
77 | #define USB_PORT_FEAT_FORCE_LINKPM_ACCEPT 30 | ||
78 | |||
79 | /* | ||
59 | * Hub Status and Hub Change results | 80 | * Hub Status and Hub Change results |
60 | * See USB 2.0 spec Table 11-19 and Table 11-20 | 81 | * See USB 2.0 spec Table 11-19 and Table 11-20 |
61 | */ | 82 | */ |
@@ -84,6 +105,32 @@ struct usb_port_status { | |||
84 | #define USB_PORT_STAT_SUPER_SPEED 0x8000 /* Linux-internal */ | 105 | #define USB_PORT_STAT_SUPER_SPEED 0x8000 /* Linux-internal */ |
85 | 106 | ||
86 | /* | 107 | /* |
108 | * Additions to wPortStatus bit field from USB 3.0 | ||
109 | * See USB 3.0 spec Table 10-10 | ||
110 | */ | ||
111 | #define USB_PORT_STAT_LINK_STATE 0x01e0 | ||
112 | #define USB_SS_PORT_STAT_POWER 0x0200 | ||
113 | #define USB_PORT_STAT_SPEED_5GBPS 0x0000 | ||
114 | /* Valid only if port is enabled */ | ||
115 | |||
116 | /* | ||
117 | * Definitions for PORT_LINK_STATE values | ||
118 | * (bits 5-8) in wPortStatus | ||
119 | */ | ||
120 | #define USB_SS_PORT_LS_U0 0x0000 | ||
121 | #define USB_SS_PORT_LS_U1 0x0020 | ||
122 | #define USB_SS_PORT_LS_U2 0x0040 | ||
123 | #define USB_SS_PORT_LS_U3 0x0060 | ||
124 | #define USB_SS_PORT_LS_SS_DISABLED 0x0080 | ||
125 | #define USB_SS_PORT_LS_RX_DETECT 0x00a0 | ||
126 | #define USB_SS_PORT_LS_SS_INACTIVE 0x00c0 | ||
127 | #define USB_SS_PORT_LS_POLLING 0x00e0 | ||
128 | #define USB_SS_PORT_LS_RECOVERY 0x0100 | ||
129 | #define USB_SS_PORT_LS_HOT_RESET 0x0120 | ||
130 | #define USB_SS_PORT_LS_COMP_MOD 0x0140 | ||
131 | #define USB_SS_PORT_LS_LOOPBACK 0x0160 | ||
132 | |||
133 | /* | ||
87 | * wPortChange bit field | 134 | * wPortChange bit field |
88 | * See USB 2.0 spec Table 11-22 | 135 | * See USB 2.0 spec Table 11-22 |
89 | * Bits 0 to 4 shown, bits 5 to 15 are reserved | 136 | * Bits 0 to 4 shown, bits 5 to 15 are reserved |
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h index f917bbbc8901..ab461948b579 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h | |||
@@ -124,6 +124,16 @@ | |||
124 | #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */ | 124 | #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */ |
125 | 125 | ||
126 | /* | 126 | /* |
127 | * Test Mode Selectors | ||
128 | * See USB 2.0 spec Table 9-7 | ||
129 | */ | ||
130 | #define TEST_J 1 | ||
131 | #define TEST_K 2 | ||
132 | #define TEST_SE0_NAK 3 | ||
133 | #define TEST_PACKET 4 | ||
134 | #define TEST_FORCE_EN 5 | ||
135 | |||
136 | /* | ||
127 | * New Feature Selectors as added by USB 3.0 | 137 | * New Feature Selectors as added by USB 3.0 |
128 | * See USB 3.0 spec Table 9-6 | 138 | * See USB 3.0 spec Table 9-6 |
129 | */ | 139 | */ |
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 0b6e751ea0b1..dd6ee49a0844 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h | |||
@@ -471,6 +471,10 @@ extern void usb_ep0_reinit(struct usb_device *); | |||
471 | 471 | ||
472 | /*-------------------------------------------------------------------------*/ | 472 | /*-------------------------------------------------------------------------*/ |
473 | 473 | ||
474 | /* class requests from USB 3.0 hub spec, table 10-5 */ | ||
475 | #define SetHubDepth (0x3000 | HUB_SET_DEPTH) | ||
476 | #define GetPortErrorCount (0x8000 | HUB_GET_PORT_ERR_COUNT) | ||
477 | |||
474 | /* | 478 | /* |
475 | * Generic bandwidth allocation constants/support | 479 | * Generic bandwidth allocation constants/support |
476 | */ | 480 | */ |
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h new file mode 100644 index 000000000000..3675e03b1539 --- /dev/null +++ b/include/linux/usb/msm_hsusb.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /* linux/include/asm-arm/arch-msm/hsusb.h | ||
2 | * | ||
3 | * Copyright (C) 2008 Google, Inc. | ||
4 | * Author: Brian Swetland <swetland@google.com> | ||
5 | * Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved. | ||
6 | * | ||
7 | * This software is licensed under the terms of the GNU General Public | ||
8 | * License version 2, as published by the Free Software Foundation, and | ||
9 | * may be copied, distributed, and modified under those terms. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #ifndef __ASM_ARCH_MSM_HSUSB_H | ||
19 | #define __ASM_ARCH_MSM_HSUSB_H | ||
20 | |||
21 | #include <linux/types.h> | ||
22 | #include <linux/usb/otg.h> | ||
23 | |||
24 | /** | ||
25 | * Supported USB modes | ||
26 | * | ||
27 | * USB_PERIPHERAL Only peripheral mode is supported. | ||
28 | * USB_HOST Only host mode is supported. | ||
29 | * USB_OTG OTG mode is supported. | ||
30 | * | ||
31 | */ | ||
32 | enum usb_mode_type { | ||
33 | USB_NONE = 0, | ||
34 | USB_PERIPHERAL, | ||
35 | USB_HOST, | ||
36 | USB_OTG, | ||
37 | }; | ||
38 | |||
39 | /** | ||
40 | * OTG control | ||
41 | * | ||
42 | * OTG_NO_CONTROL Id/VBUS notifications not required. Useful in host | ||
43 | * only configuration. | ||
44 | * OTG_PHY_CONTROL Id/VBUS notifications comes form USB PHY. | ||
45 | * OTG_PMIC_CONTROL Id/VBUS notifications comes from PMIC hardware. | ||
46 | * OTG_USER_CONTROL Id/VBUS notifcations comes from User via sysfs. | ||
47 | * | ||
48 | */ | ||
49 | enum otg_control_type { | ||
50 | OTG_NO_CONTROL = 0, | ||
51 | OTG_PHY_CONTROL, | ||
52 | OTG_PMIC_CONTROL, | ||
53 | OTG_USER_CONTROL, | ||
54 | }; | ||
55 | |||
56 | /** | ||
57 | * struct msm_otg_platform_data - platform device data | ||
58 | * for msm72k_otg driver. | ||
59 | * @phy_init_seq: PHY configuration sequence. val, reg pairs | ||
60 | * terminated by -1. | ||
61 | * @vbus_power: VBUS power on/off routine. | ||
62 | * @power_budget: VBUS power budget in mA (0 will be treated as 500mA). | ||
63 | * @mode: Supported mode (OTG/peripheral/host). | ||
64 | * @otg_control: OTG switch controlled by user/Id pin | ||
65 | * @default_mode: Default operational mode. Applicable only if | ||
66 | * OTG switch is controller by user. | ||
67 | * | ||
68 | */ | ||
69 | struct msm_otg_platform_data { | ||
70 | int *phy_init_seq; | ||
71 | void (*vbus_power)(bool on); | ||
72 | unsigned power_budget; | ||
73 | enum usb_mode_type mode; | ||
74 | enum otg_control_type otg_control; | ||
75 | enum usb_mode_type default_mode; | ||
76 | void (*setup_gpio)(enum usb_otg_state state); | ||
77 | }; | ||
78 | |||
79 | /** | ||
80 | * struct msm_otg: OTG driver data. Shared by HCD and DCD. | ||
81 | * @otg: USB OTG Transceiver structure. | ||
82 | * @pdata: otg device platform data. | ||
83 | * @irq: IRQ number assigned for HSUSB controller. | ||
84 | * @clk: clock struct of usb_hs_clk. | ||
85 | * @pclk: clock struct of usb_hs_pclk. | ||
86 | * @phy_reset_clk: clock struct of usb_phy_clk. | ||
87 | * @core_clk: clock struct of usb_hs_core_clk. | ||
88 | * @regs: ioremapped register base address. | ||
89 | * @inputs: OTG state machine inputs(Id, SessValid etc). | ||
90 | * @sm_work: OTG state machine work. | ||
91 | * @in_lpm: indicates low power mode (LPM) state. | ||
92 | * @async_int: Async interrupt arrived. | ||
93 | * | ||
94 | */ | ||
95 | struct msm_otg { | ||
96 | struct otg_transceiver otg; | ||
97 | struct msm_otg_platform_data *pdata; | ||
98 | int irq; | ||
99 | struct clk *clk; | ||
100 | struct clk *pclk; | ||
101 | struct clk *phy_reset_clk; | ||
102 | struct clk *core_clk; | ||
103 | void __iomem *regs; | ||
104 | #define ID 0 | ||
105 | #define B_SESS_VLD 1 | ||
106 | unsigned long inputs; | ||
107 | struct work_struct sm_work; | ||
108 | atomic_t in_lpm; | ||
109 | int async_int; | ||
110 | }; | ||
111 | |||
112 | #endif | ||
diff --git a/include/linux/usb/msm_hsusb_hw.h b/include/linux/usb/msm_hsusb_hw.h new file mode 100644 index 000000000000..b92e17349c7b --- /dev/null +++ b/include/linux/usb/msm_hsusb_hw.h | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Google, Inc. | ||
3 | * Author: Brian Swetland <swetland@google.com> | ||
4 | * | ||
5 | * This software is licensed under the terms of the GNU General Public | ||
6 | * License version 2, as published by the Free Software Foundation, and | ||
7 | * may be copied, distributed, and modified under those terms. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | */ | ||
15 | |||
16 | #ifndef __LINUX_USB_GADGET_MSM72K_UDC_H__ | ||
17 | #define __LINUX_USB_GADGET_MSM72K_UDC_H__ | ||
18 | |||
19 | #ifdef CONFIG_ARCH_MSM7X00A | ||
20 | #define USB_SBUSCFG (MSM_USB_BASE + 0x0090) | ||
21 | #else | ||
22 | #define USB_AHBBURST (MSM_USB_BASE + 0x0090) | ||
23 | #define USB_AHBMODE (MSM_USB_BASE + 0x0098) | ||
24 | #endif | ||
25 | #define USB_CAPLENGTH (MSM_USB_BASE + 0x0100) /* 8 bit */ | ||
26 | |||
27 | #define USB_USBCMD (MSM_USB_BASE + 0x0140) | ||
28 | #define USB_PORTSC (MSM_USB_BASE + 0x0184) | ||
29 | #define USB_OTGSC (MSM_USB_BASE + 0x01A4) | ||
30 | #define USB_USBMODE (MSM_USB_BASE + 0x01A8) | ||
31 | |||
32 | #define USBCMD_RESET 2 | ||
33 | #define USB_USBINTR (MSM_USB_BASE + 0x0148) | ||
34 | |||
35 | #define PORTSC_PHCD (1 << 23) /* phy suspend mode */ | ||
36 | #define PORTSC_PTS_MASK (3 << 30) | ||
37 | #define PORTSC_PTS_ULPI (3 << 30) | ||
38 | |||
39 | #define USB_ULPI_VIEWPORT (MSM_USB_BASE + 0x0170) | ||
40 | #define ULPI_RUN (1 << 30) | ||
41 | #define ULPI_WRITE (1 << 29) | ||
42 | #define ULPI_READ (0 << 29) | ||
43 | #define ULPI_ADDR(n) (((n) & 255) << 16) | ||
44 | #define ULPI_DATA(n) ((n) & 255) | ||
45 | #define ULPI_DATA_READ(n) (((n) >> 8) & 255) | ||
46 | |||
47 | #define ASYNC_INTR_CTRL (1 << 29) /* Enable async interrupt */ | ||
48 | #define ULPI_STP_CTRL (1 << 30) /* Block communication with PHY */ | ||
49 | |||
50 | /* OTG definitions */ | ||
51 | #define OTGSC_INTSTS_MASK (0x7f << 16) | ||
52 | #define OTGSC_ID (1 << 8) | ||
53 | #define OTGSC_BSV (1 << 11) | ||
54 | #define OTGSC_IDIS (1 << 16) | ||
55 | #define OTGSC_BSVIS (1 << 19) | ||
56 | #define OTGSC_IDIE (1 << 24) | ||
57 | #define OTGSC_BSVIE (1 << 27) | ||
58 | |||
59 | #endif /* __LINUX_USB_GADGET_MSM72K_UDC_H__ */ | ||
diff --git a/include/linux/usb/musb.h b/include/linux/usb/musb.h index 2387f9fc8138..eb505250940a 100644 --- a/include/linux/usb/musb.h +++ b/include/linux/usb/musb.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * Inventra (Multidrop) Highspeed Dual-Role Controllers: (M)HDRC. | 3 | * Inventra (Multidrop) Highspeed Dual-Role Controllers: (M)HDRC. |
4 | * | 4 | * |
5 | * Board initialization should put one of these into dev->platform_data, | 5 | * Board initialization should put one of these into dev->platform_data, |
6 | * probably on some platform_device named "musb_hdrc". It encapsulates | 6 | * probably on some platform_device named "musb-hdrc". It encapsulates |
7 | * key configuration differences between boards. | 7 | * key configuration differences between boards. |
8 | */ | 8 | */ |
9 | 9 | ||
@@ -120,14 +120,14 @@ struct musb_hdrc_platform_data { | |||
120 | /* Power the device on or off */ | 120 | /* Power the device on or off */ |
121 | int (*set_power)(int state); | 121 | int (*set_power)(int state); |
122 | 122 | ||
123 | /* Turn device clock on or off */ | ||
124 | int (*set_clock)(struct clk *clock, int is_on); | ||
125 | |||
126 | /* MUSB configuration-specific details */ | 123 | /* MUSB configuration-specific details */ |
127 | struct musb_hdrc_config *config; | 124 | struct musb_hdrc_config *config; |
128 | 125 | ||
129 | /* Architecture specific board data */ | 126 | /* Architecture specific board data */ |
130 | void *board_data; | 127 | void *board_data; |
128 | |||
129 | /* Platform specific struct musb_ops pointer */ | ||
130 | const void *platform_ops; | ||
131 | }; | 131 | }; |
132 | 132 | ||
133 | 133 | ||
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index 0a5b3711e502..a1a1e7a73ec9 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h | |||
@@ -116,7 +116,7 @@ struct otg_transceiver { | |||
116 | /* for board-specific init logic */ | 116 | /* for board-specific init logic */ |
117 | extern int otg_set_transceiver(struct otg_transceiver *); | 117 | extern int otg_set_transceiver(struct otg_transceiver *); |
118 | 118 | ||
119 | #if defined(CONFIG_NOP_USB_XCEIV) || defined(CONFIG_NOP_USB_XCEIV_MODULE) | 119 | #if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE)) |
120 | /* sometimes transceivers are accessed only through e.g. ULPI */ | 120 | /* sometimes transceivers are accessed only through e.g. ULPI */ |
121 | extern void usb_nop_xceiv_register(void); | 121 | extern void usb_nop_xceiv_register(void); |
122 | extern void usb_nop_xceiv_unregister(void); | 122 | extern void usb_nop_xceiv_unregister(void); |