Lines Matching refs:accel_dev

36 static int adf_dev_init_locked(struct adf_accel_dev *accel_dev);
37 static int adf_dev_start_locked(struct adf_accel_dev *accel_dev);
38 static int adf_dev_stop_locked(struct adf_accel_dev *accel_dev);
39 static void adf_dev_shutdown_locked(struct adf_accel_dev *accel_dev);
83 adf_cfg_add_device_params(struct adf_accel_dev *accel_dev) in adf_cfg_add_device_params() argument
90 if (!accel_dev) in adf_cfg_add_device_params()
93 hw_data = accel_dev->hw_device; in adf_cfg_add_device_params()
95 if (adf_cfg_section_add(accel_dev, ADF_GENERAL_SEC)) in adf_cfg_add_device_params()
99 val = GET_MAX_BANKS(accel_dev); in adf_cfg_add_device_params()
101 accel_dev, ADF_GENERAL_SEC, key, (void *)&val, ADF_DEC)) in adf_cfg_add_device_params()
107 accel_dev, ADF_GENERAL_SEC, key, (void *)val, ADF_HEX)) in adf_cfg_add_device_params()
111 val = accel_dev->accel_id; in adf_cfg_add_device_params()
113 accel_dev, ADF_GENERAL_SEC, key, (void *)&val, ADF_DEC)) in adf_cfg_add_device_params()
117 val = dev_to_node(GET_DEV(accel_dev)); in adf_cfg_add_device_params()
119 accel_dev, ADF_GENERAL_SEC, key, (void *)&val, ADF_DEC)) in adf_cfg_add_device_params()
125 accel_dev, ADF_GENERAL_SEC, key, (void *)&val, ADF_DEC)) in adf_cfg_add_device_params()
132 accel_dev->accel_pci_dev.revid); in adf_cfg_add_device_params()
134 accel_dev, ADF_GENERAL_SEC, key, (void *)hw_version, ADF_STR)) in adf_cfg_add_device_params()
141 accel_dev->fw_versions.mmp_version_major, in adf_cfg_add_device_params()
142 accel_dev->fw_versions.mmp_version_minor, in adf_cfg_add_device_params()
143 accel_dev->fw_versions.mmp_version_patch); in adf_cfg_add_device_params()
145 accel_dev, ADF_GENERAL_SEC, key, (void *)mmp_version, ADF_STR)) in adf_cfg_add_device_params()
150 device_printf(GET_DEV(accel_dev), in adf_cfg_add_device_params()
156 adf_cfg_add_fw_version(struct adf_accel_dev *accel_dev) in adf_cfg_add_fw_version() argument
165 accel_dev->fw_versions.fw_version_major, in adf_cfg_add_fw_version()
166 accel_dev->fw_versions.fw_version_minor, in adf_cfg_add_fw_version()
167 accel_dev->fw_versions.fw_version_patch); in adf_cfg_add_fw_version()
169 accel_dev, ADF_GENERAL_SEC, key, (void *)fw_version, ADF_STR)) in adf_cfg_add_fw_version()
176 adf_cfg_add_ext_params(struct adf_accel_dev *accel_dev) in adf_cfg_add_ext_params() argument
179 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_cfg_add_ext_params()
186 accel_dev, ADF_GENERAL_SEC, key, (void *)val, ADF_HEX)) in adf_cfg_add_ext_params()
195 struct adf_accel_dev *accel_dev = (struct adf_accel_dev *)arg; in adf_error_notifier() local
202 if (service->event_hld(accel_dev, ADF_EVENT_ERROR)) in adf_error_notifier()
203 device_printf(GET_DEV(accel_dev), in adf_error_notifier()
215 adf_set_ssm_wdtimer(struct adf_accel_dev *accel_dev) in adf_set_ssm_wdtimer() argument
217 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_set_ssm_wdtimer()
219 &GET_BARS(accel_dev)[hw_data->get_misc_bar_id(hw_data)]; in adf_set_ssm_wdtimer()
229 if (!adf_cfg_get_param_value(accel_dev, in adf_set_ssm_wdtimer()
240 if (!adf_cfg_get_param_value(accel_dev, in adf_set_ssm_wdtimer()
272 adf_dev_init(struct adf_accel_dev *accel_dev) in adf_dev_init() argument
276 mutex_lock(&accel_dev->lock); in adf_dev_init()
277 ret = adf_dev_init_locked(accel_dev); in adf_dev_init()
278 mutex_unlock(&accel_dev->lock); in adf_dev_init()
284 adf_dev_init_locked(struct adf_accel_dev *accel_dev) in adf_dev_init_locked() argument
288 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_dev_init_locked()
291 sysctl_ctx_init(&accel_dev->sysctl_ctx); in adf_dev_init_locked()
292 set_bit(ADF_STATUS_SYSCTL_CTX_INITIALISED, &accel_dev->status); in adf_dev_init_locked()
295 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
300 hw_data->reset_hw_units(accel_dev); in adf_dev_init_locked()
302 if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status) && in adf_dev_init_locked()
303 !accel_dev->is_vf) { in adf_dev_init_locked()
304 device_printf(GET_DEV(accel_dev), "Device not configured\n"); in adf_dev_init_locked()
308 if (adf_init_etr_data(accel_dev)) { in adf_dev_init_locked()
309 device_printf(GET_DEV(accel_dev), "Failed initialize etr\n"); in adf_dev_init_locked()
313 if (hw_data->init_device && hw_data->init_device(accel_dev)) { in adf_dev_init_locked()
314 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
319 if (hw_data->init_accel_units && hw_data->init_accel_units(accel_dev)) { in adf_dev_init_locked()
320 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
325 if (hw_data->init_admin_comms && hw_data->init_admin_comms(accel_dev)) { in adf_dev_init_locked()
326 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
331 if (hw_data->init_arb && hw_data->init_arb(accel_dev)) { in adf_dev_init_locked()
332 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
338 hw_data->set_asym_rings_mask(accel_dev); in adf_dev_init_locked()
340 hw_data->enable_ints(accel_dev); in adf_dev_init_locked()
342 if (adf_ae_init(accel_dev)) { in adf_dev_init_locked()
343 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
348 set_bit(ADF_STATUS_AE_INITIALISED, &accel_dev->status); in adf_dev_init_locked()
350 if (adf_ae_fw_load(accel_dev)) { in adf_dev_init_locked()
351 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
355 set_bit(ADF_STATUS_AE_UCODE_LOADED, &accel_dev->status); in adf_dev_init_locked()
357 if (hw_data->alloc_irq(accel_dev)) { in adf_dev_init_locked()
358 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
362 set_bit(ADF_STATUS_IRQ_ALLOCATED, &accel_dev->status); in adf_dev_init_locked()
364 if (hw_data->init_ras && hw_data->init_ras(accel_dev)) { in adf_dev_init_locked()
365 device_printf(GET_DEV(accel_dev), "Failed to init RAS\n"); in adf_dev_init_locked()
369 hw_data->enable_ints(accel_dev); in adf_dev_init_locked()
371 hw_data->enable_error_correction(accel_dev); in adf_dev_init_locked()
373 ret = hw_data->csr_info.pfvf_ops.enable_comms(accel_dev); in adf_dev_init_locked()
377 if (adf_cfg_add_device_params(accel_dev)) in adf_dev_init_locked()
380 if (hw_data->add_pke_stats && hw_data->add_pke_stats(accel_dev)) in adf_dev_init_locked()
383 if (hw_data->add_misc_error && hw_data->add_misc_error(accel_dev)) in adf_dev_init_locked()
393 if (service->event_hld(accel_dev, ADF_EVENT_INIT)) { in adf_dev_init_locked()
394 device_printf(GET_DEV(accel_dev), in adf_dev_init_locked()
399 set_bit(accel_dev->accel_id, service->init_status); in adf_dev_init_locked()
403 ret = adf_cfg_get_param_value(accel_dev, in adf_dev_init_locked()
410 &accel_dev->autoreset_on_error)) { in adf_dev_init_locked()
412 GET_DEV(accel_dev), in adf_dev_init_locked()
433 adf_dev_start(struct adf_accel_dev *accel_dev) in adf_dev_start() argument
437 mutex_lock(&accel_dev->lock); in adf_dev_start()
438 ret = adf_dev_start_locked(accel_dev); in adf_dev_start()
439 mutex_unlock(&accel_dev->lock); in adf_dev_start()
445 adf_dev_start_locked(struct adf_accel_dev *accel_dev) in adf_dev_start_locked() argument
447 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_dev_start_locked()
451 set_bit(ADF_STATUS_STARTING, &accel_dev->status); in adf_dev_start_locked()
452 if (adf_ae_start(accel_dev)) { in adf_dev_start_locked()
453 device_printf(GET_DEV(accel_dev), "AE Start Failed\n"); in adf_dev_start_locked()
457 set_bit(ADF_STATUS_AE_STARTED, &accel_dev->status); in adf_dev_start_locked()
458 if (hw_data->send_admin_init(accel_dev)) { in adf_dev_start_locked()
459 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
464 if (adf_cfg_add_fw_version(accel_dev)) { in adf_dev_start_locked()
465 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
471 hw_data->measure_clock(accel_dev); in adf_dev_start_locked()
477 if (hw_data->set_ssm_wdtimer && hw_data->set_ssm_wdtimer(accel_dev)) { in adf_dev_start_locked()
478 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
483 if (hw_data->int_timer_init && hw_data->int_timer_init(accel_dev)) { in adf_dev_start_locked()
484 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
492 if (service->event_hld(accel_dev, ADF_EVENT_START)) { in adf_dev_start_locked()
493 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
498 set_bit(accel_dev->accel_id, service->start_status); in adf_dev_start_locked()
501 if (accel_dev->is_vf || !accel_dev->u1.pf.vf_info) { in adf_dev_start_locked()
503 if (adf_uio_register(accel_dev)) { in adf_dev_start_locked()
504 adf_uio_remove(accel_dev); in adf_dev_start_locked()
505 device_printf(GET_DEV(accel_dev), in adf_dev_start_locked()
507 set_bit(ADF_STATUS_STARTING, &accel_dev->status); in adf_dev_start_locked()
508 clear_bit(ADF_STATUS_STARTED, &accel_dev->status); in adf_dev_start_locked()
513 if (!test_bit(ADF_STATUS_RESTARTING, &accel_dev->status) && in adf_dev_start_locked()
514 adf_cfg_add_ext_params(accel_dev)) in adf_dev_start_locked()
517 clear_bit(ADF_STATUS_STARTING, &accel_dev->status); in adf_dev_start_locked()
518 set_bit(ADF_STATUS_STARTED, &accel_dev->status); in adf_dev_start_locked()
520 adf_dbgfs_add(accel_dev); in adf_dev_start_locked()
536 adf_dev_stop(struct adf_accel_dev *accel_dev) in adf_dev_stop() argument
540 mutex_lock(&accel_dev->lock); in adf_dev_stop()
541 ret = adf_dev_stop_locked(accel_dev); in adf_dev_stop()
542 mutex_unlock(&accel_dev->lock); in adf_dev_stop()
548 adf_dev_stop_locked(struct adf_accel_dev *accel_dev) in adf_dev_stop_locked() argument
553 if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status)) in adf_dev_stop_locked()
556 if (!adf_dev_started(accel_dev) && in adf_dev_stop_locked()
557 !test_bit(ADF_STATUS_STARTING, &accel_dev->status)) { in adf_dev_stop_locked()
561 if (adf_dev_stop_notify_sync(accel_dev)) { in adf_dev_stop_locked()
563 GET_DEV(accel_dev), in adf_dev_stop_locked()
568 adf_dbgfs_rm(accel_dev); in adf_dev_stop_locked()
570 clear_bit(ADF_STATUS_STARTING, &accel_dev->status); in adf_dev_stop_locked()
571 clear_bit(ADF_STATUS_STARTED, &accel_dev->status); in adf_dev_stop_locked()
573 if (accel_dev->hw_device->int_timer_exit) in adf_dev_stop_locked()
574 accel_dev->hw_device->int_timer_exit(accel_dev); in adf_dev_stop_locked()
579 if (!test_bit(accel_dev->accel_id, service->start_status)) in adf_dev_stop_locked()
581 clear_bit(accel_dev->accel_id, service->start_status); in adf_dev_stop_locked()
584 if (accel_dev->is_vf || !accel_dev->u1.pf.vf_info) { in adf_dev_stop_locked()
586 adf_uio_remove(accel_dev); in adf_dev_stop_locked()
589 if (test_bit(ADF_STATUS_AE_STARTED, &accel_dev->status)) { in adf_dev_stop_locked()
590 if (adf_ae_stop(accel_dev)) in adf_dev_stop_locked()
591 device_printf(GET_DEV(accel_dev), in adf_dev_stop_locked()
594 clear_bit(ADF_STATUS_AE_STARTED, &accel_dev->status); in adf_dev_stop_locked()
608 adf_dev_shutdown(struct adf_accel_dev *accel_dev) in adf_dev_shutdown() argument
610 mutex_lock(&accel_dev->lock); in adf_dev_shutdown()
611 adf_dev_shutdown_locked(accel_dev); in adf_dev_shutdown()
612 mutex_unlock(&accel_dev->lock); in adf_dev_shutdown()
616 adf_dev_shutdown_locked(struct adf_accel_dev *accel_dev) in adf_dev_shutdown_locked() argument
618 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_dev_shutdown_locked()
622 if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status)) in adf_dev_shutdown_locked()
625 if (test_bit(ADF_STATUS_SYSCTL_CTX_INITIALISED, &accel_dev->status)) { in adf_dev_shutdown_locked()
626 sysctl_ctx_free(&accel_dev->sysctl_ctx); in adf_dev_shutdown_locked()
628 &accel_dev->status); in adf_dev_shutdown_locked()
633 GET_DEV(accel_dev), in adf_dev_shutdown_locked()
638 if (test_bit(ADF_STATUS_AE_UCODE_LOADED, &accel_dev->status)) { in adf_dev_shutdown_locked()
639 adf_ae_fw_release(accel_dev); in adf_dev_shutdown_locked()
640 clear_bit(ADF_STATUS_AE_UCODE_LOADED, &accel_dev->status); in adf_dev_shutdown_locked()
643 if (test_bit(ADF_STATUS_AE_INITIALISED, &accel_dev->status)) { in adf_dev_shutdown_locked()
644 if (adf_ae_shutdown(accel_dev)) in adf_dev_shutdown_locked()
645 device_printf(GET_DEV(accel_dev), in adf_dev_shutdown_locked()
649 &accel_dev->status); in adf_dev_shutdown_locked()
655 if (!test_bit(accel_dev->accel_id, service->init_status)) in adf_dev_shutdown_locked()
657 if (service->event_hld(accel_dev, ADF_EVENT_SHUTDOWN)) in adf_dev_shutdown_locked()
658 device_printf(GET_DEV(accel_dev), in adf_dev_shutdown_locked()
662 clear_bit(accel_dev->accel_id, service->init_status); in adf_dev_shutdown_locked()
665 hw_data->disable_iov(accel_dev); in adf_dev_shutdown_locked()
667 if (test_bit(ADF_STATUS_IRQ_ALLOCATED, &accel_dev->status)) { in adf_dev_shutdown_locked()
668 hw_data->free_irq(accel_dev); in adf_dev_shutdown_locked()
669 clear_bit(ADF_STATUS_IRQ_ALLOCATED, &accel_dev->status); in adf_dev_shutdown_locked()
673 if (!test_bit(ADF_STATUS_RESTARTING, &accel_dev->status)) { in adf_dev_shutdown_locked()
674 adf_cfg_del_all(accel_dev); in adf_dev_shutdown_locked()
676 adf_cfg_device_clear_all(accel_dev); in adf_dev_shutdown_locked()
681 hw_data->remove_pke_stats(accel_dev); in adf_dev_shutdown_locked()
684 hw_data->remove_misc_error(accel_dev); in adf_dev_shutdown_locked()
687 hw_data->exit_ras(accel_dev); in adf_dev_shutdown_locked()
690 hw_data->exit_arb(accel_dev); in adf_dev_shutdown_locked()
693 hw_data->exit_admin_comms(accel_dev); in adf_dev_shutdown_locked()
696 hw_data->exit_accel_units(accel_dev); in adf_dev_shutdown_locked()
698 adf_cleanup_etr_data(accel_dev); in adf_dev_shutdown_locked()
700 hw_data->restore_device(accel_dev); in adf_dev_shutdown_locked()
714 adf_dev_reset(struct adf_accel_dev *accel_dev, enum adf_dev_reset_mode mode) in adf_dev_reset() argument
716 return adf_dev_aer_schedule_reset(accel_dev, mode); in adf_dev_reset()
720 adf_dev_restarting_notify(struct adf_accel_dev *accel_dev) in adf_dev_restarting_notify() argument
728 if (service->event_hld(accel_dev, ADF_EVENT_RESTARTING)) in adf_dev_restarting_notify()
729 device_printf(GET_DEV(accel_dev), in adf_dev_restarting_notify()
737 adf_dev_restarting_notify_sync(struct adf_accel_dev *accel_dev) in adf_dev_restarting_notify_sync() argument
741 adf_dev_restarting_notify(accel_dev); in adf_dev_restarting_notify_sync()
743 if (!adf_dev_in_use(accel_dev)) in adf_dev_restarting_notify_sync()
745 dev_dbg(GET_DEV(accel_dev), "retry times=%d\n", times); in adf_dev_restarting_notify_sync()
748 if (adf_dev_in_use(accel_dev)) { in adf_dev_restarting_notify_sync()
749 clear_bit(ADF_STATUS_RESTARTING, &accel_dev->status); in adf_dev_restarting_notify_sync()
750 device_printf(GET_DEV(accel_dev), in adf_dev_restarting_notify_sync()
759 adf_dev_stop_notify_sync(struct adf_accel_dev *accel_dev) in adf_dev_stop_notify_sync() argument
769 if (service->event_hld(accel_dev, ADF_EVENT_STOP)) in adf_dev_stop_notify_sync()
770 device_printf(GET_DEV(accel_dev), in adf_dev_stop_notify_sync()
776 if (!adf_dev_in_use(accel_dev)) in adf_dev_stop_notify_sync()
778 dev_dbg(GET_DEV(accel_dev), "retry times=%d\n", times); in adf_dev_stop_notify_sync()
781 if (adf_dev_in_use(accel_dev)) { in adf_dev_stop_notify_sync()
782 clear_bit(ADF_STATUS_RESTARTING, &accel_dev->status); in adf_dev_stop_notify_sync()
783 device_printf(GET_DEV(accel_dev), in adf_dev_stop_notify_sync()
792 adf_dev_restarted_notify(struct adf_accel_dev *accel_dev) in adf_dev_restarted_notify() argument
800 if (service->event_hld(accel_dev, ADF_EVENT_RESTARTED)) in adf_dev_restarted_notify()
801 device_printf(GET_DEV(accel_dev), in adf_dev_restarted_notify()