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.

DP83TC813R-Q1: Register setting different with DP83TC812

Part Number: DP83TC813R-Q1
Other Parts Discussed in Thread: DP83TC812R-Q1

Tool/software:

Hi, I got the information that the driver for DP83TC812R-Q1 can be used for DP83TC813R-Q1 completely(refer to "ti-ethernet-software/linux_drivers/dp83tc812.c at main · TexasInstruments/ti-ethernet-software · GitHub"). However, i read the codes and find the registers showing in following codes getting from DP83TC812R-Q1 driver are not existing in DP83TC812R-Q1 technical document.

static const struct dp83tc812_init_reg dp83tc812_cs1_master_init[] = {
        {0x01,0x0834,0xC001},
        {0x1F,0x0523,0x0001},
        {0x1F,0x0800,0xF864},
        {0x1F,0x0803,0x1552},
        {0x1F,0x0804,0x1A66},
        {0x1F,0x0805,0x1F7B},
        {0x1F,0x081F,0x2A88},
        {0x1F,0x0825,0x40E5},
        {0x1F,0x082B,0x7F3F},
        {0x1F,0x0830,0x0543},
        {0x1F,0x0836,0x5008},
        {0x1F,0x083A,0x08E0},
        {0x1F,0x083B,0x0845},
        {0x1F,0x083E,0x0445},
        {0x1F,0x0855,0x9B9A},
Questions:1. I want to know whether registers showing in above codes has other reference documents? if it has, can you share me? 
                2. If the registers showing in above codes are only used for DP83TC812R-Q1, and we use these codes, DP83TC813R-Q1 can works ok?
  • Hi Fan,

    The technical document is the most updated version of this initialization. Could you please clarify where you are seeing this code in the driver? 

    Best regards,

    Greg

  • Hi, Gregory

         I got the codes from "https://github.com/TexasInstruments/ti-ethernet-software/blob/main/linux_drivers/dp83tc812.c" and the commit id is "115958d254a9f6d87e85fdb13f839f92597c2869", commit message is "DP83TG720, DP83TC812 null dereference bugfix".

        Today, i pull the newest codes from github(commit id is "4b285250c527ac08a82a58b55bf6ef15659ba188", commit message is "2025 Q3 Release"). now the codes has been updated. It delete the registers for Linux driver. refer to following codes:    

        /*
       Master Open Alliance Configuration Script
       Populate array with script detailed in SNLA389
       Array format: {MMD, Register, Value}
       */
       static const struct DP83TC812_init_reg DP83TC812_master_cs2_0_init[] = {

       };

        /*
       Slave Open Alliance Configuration Script
       Populate array with script detailed in SNLA389
       Array format: {MMD, Register, Value}
       */
        static const struct DP83TC812_init_reg DP83TC812_slave_cs2_0_init[] = {

        };

        static const struct DP83TC812_init_reg DP83TC812_tdr_config_init[] = {
       {0x1F, 0x523, 0x0001},
       {0x1F, 0x827, 0x4800},
       {0x1F, 0x301, 0x1701},
       {0x1F, 0x303, 0x023D},
       {0x1F, 0x305, 0x0015},
       {0x1F, 0x306, 0x001A},
       {0x1F, 0x01f, 0x4000},
       {0x1F, 0x523, 0x0000},
       {0x1F, 0x01f, 0x0000},
       };

       (a) these codes get from linux_drivers/dp83tc812.c

       However, though the codes has been updated in "ti-ethernet-software linux_drivers/dp83tc812.c"(refer to (a)), but the register value still exist in "ti-ethernet-software rtos_drivers\src\dp83tc812_priv.h" (refer to (b)), refer to following codes:

    /*! \brief Chip specific init scripts */
    static const struct dp83tc812_init_reg dp83tc812_cs1_master_init[] = {
    {0x01,0x0834,0xC001},
    {0x1F,0x0523,0x0001},
    {0x1F,0x0800,0xF864},
    {0x1F,0x0803,0x1552},
    {0x1F,0x0804,0x1A66},
    {0x1F,0x0805,0x1F7B},
    {0x1F,0x081F,0x2A88},
    {0x1F,0x0825,0x40E5},
    {0x1F,0x082B,0x7F3F},
    {0x1F,0x0830,0x0543},
    {0x1F,0x0836,0x5008},
    {0x1F,0x083A,0x08E0},
    {0x1F,0x083B,0x0845},
    {0x1F,0x083E,0x0445},
    {0x1F,0x0855,0x9B9A},
    {0x1F,0x085F,0x2010},
    {0x1F,0x0860,0x6040},
    {0x1F,0x086C,0x1333},
    {0x1F,0x086B,0x3E10},
    {0x1F,0x0872,0x88C0},
    {0x1F,0x0873,0x0003},
    {0x1F,0x0879,0x000F},
    {0x1F,0x087B,0x0070},
    {0x1F,0x087C,0x0002},
    {0x1F,0x0897,0x003F},
    {0x1F,0x089E,0x00AA},
    {0x1F,0x0510,0x000F},
    };

    static const struct dp83tc812_init_reg dp83tc812_cs1_slave_init[] = {
    {0x1F,0x0523,0x0001},
    {0x01,0x0834,0x8001},
    {0x1F,0x0803,0x1B52},
    {0x1F,0x0804,0x2166},
    {0x1F,0x0805,0x277B},
    {0x1F,0x0827,0x3000},
    {0x1F,0x0830,0x0543},
    {0x1F,0x083A,0x0020},
    {0x1F,0x083C,0x0001},
    {0x1F,0x0855,0x9B9A},
    {0x1F,0x085F,0x2010},
    {0x1F,0x0860,0x6040},
    {0x1F,0x086C,0x0333},
    {0x1F,0x0872,0x88C0},
    {0x1F,0x0873,0x0021},
    {0x1F,0x0879,0x000F},
    {0x1F,0x087B,0x0070},
    {0x1F,0x087C,0x0002},
    {0x1F,0x0897,0x003F},
    {0x1F,0x089E,0x00A2},
    {0x1F,0x0510,0x000F},
    };

    static const struct dp83tc812_init_reg dp83tc812_cs2_master_init[] = {
    {0x1F,0x0523,0x0001},
    {0x01,0x0834,0xC001},
    {0x1F,0x081C,0x0FE2},
    {0x1F,0x0872,0x0300},
    {0x1F,0x0879,0x0F00},
    {0x1F,0x0806,0x2952},
    {0x1F,0x0807,0x3361},
    {0x1F,0x0808,0x3D7B},
    {0x1F,0x083E,0x045F},
    {0x1F,0x0834,0x8000},
    {0x1F,0x0862,0x00E8},
    {0x1F,0x0896,0x32CB},
    {0x1F,0x003E,0x0009},
    };

    static const struct dp83tc812_init_reg dp83tc812_cs2_slave_init[] = {
    {0x1F,0x0523,0x0001},
    {0x01,0x0834,0x8001},
    {0x1F,0x0873,0x0821},
    {0x1F,0x0896,0x22FF},
    {0x1F,0x089E,0x0000},
    };

       (bthese codes get from rtos_drivers\src\dp83tc812_priv.h

    Compare for (a) and (b),  the first one is used for Linux driver and the another one is used for rtos, but they are used for the dp83tc812 initializing with different register setting.

    Note: We don't know why?

  • Hi Fan,

    Thank you for explaining. We have recently made this update to the Linux driver as part of the 2025 Q3 Release. We will make make the same changes to the RTOS driver to remove these register writes in the near future. 

    Best regards,

    Greg 

  • OK, thanks for your help.