Lines Matching refs:accel_dev
116 static int adf_put_admin_msg_sync(struct adf_accel_dev *accel_dev, u32 ae, in adf_put_admin_msg_sync() argument
121 struct adf_admin_comms *admin = accel_dev->admin; in adf_put_admin_msg_sync()
143 dev_err(&GET_DEV(accel_dev), in adf_put_admin_msg_sync()
158 static int adf_send_admin(struct adf_accel_dev *accel_dev, in adf_send_admin() argument
166 if (adf_put_admin_msg_sync(accel_dev, ae, req, resp) || in adf_send_admin()
173 static int adf_init_ae(struct adf_accel_dev *accel_dev) in adf_init_ae() argument
177 struct adf_hw_device_data *hw_device = accel_dev->hw_device; in adf_init_ae()
184 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_init_ae()
187 static int adf_set_fw_constants(struct adf_accel_dev *accel_dev) in adf_set_fw_constants() argument
191 struct adf_hw_device_data *hw_device = accel_dev->hw_device; in adf_set_fw_constants()
199 req.init_cfg_ptr = accel_dev->admin->const_tbl_addr; in adf_set_fw_constants()
201 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_set_fw_constants()
204 int adf_get_fw_timestamp(struct adf_accel_dev *accel_dev, u64 *timestamp) in adf_get_fw_timestamp() argument
212 ret = adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_get_fw_timestamp()
220 static int adf_set_chaining(struct adf_accel_dev *accel_dev) in adf_set_chaining() argument
222 u32 ae_mask = GET_HW_DATA(accel_dev)->ae_mask; in adf_set_chaining()
228 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_set_chaining()
231 static int adf_get_dc_capabilities(struct adf_accel_dev *accel_dev, in adf_get_dc_capabilities() argument
234 struct adf_hw_device_data *hw_device = accel_dev->hw_device; in adf_get_dc_capabilities()
249 for_each_set_bit(ae, &ae_mask, GET_MAX_ACCELENGINES(accel_dev)) { in adf_get_dc_capabilities()
250 ret = adf_send_admin(accel_dev, &req, &resp, 1ULL << ae); in adf_get_dc_capabilities()
260 int adf_get_ae_fw_counters(struct adf_accel_dev *accel_dev, u16 ae, u64 *reqs, u64 *resps) in adf_get_ae_fw_counters() argument
268 ret = adf_put_admin_msg_sync(accel_dev, ae, &req, &resp); in adf_get_ae_fw_counters()
278 int adf_send_admin_tim_sync(struct adf_accel_dev *accel_dev, u32 cnt) in adf_send_admin_tim_sync() argument
280 u32 ae_mask = accel_dev->hw_device->ae_mask; in adf_send_admin_tim_sync()
287 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_tim_sync()
290 int adf_send_admin_hb_timer(struct adf_accel_dev *accel_dev, uint32_t ticks) in adf_send_admin_hb_timer() argument
292 u32 ae_mask = accel_dev->hw_device->ae_mask; in adf_send_admin_hb_timer()
297 req.init_cfg_ptr = accel_dev->heartbeat->dma.phy_addr; in adf_send_admin_hb_timer()
300 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_hb_timer()
303 static bool is_dcc_enabled(struct adf_accel_dev *accel_dev) in is_dcc_enabled() argument
308 ret = adf_cfg_get_param_value(accel_dev, ADF_GENERAL_SEC, in is_dcc_enabled()
316 static int adf_get_fw_capabilities(struct adf_accel_dev *accel_dev, u16 *caps) in adf_get_fw_capabilities() argument
318 u32 ae_mask = accel_dev->hw_device->admin_ae_mask; in adf_get_fw_capabilities()
327 ret = adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_get_fw_capabilities()
336 int adf_send_admin_rl_init(struct adf_accel_dev *accel_dev, in adf_send_admin_rl_init() argument
339 u32 ae_mask = accel_dev->hw_device->admin_ae_mask; in adf_send_admin_rl_init()
346 ret = adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_rl_init()
355 int adf_send_admin_rl_add_update(struct adf_accel_dev *accel_dev, in adf_send_admin_rl_add_update() argument
358 u32 ae_mask = accel_dev->hw_device->admin_ae_mask; in adf_send_admin_rl_add_update()
366 return adf_send_admin(accel_dev, req, &resp, ae_mask); in adf_send_admin_rl_add_update()
369 int adf_send_admin_rl_delete(struct adf_accel_dev *accel_dev, u16 node_id, in adf_send_admin_rl_delete() argument
372 u32 ae_mask = accel_dev->hw_device->admin_ae_mask; in adf_send_admin_rl_delete()
380 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_rl_delete()
391 int adf_send_admin_init(struct adf_accel_dev *accel_dev) in adf_send_admin_init() argument
393 struct adf_hw_device_data *hw_data = GET_HW_DATA(accel_dev); in adf_send_admin_init()
397 ret = adf_set_fw_constants(accel_dev); in adf_send_admin_init()
401 if (is_dcc_enabled(accel_dev)) { in adf_send_admin_init()
402 ret = adf_set_chaining(accel_dev); in adf_send_admin_init()
407 ret = adf_get_dc_capabilities(accel_dev, &dc_capabilities); in adf_send_admin_init()
409 dev_err(&GET_DEV(accel_dev), "Cannot get dc capabilities\n"); in adf_send_admin_init()
412 accel_dev->hw_device->extended_dc_capabilities = dc_capabilities; in adf_send_admin_init()
414 adf_get_fw_capabilities(accel_dev, &hw_data->fw_capabilities); in adf_send_admin_init()
416 return adf_init_ae(accel_dev); in adf_send_admin_init()
438 int adf_init_admin_pm(struct adf_accel_dev *accel_dev, u32 idle_delay) in adf_init_admin_pm() argument
440 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_init_admin_pm()
445 if (!accel_dev->admin) { in adf_init_admin_pm()
446 dev_err(&GET_DEV(accel_dev), "adf_admin is not available\n"); in adf_init_admin_pm()
453 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_init_admin_pm()
457 int adf_get_pm_info(struct adf_accel_dev *accel_dev, dma_addr_t p_state_addr, in adf_get_pm_info() argument
460 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_get_pm_info()
467 if (!accel_dev->admin) { in adf_get_pm_info()
468 dev_err(&GET_DEV(accel_dev), "adf_admin is not available\n"); in adf_get_pm_info()
476 ret = adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_get_pm_info()
478 dev_err(&GET_DEV(accel_dev), in adf_get_pm_info()
484 int adf_get_cnv_stats(struct adf_accel_dev *accel_dev, u16 ae, u16 *err_cnt, in adf_get_cnv_stats() argument
493 ret = adf_put_admin_msg_sync(accel_dev, ae, &req, &resp); in adf_get_cnv_stats()
505 int adf_send_admin_tl_start(struct adf_accel_dev *accel_dev, in adf_send_admin_tl_start() argument
509 u32 ae_mask = GET_HW_DATA(accel_dev)->admin_ae_mask; in adf_send_admin_tl_start()
521 ret = adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_tl_start()
530 int adf_send_admin_tl_stop(struct adf_accel_dev *accel_dev) in adf_send_admin_tl_stop() argument
532 struct adf_hw_device_data *hw_data = GET_HW_DATA(accel_dev); in adf_send_admin_tl_stop()
539 return adf_send_admin(accel_dev, &req, &resp, ae_mask); in adf_send_admin_tl_stop()
542 static int adf_send_admin_retry(struct adf_accel_dev *accel_dev, u8 cmd_id, in adf_send_admin_retry() argument
546 u32 admin_ae_mask = GET_HW_DATA(accel_dev)->admin_ae_mask; in adf_send_admin_retry()
554 ret = adf_send_admin(accel_dev, &req, resp, admin_ae_mask); in adf_send_admin_retry()
567 static int adf_send_admin_svn(struct adf_accel_dev *accel_dev, u8 cmd_id, in adf_send_admin_svn() argument
570 return adf_send_admin_retry(accel_dev, cmd_id, resp, ADF_SVN_RETRY_MS); in adf_send_admin_svn()
573 int adf_send_admin_arb_query(struct adf_accel_dev *accel_dev, int cmd, u8 *svn) in adf_send_admin_arb_query() argument
578 ret = adf_send_admin_svn(accel_dev, ICP_QAT_FW_SVN_READ, &resp); in adf_send_admin_arb_query()
594 dev_err(&GET_DEV(accel_dev), in adf_send_admin_arb_query()
602 int adf_send_admin_arb_commit(struct adf_accel_dev *accel_dev) in adf_send_admin_arb_commit() argument
606 return adf_send_admin_svn(accel_dev, ICP_QAT_FW_SVN_COMMIT, &resp); in adf_send_admin_arb_commit()
609 int adf_init_admin_comms(struct adf_accel_dev *accel_dev) in adf_init_admin_comms() argument
612 struct adf_hw_device_data *hw_data = accel_dev->hw_device; in adf_init_admin_comms()
613 void __iomem *pmisc_addr = adf_get_pmisc_base(accel_dev); in adf_init_admin_comms()
619 admin = kzalloc_node(sizeof(*accel_dev->admin), GFP_KERNEL, in adf_init_admin_comms()
620 dev_to_node(&GET_DEV(accel_dev))); in adf_init_admin_comms()
623 admin->virt_addr = dma_alloc_coherent(&GET_DEV(accel_dev), PAGE_SIZE, in adf_init_admin_comms()
626 dev_err(&GET_DEV(accel_dev), "Failed to allocate dma buff\n"); in adf_init_admin_comms()
631 admin->virt_tbl_addr = dma_alloc_coherent(&GET_DEV(accel_dev), in adf_init_admin_comms()
636 dev_err(&GET_DEV(accel_dev), "Failed to allocate const_tbl\n"); in adf_init_admin_comms()
637 dma_free_coherent(&GET_DEV(accel_dev), PAGE_SIZE, in adf_init_admin_comms()
657 accel_dev->admin = admin; in adf_init_admin_comms()
662 void adf_exit_admin_comms(struct adf_accel_dev *accel_dev) in adf_exit_admin_comms() argument
664 struct adf_admin_comms *admin = accel_dev->admin; in adf_exit_admin_comms()
670 dma_free_coherent(&GET_DEV(accel_dev), PAGE_SIZE, in adf_exit_admin_comms()
673 dma_free_coherent(&GET_DEV(accel_dev), PAGE_SIZE, in adf_exit_admin_comms()
678 accel_dev->admin = NULL; in adf_exit_admin_comms()