Commit 0cd81d77 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'ntb-5.4' of git://github.com/jonmason/ntb

Pull NTB updates from Jon Mason:
 "A few bugfixes and support for new AMD NTB hardware"

* tag 'ntb-5.4' of git://github.com/jonmason/ntb:
  NTB: fix IDT Kconfig typos/spellos
  ntb_hw_amd: Add memory window support for new AMD hardware
  ntb_hw_amd: Add a new NTB PCI device ID
  NTB: ntb_transport: remove redundant assignment to rc
  ntb_hw_switchtec: make ntb_mw_set_trans() work when addr == 0
  ntb: point to right memory window index
parents ea1e2bbe 4720101f
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ static int ndev_mw_to_bar(struct amd_ntb_dev *ndev, int idx)
	if (idx < 0 || idx > ndev->mw_count)
		return -EINVAL;

	return 1 << idx;
	return ndev->dev_data->mw_idx << idx;
}

static int amd_ntb_mw_count(struct ntb_dev *ntb, int pidx)
@@ -909,7 +909,7 @@ static int amd_init_ntb(struct amd_ntb_dev *ndev)
{
	void __iomem *mmio = ndev->self_mmio;

	ndev->mw_count = AMD_MW_CNT;
	ndev->mw_count = ndev->dev_data->mw_count;
	ndev->spad_count = AMD_SPADS_CNT;
	ndev->db_count = AMD_DB_CNT;

@@ -1069,6 +1069,8 @@ static int amd_ntb_pci_probe(struct pci_dev *pdev,
		goto err_ndev;
	}

	ndev->dev_data = (struct ntb_dev_data *)id->driver_data;

	ndev_init_struct(ndev, pdev);

	rc = amd_ntb_init_pci(ndev, pdev);
@@ -1123,9 +1125,21 @@ static const struct file_operations amd_ntb_debugfs_info = {
	.read = ndev_debugfs_read,
};

static const struct ntb_dev_data dev_data[] = {
	{ /* for device 145b */
		.mw_count = 3,
		.mw_idx = 1,
	},
	{ /* for device 148b */
		.mw_count = 2,
		.mw_idx = 2,
	},
};

static const struct pci_device_id amd_ntb_pci_tbl[] = {
	{PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NTB)},
	{0}
	{ PCI_VDEVICE(AMD, 0x145b), (kernel_ulong_t)&dev_data[0] },
	{ PCI_VDEVICE(AMD, 0x148b), (kernel_ulong_t)&dev_data[1] },
	{ 0, }
};
MODULE_DEVICE_TABLE(pci, amd_ntb_pci_tbl);

+6 −2
Original line number Diff line number Diff line
@@ -52,7 +52,6 @@
#include <linux/ntb.h>
#include <linux/pci.h>

#define PCI_DEVICE_ID_AMD_NTB	0x145B
#define AMD_LINK_HB_TIMEOUT	msecs_to_jiffies(1000)
#define AMD_LINK_STATUS_OFFSET	0x68
#define NTB_LIN_STA_ACTIVE_BIT	0x00000002
@@ -93,7 +92,6 @@ static inline void _write64(u64 val, void __iomem *mmio)

enum {
	/* AMD NTB Capability */
	AMD_MW_CNT		= 3,
	AMD_DB_CNT		= 16,
	AMD_MSIX_VECTOR_CNT	= 24,
	AMD_SPADS_CNT		= 16,
@@ -170,6 +168,11 @@ enum {
	AMD_PEER_OFFSET		= 0x400,
};

struct ntb_dev_data {
	const unsigned char mw_count;
	const unsigned int mw_idx;
};

struct amd_ntb_dev;

struct amd_ntb_vec {
@@ -185,6 +188,7 @@ struct amd_ntb_dev {
	u32 cntl_sta;
	u32 peer_sta;

	struct ntb_dev_data *dev_data;
	unsigned char mw_count;
	unsigned char spad_count;
	unsigned char db_count;
+3 −3
Original line number Diff line number Diff line
@@ -4,11 +4,11 @@ config NTB_IDT
	depends on PCI
	select HWMON
	help
	 This driver supports NTB of cappable IDT PCIe-switches.
	 This driver supports NTB of capable IDT PCIe-switches.

	 Some of the pre-initializations must be made before IDT PCIe-switch
	 exposes it NT-functions correctly. It should be done by either proper
	 initialisation of EEPROM connected to master smbus of the switch or
	 exposes its NT-functions correctly. It should be done by either proper
	 initialization of EEPROM connected to master SMbus of the switch or
	 by BIOS using slave-SMBus interface changing corresponding registers
	 value. Evidently it must be done before PCI bus enumeration is
	 finished in Linux kernel.
+1 −1
Original line number Diff line number Diff line
@@ -306,7 +306,7 @@ static int switchtec_ntb_mw_set_trans(struct ntb_dev *ntb, int pidx, int widx,
	if (rc)
		return rc;

	if (addr == 0 || size == 0) {
	if (size == 0) {
		if (widx < nr_direct_mw)
			switchtec_ntb_mw_clr_direct(sndev, widx);
		else
+1 −1
Original line number Diff line number Diff line
@@ -292,7 +292,7 @@ static int ntb_transport_bus_match(struct device *dev,
static int ntb_transport_bus_probe(struct device *dev)
{
	const struct ntb_transport_client *client;
	int rc = -EINVAL;
	int rc;

	get_device(dev);

Loading