Commit fdb7f547 authored by Sergey Temerkhanov's avatar Sergey Temerkhanov Committed by Tony Nguyen
Browse files

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: default avatarSergey Temerkhanov <sergey.temerkhanov@intel.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent 97ed20a0
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -9,12 +9,14 @@
#include <linux/spinlock.h>
#include <linux/xarray.h>
#include "ice_adapter.h"
#include "ice.h"

static DEFINE_XARRAY(ice_adapters);
static DEFINE_MUTEX(ice_adapters_mutex);

/* 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_DEV    GENMASK(31, 16)
#define INDEX_FIELD_BUS    GENMASK(12, 5)
#define INDEX_FIELD_SLOT   GENMASK(4, 0)

@@ -24,10 +26,18 @@ static unsigned long ice_adapter_index(const struct pci_dev *pdev)

	WARN_ON(domain > FIELD_MAX(INDEX_FIELD_DOMAIN));

	switch (pdev->device) {
	case ICE_DEV_ID_E825C_BACKPLANE:
	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)
{