• Serge Semin's avatar
    NTB: Add IDT 89HPESxNTx PCIe-switches support · bf2a952d
    Serge Semin authored
    IDT 89HPESxNTx device series is PCIe-switches, which support
    Non-Transparent bridging between domains connected to the device ports.
    Since new NTB API exposes multi-port interface and messaging API, the
    IDT NT-functions can be now supported in the kernel. This driver adds
    the following functionality:
    1) Multi-port NTB API to have information of possible NT-functions
    activated in compliance with available device ports.
    2) Memory windows of direct and look up table based address translation
    with all possible combinations of BARs setup.
    3) Traditional doorbell NTB API.
    4) One-on-one messaging NTB API.
    
    There are some IDT PCIe-switch setups, which must be done before any of
    the NTB peers started. It can be performed either by system BIOS via
    IDT SMBus-slave interface or by pre-initialized IDT PCIe-switch EEPROM:
    1) NT-functions of corresponding ports must be activated using
    SWPARTxCTL and SWPORTxCTL registers.
    2) BAR0 must be configured to expose NT-function configuration
    registers map.
    3) The rest of the BARs must have at least one memory window
    configured, otherwise the driver will just return an error.
    Temperature sensor of IDT PCIe-switches can be also optionally
    activated by BIOS or EEPROM.
    (See IDT documentations for details of how the pre-initialization can
    be done)
    Signed-off-by: default avatarSerge Semin <fancer.lancer@gmail.com>
    Acked-by: default avatarAllen Hubbe <Allen.Hubbe@dell.com>
    Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
    bf2a952d
Kconfig 110 Bytes