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

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
...@@ -33,6 +33,10 @@ ...@@ -33,6 +33,10 @@
static const char nfp_driver_name[] = "nfp"; static const char nfp_driver_name[] = "nfp";
static const struct pci_device_id nfp_pci_device_ids[] = { 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_DEVICE_ID_NETRONOME_NFP4000,
PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID, PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
PCI_ANY_ID, 0, NFP_DEV_NFP6000, PCI_ANY_ID, 0, NFP_DEV_NFP6000,
......
...@@ -38,6 +38,10 @@ struct nfp_net_vf { ...@@ -38,6 +38,10 @@ struct nfp_net_vf {
static const char nfp_net_driver_name[] = "nfp_netvf"; static const char nfp_net_driver_name[] = "nfp_netvf";
static const struct pci_device_id nfp_netvf_pci_device_ids[] = { 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_DEVICE_ID_NETRONOME_NFP6000_VF,
PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID, PCI_VENDOR_ID_NETRONOME, PCI_ANY_ID,
PCI_ANY_ID, 0, NFP_DEV_NFP6000_VF, PCI_ANY_ID, 0, NFP_DEV_NFP6000_VF,
......
...@@ -32,10 +32,6 @@ ...@@ -32,10 +32,6 @@
#define PCI_64BIT_BAR_COUNT 3 #define PCI_64BIT_BAR_COUNT 3
/* NFP hardware vendor/device ids.
*/
#define PCI_DEVICE_ID_NETRONOME_NFP3800 0x3800
#define NFP_CPP_NUM_TARGETS 16 #define NFP_CPP_NUM_TARGETS 16
/* Max size of area it should be safe to request */ /* Max size of area it should be safe to request */
#define NFP_CPP_SAFE_AREA_SIZE SZ_2M #define NFP_CPP_SAFE_AREA_SIZE SZ_2M
......
...@@ -8,6 +8,25 @@ ...@@ -8,6 +8,25 @@
#include "nfp_dev.h" #include "nfp_dev.h"
const struct nfp_dev_info nfp_dev_info[NFP_DEV_CNT] = { 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] = { [NFP_DEV_NFP6000] = {
.dma_mask = DMA_BIT_MASK(40), .dma_mask = DMA_BIT_MASK(40),
.qc_idx_mask = GENMASK(7, 0), .qc_idx_mask = GENMASK(7, 0),
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include <linux/types.h> #include <linux/types.h>
enum nfp_dev_id { enum nfp_dev_id {
NFP_DEV_NFP3800,
NFP_DEV_NFP3800_VF,
NFP_DEV_NFP6000, NFP_DEV_NFP6000,
NFP_DEV_NFP6000_VF, NFP_DEV_NFP6000_VF,
NFP_DEV_CNT, NFP_DEV_CNT,
......
...@@ -2531,9 +2531,11 @@ ...@@ -2531,9 +2531,11 @@
#define PCI_VENDOR_ID_HUAWEI 0x19e5 #define PCI_VENDOR_ID_HUAWEI 0x19e5
#define PCI_VENDOR_ID_NETRONOME 0x19ee #define PCI_VENDOR_ID_NETRONOME 0x19ee
#define PCI_DEVICE_ID_NETRONOME_NFP3800 0x3800
#define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000 #define PCI_DEVICE_ID_NETRONOME_NFP4000 0x4000
#define PCI_DEVICE_ID_NETRONOME_NFP5000 0x5000 #define PCI_DEVICE_ID_NETRONOME_NFP5000 0x5000
#define PCI_DEVICE_ID_NETRONOME_NFP6000 0x6000 #define PCI_DEVICE_ID_NETRONOME_NFP6000 0x6000
#define PCI_DEVICE_ID_NETRONOME_NFP3800_VF 0x3803
#define PCI_DEVICE_ID_NETRONOME_NFP6000_VF 0x6003 #define PCI_DEVICE_ID_NETRONOME_NFP6000_VF 0x6003
#define PCI_VENDOR_ID_QMI 0x1a32 #define PCI_VENDOR_ID_QMI 0x1a32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment