0001 # SPDX-License-Identifier: GPL-2.0-only
0002 config NTB_IDT
0003 tristate "IDT PCIe-switch Non-Transparent Bridge support"
0004 depends on PCI
0005 select HWMON
0006 help
0007 This driver supports NTB of capable IDT PCIe-switches.
0008
0009 Some of the pre-initializations must be made before IDT PCIe-switch
0010 exposes its NT-functions correctly. It should be done by either proper
0011 initialization of EEPROM connected to master SMbus of the switch or
0012 by BIOS using slave-SMBus interface changing corresponding registers
0013 value. Evidently it must be done before PCI bus enumeration is
0014 finished in Linux kernel.
0015
0016 First of all partitions must be activated and properly assigned to all
0017 the ports with NT-functions intended to be activated (see SWPARTxCTL
0018 and SWPORTxCTL registers). Then all NT-function BARs must be enabled
0019 with chosen valid aperture. For memory windows related BARs the
0020 aperture settings shall determine the maximum size of memory windows
0021 accepted by a BAR. Note that BAR0 must map PCI configuration space
0022 registers.
0023
0024 It's worth to note, that since a part of this driver relies on the
0025 BAR settings of peer NT-functions, the BAR setups can't be done over
0026 kernel PCI fixups. That's why the alternative pre-initialization
0027 techniques like BIOS using SMBus interface or EEPROM should be
0028 utilized.
0029
0030 If unsure, say N.
0031