none
Interresting issue in Wince 6.0 Intel Ehci driver RRS feed

  • Question

  • Hi

    We are using Intel E6xx topcliff atom processor and we enabled the usb host driver in wince 6.0 (Intel_CS_2.5 gold BSP). The ehci driver is loaded but it hung on the while loop i.e, when it is waiting to clear the HCRESET bit by EHCI h/w. This bit is not cleared by H/W. But the same code is working in Intel CRB.

     

    1. Is there any relation to BIOS setting or we need to set any register before this?

    2. The Halted bit in USBSTS is 0 at very beginning stage before i set the HCRESET BIT. But in normal condition, halted bit should be 1 i.e, very begining stage the host controller should be in halted stage.

    3. Final thing is we are booting the image using USB pendrive. Does this affect the host driver?

     

    Regards,

    D.

    Monday, March 21, 2011 11:00 AM

All replies

  • I quite sure that it's not the same situation but you may take a look at this post http://lcalligaris.wordpress.com/2010/11/04/a-curious-issue-with-pci-bus-driver-hive-based-registry/


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Monday, March 21, 2011 3:21 PM
  • Dear Luca,

    Thanks for your reply.

    First thing, your blog is so nice and informative.

    Actually, i am able to read the registers and the read value is non 0xFF value. so i am pretty sure that the base address is correct.

    my observations are,

    1. the Run/Stop bit should be '0' at the stage of initialization. But in my case, it is set to '1'. i.e, it means that the host controller is already running and used by some other thingy. i guess actually the bios is using the same and the control change from bios to os makes problem. Because i am booting the image using pendrive. Is it correct?

    2. So i disabled the HCReset bit code portion. Now the code is getting restart in the below stage (CeSetThreadPriority),

      if (m_hUsbInterruptThread==NULL)
    
        m_hUsbInterruptThread = CreateThread( 0, 0, UsbInterruptThreadStub, this, 0, NULL );
    
      if ( m_hUsbInterruptThread == NULL ) {
    
        DEBUGMSG(1, (TEXT("-CHW::Initialize. Error creating IST\n")));
    
        return FALSE;
    
      }
    
      CeSetThreadPriority( m_hUsbInterruptThread, g_IstThreadPriority );
    
    
    Is there any inputs related to this kind of issue?
    
    Regards,
    
    D. 
    
    
    
     
    Tuesday, March 22, 2011 2:55 PM
  • Is there any other option to boot your system not using the USB like an internal storage you can copy the nk.bin into? This may help you to find where the problem is. I suppose that 'booting the image using USB pendrive' means that some code (loadcepc? biosloader?) is copying the OS image to RAM than is jumping into it: maybe the EHCI driver find the host controller in an unexpected state since it's been used by the BIOS
    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Tuesday, March 22, 2011 3:44 PM
  • Do you know which version of the bios are you running on Topcliff?

    Perhaps you can post this question in edc.intel.com. There is a forum on the bottom left. The folks with BSP knowledge may be able to help.

    Friday, March 25, 2011 3:42 AM
  • Hi Luca,

    Unfortunately, no other option to boot wince in our device. I also found one wired thing as follows,

    1. I hard-coded the m_sysIntr value which is got from intel crb board. This temp fix, moves the CeThreadPriority restart issue to some other location. But again i didn't get any interrupt when i connect usb device.

    2. In the intel topcliff chipset, there is 2 Ehci + 6 Ohci controllers ( 1set is 1 ehci and 3 ohci). For first set, the INTR is 0x11 and second one is 0x10. But the mapping intr to sysintr value is different from intel crb. I am using the same bsp for two boards. For x86, they are using hook interrupt concept.

    3. Could you please tell me, is it possible to change the intr to sysintr mapping diffs from intel crb to our board even both are using the chipset and same bsp.

     

    --Hard-coding the m_sysIntr is not a solution for my problem. Can anybody give the pointers on this issue.

     

    Hi Nee Shen,

     

    I tried to post this issue in edc.intel.com site. i can find the discussion forum but there is no post option in it. it shows as guest user. Should i need to register as premium user.

     

    Regards,

    D.

    Monday, March 28, 2011 1:38 PM
  • The Sysintr should be assigned dinamically, I would not force it in the registry


    Luca Calligaris lucaDOTcalligarisATeurotechDOTcom www.eurotech.com Check my blog: http://lcalligaris.wordpress.com
    Monday, March 28, 2011 2:02 PM
  •  

    I tried to post this issue in edc.intel.com site. i can find the discussion forum but there is no post option in it. it shows as guest user. Should i need to register as premium user.

     

    Have you managed to post your question on EDC? i believe you can request for an account, not necessary premium account.
    Wednesday, April 6, 2011 8:40 AM
  • Wednesday, April 6, 2011 8:47 AM