diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-05 10:26:01 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-05 10:26:01 -0700 |
commit | 1a3b85ea36d38d5732fdd86b321b10bcaeb53512 (patch) | |
tree | f3a7abeb6acaa47019e3d53b7ae75f7ae4361803 /drivers/usb/host/xhci.h | |
parent | 04759194dc447ff0b9ef35bc641ce3bb076c2930 (diff) | |
parent | 46f5489f781ae3e4d23a4e8e29e0ea3626739d2d (diff) | |
download | linux-1a3b85ea36d38d5732fdd86b321b10bcaeb53512.tar.gz linux-1a3b85ea36d38d5732fdd86b321b10bcaeb53512.tar.xz |
Merge tag 'usb-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB/PHY driver updates from Greg KH:
"Here is the large USB and PHY driver update for 4.14-rc1.
Not all that exciting, a few new PHY drivers, the usual mess of gadget
driver updates and fixes, and of course, xhci updates to try to tame
that beast.
A number of usb-serial updates and other small fixes all over the USB
driver tree are in here as well. Full details are in the shortlog.
All of these have been in linux-next for a while with no reported
issues"
* tag 'usb-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (171 commits)
usbip: vhci-hcd: make vhci_hc_driver const
usb: phy: Avoid unchecked dereference warning
usb: imx21-hcd: make imx21_hc_driver const
usb: host: make ehci_fsl_overrides const and __initconst
dt-bindings: mt8173-mtu3: add generic compatible and rename file
dt-bindings: mt8173-xhci: add generic compatible and rename file
usb: xhci-mtk: add generic compatible string
usbip: auto retry for concurrent attach
USB: serial: option: simplify 3 D-Link device entries
USB: serial: option: add support for D-Link DWM-157 C1
usb: core: usbport: fix "BUG: key not in .data" when lockdep is enabled
usb: chipidea: usb2: check memory allocation failure
usb: Add device quirk for Logitech HD Pro Webcam C920-C
usb: misc: lvstest: add entry to place port in compliance mode
usb: xhci: Support enabling of compliance mode for xhci 1.1
usb:xhci:Fix regression when ATI chipsets detected
usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard
usb: gadget: make snd_pcm_hardware const
usb: common: use of_property_read_bool()
USB: core: constify vm_operations_struct
...
Diffstat (limited to 'drivers/usb/host/xhci.h')
-rw-r--r-- | drivers/usb/host/xhci.h | 90 |
1 files changed, 89 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index e3e935291ed6..2abaa4d6d39d 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -311,12 +311,19 @@ struct xhci_op_regs { */ #define PORT_PLS_MASK (0xf << 5) #define XDEV_U0 (0x0 << 5) +#define XDEV_U1 (0x1 << 5) #define XDEV_U2 (0x2 << 5) #define XDEV_U3 (0x3 << 5) +#define XDEV_DISABLED (0x4 << 5) +#define XDEV_RXDETECT (0x5 << 5) #define XDEV_INACTIVE (0x6 << 5) #define XDEV_POLLING (0x7 << 5) -#define XDEV_COMP_MODE (0xa << 5) +#define XDEV_RECOVERY (0x8 << 5) +#define XDEV_HOT_RESET (0x9 << 5) +#define XDEV_COMP_MODE (0xa << 5) +#define XDEV_TEST_MODE (0xb << 5) #define XDEV_RESUME (0xf << 5) + /* true: port has power (see HCC_PPC) */ #define PORT_POWER (1 << 9) /* bits 10:13 indicate device speed: @@ -2392,6 +2399,87 @@ static inline const char *xhci_decode_slot_context(u32 info, u32 info2, return str; } + +static inline const char *xhci_portsc_link_state_string(u32 portsc) +{ + switch (portsc & PORT_PLS_MASK) { + case XDEV_U0: + return "U0"; + case XDEV_U1: + return "U1"; + case XDEV_U2: + return "U2"; + case XDEV_U3: + return "U3"; + case XDEV_DISABLED: + return "Disabled"; + case XDEV_RXDETECT: + return "RxDetect"; + case XDEV_INACTIVE: + return "Inactive"; + case XDEV_POLLING: + return "Polling"; + case XDEV_RECOVERY: + return "Recovery"; + case XDEV_HOT_RESET: + return "Hot Reset"; + case XDEV_COMP_MODE: + return "Compliance mode"; + case XDEV_TEST_MODE: + return "Test mode"; + case XDEV_RESUME: + return "Resume"; + default: + break; + } + return "Unknown"; +} + +static inline const char *xhci_decode_portsc(u32 portsc) +{ + static char str[256]; + int ret; + + ret = sprintf(str, "%s %s %s Link:%s ", + portsc & PORT_POWER ? "Powered" : "Powered-off", + portsc & PORT_CONNECT ? "Connected" : "Not-connected", + portsc & PORT_PE ? "Enabled" : "Disabled", + xhci_portsc_link_state_string(portsc)); + + if (portsc & PORT_OC) + ret += sprintf(str + ret, "OverCurrent "); + if (portsc & PORT_RESET) + ret += sprintf(str + ret, "In-Reset "); + + ret += sprintf(str + ret, "Change: "); + if (portsc & PORT_CSC) + ret += sprintf(str + ret, "CSC "); + if (portsc & PORT_PEC) + ret += sprintf(str + ret, "PEC "); + if (portsc & PORT_WRC) + ret += sprintf(str + ret, "WRC "); + if (portsc & PORT_OCC) + ret += sprintf(str + ret, "OCC "); + if (portsc & PORT_RC) + ret += sprintf(str + ret, "PRC "); + if (portsc & PORT_PLC) + ret += sprintf(str + ret, "PLC "); + if (portsc & PORT_CEC) + ret += sprintf(str + ret, "CEC "); + if (portsc & PORT_CAS) + ret += sprintf(str + ret, "CAS "); + + ret += sprintf(str + ret, "Wake: "); + if (portsc & PORT_WKCONN_E) + ret += sprintf(str + ret, "WCE "); + if (portsc & PORT_WKDISC_E) + ret += sprintf(str + ret, "WDE "); + if (portsc & PORT_WKOC_E) + ret += sprintf(str + ret, "WOE "); + + return str; +} + static inline const char *xhci_ep_state_string(u8 state) { switch (state) { |