This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB9261 not recognizing sata device

Other Parts Discussed in Thread: TUSB9261

Hello,

I am experiencing difficulties with my design, I am able to load the default firmware and have tried to follow the demo board (TUSB9261 DEMO) as closely as possible with a few modifications regarding the power supply and sata connector style (Molex 67800-5022).  

Status LED's (USB cable unplugged)

PWM1 pulses

PWM0 solid on

GPIO2: solid on

GPIO7: solid on

Status LED's (USB 2.0 cable plugged in)

PWM1 pulses

PWM0 off

GPIO2: solid on

GPIO7: solid on

The UART connection reports the following:

========================================================

|| TUSB926x Firmware v1.04 [Feb 10 2014 14:38:35] ||

|| Device ID: 0x0000 ||

========================================================


Reset Flag(s): [Power-Up]


[0000000001] Datapath RAM Usage: 80208 / 81920 bytes.

[0000000001] Supported NCQ Depth: 32

[0000000001] U1/U2 Transistions: OFF

[0000000001] USB PHY Suspend: ON

[0000000001] SATA LPM: OFF

[0000000001] Device is Bus-powered.

[0000000001] -> usb_hal_init()

[0000000001] USB Core Ver: 0x120a.

[0000000001] USB SSC is OFF.

[0000000051] -> usb_hal_connect()

[0000000051] -> ahci_init()

[0000000051] -> ahci_hba_reset()

[0000000306] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000306] -> ahci_port_reset(0)

[0000000361] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000361] -> ahci_port_reset(0)

[0000000416] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000416] -> ahci_port_reset(0)

[0000000471] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000471] -> ahci_port_reset(0)

[0000000526] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000526] -> ahci_port_reset(0)

[0000000581] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000581] -> ahci_port_reset(0)

[0000000636] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000636] -> ahci_port_reset(0)

[0000000691] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000691] -> ahci_port_reset(0)

[0000000746] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000746] -> ahci_port_reset(0)

[0000000801] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000801] -> ahci_port_reset(0)

[0000000856] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000856] -> ahci_port_reset(0)

[0000000911] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000911] -> ahci_port_reset(0)

[0000000966] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000000966] -> ahci_port_reset(0)

[0000001021] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001271] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001271] -> ahci_port_reset(0)

[0000001326] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001326] -> ahci_port_reset(0)

[0000001381] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001381] -> ahci_port_reset(0)

[0000001436] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001436] -> ahci_port_reset(0)

[0000001491] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001491] -> ahci_port_reset(0)

[0000001546] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001546] -> ahci_port_reset(0)

[0000001601] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001601] -> ahci_port_reset(0)

[0000001656] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001656] -> ahci_port_reset(0)

[0000001711] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001711] -> ahci_port_reset(0)

[0000001766] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001766] -> ahci_port_reset(0)

[0000001821] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001821] -> ahci_port_reset(0)

[0000001876] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001876] -> ahci_port_reset(0)

[0000001931] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000001931] -> ahci_port_reset(0)

[0000001986] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000002236] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000000, cmplt_val = 0x00000003.

[0000002236] @Error: Timeout waiting for PHY Ready. P0SSTS = 0x00000000, P0SERR = 0x00000000.

[0000002236] Connected to 0 AHCI device(s).

Any help would be appreciated

Cheers,

