• Serge Semin's avatar
    net: pcs: xpcs: Add Synopsys DW xPCS platform device driver · f6bb3e9d
    Serge Semin authored
    Synopsys DesignWare XPCS IP-core can be synthesized with the device CSRs
    being accessible over the MCI or APB3 interface instead of the MDIO bus
    (see the CSR_INTERFACE HDL parameter). Thus all the PCS registers can be
    just memory mapped and be a subject of the standard MMIO operations of
    course taking into account the peculiarities of the Clause C45 CSRs
    mapping. From that perspective the DW XPCS devices would look as just
    normal platform devices for the kernel.
    
    On the other hand in order to have the DW XPCS devices handled by the
    pcs-xpcs.c driver they need to be registered in the framework of the
    MDIO-subsystem. So the suggested change is about providing a DW XPCS
    platform device driver registering a virtual MDIO-bus with a single
    MDIO-device representing the DW XPCS device.
    
    DW XPCS platform device is supposed to be described by the respective
    compatible string "snps,dw-xpcs" (or with the PMA-specific compatible
    string), CSRs memory space and optional peripheral bus and reference clock
    sources. Depending on the INDIRECT_ACCESS IP-core synthesize parameter the
    memory-mapped reg-space can be represented as either directly or
    indirectly mapped Clause 45 space. In the former case the particular
    address is determined based on the MMD device and the registers offset (5
    + 16 bits all together) within the device reg-space. In the later case
    there is only 8 lower address bits are utilized for the registers mapping
    (255 CSRs). The upper bits are supposed to be written into the respective
    viewport CSR in order to select the respective MMD sub-page.
    
    Note, only the peripheral bus clock source is requested in the platform
    device probe procedure. The core and pad clocks handling has been
    implemented in the framework of the xpcs_create() method intentionally
    since the clocks-related setups are supposed to be performed later, during
    the DW XPCS main configuration procedures. (For instance they will be
    required for the DW Gen5 10G PMA configuration.)
    Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f6bb3e9d
pcs-xpcs.h 4.46 KB