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.

DP83TC812EVM-MC: How to use TC-10 with different eth

Part Number: DP83TC812EVM-MC
Other Parts Discussed in Thread: DP83TC812R-Q1,

Tool/software:

Hello,

Can I communicate with a different chip for the DP83TC812 family?

I have 3 devices;
One of them has DP83TC812R-Q1 eth
One of them is DP83TC812EVM-MC card
One of them has BCM89836 eth

Normally I tried to enter sleep mode on DP83TC812R (slave) via BCM89836 (master). It didn't work. Then I decided to test with DP83TC812EVM and BCM89836. I used BCM89836 as slave and used DP83TC812EVM-MC as master.

I sent the value 0x0002 to EVM via MDIO in register 0x018C. If EVM and DP83TC812 devices are connected to each other, both devices will enter sleep mode. But if you connect DP83TC812EVM to BCM89836, the devices do not go to sleep mode. In both tests, EVM is master. (I assumed that it would be easier test in the EVM master case.)

My main goal is to send a sleep command from BCM89836 using TC-10 and put DP83TC812 to sleep.

How can I do this?

Best Regards,

Faruk

  • Hi Faruk,

    There are a few possibilities for troubleshooting this problem:

    Best Regards,

    Nick

  • Hello Nick,

    Does the DP83TC812x family support working with Broadcom 89836? Could you please I get confirmation on this?

    We know that both products support TC-10. I'm just wondering if there might be an incompatibility between them.

    Best Regards,

    Faruk

  • Hi Faruk,

    We do not have specific information for the Broadcom 89836, however, the DP83TC81x family passes interoperability tests conducted by UNH in accordance with IEEE.

    Best,

    Nick

  • Hi Faruk,

    One update, sorry for the mistake, but interoperability tests are conducted by C&S not UNH.

    Can you try putting the BRCM device to sleep using the TI PHY?

    Best,

    Nick

  • Hello Nick,

    I continued the test with between Broadcom and TI Eval Board and I configure registers as below;

    - 0x040B value write to 0x018B register address and 0x0009 value write to 0x0180 register address. We prevent TI from switching to normal mode in case of a link break during negotiation and We are trying to give the necessary time for sleep ack to eth phys.

    and I observe these situation;

    - When a request is sent from Broadcom to TI in this way, Broadcom gives sleep_fail. When we look at TI, it does not give sleep_fail and does not sleep. It acts as if no request has come, does not understand the incoming or does not come. However, I think that a sleep request has come to TI because the link led is blinking.
    - In this way, when a request is sent from TI to Broadcom, TI gives sleep_fail. Broadcom goes to sleep/standby status without giving sleep_fail. Broadcom understands TI and goes to sleep or standby. In this case, TI Eval board still does not get what it wants from Broadcom or does not seem to see it.

    Note:
    1- When a value other than 0x0009 is written in 0x0180 resgister address, the Broadcom side fails and goes to standby/sleep stat ("1" is returned for both sleep/standby stat and sleep_fail)
    2- Broadcom Master, TI slave

    Apart from the above tests, we have also made many attempts and unfortunately we could not achieve TC-10 sleep between these two devices and we think that these two cards may be incompatible with each other and may not work. Can you give us an idea about this? How can we understand the compatibility of the two devices or what method do you recommend us to follow in this regard?

    Also, how can I find out the chip version?

    Do you have any test suggestions regarding the subject I mentioned above?

    Best Regards,

    Faruk

  • Hi Faruk,

    Maybe the two PHYs are incompatible but, there is a test you could do. I noticed that your sleep_req_timer_sel value is 4ms. Our interop reports show that with other PHYs 4ms is not enough for the LPS symbols to arrive from the LP PHY.  You can check the LPS_INT(reg<0x0018>[0]) to verify if the TI PHY receives the LPS symbols and adjust the sleep_req_timer_sel value if needed.

    Best regards,

    Nick

  • Hello Nick,

    We tried write 0x001B(We tried use maximum time.) to 0x0180 register but the result does not change. I always read LPS_INT(reg<0x0018>[0]) as 1. I have never been read as 0 this register(or I did not change this).
    Is there a way check for compatibility these phy(BCM89836 and DP83TC812 family)?
    Also How can I check DP83TC812 phy version? We need this information for ask this problem to Broadcom.

    Thank you.

    Best Regards,
    Faruk

  • Hi Faruk,

    Yes, if you want to see LPS_INT you will need to enable the interrupt at 0x0018[0] and then 0x0018[8] will go high if the LPS symbols are detected by the PHY.

    Not that I am aware of. I will check.

    What do you mean by PHY version? 

    Best regards,

    Nick

  • I don't recall seeing the 0x0018[8] bit as high, but I'll ask my colleagues for confirmation on that. So how should I interpret this? Is it because TI is not receiving LPS symbols or is it because BCM is not sending them? I see the link LEDs blinking when BCM sends a sleep request. Does this mean anything?

    Ok. I am waiting any information about this.

    I mean that, Are there different versions of Phy like v1 v2 or are all existing DP83TC812 chips the same? We thought that different versions might cause compatibility problems. So we wanted to ask and confirm.

    Best Regards,

    Faruk

  • Hi Faruk,

    Can you please try setting register 0x0189 = 0x0018. This reduces the number of LPS symbols required to set lps_recv. Let me know if this has any effect.

    All DP83TC812 chips are the same version. 

    Thanks,

    David

  • Hello David,

    Ok. I will test and I inform about result.

    I wonder these;

    1- Even if there was a mismatch between TI and Broadcom (timings, handshake structure, etc.), could an LPS symbol from Broadcom still be detected?

    2- Is the reason why we cannot detect the LPS symbol in the register(0x0018[8]) due to incompatibility between Broadcom and TI?

    These question about our previous test. I will try your suggestion about LPS seymbols required.

    Thanks for helping.

    Best Regards,

    Faruk

  • Hi Faruk,

    It is possible that Broadcom is sending fewer LPS symbols than is expected by TI by default. Lowering the value of register 0x189 could resolve this. Please try the register and let me know if any change in the result.

    Thanks,

    David 

  • Hello David,

    I shared below my some test results about this issue after your suggestion;

    1. Eval Board Register:0x0189 --> 0x0018. Broadcom Eth Phy send command. Result: Register:0x0018=0x7325 (LPS Detect and sleep fail)
    2. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b.BCM Eth Phy sent sleep command. Result: TI Eval board turned off and on(In 1 sec.) 
    3. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b. It was seen that the Eval board was closed and opened again while the link was present. It was seen only when the link was present without any data exchange(and I had been setted register 0x0189 and 0x0180). In this case, no data could be sent because the port was broken. I only saw this situation when I connected TI and BCM together, I connected TI and TI eth phys and tested but I did not see such a situation.
    4. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b. when there is no link, TI sent sleep request 0x018c -> 0x0002(TC-10 sleep request) to BCM and then the link was connected. Result: TI Eval board turned off and on again, BCM first return sleep fail and then return normal mode.
    5. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b, Register:0x018B -> 0x1c09(Go to standby if a req comes from TC-10) was written. While there was no link, 0x018c -> 0x0002 was written from TI to BCM and sleep was sent and the link was connected. Result: There was no power loss on the TI card. BCM did not give an error and remained in normal mode.
    6. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b, Register:0x018B -> 0x1c09. While there was no link, a sleep req was sent from the BCM and then the link was connected. Result: There was no power cut on the TI board. While the BCM was in normal mode, the link connection was disconnected after a while.
    7. Eval Board Register:0x0189 --> 0x0018, Register:0x0180 --> 0x001b. While the link was down, a sleep request was sent from the BCM and then the link was connected. Result: The TI board turned off and on, the BCM sleep error returned and then went into normal mode.

    I interpreted the moments when the TI Eval card was turned on and off as going into and out of sleep mode. This happens within 1-2 seconds. Also during in this test TI was slave and BCM was master mode.

    Best Regards,

    Faruk

  • Hi Faruk,

    It sounds like the device is entering sleep mode and then waking up again. Please confirm the WAKE pin is low on both TI PHY and BCM PHY. 

    Note, you may also want to set 0x18B[11] = 0. This avoids stopping sleep negotiation if there is activity on the MDI or MAC interface. 

    Thanks,

    David 

  • Hello David,

    I tried set 0x018B[11]=0 and TI eval board entering sleep mode and stay in this mode but there is weird situation.

    If I write the registers in order while the link is present (0x0180->0x001B, 0x018B->0x140b, 0x0189->0x0018), the TI Eval board goes to sleep directly while connected to the BCM(TI Eval board does not wait sleep requset from BCM to entering sleep mode). When I tried the same situation between TI Phy and TI Phy, I did not experience anything like this.

    If I set the registers while the link is not connected and wait a while and then connect the link, this TI Eval board goes to sleep after the link is connected.

    Is there any difference you can see between these two?

    Best Regards,

    Faruk

  • Hi Faruk,

    David is out of office.  I expect he can follow up in more detail early next week.

    I'm wondering if BCM is somehow sending out LPS symbols since the TI EVM is sleeping once link is established.

    Is it possible to set 0x0018[0]=1 and monitor 0x0018[8] for LPS symbol detection?  Alternatively, the INT pin could be monitored.

    Thanks,

    Drew

  • Hello Drew,

    In previous tests, I checked 0x0018[8] and saw LPS signal coming from BCM, but I didn't check INT pin. But in last test, since TI went to sleep mode directly, port connection was lost and I couldn't read the register. 

    By the way, I think this work will not be needed anymore. Since the topic has gone on too long, I solved the problem with a different method. So we can close the topic. Thanks for the useful information before.

    Best Regards,

    Faruk

  • Hi Faruk,

    How did you solve the problem?

    -Nick

  • Hi Faruk, 

    Closing this thread now.

    Best regards,

    Nick