Commit d3826a95 authored by Dirk van der Merwe's avatar Dirk van der Merwe Committed by Jakub Kicinski
Browse files

nfp: add support for NFP3800/NFP3803 PCIe devices



Enable binding the nfp driver to NFP3800 and NFP3803 devices.
The PCIE_SRAM offset is different for the NFP3800 device, which also
only supports a single explicit group.

Changes to Dirk's work:
* 48-bit dma addressing is not ready yet. Keep 40-bit dma addressing
for NFP3800.

Signed-off-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarFei Qin <fei.qin@corigine.com>
Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 7f3aa620
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -33,6 +33,10 @@
static const char nfp_driver_name[] = "nfp";

static const struct pci_device_id nfp_pci_device_ids[] = {
	{ PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP3800,
	  PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
	  PCI_ANY_ID, 0, NFP_DEV_NFP3800,
	},
	{ PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP4000,
	  PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
	  PCI_ANY_ID, 0, NFP_DEV_NFP6000,
+4 −0
Original line number Diff line number Diff line
@@ -38,6 +38,10 @@ struct nfp_net_vf {
static const char nfp_net_driver_name[] = "nfp_netvf";

static const struct pci_device_id nfp_netvf_pci_device_ids[] = {
	{ PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP3800_VF,
	  PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
	  PCI_ANY_ID, 0, NFP_DEV_NFP3800_VF,
	},
	{ PCI_VENDOR_ID_NETRONOME, PCI_DEVICE_ID_NETRONOME_NFP6000_VF,
	  PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
	  PCI_ANY_ID, 0, NFP_DEV_NFP6000_VF,
+0 −4
Original line number Diff line number Diff line
@@ -32,10 +32,6 @@

#define PCI_64BIT_BAR_COUNT             3

/* NFP hardware vendor/device ids.
 */
#define PCI_DEVICE_ID_NETRONOME_NFP3800	0x3800

#define NFP_CPP_NUM_TARGETS             16
/* Max size of area it should be safe to request */
#define NFP_CPP_SAFE_AREA_SIZE		SZ_2M
+19 −0
Original line number Diff line number Diff line
@@ -8,6 +8,25 @@
#include "nfp_dev.h"

const struct nfp_dev_info nfp_dev_info[NFP_DEV_CNT] = {
	[NFP_DEV_NFP3800] = {
		.dma_mask		= DMA_BIT_MASK(40),
		.qc_idx_mask		= GENMASK(8, 0),
		.qc_addr_offset		= 0x400000,
		.min_qc_size		= 512,
		.max_qc_size		= SZ_64K,

		.chip_names		= "NFP3800",
		.pcie_cfg_expbar_offset	= 0x0a00,
		.pcie_expl_offset	= 0xd000,
		.qc_area_sz		= 0x100000,
	},
	[NFP_DEV_NFP3800_VF] = {
		.dma_mask		= DMA_BIT_MASK(40),
		.qc_idx_mask		= GENMASK(8, 0),
		.qc_addr_offset		= 0,
		.min_qc_size		= 512,
		.max_qc_size		= SZ_64K,
	},
	[NFP_DEV_NFP6000] = {
		.dma_mask		= DMA_BIT_MASK(40),
		.qc_idx_mask		= GENMASK(7, 0),
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
#include <linux/types.h>

enum nfp_dev_id {
	NFP_DEV_NFP3800,
	NFP_DEV_NFP3800_VF,
	NFP_DEV_NFP6000,
	NFP_DEV_NFP6000_VF,
	NFP_DEV_CNT,
Loading