OSDN Git Service

NTB: Add IDT 89HPESxNTx PCIe-switches support
authorSerge Semin <fancer.lancer@gmail.com>
Wed, 12 Apr 2017 12:44:45 +0000 (15:44 +0300)
committerJon Mason <jdmason@kudzu.us>
Thu, 6 Jul 2017 15:30:07 +0000 (11:30 -0400)
commitbf2a952d31d2cd28bb3454f15645a76fda70addd
tree7fc4c513215f58677619219c87875c5ea86fb656
parent48ea02184a9d000f877f901951d37843b26d26ad
NTB: Add IDT 89HPESxNTx PCIe-switches support

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: Serge Semin <fancer.lancer@gmail.com>
Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
MAINTAINERS
drivers/ntb/hw/Kconfig
drivers/ntb/hw/Makefile
drivers/ntb/hw/idt/Kconfig [new file with mode: 0644]
drivers/ntb/hw/idt/Makefile [new file with mode: 0644]
drivers/ntb/hw/idt/ntb_hw_idt.c [new file with mode: 0644]
drivers/ntb/hw/idt/ntb_hw_idt.h [new file with mode: 0644]