int nfp_hwmon_read_sensor(struct nfp_cpp *cpp, enum nfp_nsp_sensor_id id, long *val) { struct nfp_sensors s; struct nfp_nsp *nsp; int ret; nsp = nfp_nsp_open(cpp); if (IS_ERR(nsp)) return PTR_ERR(nsp); ret = nfp_nsp_read_sensors(nsp, BIT(id), &s, sizeof(s)); nfp_nsp_close(nsp); if (ret < 0) return ret; switch (id) { case NFP_SENSOR_CHIP_TEMPERATURE: *val = le32_to_cpu(s.chip_temp); break; case NFP_SENSOR_ASSEMBLY_POWER: *val = le32_to_cpu(s.assembly_power); break; case NFP_SENSOR_ASSEMBLY_12V_POWER: *val = le32_to_cpu(s.assembly_12v_power); break; case NFP_SENSOR_ASSEMBLY_3V3_POWER: *val = le32_to_cpu(s.assembly_3v3_power); break; default: return -EINVAL; } return 0; }
static void nfp_net_get_nspinfo(struct nfp_app *app, char *version) { struct nfp_nsp *nsp; if (!app) return; nsp = nfp_nsp_open(app->cpp); if (IS_ERR(nsp)) return; snprintf(version, ETHTOOL_FWVERS_LEN, "%hu.%hu", nfp_nsp_get_abi_ver_major(nsp), nfp_nsp_get_abi_ver_minor(nsp)); nfp_nsp_close(nsp); }
static void nfp_fw_unload(struct nfp_pf *pf) { struct nfp_nsp *nsp; int err; nsp = nfp_nsp_open(pf->cpp); if (IS_ERR(nsp)) { nfp_err(pf->cpp, "Reset failed, can't open NSP\n"); return; } err = nfp_nsp_device_soft_reset(nsp); if (err < 0) dev_warn(&pf->pdev->dev, "Couldn't unload firmware: %d\n", err); else dev_info(&pf->pdev->dev, "Firmware safely unloaded\n"); nfp_nsp_close(nsp); }
static int nfp_nsp_init(struct pci_dev *pdev, struct nfp_pf *pf) { struct nfp_nsp_identify *nspi; struct nfp_nsp *nsp; int err; nsp = nfp_nsp_open(pf->cpp); if (IS_ERR(nsp)) { err = PTR_ERR(nsp); dev_err(&pdev->dev, "Failed to access the NSP: %d\n", err); return err; } err = nfp_nsp_wait(nsp); if (err < 0) goto exit_close_nsp; pf->eth_tbl = __nfp_eth_read_ports(pf->cpp, nsp); nspi = __nfp_nsp_identify(nsp); if (nspi) { dev_info(&pdev->dev, "BSP: %s\n", nspi->version); kfree(nspi); } err = nfp_fw_load(pdev, pf, nsp); if (err < 0) { kfree(pf->eth_tbl); dev_err(&pdev->dev, "Failed to load FW\n"); goto exit_close_nsp; } pf->fw_loaded = !!err; err = 0; exit_close_nsp: nfp_nsp_close(nsp); return err; }