2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00

ice: Initial support for E825C hardware in ice_adapter

Address E825C devices by PCI ID since dual IP core configurations
need 1 ice_adapter for both devices.

Signed-off-by: Sergey Temerkhanov <sergey.temerkhanov@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
Sergey Temerkhanov 2024-08-21 15:09:55 +02:00 committed by Tony Nguyen
parent 97ed20a01f
commit fdb7f54700

View File

@ -9,12 +9,14 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/xarray.h> #include <linux/xarray.h>
#include "ice_adapter.h" #include "ice_adapter.h"
#include "ice.h"
static DEFINE_XARRAY(ice_adapters); static DEFINE_XARRAY(ice_adapters);
static DEFINE_MUTEX(ice_adapters_mutex); static DEFINE_MUTEX(ice_adapters_mutex);
/* PCI bus number is 8 bits. Slot is 5 bits. Domain can have the rest. */ /* PCI bus number is 8 bits. Slot is 5 bits. Domain can have the rest. */
#define INDEX_FIELD_DOMAIN GENMASK(BITS_PER_LONG - 1, 13) #define INDEX_FIELD_DOMAIN GENMASK(BITS_PER_LONG - 1, 13)
#define INDEX_FIELD_DEV GENMASK(31, 16)
#define INDEX_FIELD_BUS GENMASK(12, 5) #define INDEX_FIELD_BUS GENMASK(12, 5)
#define INDEX_FIELD_SLOT GENMASK(4, 0) #define INDEX_FIELD_SLOT GENMASK(4, 0)
@ -24,9 +26,17 @@ static unsigned long ice_adapter_index(const struct pci_dev *pdev)
WARN_ON(domain > FIELD_MAX(INDEX_FIELD_DOMAIN)); WARN_ON(domain > FIELD_MAX(INDEX_FIELD_DOMAIN));
return FIELD_PREP(INDEX_FIELD_DOMAIN, domain) | switch (pdev->device) {
FIELD_PREP(INDEX_FIELD_BUS, pdev->bus->number) | case ICE_DEV_ID_E825C_BACKPLANE:
FIELD_PREP(INDEX_FIELD_SLOT, PCI_SLOT(pdev->devfn)); case ICE_DEV_ID_E825C_QSFP:
case ICE_DEV_ID_E825C_SFP:
case ICE_DEV_ID_E825C_SGMII:
return FIELD_PREP(INDEX_FIELD_DEV, pdev->device);
default:
return FIELD_PREP(INDEX_FIELD_DOMAIN, domain) |
FIELD_PREP(INDEX_FIELD_BUS, pdev->bus->number) |
FIELD_PREP(INDEX_FIELD_SLOT, PCI_SLOT(pdev->devfn));
}
} }
static struct ice_adapter *ice_adapter_new(void) static struct ice_adapter *ice_adapter_new(void)