BUG: A USB mouse and USB touch device do not work correctly on a Geode GX1 platform that is based on Windows CE .NET 4.2 (891896)



The information in this article applies to:

  • Microsoft Windows CE .NET 4.2

SYMPTOMS

When you connect a universal serial bus (USB) mouse and a USB touch device to a Geode GX1 platform, the mouse and the touch device do not work. This symptom occurs when the Geode GX1 platform is based on Microsoft Windows CE .NET 4.2.

CAUSE

This problem may occur because of the physical arrangement of the mouse and the touch device connections to the Open Host Controller Interface (OHCI) ports. For example, the mouse may be connected to an upper OHCI port and the touch device may be connected to a lower OHCI port.

Note When the mouse and the touch pad are connected in the opposite manner, the devices work correctly.

RESOLUTION

To resolve this problem, follow these steps to modify the Windows CE OHCI driver code for your Geode GXI platform:
  1. Open the following source file in your Windows CE development environment:

    %WINCEROOT%\Public\COMMON\Oak\Drivers\Usb\Hcd\Ohcd2\Cpipe.cpp

  2. Locate the following code:
    // expected and if the last TD in the transfer is the short one.
    // We could assert here that this was an IN transfer.
    int iLast = m_transfer.numTDsComplete - 1;
    DEBUGCHK( iLast >= 0 );
    P_TD pTD = iLast ? &m_transfer.vaTDList.td[iLast] : m_pDummyTd.td;
    if (pTD->paCurBuffer)
  3. Modify the code segment that you located in step 2 as follows:
    // expected and if the last TD in the transfer is the short one.
    // We could assert here that this was an IN transfer.
    int iLast = m_transfer.numTDsComplete - 1;
    if ((m_usbEndpointDescriptor.bmAttributes & 
     USB_ENDPOINT_TYPE_MASK)==USB_ENDPOINT_TYPE_CONTROL)
       iLast--;
    DEBUGCHK( iLast >= 0 );
    P_TD pTD = iLast ? &m_transfer.vaTDList.td[iLast] : m_pDummyTd.td;
    if (pTD->paCurBuffer)
    
  4. Save the source file, and then rebuild your platform.

WORKAROUND

To work around this problem, follow these steps to switch the OHCI connections of the mouse and touch device:
  1. Make a note of which OHCI ports are connected to the USB mouse and to the USB touch device.
  2. Remove the mouse and touch device from the OHCI ports.
  3. Connect the mouse to the OHCI port that the touch device was connected to in step 1.
  4. Connect the touch device to the OHCI port that the mouse was connected to in step 1.
  5. Try to use the mouse and the touch device.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Modification Type:MajorLast Reviewed:1/27/2005
Keywords:kbpending kbtshoot kbBug KB891896 kbAudDeveloper kbAudITPRO