1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyunconfig NTB_IDT 3*4882a593Smuzhiyun tristate "IDT PCIe-switch Non-Transparent Bridge support" 4*4882a593Smuzhiyun depends on PCI 5*4882a593Smuzhiyun select HWMON 6*4882a593Smuzhiyun help 7*4882a593Smuzhiyun This driver supports NTB of capable IDT PCIe-switches. 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun Some of the pre-initializations must be made before IDT PCIe-switch 10*4882a593Smuzhiyun exposes its NT-functions correctly. It should be done by either proper 11*4882a593Smuzhiyun initialization of EEPROM connected to master SMbus of the switch or 12*4882a593Smuzhiyun by BIOS using slave-SMBus interface changing corresponding registers 13*4882a593Smuzhiyun value. Evidently it must be done before PCI bus enumeration is 14*4882a593Smuzhiyun finished in Linux kernel. 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun First of all partitions must be activated and properly assigned to all 17*4882a593Smuzhiyun the ports with NT-functions intended to be activated (see SWPARTxCTL 18*4882a593Smuzhiyun and SWPORTxCTL registers). Then all NT-function BARs must be enabled 19*4882a593Smuzhiyun with chosen valid aperture. For memory windows related BARs the 20*4882a593Smuzhiyun aperture settings shall determine the maximum size of memory windows 21*4882a593Smuzhiyun accepted by a BAR. Note that BAR0 must map PCI configuration space 22*4882a593Smuzhiyun registers. 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun It's worth to note, that since a part of this driver relies on the 25*4882a593Smuzhiyun BAR settings of peer NT-functions, the BAR setups can't be done over 26*4882a593Smuzhiyun kernel PCI fixups. That's why the alternative pre-initialization 27*4882a593Smuzhiyun techniques like BIOS using SMBus interface or EEPROM should be 28*4882a593Smuzhiyun utilized. 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun If unsure, say N. 31*4882a593Smuzhiyun 32