diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-01 20:06:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-01 20:06:09 -0400 |
commit | 3e75c6de1ac33fe3500f44573d9212dc82c99f59 (patch) | |
tree | ef10932e204ba8a9885051b06d4524d284207d61 /include/linux/usb | |
parent | cb1595563880a81dab6eab9a5ecb4520d2e76077 (diff) | |
parent | 940ab8f1ef9369da5b58a1bec6820bfd4a7b9042 (diff) |
Merge tag 'usb-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB patches from Greg KH:
"Here's the big USB pull request for 3.15-rc1.
The normal set of patches, lots of controller driver updates, and a
smattering of individual USB driver updates as well.
All have been in linux-next for a while"
* tag 'usb-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (249 commits)
xhci: Transition maintainership to Mathias Nyman.
USB: disable reset-resume when USB_QUIRK_RESET is set
USB: unbind all interfaces before rebinding any
usb: phy: Add ulpi IDs for SMSC USB3320 and TI TUSB1210
usb: gadget: tcm_usb_gadget: stop format strings
usb: gadget: f_fs: add missing spinlock and mutex unlock
usb: gadget: composite: switch over to ERR_CAST()
usb: gadget: inode: switch over to memdup_user()
usb: gadget: f_subset: switch over to PTR_RET
usb: gadget: lpc32xx_udc: fix wrong clk_put() sequence
USB: keyspan: remove dead debugging code
USB: serial: add missing newlines to dev_<level> messages.
USB: serial: add missing braces
USB: serial: continue to write on errors
USB: serial: continue to read on errors
USB: serial: make bulk_out_size a lower limit
USB: cypress_m8: fix potential scheduling while atomic
devicetree: bindings: document lsi,zevio-usb
usb: chipidea: add support for USB OTG controller on LSI Zevio SoCs
usb: chipidea: imx: Use dev_name() for ci_hdrc name to distinguish USBs
...
Diffstat (limited to 'include/linux/usb')
-rw-r--r-- | include/linux/usb/chipidea.h | 1 | ||||
-rw-r--r-- | include/linux/usb/hcd.h | 1 | ||||
-rw-r--r-- | include/linux/usb/omap_control_usb.h | 89 | ||||
-rw-r--r-- | include/linux/usb/omap_usb.h | 67 | ||||
-rw-r--r-- | include/linux/usb/phy.h | 16 | ||||
-rw-r--r-- | include/linux/usb/serial.h | 3 | ||||
-rw-r--r-- | include/linux/usb/uas.h | 14 |
7 files changed, 27 insertions, 164 deletions
diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h index 708bd119627f..bbe779f640be 100644 --- a/include/linux/usb/chipidea.h +++ b/include/linux/usb/chipidea.h | |||
@@ -25,6 +25,7 @@ struct ci_hdrc_platform_data { | |||
25 | */ | 25 | */ |
26 | #define CI_HDRC_DUAL_ROLE_NOT_OTG BIT(4) | 26 | #define CI_HDRC_DUAL_ROLE_NOT_OTG BIT(4) |
27 | #define CI_HDRC_IMX28_WRITE_FIX BIT(5) | 27 | #define CI_HDRC_IMX28_WRITE_FIX BIT(5) |
28 | #define CI_HDRC_FORCE_FULLSPEED BIT(6) | ||
28 | enum usb_dr_mode dr_mode; | 29 | enum usb_dr_mode dr_mode; |
29 | #define CI_HDRC_CONTROLLER_RESET_EVENT 0 | 30 | #define CI_HDRC_CONTROLLER_RESET_EVENT 0 |
30 | #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1 | 31 | #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1 |
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index efe8d8a7c7ad..485cd5e2100c 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h | |||
@@ -143,6 +143,7 @@ struct usb_hcd { | |||
143 | unsigned authorized_default:1; | 143 | unsigned authorized_default:1; |
144 | unsigned has_tt:1; /* Integrated TT in root hub */ | 144 | unsigned has_tt:1; /* Integrated TT in root hub */ |
145 | unsigned amd_resume_bug:1; /* AMD remote wakeup quirk */ | 145 | unsigned amd_resume_bug:1; /* AMD remote wakeup quirk */ |
146 | unsigned can_do_streams:1; /* HC supports streams */ | ||
146 | 147 | ||
147 | unsigned int irq; /* irq allocated */ | 148 | unsigned int irq; /* irq allocated */ |
148 | void __iomem *regs; /* device memory/io */ | 149 | void __iomem *regs; /* device memory/io */ |
diff --git a/include/linux/usb/omap_control_usb.h b/include/linux/usb/omap_control_usb.h deleted file mode 100644 index 69ae383ee3cc..000000000000 --- a/include/linux/usb/omap_control_usb.h +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | /* | ||
2 | * omap_control_usb.h - Header file for the USB part of control module. | ||
3 | * | ||
4 | * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * Author: Kishon Vijay Abraham I <kishon@ti.com> | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | */ | ||
18 | |||
19 | #ifndef __OMAP_CONTROL_USB_H__ | ||
20 | #define __OMAP_CONTROL_USB_H__ | ||
21 | |||
22 | enum omap_control_usb_type { | ||
23 | OMAP_CTRL_TYPE_OTGHS = 1, /* Mailbox OTGHS_CONTROL */ | ||
24 | OMAP_CTRL_TYPE_USB2, /* USB2_PHY, power down in CONTROL_DEV_CONF */ | ||
25 | OMAP_CTRL_TYPE_PIPE3, /* PIPE3 PHY, DPLL & seperate Rx/Tx power */ | ||
26 | OMAP_CTRL_TYPE_DRA7USB2, /* USB2 PHY, power and power_aux e.g. DRA7 */ | ||
27 | OMAP_CTRL_TYPE_AM437USB2, /* USB2 PHY, power e.g. AM437x */ | ||
28 | }; | ||
29 | |||
30 | struct omap_control_usb { | ||
31 | struct device *dev; | ||
32 | |||
33 | u32 __iomem *otghs_control; | ||
34 | u32 __iomem *power; | ||
35 | u32 __iomem *power_aux; | ||
36 | |||
37 | struct clk *sys_clk; | ||
38 | |||
39 | enum omap_control_usb_type type; | ||
40 | }; | ||
41 | |||
42 | enum omap_control_usb_mode { | ||
43 | USB_MODE_UNDEFINED = 0, | ||
44 | USB_MODE_HOST, | ||
45 | USB_MODE_DEVICE, | ||
46 | USB_MODE_DISCONNECT, | ||
47 | }; | ||
48 | |||
49 | #define OMAP_CTRL_DEV_PHY_PD BIT(0) | ||
50 | |||
51 | #define OMAP_CTRL_DEV_AVALID BIT(0) | ||
52 | #define OMAP_CTRL_DEV_BVALID BIT(1) | ||
53 | #define OMAP_CTRL_DEV_VBUSVALID BIT(2) | ||
54 | #define OMAP_CTRL_DEV_SESSEND BIT(3) | ||
55 | #define OMAP_CTRL_DEV_IDDIG BIT(4) | ||
56 | |||
57 | #define OMAP_CTRL_USB_PWRCTL_CLK_CMD_MASK 0x003FC000 | ||
58 | #define OMAP_CTRL_USB_PWRCTL_CLK_CMD_SHIFT 0xE | ||
59 | |||
60 | #define OMAP_CTRL_USB_PWRCTL_CLK_FREQ_MASK 0xFFC00000 | ||
61 | #define OMAP_CTRL_USB_PWRCTL_CLK_FREQ_SHIFT 0x16 | ||
62 | |||
63 | #define OMAP_CTRL_USB3_PHY_TX_RX_POWERON 0x3 | ||
64 | #define OMAP_CTRL_USB3_PHY_TX_RX_POWEROFF 0x0 | ||
65 | |||
66 | #define OMAP_CTRL_USB2_PHY_PD BIT(28) | ||
67 | |||
68 | #define AM437X_CTRL_USB2_PHY_PD BIT(0) | ||
69 | #define AM437X_CTRL_USB2_OTG_PD BIT(1) | ||
70 | #define AM437X_CTRL_USB2_OTGVDET_EN BIT(19) | ||
71 | #define AM437X_CTRL_USB2_OTGSESSEND_EN BIT(20) | ||
72 | |||
73 | #if IS_ENABLED(CONFIG_OMAP_CONTROL_USB) | ||
74 | extern void omap_control_usb_phy_power(struct device *dev, int on); | ||
75 | extern void omap_control_usb_set_mode(struct device *dev, | ||
76 | enum omap_control_usb_mode mode); | ||
77 | #else | ||
78 | |||
79 | static inline void omap_control_usb_phy_power(struct device *dev, int on) | ||
80 | { | ||
81 | } | ||
82 | |||
83 | static inline void omap_control_usb_set_mode(struct device *dev, | ||
84 | enum omap_control_usb_mode mode) | ||
85 | { | ||
86 | } | ||
87 | #endif | ||
88 | |||
89 | #endif /* __OMAP_CONTROL_USB_H__ */ | ||
diff --git a/include/linux/usb/omap_usb.h b/include/linux/usb/omap_usb.h deleted file mode 100644 index 6ae29360e1d2..000000000000 --- a/include/linux/usb/omap_usb.h +++ /dev/null | |||
@@ -1,67 +0,0 @@ | |||
1 | /* | ||
2 | * omap_usb.h -- omap usb2 phy header file | ||
3 | * | ||
4 | * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * Author: Kishon Vijay Abraham I <kishon@ti.com> | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | */ | ||
18 | |||
19 | #ifndef __DRIVERS_OMAP_USB2_H | ||
20 | #define __DRIVERS_OMAP_USB2_H | ||
21 | |||
22 | #include <linux/io.h> | ||
23 | #include <linux/usb/otg.h> | ||
24 | |||
25 | struct usb_dpll_params { | ||
26 | u16 m; | ||
27 | u8 n; | ||
28 | u8 freq:3; | ||
29 | u8 sd; | ||
30 | u32 mf; | ||
31 | }; | ||
32 | |||
33 | struct omap_usb { | ||
34 | struct usb_phy phy; | ||
35 | struct phy_companion *comparator; | ||
36 | void __iomem *pll_ctrl_base; | ||
37 | struct device *dev; | ||
38 | struct device *control_dev; | ||
39 | struct clk *wkupclk; | ||
40 | struct clk *sys_clk; | ||
41 | struct clk *optclk; | ||
42 | u8 is_suspended:1; | ||
43 | }; | ||
44 | |||
45 | #define phy_to_omapusb(x) container_of((x), struct omap_usb, phy) | ||
46 | |||
47 | #if defined(CONFIG_OMAP_USB2) || defined(CONFIG_OMAP_USB2_MODULE) | ||
48 | extern int omap_usb2_set_comparator(struct phy_companion *comparator); | ||
49 | #else | ||
50 | static inline int omap_usb2_set_comparator(struct phy_companion *comparator) | ||
51 | { | ||
52 | return -ENODEV; | ||
53 | } | ||
54 | #endif | ||
55 | |||
56 | static inline u32 omap_usb_readl(void __iomem *addr, unsigned offset) | ||
57 | { | ||
58 | return __raw_readl(addr + offset); | ||
59 | } | ||
60 | |||
61 | static inline void omap_usb_writel(void __iomem *addr, unsigned offset, | ||
62 | u32 data) | ||
63 | { | ||
64 | __raw_writel(data, addr + offset); | ||
65 | } | ||
66 | |||
67 | #endif /* __DRIVERS_OMAP_USB_H */ | ||
diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h index 6c0b1c513db7..353053a33f21 100644 --- a/include/linux/usb/phy.h +++ b/include/linux/usb/phy.h | |||
@@ -111,6 +111,13 @@ struct usb_phy { | |||
111 | int (*set_suspend)(struct usb_phy *x, | 111 | int (*set_suspend)(struct usb_phy *x, |
112 | int suspend); | 112 | int suspend); |
113 | 113 | ||
114 | /* | ||
115 | * Set wakeup enable for PHY, in that case, the PHY can be | ||
116 | * woken up from suspend status due to external events, | ||
117 | * like vbus change, dp/dm change and id. | ||
118 | */ | ||
119 | int (*set_wakeup)(struct usb_phy *x, bool enabled); | ||
120 | |||
114 | /* notify phy connect status change */ | 121 | /* notify phy connect status change */ |
115 | int (*notify_connect)(struct usb_phy *x, | 122 | int (*notify_connect)(struct usb_phy *x, |
116 | enum usb_device_speed speed); | 123 | enum usb_device_speed speed); |
@@ -265,6 +272,15 @@ usb_phy_set_suspend(struct usb_phy *x, int suspend) | |||
265 | } | 272 | } |
266 | 273 | ||
267 | static inline int | 274 | static inline int |
275 | usb_phy_set_wakeup(struct usb_phy *x, bool enabled) | ||
276 | { | ||
277 | if (x && x->set_wakeup) | ||
278 | return x->set_wakeup(x, enabled); | ||
279 | else | ||
280 | return 0; | ||
281 | } | ||
282 | |||
283 | static inline int | ||
268 | usb_phy_notify_connect(struct usb_phy *x, enum usb_device_speed speed) | 284 | usb_phy_notify_connect(struct usb_phy *x, enum usb_device_speed speed) |
269 | { | 285 | { |
270 | if (x && x->notify_connect) | 286 | if (x && x->notify_connect) |
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 704a1ab8240c..9bb547c7bce7 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
@@ -190,7 +190,8 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data) | |||
190 | * @num_ports: the number of different ports this device will have. | 190 | * @num_ports: the number of different ports this device will have. |
191 | * @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer | 191 | * @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer |
192 | * (0 = end-point size) | 192 | * (0 = end-point size) |
193 | * @bulk_out_size: bytes to allocate for bulk-out buffer (0 = end-point size) | 193 | * @bulk_out_size: minimum number of bytes to allocate for bulk-out buffer |
194 | * (0 = end-point size) | ||
194 | * @calc_num_ports: pointer to a function to determine how many ports this | 195 | * @calc_num_ports: pointer to a function to determine how many ports this |
195 | * device has dynamically. It will be called after the probe() | 196 | * device has dynamically. It will be called after the probe() |
196 | * callback is called, but before attach() | 197 | * callback is called, but before attach() |
diff --git a/include/linux/usb/uas.h b/include/linux/usb/uas.h index 5499ab5c94bd..3fc8e8b9f043 100644 --- a/include/linux/usb/uas.h +++ b/include/linux/usb/uas.h | |||
@@ -9,7 +9,7 @@ struct iu { | |||
9 | __u8 iu_id; | 9 | __u8 iu_id; |
10 | __u8 rsvd1; | 10 | __u8 rsvd1; |
11 | __be16 tag; | 11 | __be16 tag; |
12 | }; | 12 | } __attribute__((__packed__)); |
13 | 13 | ||
14 | enum { | 14 | enum { |
15 | IU_ID_COMMAND = 0x01, | 15 | IU_ID_COMMAND = 0x01, |
@@ -52,7 +52,7 @@ struct command_iu { | |||
52 | __u8 rsvd7; | 52 | __u8 rsvd7; |
53 | struct scsi_lun lun; | 53 | struct scsi_lun lun; |
54 | __u8 cdb[16]; /* XXX: Overflow-checking tools may misunderstand */ | 54 | __u8 cdb[16]; /* XXX: Overflow-checking tools may misunderstand */ |
55 | }; | 55 | } __attribute__((__packed__)); |
56 | 56 | ||
57 | struct task_mgmt_iu { | 57 | struct task_mgmt_iu { |
58 | __u8 iu_id; | 58 | __u8 iu_id; |
@@ -62,7 +62,7 @@ struct task_mgmt_iu { | |||
62 | __u8 rsvd2; | 62 | __u8 rsvd2; |
63 | __be16 task_tag; | 63 | __be16 task_tag; |
64 | struct scsi_lun lun; | 64 | struct scsi_lun lun; |
65 | }; | 65 | } __attribute__((__packed__)); |
66 | 66 | ||
67 | /* | 67 | /* |
68 | * Also used for the Read Ready and Write Ready IUs since they have the | 68 | * Also used for the Read Ready and Write Ready IUs since they have the |
@@ -77,15 +77,15 @@ struct sense_iu { | |||
77 | __u8 rsvd7[7]; | 77 | __u8 rsvd7[7]; |
78 | __be16 len; | 78 | __be16 len; |
79 | __u8 sense[SCSI_SENSE_BUFFERSIZE]; | 79 | __u8 sense[SCSI_SENSE_BUFFERSIZE]; |
80 | }; | 80 | } __attribute__((__packed__)); |
81 | 81 | ||
82 | struct response_ui { | 82 | struct response_iu { |
83 | __u8 iu_id; | 83 | __u8 iu_id; |
84 | __u8 rsvd1; | 84 | __u8 rsvd1; |
85 | __be16 tag; | 85 | __be16 tag; |
86 | __be16 add_response_info; | 86 | __u8 add_response_info[3]; |
87 | __u8 response_code; | 87 | __u8 response_code; |
88 | }; | 88 | } __attribute__((__packed__)); |
89 | 89 | ||
90 | struct usb_pipe_usage_descriptor { | 90 | struct usb_pipe_usage_descriptor { |
91 | __u8 bLength; | 91 | __u8 bLength; |