Ticket #7449: ehci.4.patch
File ehci.4.patch, 2.2 KB (added by , 13 years ago) |
---|
-
home/gabe/haiku/haiku/src/add-ons/kernel/busses/usb/ehci.cpp
381 381 382 382 uint32 frameListSize = (ReadOpReg(EHCI_USBCMD) >> EHCI_USBCMD_FLS_SHIFT) 383 383 & EHCI_USBCMD_FLS_MASK; 384 WriteOpReg(EHCI_USBCMD, ReadOpReg(EHCI_USBCMD) | EHCI_USBCMD_RUNSTOP385 | EHCI_USBCMD_ASENABLE | EHCI_USBCMD_PSENABLE386 | (frameListSize << EHCI_USBCMD_FLS_SHIFT)387 | (1 << EHCI_USBCMD_ITC_SHIFT));388 384 385 uint32 asyncParkCapable = ReadCapReg32(EHCI_HCCPARAMS) 386 & EHCI_HCCPARAMS_ASPM_MASK; 387 388 uint32 opRegInput = ReadOpReg(EHCI_USBCMD); 389 opRegInput = opRegInput & ~(EHCI_USBCMD_ITC_MASK << EHCI_USBCMD_ITC_SHIFT); 390 391 // frameListSizes defined by values between 00b and 10b. 11b is Reserved 392 if (frameListSize > 2) { 393 TRACE("unsupported frame list size (%lu)\n",frameListSize); 394 return B_ERROR; 395 } 396 397 opRegInput = opRegInput | EHCI_USBCMD_RUNSTOP 398 | EHCI_USBCMD_ASENABLE | EHCI_USBCMD_PSENABLE 399 | (frameListSize << EHCI_USBCMD_FLS_SHIFT) 400 | (1 << EHCI_USBCMD_ITC_SHIFT); 401 402 if (asyncParkCapable) { 403 opRegInput = opRegInput 404 & ~(EHCI_USBCMD_ASPMC_MASK << EHCI_USBCMD_ASPMC_SHIFT); 405 opRegInput = opRegInput | EHCI_USBCMD_ASPME 406 | (0x03 << EHCI_USBCMD_ASPMC_SHIFT); 407 } 408 409 WriteOpReg(EHCI_USBCMD, opRegInput); 410 389 411 bool running = false; 390 412 for (int32 i = 0; i < 10; i++) { 391 413 uint32 status = ReadOpReg(EHCI_USBSTS); -
home/gabe/haiku/haiku/src/add-ons/kernel/busses/usb/ehci_hardware.h
14 14 #define EHCI_HCIVERSION 0x02 // Interface Version Number 15 15 #define EHCI_HCSPARAMS 0x04 // Structural Parameters 16 16 #define EHCI_HCCPARAMS 0x08 // Capability Parameters 17 #define EHCI_HCCPARAMS_ASPM_MASK 0x04 // Asynchronous Schedule Park Mode 17 18 #define EHCI_HCSP_PORTROUTE 0x0c // Companion Port Route Description 18 19 19 20