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