• Home
  • Raw
  • Download

Lines Matching refs:ndev

64 static void write_to_ucd_unit(struct nitrox_device *ndev,  in write_to_ucd_unit()  argument
88 nitrox_write_csr(ndev, offset, 0); in write_to_ucd_unit()
95 nitrox_write_csr(ndev, offset, data); in write_to_ucd_unit()
102 nitrox_write_csr(ndev, offset, (~0ULL)); in write_to_ucd_unit()
104 for (i = 0; i < ndev->hw.se_cores; i++) { in write_to_ucd_unit()
112 nitrox_write_csr(ndev, offset, 0x8); in write_to_ucd_unit()
117 static int nitrox_load_fw(struct nitrox_device *ndev, const char *fw_name) in nitrox_load_fw() argument
123 dev_info(DEV(ndev), "Loading firmware \"%s\"\n", fw_name); in nitrox_load_fw()
125 ret = request_firmware(&fw, fw_name, DEV(ndev)); in nitrox_load_fw()
127 dev_err(DEV(ndev), "failed to get firmware %s\n", fw_name); in nitrox_load_fw()
133 memcpy(ndev->hw.fw_name, ucode->version, (VERSION_LEN - 2)); in nitrox_load_fw()
134 ndev->hw.fw_name[VERSION_LEN - 1] = '\0'; in nitrox_load_fw()
136 write_to_ucd_unit(ndev, ucode); in nitrox_load_fw()
139 set_bit(NITROX_UCODE_LOADED, &ndev->status); in nitrox_load_fw()
149 static int nitrox_add_to_devlist(struct nitrox_device *ndev) in nitrox_add_to_devlist() argument
154 INIT_LIST_HEAD(&ndev->list); in nitrox_add_to_devlist()
155 refcount_set(&ndev->refcnt, 1); in nitrox_add_to_devlist()
159 if (dev == ndev) { in nitrox_add_to_devlist()
164 ndev->idx = num_devices++; in nitrox_add_to_devlist()
165 list_add_tail(&ndev->list, &ndevlist); in nitrox_add_to_devlist()
176 static void nitrox_remove_from_devlist(struct nitrox_device *ndev) in nitrox_remove_from_devlist() argument
179 list_del(&ndev->list); in nitrox_remove_from_devlist()
186 struct nitrox_device *ndev = NULL; in nitrox_get_first_device() local
189 list_for_each_entry(ndev, &ndevlist, list) { in nitrox_get_first_device()
190 if (nitrox_ready(ndev)) in nitrox_get_first_device()
194 if (!ndev) in nitrox_get_first_device()
197 refcount_inc(&ndev->refcnt); in nitrox_get_first_device()
200 return ndev; in nitrox_get_first_device()
203 void nitrox_put_device(struct nitrox_device *ndev) in nitrox_put_device() argument
205 if (!ndev) in nitrox_put_device()
208 refcount_dec(&ndev->refcnt); in nitrox_put_device()
237 static int nitrox_pf_sw_init(struct nitrox_device *ndev) in nitrox_pf_sw_init() argument
241 err = nitrox_common_sw_init(ndev); in nitrox_pf_sw_init()
245 err = nitrox_pf_init_isr(ndev); in nitrox_pf_sw_init()
247 nitrox_common_sw_cleanup(ndev); in nitrox_pf_sw_init()
252 static void nitrox_pf_sw_cleanup(struct nitrox_device *ndev) in nitrox_pf_sw_cleanup() argument
254 nitrox_pf_cleanup_isr(ndev); in nitrox_pf_sw_cleanup()
255 nitrox_common_sw_cleanup(ndev); in nitrox_pf_sw_cleanup()
262 static int nitrox_bist_check(struct nitrox_device *ndev) in nitrox_bist_check() argument
268 value += nitrox_read_csr(ndev, EMU_BIST_STATUSX(i)); in nitrox_bist_check()
269 value += nitrox_read_csr(ndev, EFL_CORE_BIST_REGX(i)); in nitrox_bist_check()
271 value += nitrox_read_csr(ndev, UCD_BIST_STATUS); in nitrox_bist_check()
272 value += nitrox_read_csr(ndev, NPS_CORE_BIST_REG); in nitrox_bist_check()
273 value += nitrox_read_csr(ndev, NPS_CORE_NPC_BIST_REG); in nitrox_bist_check()
274 value += nitrox_read_csr(ndev, NPS_PKT_SLC_BIST_REG); in nitrox_bist_check()
275 value += nitrox_read_csr(ndev, NPS_PKT_IN_BIST_REG); in nitrox_bist_check()
276 value += nitrox_read_csr(ndev, POM_BIST_REG); in nitrox_bist_check()
277 value += nitrox_read_csr(ndev, BMI_BIST_REG); in nitrox_bist_check()
278 value += nitrox_read_csr(ndev, EFL_TOP_BIST_STAT); in nitrox_bist_check()
279 value += nitrox_read_csr(ndev, BMO_BIST_REG); in nitrox_bist_check()
280 value += nitrox_read_csr(ndev, LBC_BIST_STATUS); in nitrox_bist_check()
281 value += nitrox_read_csr(ndev, PEM_BIST_STATUSX(0)); in nitrox_bist_check()
287 static void nitrox_get_hwinfo(struct nitrox_device *ndev) in nitrox_get_hwinfo() argument
297 emu_fuse.value = nitrox_read_csr(ndev, offset); in nitrox_get_hwinfo()
300 ndev->hw.ae_cores += AE_CORES_PER_CLUSTER - dead_cores; in nitrox_get_hwinfo()
302 ndev->hw.se_cores += SE_CORES_PER_CLUSTER - dead_cores; in nitrox_get_hwinfo()
307 static int nitrox_pf_hw_init(struct nitrox_device *ndev) in nitrox_pf_hw_init() argument
311 err = nitrox_bist_check(ndev); in nitrox_pf_hw_init()
313 dev_err(&ndev->pdev->dev, "BIST check failed\n"); in nitrox_pf_hw_init()
317 nitrox_get_hwinfo(ndev); in nitrox_pf_hw_init()
319 nitrox_config_nps_unit(ndev); in nitrox_pf_hw_init()
320 nitrox_config_pom_unit(ndev); in nitrox_pf_hw_init()
321 nitrox_config_efl_unit(ndev); in nitrox_pf_hw_init()
323 nitrox_config_bmi_unit(ndev); in nitrox_pf_hw_init()
324 nitrox_config_bmo_unit(ndev); in nitrox_pf_hw_init()
326 nitrox_config_lbc_unit(ndev); in nitrox_pf_hw_init()
327 nitrox_config_rand_unit(ndev); in nitrox_pf_hw_init()
330 err = nitrox_load_fw(ndev, SE_FW); in nitrox_pf_hw_init()
334 nitrox_config_emu_unit(ndev); in nitrox_pf_hw_init()
342 struct nitrox_device *ndev = s->private; in registers_show() local
348 nitrox_read_csr(ndev, offset)); in registers_show()
351 nitrox_read_csr(ndev, offset)); in registers_show()
356 nitrox_read_csr(ndev, offset)); in registers_show()
359 nitrox_read_csr(ndev, offset)); in registers_show()
379 struct nitrox_device *ndev = s->private; in firmware_show() local
381 seq_printf(s, "Version: %s\n", ndev->hw.fw_name); in firmware_show()
400 struct nitrox_device *ndev = s->private; in nitrox_show() local
402 seq_printf(s, "NITROX-5 [idx: %d]\n", ndev->idx); in nitrox_show()
403 seq_printf(s, " Revision ID: 0x%0x\n", ndev->hw.revision_id); in nitrox_show()
405 ndev->hw.ae_cores, ndev->hw.se_cores); in nitrox_show()
406 seq_printf(s, " Number of Queues: %u\n", ndev->nr_queues); in nitrox_show()
407 seq_printf(s, " Queue length: %u\n", ndev->qlen); in nitrox_show()
408 seq_printf(s, " Node: %u\n", ndev->node); in nitrox_show()
426 static void nitrox_debugfs_exit(struct nitrox_device *ndev) in nitrox_debugfs_exit() argument
428 debugfs_remove_recursive(ndev->debugfs_dir); in nitrox_debugfs_exit()
429 ndev->debugfs_dir = NULL; in nitrox_debugfs_exit()
432 static int nitrox_debugfs_init(struct nitrox_device *ndev) in nitrox_debugfs_init() argument
440 ndev->debugfs_dir = dir; in nitrox_debugfs_init()
441 f = debugfs_create_file("counters", 0400, dir, ndev, &register_fops); in nitrox_debugfs_init()
444 f = debugfs_create_file("firmware", 0400, dir, ndev, &firmware_fops); in nitrox_debugfs_init()
447 f = debugfs_create_file("nitrox", 0400, dir, ndev, &nitrox_fops); in nitrox_debugfs_init()
454 nitrox_debugfs_exit(ndev); in nitrox_debugfs_init()
458 static int nitrox_debugfs_init(struct nitrox_device *ndev) in nitrox_debugfs_init() argument
463 static void nitrox_debugfs_exit(struct nitrox_device *ndev) in nitrox_debugfs_exit() argument
479 struct nitrox_device *ndev; in nitrox_probe() local
515 ndev = kzalloc(sizeof(*ndev), GFP_KERNEL); in nitrox_probe()
516 if (!ndev) { in nitrox_probe()
521 pci_set_drvdata(pdev, ndev); in nitrox_probe()
522 ndev->pdev = pdev; in nitrox_probe()
525 nitrox_add_to_devlist(ndev); in nitrox_probe()
527 ndev->hw.vendor_id = pdev->vendor; in nitrox_probe()
528 ndev->hw.device_id = pdev->device; in nitrox_probe()
529 ndev->hw.revision_id = pdev->revision; in nitrox_probe()
531 ndev->timeout = msecs_to_jiffies(CMD_TIMEOUT); in nitrox_probe()
532 ndev->node = dev_to_node(&pdev->dev); in nitrox_probe()
533 if (ndev->node == NUMA_NO_NODE) in nitrox_probe()
534 ndev->node = 0; in nitrox_probe()
536 ndev->bar_addr = ioremap(pci_resource_start(pdev, 0), in nitrox_probe()
538 if (!ndev->bar_addr) { in nitrox_probe()
543 ndev->nr_queues = min_t(u32, MAX_PF_QUEUES, num_online_cpus()); in nitrox_probe()
544 ndev->qlen = qlen; in nitrox_probe()
546 err = nitrox_pf_sw_init(ndev); in nitrox_probe()
550 err = nitrox_pf_hw_init(ndev); in nitrox_probe()
554 err = nitrox_debugfs_init(ndev); in nitrox_probe()
558 set_bit(NITROX_READY, &ndev->status); in nitrox_probe()
569 nitrox_debugfs_exit(ndev); in nitrox_probe()
570 clear_bit(NITROX_READY, &ndev->status); in nitrox_probe()
574 nitrox_pf_sw_cleanup(ndev); in nitrox_probe()
576 nitrox_remove_from_devlist(ndev); in nitrox_probe()
577 kfree(ndev); in nitrox_probe()
591 struct nitrox_device *ndev = pci_get_drvdata(pdev); in nitrox_remove() local
593 if (!ndev) in nitrox_remove()
596 if (!refcount_dec_and_test(&ndev->refcnt)) { in nitrox_remove()
597 dev_err(DEV(ndev), "Device refcnt not zero (%d)\n", in nitrox_remove()
598 refcount_read(&ndev->refcnt)); in nitrox_remove()
602 dev_info(DEV(ndev), "Removing Device %x:%x\n", in nitrox_remove()
603 ndev->hw.vendor_id, ndev->hw.device_id); in nitrox_remove()
605 clear_bit(NITROX_READY, &ndev->status); in nitrox_remove()
609 nitrox_remove_from_devlist(ndev); in nitrox_remove()
611 nitrox_debugfs_exit(ndev); in nitrox_remove()
612 nitrox_pf_sw_cleanup(ndev); in nitrox_remove()
614 iounmap(ndev->bar_addr); in nitrox_remove()
615 kfree(ndev); in nitrox_remove()