• Timur Tabi's avatar
    net/fsl_pq_mdio: streamline probing of MDIO nodes · afae5ad7
    Timur Tabi authored
    Make the device tree probe function more data-driven, so that it no longer
    searches the 'compatible' property more than once.  The of_device_id[] array
    allows for per-entry private data, so we use that to store details about each
    type of node that the driver supports.  This removes the need to check the
    'compatible' property inside the probe function.
    
    The driver supports four types on MDIO devices:
    
    1) Gianfar MDIO nodes that only map the MII registers
    2) Gianfar MDIO nodes that map the full MDIO register set
    3) eTSEC2 MDIO nodes (which map the full MDIO register set)
    4) QE MDIO nodes (which map only the MII registers)
    
    Gianfar, eTSEC2, and QE have different mappings for the TBIPA register, which
    is needed to initialize the TBI PHY.  In addition, the QE needs a special
    hack because of the way the device tree is ordered.
    
    All of this information is encapsulated in the fsl_pq_mdio_data structure,
    so when an MDIO node is probed, per-device data and functions are used
    to determine how to initialize the device.
    Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    afae5ad7
fsl_pq_mdio.c 12.6 KB