Author: rgampa Date: Thu Jul 27 07:21:14 2017 New Revision: 75416
URL: http://svn.reactos.org/svn/reactos?rev=75416&view=rev Log: [USBXHCI] -roothub get port status function update CORE-13344
Modified: branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/hardware.h branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/roothub.c branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/usbxhci.c
Modified: branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/hardware.h URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/usbxhci/reactos/driver... ============================================================================== --- branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/hardware.h [iso-8859-1] (original) +++ branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/hardware.h [iso-8859-1] Thu Jul 27 07:21:14 2017 @@ -199,30 +199,30 @@
typedef volatile union _XHCI_PORT_STATUS_CONTROL { struct { - ULONG CCS : 1; - ULONG PED : 1; - ULONG RsvdZ1 : 1; - ULONG OCA : 1; - ULONG PR : 1; - ULONG PLS : 4; - ULONG PP : 1; - ULONG PortSpeed : 4; - ULONG PIC : 2; - ULONG LWS : 1; - ULONG CSC : 1; - ULONG PEC : 1; - ULONG WRC : 1; - ULONG OCC : 1; - ULONG PRC : 1; - ULONG PLC : 1; - ULONG CEC : 1; - ULONG CAS : 1; - ULONG WCE : 1; - ULONG WDE : 1; - ULONG WOE : 1; - ULONG RsvdZ2 : 2; - ULONG DR : 1; - ULONG WPR : 1; + ULONG CurrentConnectStatus : 1; + ULONG PortEnableDisable : 1; + ULONG RsvdZ1 : 1; + ULONG OverCurrentActive : 1; + ULONG PortReset : 1; + ULONG PortLinkState : 4; + ULONG PortPower : 1; + ULONG PortSpeed : 4; + ULONG PortIndicatorControl : 2; + ULONG LinkWriteStrobe : 1; + ULONG ConnectStatusChange : 1; + ULONG PortEnableDisableChange : 1; + ULONG WarmResetChange : 1; + ULONG OverCurrentChange : 1; + ULONG PortResetChange : 1; + ULONG PortLinkStateChange : 1; + ULONG ConfigErrorChange : 1; + ULONG ColdAttachStatus : 1; + ULONG WakeONConnectEnable : 1; + ULONG WakeONDisconnectEnable : 1; + ULONG WakeONOverCurrentEnable : 1; + ULONG RsvdZ2 : 2; + ULONG DeviceRemovable : 1; + ULONG WarmPortReset : 1; }; ULONG AsULONG; } XHCI_PORT_STATUS_CONTROL;
Modified: branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/roothub.c URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/usbxhci/reactos/driver... ============================================================================== --- branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/roothub.c [iso-8859-1] (original) +++ branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/roothub.c [iso-8859-1] Thu Jul 27 07:21:14 2017 @@ -54,14 +54,92 @@ { DPRINT1("XHCI_RH_GetPortStatus: function initiated\n"); PXHCI_EXTENSION XhciExtension; - PULONG PortStatusReg; + PULONG PortStatusRegPointer; XHCI_PORT_STATUS_CONTROL PortStatusRegister; - //USB_30_PORT_STATUS x; + USBHUB_PORT_STATUS portstatus; + XhciExtension = (PXHCI_EXTENSION)xhciExtension; - PortStatusReg = (XhciExtension->OperationalRegs) + (XHCI_PORTSC + (Port - 1)*4); - PortStatusRegister.AsULONG = READ_REGISTER_ULONG(PortStatusReg) ; - PortStatusRegister.AsULONG = 0; - *PortStatus = PortStatusRegister.AsULONG; + PortStatusRegPointer = (XhciExtension->OperationalRegs) + (XHCI_PORTSC + (Port - 1)*4); + PortStatusRegister.AsULONG = READ_REGISTER_ULONG(PortStatusRegPointer) ; + + /* + ULONG ConnectStatus : 1; // Current Connect Status + ULONG EnableStatus : 1; // Port Enabled/Disabled + ULONG SuspendStatus : 1; + ULONG OverCurrent : 1; + ULONG ResetStatus : 1; + ULONG Reserved1 : 3; + ULONG PowerStatus : 1; + ULONG LsDeviceAttached : 1; // Low-Speed Device Attached + ULONG HsDeviceAttached : 1; // High-speed Device Attached + ULONG TestMode : 1; // Port Test Mode + ULONG IndicatorControl : 1; // Port Indicator Control + ULONG Reserved2 : 3; + ULONG ConnectStatusChange : 1; + ULONG EnableStatusChange : 1; + ULONG SuspendStatusChange : 1; + ULONG OverCurrentChange : 1; + ULONG ResetStatusChange : 1; + ULONG Reserved3 : 3; + ULONG PowerStatusChange : 1; + ULONG LsDeviceAttachedChange : 1; + ULONG HsDeviceAttachedChange : 1; + ULONG TestModeChange : 1; + ULONG IndicatorControlChange : 1; + ULONG Reserved4 : 3; + */ + /* + ULONG CurrentConnectStatus : 1; + ULONG PortEnableDisable : 1; + ULONG RsvdZ1 : 1; + ULONG OverCurrentActive : 1; + ULONG PortReset : 1; + ULONG PortLinkState : 4; + ULONG PortPower : 1; + ULONG PortSpeed : 4; + ULONG PortIndicatorControl : 2; + ULONG LinkWriteStrobe : 1; + ULONG ConnectStatusChange : 1; + ULONG PortEnableDisableChange : 1; + ULONG WarmResetChange : 1; + ULONG OverCurrentChange : 1; + ULONG PortResetChange : 1; + ULONG PortLinkStateChange : 1; + ULONG ConfigErrorChange : 1; + ULONG ColdAttachStatus : 1; + ULONG WakeONConnectEnable : 1; + ULONG WakeONDisconnectEnable : 1; + ULONG WakeONOverCurrentEnable : 1; + ULONG RsvdZ2 : 2; + ULONG DeviceRemovable : 1; + ULONG WarmPortReset : 1; + */ + portstatus.AsULONG = 0; + portstatus.UsbPortStatus.ConnectStatus = PortStatusRegister.CurrentConnectStatus; + portstatus.UsbPortStatus.EnableStatus = PortStatusRegister.PortEnableDisable; + portstatus.UsbPortStatus.SuspendStatus = 0;//PortStatusRegister.PortEnableDisable; + portstatus.UsbPortStatus.OverCurrent = PortStatusRegister.OverCurrentActive; + portstatus.UsbPortStatus.ResetStatus = PortStatusRegister.PortReset; + portstatus.UsbPortStatus.PowerStatus = PortStatusRegister.PortPower; + portstatus.UsbPortStatus.LsDeviceAttached = 0;//PortStatusRegister.PortEnableDisable; + // if (PortStatusRegister.PortSpeed) { + portstatus.UsbPortStatus.HsDeviceAttached = PortStatusRegister.CurrentConnectStatus; + // } + portstatus.UsbPortStatus.TestMode = 0;//PortStatusRegister.PortPower; + portstatus.UsbPortStatus.IndicatorControl = 0;//PortStatusRegister.PortIndicatorControl; + + portstatus.UsbPortStatusChange.ConnectStatusChange = PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.EnableStatusChange = PortStatusRegister.PortEnableDisableChange; + portstatus.UsbPortStatusChange.SuspendStatusChange = 0;//PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.OverCurrentChange = PortStatusRegister.OverCurrentChange; + portstatus.UsbPortStatusChange.ResetStatusChange = PortStatusRegister.PortResetChange; + portstatus.UsbPortStatusChange.PowerStatusChange = 0;//PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.LsDeviceAttachedChange = 0;//PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.HsDeviceAttachedChange = PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.TestModeChange = 0;//PortStatusRegister.ConnectStatusChange; + portstatus.UsbPortStatusChange.IndicatorControlChange =0;// PortStatusRegister.ConnectStatusChange; + + *PortStatus = portstatus.AsULONG;
return MP_STATUS_SUCCESS; } @@ -225,7 +303,7 @@ usbCommand.InterrupterEnable = 0;
WRITE_REGISTER_ULONG(OperationalRegs + XHCI_USBCMD,usbCommand.AsULONG ); - DPRINT1("XHCI_RH_DisableIrq: Disable Interupts succesfull\n"); + //DPRINT1("XHCI_RH_DisableIrq: Disable Interupts succesfull\n"); }
VOID @@ -244,6 +322,6 @@ usbCommand.InterrupterEnable = 1;
WRITE_REGISTER_ULONG(OperationalRegs + XHCI_USBCMD,usbCommand.AsULONG ); - DPRINT1("XHCI_RH_EnableIrq: Enable Interupts\n"); - -} + //DPRINT1("XHCI_RH_EnableIrq: Enable Interupts\n"); + +}
Modified: branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/usbxhci.c URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2017/usbxhci/reactos/driver... ============================================================================== --- branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/usbxhci.c [iso-8859-1] (original) +++ branches/GSoC_2017/usbxhci/reactos/drivers/usb/usbxhci/usbxhci.c [iso-8859-1] Thu Jul 27 07:21:14 2017 @@ -148,7 +148,7 @@ DPRINT("XHCI_ControllerWorkTest: pointer erstba - %p %p\n", XhciExtension->RunTimeRegisterBase + XHCI_ERSTBA+1 , XhciExtension->RunTimeRegisterBase + XHCI_ERSTBA);
- DbgBreakPoint(); + //DbgBreakPoint(); return MP_STATUS_SUCCESS; } MPSTATUS