USB patches for 3.15-rc1
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. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEABECAAYFAlM7AbcACgkQMUfUDdst+ymbZACgncdbZyPsVZ7ZUpBFNbO/vBVT T9UAmwciojEzjh7b+x4ylsWH+O3LWVN3 =RpAF -----END PGP SIGNATURE----- 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 ...
This commit is contained in:
commit
3e75c6de1a
156 changed files with 9166 additions and 2201 deletions
|
@ -25,6 +25,7 @@ struct ci_hdrc_platform_data {
|
|||
*/
|
||||
#define CI_HDRC_DUAL_ROLE_NOT_OTG BIT(4)
|
||||
#define CI_HDRC_IMX28_WRITE_FIX BIT(5)
|
||||
#define CI_HDRC_FORCE_FULLSPEED BIT(6)
|
||||
enum usb_dr_mode dr_mode;
|
||||
#define CI_HDRC_CONTROLLER_RESET_EVENT 0
|
||||
#define CI_HDRC_CONTROLLER_STOPPED_EVENT 1
|
||||
|
|
|
@ -143,6 +143,7 @@ struct usb_hcd {
|
|||
unsigned authorized_default:1;
|
||||
unsigned has_tt:1; /* Integrated TT in root hub */
|
||||
unsigned amd_resume_bug:1; /* AMD remote wakeup quirk */
|
||||
unsigned can_do_streams:1; /* HC supports streams */
|
||||
|
||||
unsigned int irq; /* irq allocated */
|
||||
void __iomem *regs; /* device memory/io */
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* omap_control_usb.h - Header file for the USB part of control module.
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Author: Kishon Vijay Abraham I <kishon@ti.com>
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __OMAP_CONTROL_USB_H__
|
||||
#define __OMAP_CONTROL_USB_H__
|
||||
|
||||
enum omap_control_usb_type {
|
||||
OMAP_CTRL_TYPE_OTGHS = 1, /* Mailbox OTGHS_CONTROL */
|
||||
OMAP_CTRL_TYPE_USB2, /* USB2_PHY, power down in CONTROL_DEV_CONF */
|
||||
OMAP_CTRL_TYPE_PIPE3, /* PIPE3 PHY, DPLL & seperate Rx/Tx power */
|
||||
OMAP_CTRL_TYPE_DRA7USB2, /* USB2 PHY, power and power_aux e.g. DRA7 */
|
||||
OMAP_CTRL_TYPE_AM437USB2, /* USB2 PHY, power e.g. AM437x */
|
||||
};
|
||||
|
||||
struct omap_control_usb {
|
||||
struct device *dev;
|
||||
|
||||
u32 __iomem *otghs_control;
|
||||
u32 __iomem *power;
|
||||
u32 __iomem *power_aux;
|
||||
|
||||
struct clk *sys_clk;
|
||||
|
||||
enum omap_control_usb_type type;
|
||||
};
|
||||
|
||||
enum omap_control_usb_mode {
|
||||
USB_MODE_UNDEFINED = 0,
|
||||
USB_MODE_HOST,
|
||||
USB_MODE_DEVICE,
|
||||
USB_MODE_DISCONNECT,
|
||||
};
|
||||
|
||||
#define OMAP_CTRL_DEV_PHY_PD BIT(0)
|
||||
|
||||
#define OMAP_CTRL_DEV_AVALID BIT(0)
|
||||
#define OMAP_CTRL_DEV_BVALID BIT(1)
|
||||
#define OMAP_CTRL_DEV_VBUSVALID BIT(2)
|
||||
#define OMAP_CTRL_DEV_SESSEND BIT(3)
|
||||
#define OMAP_CTRL_DEV_IDDIG BIT(4)
|
||||
|
||||
#define OMAP_CTRL_USB_PWRCTL_CLK_CMD_MASK 0x003FC000
|
||||
#define OMAP_CTRL_USB_PWRCTL_CLK_CMD_SHIFT 0xE
|
||||
|
||||
#define OMAP_CTRL_USB_PWRCTL_CLK_FREQ_MASK 0xFFC00000
|
||||
#define OMAP_CTRL_USB_PWRCTL_CLK_FREQ_SHIFT 0x16
|
||||
|
||||
#define OMAP_CTRL_USB3_PHY_TX_RX_POWERON 0x3
|
||||
#define OMAP_CTRL_USB3_PHY_TX_RX_POWEROFF 0x0
|
||||
|
||||
#define OMAP_CTRL_USB2_PHY_PD BIT(28)
|
||||
|
||||
#define AM437X_CTRL_USB2_PHY_PD BIT(0)
|
||||
#define AM437X_CTRL_USB2_OTG_PD BIT(1)
|
||||
#define AM437X_CTRL_USB2_OTGVDET_EN BIT(19)
|
||||
#define AM437X_CTRL_USB2_OTGSESSEND_EN BIT(20)
|
||||
|
||||
#if IS_ENABLED(CONFIG_OMAP_CONTROL_USB)
|
||||
extern void omap_control_usb_phy_power(struct device *dev, int on);
|
||||
extern void omap_control_usb_set_mode(struct device *dev,
|
||||
enum omap_control_usb_mode mode);
|
||||
#else
|
||||
|
||||
static inline void omap_control_usb_phy_power(struct device *dev, int on)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void omap_control_usb_set_mode(struct device *dev,
|
||||
enum omap_control_usb_mode mode)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __OMAP_CONTROL_USB_H__ */
|
|
@ -1,67 +0,0 @@
|
|||
/*
|
||||
* omap_usb.h -- omap usb2 phy header file
|
||||
*
|
||||
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Author: Kishon Vijay Abraham I <kishon@ti.com>
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DRIVERS_OMAP_USB2_H
|
||||
#define __DRIVERS_OMAP_USB2_H
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/usb/otg.h>
|
||||
|
||||
struct usb_dpll_params {
|
||||
u16 m;
|
||||
u8 n;
|
||||
u8 freq:3;
|
||||
u8 sd;
|
||||
u32 mf;
|
||||
};
|
||||
|
||||
struct omap_usb {
|
||||
struct usb_phy phy;
|
||||
struct phy_companion *comparator;
|
||||
void __iomem *pll_ctrl_base;
|
||||
struct device *dev;
|
||||
struct device *control_dev;
|
||||
struct clk *wkupclk;
|
||||
struct clk *sys_clk;
|
||||
struct clk *optclk;
|
||||
u8 is_suspended:1;
|
||||
};
|
||||
|
||||
#define phy_to_omapusb(x) container_of((x), struct omap_usb, phy)
|
||||
|
||||
#if defined(CONFIG_OMAP_USB2) || defined(CONFIG_OMAP_USB2_MODULE)
|
||||
extern int omap_usb2_set_comparator(struct phy_companion *comparator);
|
||||
#else
|
||||
static inline int omap_usb2_set_comparator(struct phy_companion *comparator)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline u32 omap_usb_readl(void __iomem *addr, unsigned offset)
|
||||
{
|
||||
return __raw_readl(addr + offset);
|
||||
}
|
||||
|
||||
static inline void omap_usb_writel(void __iomem *addr, unsigned offset,
|
||||
u32 data)
|
||||
{
|
||||
__raw_writel(data, addr + offset);
|
||||
}
|
||||
|
||||
#endif /* __DRIVERS_OMAP_USB_H */
|
|
@ -111,6 +111,13 @@ struct usb_phy {
|
|||
int (*set_suspend)(struct usb_phy *x,
|
||||
int suspend);
|
||||
|
||||
/*
|
||||
* Set wakeup enable for PHY, in that case, the PHY can be
|
||||
* woken up from suspend status due to external events,
|
||||
* like vbus change, dp/dm change and id.
|
||||
*/
|
||||
int (*set_wakeup)(struct usb_phy *x, bool enabled);
|
||||
|
||||
/* notify phy connect status change */
|
||||
int (*notify_connect)(struct usb_phy *x,
|
||||
enum usb_device_speed speed);
|
||||
|
@ -264,6 +271,15 @@ usb_phy_set_suspend(struct usb_phy *x, int suspend)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
usb_phy_set_wakeup(struct usb_phy *x, bool enabled)
|
||||
{
|
||||
if (x && x->set_wakeup)
|
||||
return x->set_wakeup(x, enabled);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
usb_phy_notify_connect(struct usb_phy *x, enum usb_device_speed speed)
|
||||
{
|
||||
|
|
|
@ -190,7 +190,8 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data)
|
|||
* @num_ports: the number of different ports this device will have.
|
||||
* @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer
|
||||
* (0 = end-point size)
|
||||
* @bulk_out_size: bytes to allocate for bulk-out buffer (0 = end-point size)
|
||||
* @bulk_out_size: minimum number of bytes to allocate for bulk-out buffer
|
||||
* (0 = end-point size)
|
||||
* @calc_num_ports: pointer to a function to determine how many ports this
|
||||
* device has dynamically. It will be called after the probe()
|
||||
* callback is called, but before attach()
|
||||
|
|
|
@ -9,7 +9,7 @@ struct iu {
|
|||
__u8 iu_id;
|
||||
__u8 rsvd1;
|
||||
__be16 tag;
|
||||
};
|
||||
} __attribute__((__packed__));
|
||||
|
||||
enum {
|
||||
IU_ID_COMMAND = 0x01,
|
||||
|
@ -52,7 +52,7 @@ struct command_iu {
|
|||
__u8 rsvd7;
|
||||
struct scsi_lun lun;
|
||||
__u8 cdb[16]; /* XXX: Overflow-checking tools may misunderstand */
|
||||
};
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct task_mgmt_iu {
|
||||
__u8 iu_id;
|
||||
|
@ -62,7 +62,7 @@ struct task_mgmt_iu {
|
|||
__u8 rsvd2;
|
||||
__be16 task_tag;
|
||||
struct scsi_lun lun;
|
||||
};
|
||||
} __attribute__((__packed__));
|
||||
|
||||
/*
|
||||
* Also used for the Read Ready and Write Ready IUs since they have the
|
||||
|
@ -77,15 +77,15 @@ struct sense_iu {
|
|||
__u8 rsvd7[7];
|
||||
__be16 len;
|
||||
__u8 sense[SCSI_SENSE_BUFFERSIZE];
|
||||
};
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct response_ui {
|
||||
struct response_iu {
|
||||
__u8 iu_id;
|
||||
__u8 rsvd1;
|
||||
__be16 tag;
|
||||
__be16 add_response_info;
|
||||
__u8 add_response_info[3];
|
||||
__u8 response_code;
|
||||
};
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct usb_pipe_usage_descriptor {
|
||||
__u8 bLength;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue