Commit a5c7f019 authored by Yuyang Du's avatar Yuyang Du Committed by Greg Kroah-Hartman

usbip: vhci-hcd: Add USB3 port status bits

As USB3 has (slightly) different bit meanings in the port
status. Add a new status bit array for USB3.
Signed-off-by: default avatarYuyang Du <yuyang.du@intel.com>
Acked-by: default avatarShuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent df9032c1
...@@ -66,7 +66,7 @@ static const char * const bit_desc[] = { ...@@ -66,7 +66,7 @@ static const char * const bit_desc[] = {
"SUSPEND", /*2*/ "SUSPEND", /*2*/
"OVER_CURRENT", /*3*/ "OVER_CURRENT", /*3*/
"RESET", /*4*/ "RESET", /*4*/
"R5", /*5*/ "L1", /*5*/
"R6", /*6*/ "R6", /*6*/
"R7", /*7*/ "R7", /*7*/
"POWER", /*8*/ "POWER", /*8*/
...@@ -82,7 +82,7 @@ static const char * const bit_desc[] = { ...@@ -82,7 +82,7 @@ static const char * const bit_desc[] = {
"C_SUSPEND", /*18*/ "C_SUSPEND", /*18*/
"C_OVER_CURRENT", /*19*/ "C_OVER_CURRENT", /*19*/
"C_RESET", /*20*/ "C_RESET", /*20*/
"R21", /*21*/ "C_L1", /*21*/
"R22", /*22*/ "R22", /*22*/
"R23", /*23*/ "R23", /*23*/
"R24", /*24*/ "R24", /*24*/
...@@ -95,10 +95,49 @@ static const char * const bit_desc[] = { ...@@ -95,10 +95,49 @@ static const char * const bit_desc[] = {
"R31", /*31*/ "R31", /*31*/
}; };
static void dump_port_status_diff(u32 prev_status, u32 new_status) static const char * const bit_desc_ss[] = {
"CONNECTION", /*0*/
"ENABLE", /*1*/
"SUSPEND", /*2*/
"OVER_CURRENT", /*3*/
"RESET", /*4*/
"L1", /*5*/
"R6", /*6*/
"R7", /*7*/
"R8", /*8*/
"POWER", /*9*/
"HIGHSPEED", /*10*/
"PORT_TEST", /*11*/
"INDICATOR", /*12*/
"R13", /*13*/
"R14", /*14*/
"R15", /*15*/
"C_CONNECTION", /*16*/
"C_ENABLE", /*17*/
"C_SUSPEND", /*18*/
"C_OVER_CURRENT", /*19*/
"C_RESET", /*20*/
"C_BH_RESET", /*21*/
"C_LINK_STATE", /*22*/
"C_CONFIG_ERROR", /*23*/
"R24", /*24*/
"R25", /*25*/
"R26", /*26*/
"R27", /*27*/
"R28", /*28*/
"R29", /*29*/
"R30", /*30*/
"R31", /*31*/
};
static void dump_port_status_diff(u32 prev_status, u32 new_status, bool usb3)
{ {
int i = 0; int i = 0;
u32 bit = 1; u32 bit = 1;
const char * const *desc = bit_desc;
if (usb3)
desc = bit_desc_ss;
pr_debug("status prev -> new: %08x -> %08x\n", prev_status, new_status); pr_debug("status prev -> new: %08x -> %08x\n", prev_status, new_status);
while (bit) { while (bit) {
...@@ -113,8 +152,12 @@ static void dump_port_status_diff(u32 prev_status, u32 new_status) ...@@ -113,8 +152,12 @@ static void dump_port_status_diff(u32 prev_status, u32 new_status)
else else
change = ' '; change = ' ';
if (prev || new) if (prev || new) {
pr_debug(" %c%s\n", change, bit_desc[i]); pr_debug(" %c%s\n", change, desc[i]);
if (bit == 1) /* USB_PORT_STAT_CONNECTION */
pr_debug(" %c%s\n", change, "USB_PORT_STAT_SPEED_5GBPS");
}
bit <<= 1; bit <<= 1;
i++; i++;
} }
...@@ -568,7 +611,8 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, ...@@ -568,7 +611,8 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
/* Only dump valid port status */ /* Only dump valid port status */
if (rhport >= 0) { if (rhport >= 0) {
dump_port_status_diff(prev_port_status[rhport], dump_port_status_diff(prev_port_status[rhport],
vhci_hcd->port_status[rhport]); vhci_hcd->port_status[rhport],
hcd->speed == HCD_USB3);
} }
} }
usbip_dbg_vhci_rh(" bye\n"); usbip_dbg_vhci_rh(" bye\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment