X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fnfp%2Fnfpcore%2Fnfp_cppcore.c;h=dec4a8b6d1a5c2d17fc3c5b7b7e8ee02cfd6697f;hb=cb99500de915040339f294b6ad2fc8edb4085b19;hp=f61143f7e1f373fcadd00a0e6d8e7f8f4217bbad;hpb=5f6ed2f4e0cb79580c0bedba2bd764a39923d7ec;p=dpdk.git diff --git a/drivers/net/nfp/nfpcore/nfp_cppcore.c b/drivers/net/nfp/nfpcore/nfp_cppcore.c index f61143f7e1..dec4a8b6d1 100644 --- a/drivers/net/nfp/nfpcore/nfp_cppcore.c +++ b/drivers/net/nfp/nfpcore/nfp_cppcore.c @@ -12,6 +12,7 @@ #include #include +#include #include "nfp_cpp.h" #include "nfp_target.h" @@ -542,7 +543,7 @@ nfp_xpb_readl(struct nfp_cpp *cpp, uint32_t xpb_addr, uint32_t *value) } static struct nfp_cpp * -nfp_cpp_alloc(const char *devname, int driver_lock_needed) +nfp_cpp_alloc(struct rte_pci_device *dev, int driver_lock_needed) { const struct nfp_cpp_operations *ops; struct nfp_cpp *cpp; @@ -561,7 +562,7 @@ nfp_cpp_alloc(const char *devname, int driver_lock_needed) cpp->driver_lock_needed = driver_lock_needed; if (cpp->op->init) { - err = cpp->op->init(cpp, devname); + err = cpp->op->init(cpp, dev); if (err < 0) { free(cpp); return NULL; @@ -604,9 +605,9 @@ nfp_cpp_free(struct nfp_cpp *cpp) } struct nfp_cpp * -nfp_cpp_from_device_name(const char *devname, int driver_lock_needed) +nfp_cpp_from_device_name(struct rte_pci_device *dev, int driver_lock_needed) { - return nfp_cpp_alloc(devname, driver_lock_needed); + return nfp_cpp_alloc(dev, driver_lock_needed); } /* @@ -800,7 +801,8 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp) uint32_t arm_id = NFP_CPP_ID(NFP_CPP_TARGET_ARM, 0, 0); uint32_t model = 0; - nfp_cpp_readl(cpp, arm_id, NFP6000_ARM_GCSR_SOFTMODEL0, &model); + if (nfp_cpp_readl(cpp, arm_id, NFP6000_ARM_GCSR_SOFTMODEL0, &model)) + return 0; if (NFP_CPP_MODEL_IS_6000(model)) { uint32_t tmp; @@ -809,8 +811,10 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp) /* The PL's PluDeviceID revision code is authoratative */ model &= ~0xff; - nfp_xpb_readl(cpp, NFP_XPB_DEVICE(1, 1, 16) + - NFP_PL_DEVICE_ID, &tmp); + if (nfp_xpb_readl(cpp, NFP_XPB_DEVICE(1, 1, 16) + + NFP_PL_DEVICE_ID, &tmp)) + return 0; + model |= (NFP_PL_DEVICE_ID_MASK & tmp) - 0x10; }