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.

C6636 PLL configuration

Other Parts Discussed in Thread: TCI6636K2H

Hi, all.

I have a customize board TCI6636K2H DSP. EVM input clk is running at 156.25MHz. But we need the input clk of 250MHz or 125MHz. 

Where is the register about SGMII_SERDES? ex) SGMII_SERDES_STS, SGMII_SERDES_CFGPLL, SGMII_SERDES_CFGRX0, SGMII_SERDES_CFGRX1, SGMII_SERDES_CFGTX0, SGMII_SERDES_CFGTX1. 

I found a table of SerDes SGMII Boot Configuration Registers, but I don't know what "See device specific data  sheet" msg. What is the specific data sheet? How can I check these register?

Please help me.

  • Heekook,

    The regisgters you mentioned above are for TI's KeyStone I device (such as 6678), but TI's KeyStone II devices, (TCI6636K2H is one of KeyStone II devices) use different SerDes, and require different way to configure them.

    In general, configuring SerDes on KeyStone II devices requires:

    1. Load a default SerDes PHY configurations specific to each interface through
      TI-provided APIs supplied as part of MCSDK (this step involves some writes to
      reserved bit-fields as well).
    2. Optimize TX and RX channel equalization parameters (such as the TX FIR Filter
      Coefficients or the RX ATT and BOOST) to a specific hardware platform.

    Since the default SerDes configurations provided for KeyStone II family are expected to work on user platforms with little or no optimization. TI requires customers to use TI-generated and supported default PHY configurations(supplied as part of MCSDK).

    Back to your specific quesiton, the solution is in the MCSDK release - using the API to program the SerDes. Following is an example:

                   csl_retval = CSL_EthernetSerdesInit(
                                                       CSL_NETCP_SERDES_CFG_REGS, 
                                                       CSL_SERDES_REF_CLOCK_125M, // or CSL_SERDES_REF_CLOCK_156p25M,
                                                       CSL_SERDES_LINK_RATE_1p25G
                                                );

    For more details, you can take a look at the file - \packages\ti\csl\src\ip\serdes_sb\V0\csl_serdes_ethernet.h in the MCSDK release you have.

    Regards!
    Wen

     

     

  • Wen,

    We changed argument from CSL_SERDES_REF_CLOCK_156p25M to  CSL_SERDES_REF_CLOCK_125M in 'CSL_EthernetSerdesInit' function you recommended. And then we met a while loop about CSL_SERDES_STATUS_PLL_NOT_LOCKED (cpsw_mgmt.c - 543). The register of 0x232BFF4 (in 'CSL_EthernetSerdesGetState' function) was 0xF0000303 on EVM at 156.25MHz, but our board was 0xF0000301. Maybe retval expression value on last for loop is 0(=CSL_SERDES_STATUS_PLL_NOT_LOCKED ). Is there additional configuration about this clock setting? How can I change 'PLL multiply'? Is this in c file of 'csl_wiz8_sb_refclk125MHz_10bit_5Gbps.c'? I want to know register's sections and values mentioned this c file.

     

    Regards,

    Heekook

  • I passed last issue because of our board is composed of 1 port. 

    I solved PA issue on dsp, but I have same problem on arm. Is there register setting function for 125MHz anywhere? I found only for 156.25MHz in u-boot-keystone/drivers/net/keystone_net.c. Please give the function for 125MHz to me.

  • Heekook,

    I don't have the u-boot code, if nobody answer you for the keystone_net.c file, I will look for it for you.

    Meanwhile, can you take a look of the file: \packages\ti\csl\src\ip\serdes_sb\V0\csl_serdes_ethernet.h? From it, you can find all raw information you will need to configure the SerDes as you need.

    If you open it and other files it calls, you will see that, it only involvs serdes registers read/write -- you can simply use them for either DSP (you call CSL directly), or ARM (mayby a little bit of porting work).

    Regards!
    Wen