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.

TDA4AL-Q1: kernel mdio error

Part Number: TDA4AL-Q1

We are using a custom version of TDA4AL, and the kernel has the following error:

[    1.176999] davinci_mdio c200f00.mdio: phy[10]: device c200f00.mdio:0a, driver unknown
[    1.184897] davinci_mdio c200f00.mdio: phy[15]: device c200f00.mdio:0f, driver unknown


[    2.172820] davinci_mdio c200f00.mdio: phy[5]: device c200f00.mdio:05, driver unknown

As I understand it, the error is sent in this code below:

/* scan and dump the bus */
    for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
        phy = mdiobus_get_phy(data->bus, addr);
        if (phy) {
            dev_info(dev, "phy[%d]: device %s, driver %s\n",
                 phy->mdio.addr, phydev_name(phy),
                 phy->drv ? phy->drv->name : "unknown");
        }
    }
I carefully read the source code, do not know. Where exactly is the drv assigned,
Can you tell me how to solve this problem, or give me some ideas, thank you.
  • Hi,

    Any specific differences on the custom board related to ethernet?

    - Keerthy

  • It should be basically the same with the evm board . Would you like to ask the following question: In the part of phy driver, is phy_device.c the code used by the board? As I understand it, this file should be to register mdio_bus and also register the phy driver, and finally make the device and the phy driver match.
    so,Our board is genphy_c45_driver? 
    One more question, doesn't the code here need to use device tree information? I can't find anything about compatible.
    translator
  • Hi Rasty,

    The phy drivers are present in "[PSDK-Linux-Install-Dir]/board-support/linux-[commit-hash]/drivers/net/phy" directory. The phy driver are not probed based on compatible node. Each phy (part number) has a unique ID which is stored in the phy registers. This Phy ID s read by linux kernel and is matched against all the existing phy drivers. The match is probed. 

    You are getting an driver unknown error because the driver associated with your phy is not present in the linux kernel or the config for the same is not enabled.

    The Phy driver has to be taken care of by the phy manufacturer. Can you contact the phy manufacturer to get this resolved.

    Regards,
    Tanmay