Chris

  • Hello,

    Can you send your schematic for review?

    The reference design of the TUSB9261 inverts the polarity of the SATA lines. are you doing that as well?

    Can you send the specs of the external EEPROM?

    Regards.

  • The EEPROM chip i'm using is made by Micron Technology Inc, Part Number M25P05-A and the datasheet can be found at the link below.

    http://www.micron.com/~/media/Documents/Products/Data%20Sheet/NOR%20Flash/Serial%20NOR/M25P/M25P05A.pdf

    The below link is a PDF containing my overall schematic and the top layer of the PCB board design, the tracks between the SATA connector and the TUSB9261 are 10mils thick and the board was manufactured using two layers using 63mil thick material.

    https://dl.dropboxusercontent.com/u/86196657/DOCS/BOT/SATA%20USB%20Bridge.pdf

    I believe I have accounted for the swapped pairs, but you have my schematic and PCB layout to verify.

    Cheers,

    Chris

  • Hello,

    Terminal GRSTz must follow a power up sequence described on Section 4.4 of datasheet.

    The DeviceID=0000 seems to indicate the USB host is not reading the descriptors correctly, that could be explained if there is a bad power up GRSTz de-assertion.

    Regards.

  • Hi,

    I have connected a push button between GRSTz and ground, used it to manually reset the chip several seconds after applying power and after plugging the USB cable in with the same results

    below is a sample of the serial debug is transmitting

    [0000001601] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001601] -> ahci_port_reset(0)
    
    [0000001656] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001656] -> ahci_port_reset(0)
    
    [0000001711] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001711] -> ahci_port_reset(0)
    
    [0000001766] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001766] -> ahci_port_reset(0)
    
    [0000001821] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001821] -> ahci_port_reset(0)
    
    [0000001876] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001876] -> ahci_port_reset(0)
    
    [0000001931] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000001931] -> ahci_port_reset(0)
    
    [0000001986] -> ahci_wait_complete() timed out! Rd: 0xfb000128 = 0x00000001, cmplt_val = 0x00000003.
    
    [0000002236] -> ahci_wait_comple

    Cheers,
    Chris

  • Hello,

    Can you confirm that the crystal is oscillating as expected?

    What is the purpose of capacitor C8?

    Regards.

  • I scoped it again and yes i'm getting 40.0 MHz, the c8 capacitor is the c18 capacitor found on the TUSB9261 demo board schematic, the decoupling cap between 1.8v and clock ground.

    Cheers,
    Chris

  • Hi Chris,

    From the UART logs you have provided, it appears that the SATA drive you are using is not responding. Actually, from the fact the the UART logs are being properly displayed it seems the TUSB961 seems to be working properly. Could you verify/perform the following?

    1. Test with a different SATA device. Perhaps the SATA device you are try to use with your implementation is is the one that is causing the issue. Additionally, providing a SATA trace could be helpful to identify what could be the issue. 

    2. Verify on your board that proper power is being applied to the SATA drive you are using.

    3. Verify you are using the proper firmware build according to the SATA polarity on your board.

    Also, could you provide a full description of the SATA device you are using?

    Best Regards,

    Alexis Cortes. 

  • Hi Alexis,

    thanks you you for your response, I will run a sata once I'm back in the office tomorrow.  However I will say I have a tusb9261 demo board for reference and have tried to follow its design as closely as possible with the exception of the power section as documented in a PDF file I have posted earlier.

    i can get the the model of the blu-Ray drive I have been trying to get this to work with tomorrow, however I have also tried testing with an adata sata3 solid state drive.  This ssd doesn't work using my board, but functions fine with the tusb9261 demo board.

    as I have followed the tusb9261 demo board reference I have swapped the same pair as shown in my PDF file containing my schematic and top layer of my board.

    I have tried all four variation of the firmware, all with the same result.

    i have submitted a new board design that uses seperate coupling capacitors rather then a quad capacitor array (indivirule) And placea the sata connector 300mils away from the sata tx and rx pins on the tusb9261 chip To see if I get any better results.

    sorry for the lousy spelling,

    damn iphones

    cheers

    chris

  • Hi Chris,

    If the Blue-Ray drive and SSD are both working in the demo board then it appears that the issue is in your actual board. Have you tried measuring the power on the SATA side to verify the SATA devices are being powered properly? Also, in case you have a SATA analyzer, have you tried getting a trace to vereify the SATA traffic?

    Best Regards,

    Alexis Cortes.

  • Hi Alexis,

    The Blu-Ray drive being used is a Panasonic 4AUWA004965 and works fine when powered up using our power supply and plugged into another sata/usb bridge adapter.

    I don't have access to a sata analyzer and the fastest oscilloscope I have is rated only for 300MHz.

    My new board should be in some time mid next week, i'll let you know if anything changes.  One of my colleges mentioned that the problem might be either cross talk in the capacitor array or it might be that the PCB material is to thick due to the board being two layers rather then four and the ground plain on the bottom layer being to far away from the differential pairs.

    Cheers,
    Chris

  • My new boards work and are able to recognize the blu-ray drive and recognize/play content.  I'm not sure which of the following changes where key, but it does work:

    • PCB material is 20 mills thinner on the new board
    • SATA connection is moved 600mils closer (within 300mils) of TUSB9261 chip
    • Quad array of ceramic capacitors where replaced with individual 0402 ceramic capacitors

    The last thing that would be nice, if at all possible would be to modify with firmware so that one of the GPIO pins could be used to eject the drive; how might one go about doing this?

    Cheers,
    Chris

  • Hi Chris,

    Good to hear your new board is working fine now.

    Regarding your request, that would imply some development effort for modifying the firmware for making a custom build for your request. Could you specify the business opportunity? Also, could you specify exactly why is why you want a special GPIO to be re-purposed for ejecting the drive? In many OS's you can just use the eject command and also most of the drives have their own push button for ejecting the tray.

    Best Regards,
    Alexis Cortes.

  • Hi Alexis,

    My company sells high resolution audio player and we want to add an optical drive accessory to it to initially playback audio cd's (to fill in the gap of our discontinued cd player) and eventually to do more.  You are right we could add an eject feature to our player, but I just thought it would be more convenient for customers to have an eject button on the front of optical drive.  I wasn't sure how difficult it would be or if we would even be able to do it our selves.  We do intend on integrating this design into a product that we hope to have going into production this fall.

    Would it be possible to send the eject command by way of the UART console used to receiving the debugging information?

    Cheers,
    Chris

  • Hi Chris,

    Sorry for my delayed response. Regarding your inquiry: this would imply some effort on modifying the FW for generating a custom build with your requirements. Could you specify the business opportunity? Please send me an e-mail to alexis.cortes@ti.com describing your business case.

    Thanks and Best Regards,

    Alexis Cortes.