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; |
