diff options
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 { | |||
311 | */ | 311 | */ |
312 | #define PORT_PLS_MASK (0xf << 5) | 312 | #define PORT_PLS_MASK (0xf << 5) |
313 | #define XDEV_U0 (0x0 << 5) | 313 | #define XDEV_U0 (0x0 << 5) |
314 | #define XDEV_U1 (0x1 << 5) | ||
314 | #define XDEV_U2 (0x2 << 5) | 315 | #define XDEV_U2 (0x2 << 5) |
315 | #define XDEV_U3 (0x3 << 5) | 316 | #define XDEV_U3 (0x3 << 5) |
317 | #define XDEV_DISABLED (0x4 << 5) | ||
318 | #define XDEV_RXDETECT (0x5 << 5) | ||
316 | #define XDEV_INACTIVE (0x6 << 5) | 319 | #define XDEV_INACTIVE (0x6 << 5) |
317 | #define XDEV_POLLING (0x7 << 5) | 320 | #define XDEV_POLLING (0x7 << 5) |
318 | #define XDEV_COMP_MODE (0xa << 5) | 321 | #define XDEV_RECOVERY (0x8 << 5) |
322 | #define XDEV_HOT_RESET (0x9 << 5) | ||
323 | #define XDEV_COMP_MODE (0xa << 5) | ||
324 | #define XDEV_TEST_MODE (0xb << 5) | ||
319 | #define XDEV_RESUME (0xf << 5) | 325 | #define XDEV_RESUME (0xf << 5) |
326 | |||
320 | /* true: port has power (see HCC_PPC) */ | 327 | /* true: port has power (see HCC_PPC) */ |
321 | #define PORT_POWER (1 << 9) | 328 | #define PORT_POWER (1 << 9) |
322 | /* bits 10:13 indicate device speed: | 329 | /* bits 10:13 indicate device speed: |
@@ -2392,6 +2399,87 @@ static inline const char *xhci_decode_slot_context(u32 info, u32 info2, | |||
2392 | return str; | 2399 | return str; |
2393 | } | 2400 | } |
2394 | 2401 | ||
2402 | |||
2403 | static inline const char *xhci_portsc_link_state_string(u32 portsc) | ||
2404 | { | ||
2405 | switch (portsc & PORT_PLS_MASK) { | ||
2406 | case XDEV_U0: | ||
2407 | return "U0"; | ||
2408 | case XDEV_U1: | ||
2409 | return "U1"; | ||
2410 | case XDEV_U2: | ||
2411 | return "U2"; | ||
2412 | case XDEV_U3: | ||
2413 | return "U3"; | ||
2414 | case XDEV_DISABLED: | ||
2415 | return "Disabled"; | ||
2416 | case XDEV_RXDETECT: | ||
2417 | return "RxDetect"; | ||
2418 | case XDEV_INACTIVE: | ||
2419 | return "Inactive"; | ||
2420 | case XDEV_POLLING: | ||
2421 | return "Polling"; | ||
2422 | case XDEV_RECOVERY: | ||
2423 | return "Recovery"; | ||
2424 | case XDEV_HOT_RESET: | ||
2425 | return "Hot Reset"; | ||
2426 | case XDEV_COMP_MODE: | ||
2427 | return "Compliance mode"; | ||
2428 | case XDEV_TEST_MODE: | ||
2429 | return "Test mode"; | ||
2430 | case XDEV_RESUME: | ||
2431 | return "Resume"; | ||
2432 | default: | ||
2433 | break; | ||
2434 | } | ||
2435 | return "Unknown"; | ||
2436 | } | ||
2437 | |||
2438 | static inline const char *xhci_decode_portsc(u32 portsc) | ||
2439 | { | ||
2440 | static char str[256]; | ||
2441 | int ret; | ||
2442 | |||
2443 | ret = sprintf(str, "%s %s %s Link:%s ", | ||
2444 | portsc & PORT_POWER ? "Powered" : "Powered-off", | ||
2445 | portsc & PORT_CONNECT ? "Connected" : "Not-connected", | ||
2446 | portsc & PORT_PE ? "Enabled" : "Disabled", | ||
2447 | xhci_portsc_link_state_string(portsc)); | ||
2448 | |||
2449 | if (portsc & PORT_OC) | ||
2450 | ret += sprintf(str + ret, "OverCurrent "); | ||
2451 | if (portsc & PORT_RESET) | ||
2452 | ret += sprintf(str + ret, "In-Reset "); | ||
2453 | |||
2454 | ret += sprintf(str + ret, "Change: "); | ||
2455 | if (portsc & PORT_CSC) | ||
2456 | ret += sprintf(str + ret, "CSC "); | ||
2457 | if (portsc & PORT_PEC) | ||
2458 | ret += sprintf(str + ret, "PEC "); | ||
2459 | if (portsc & PORT_WRC) | ||
2460 | ret += sprintf(str + ret, "WRC "); | ||
2461 | if (portsc & PORT_OCC) | ||
2462 | ret += sprintf(str + ret, "OCC "); | ||
2463 | if (portsc & PORT_RC) | ||
2464 | ret += sprintf(str + ret, "PRC "); | ||
2465 | if (portsc & PORT_PLC) | ||
2466 | ret += sprintf(str + ret, "PLC "); | ||
2467 | if (portsc & PORT_CEC) | ||
2468 | ret += sprintf(str + ret, "CEC "); | ||
2469 | if (portsc & PORT_CAS) | ||
2470 | ret += sprintf(str + ret, "CAS "); | ||
2471 | |||
2472 | ret += sprintf(str + ret, "Wake: "); | ||
2473 | if (portsc & PORT_WKCONN_E) | ||
2474 | ret += sprintf(str + ret, "WCE "); | ||
2475 | if (portsc & PORT_WKDISC_E) | ||
2476 | ret += sprintf(str + ret, "WDE "); | ||
2477 | if (portsc & PORT_WKOC_E) | ||
2478 | ret += sprintf(str + ret, "WOE "); | ||
2479 | |||
2480 | return str; | ||
2481 | } | ||
2482 | |||
2395 | static inline const char *xhci_ep_state_string(u8 state) | 2483 | static inline const char *xhci_ep_state_string(u8 state) |
2396 | { | 2484 | { |
2397 | switch (state) { | 2485 | switch (state) { |