mirror of https://gitee.com/openkylin/linux.git
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: Yuyang Du <yuyang.du@intel.com> Acked-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
df9032c13d
commit
a5c7f019c7
|
@ -66,7 +66,7 @@ static const char * const bit_desc[] = {
|
|||
"SUSPEND", /*2*/
|
||||
"OVER_CURRENT", /*3*/
|
||||
"RESET", /*4*/
|
||||
"R5", /*5*/
|
||||
"L1", /*5*/
|
||||
"R6", /*6*/
|
||||
"R7", /*7*/
|
||||
"POWER", /*8*/
|
||||
|
@ -82,7 +82,7 @@ static const char * const bit_desc[] = {
|
|||
"C_SUSPEND", /*18*/
|
||||
"C_OVER_CURRENT", /*19*/
|
||||
"C_RESET", /*20*/
|
||||
"R21", /*21*/
|
||||
"C_L1", /*21*/
|
||||
"R22", /*22*/
|
||||
"R23", /*23*/
|
||||
"R24", /*24*/
|
||||
|
@ -95,10 +95,49 @@ static const char * const bit_desc[] = {
|
|||
"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;
|
||||
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);
|
||||
while (bit) {
|
||||
|
@ -113,8 +152,12 @@ static void dump_port_status_diff(u32 prev_status, u32 new_status)
|
|||
else
|
||||
change = ' ';
|
||||
|
||||
if (prev || new)
|
||||
pr_debug(" %c%s\n", change, bit_desc[i]);
|
||||
if (prev || new) {
|
||||
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;
|
||||
i++;
|
||||
}
|
||||
|
@ -568,7 +611,8 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
|
|||
/* Only dump valid port status */
|
||||
if (rhport >= 0) {
|
||||
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");
|
||||
|
|
Loading…
Reference in New Issue