Lines Matching refs:sdev

72 static int sof_register_ipc_flood_test(struct snd_sof_dev *sdev)  in sof_register_ipc_flood_test()  argument
77 if (sdev->pdata->ipc_type != SOF_IPC) in sof_register_ipc_flood_test()
81 ret = sof_client_dev_register(sdev, "ipc_flood", i, NULL, 0); in sof_register_ipc_flood_test()
88 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_register_ipc_flood_test()
94 static void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) in sof_unregister_ipc_flood_test() argument
99 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_unregister_ipc_flood_test()
102 static inline int sof_register_ipc_flood_test(struct snd_sof_dev *sdev) in sof_register_ipc_flood_test() argument
107 static inline void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_flood_test() argument
111 static int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
113 return sof_client_dev_register(sdev, "msg_injector", 0, NULL, 0); in sof_register_ipc_msg_injector()
116 static void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_msg_injector() argument
118 sof_client_dev_unregister(sdev, "msg_injector", 0); in sof_unregister_ipc_msg_injector()
121 static inline int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
126 static inline void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_msg_injector() argument
129 int sof_register_clients(struct snd_sof_dev *sdev) in sof_register_clients() argument
134 ret = sof_register_ipc_flood_test(sdev); in sof_register_clients()
136 dev_err(sdev->dev, "IPC flood test client registration failed\n"); in sof_register_clients()
140 ret = sof_register_ipc_msg_injector(sdev); in sof_register_clients()
142 dev_err(sdev->dev, "IPC message injector client registration failed\n"); in sof_register_clients()
148 if (sof_ops(sdev) && sof_ops(sdev)->register_ipc_clients) in sof_register_clients()
149 ret = sof_ops(sdev)->register_ipc_clients(sdev); in sof_register_clients()
154 sof_unregister_ipc_msg_injector(sdev); in sof_register_clients()
157 sof_unregister_ipc_flood_test(sdev); in sof_register_clients()
162 void sof_unregister_clients(struct snd_sof_dev *sdev) in sof_unregister_clients() argument
164 if (sof_ops(sdev) && sof_ops(sdev)->unregister_ipc_clients) in sof_unregister_clients()
165 sof_ops(sdev)->unregister_ipc_clients(sdev); in sof_unregister_clients()
167 sof_unregister_ipc_msg_injector(sdev); in sof_unregister_clients()
168 sof_unregister_ipc_flood_test(sdev); in sof_unregister_clients()
171 int sof_client_dev_register(struct snd_sof_dev *sdev, const char *name, u32 id, in sof_client_dev_register() argument
182 cdev->sdev = sdev; in sof_client_dev_register()
185 auxdev->dev.parent = sdev->dev; in sof_client_dev_register()
195 dev_err(sdev->dev, "failed to initialize client dev %s.%d\n", name, id); in sof_client_dev_register()
201 dev_err(sdev->dev, "failed to add client dev %s.%d\n", name, id); in sof_client_dev_register()
211 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_register()
212 list_add(&cdev->list, &sdev->ipc_client_list); in sof_client_dev_register()
213 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_register()
227 void sof_client_dev_unregister(struct snd_sof_dev *sdev, const char *name, u32 id) in sof_client_dev_unregister() argument
231 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
237 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_client_dev_unregister()
246 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
253 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_tx_message()
256 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_tx_message()
258 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_tx_message()
261 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, msg->data_size, in sof_client_ipc_tx_message()
272 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_set_get_data()
275 return sof_ipc_set_get_data(cdev->sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_set_get_data()
277 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_set_get_data()
280 return sof_ipc_set_get_data(cdev->sdev->ipc, ipc_msg, in sof_client_ipc_set_get_data()
291 struct snd_sof_dev *sdev = c->sdev; in sof_client_ipc4_find_module() local
293 if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) in sof_client_ipc4_find_module()
294 return sof_ipc4_find_module_by_uuid(sdev, uuid); in sof_client_ipc4_find_module()
295 dev_err(sdev->dev, "Only supported with IPC4\n"); in sof_client_ipc4_find_module()
302 int sof_suspend_clients(struct snd_sof_dev *sdev, pm_message_t state) in sof_suspend_clients() argument
307 mutex_lock(&sdev->ipc_client_mutex); in sof_suspend_clients()
309 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_suspend_clients()
319 mutex_unlock(&sdev->ipc_client_mutex); in sof_suspend_clients()
325 int sof_resume_clients(struct snd_sof_dev *sdev) in sof_resume_clients() argument
330 mutex_lock(&sdev->ipc_client_mutex); in sof_resume_clients()
332 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_resume_clients()
342 mutex_unlock(&sdev->ipc_client_mutex); in sof_resume_clients()
350 return cdev->sdev->debugfs_root; in sof_client_get_debugfs_root()
357 return cdev->sdev->dev; in sof_client_get_dma_dev()
363 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_version() local
365 return &sdev->fw_ready.version; in sof_client_get_fw_version()
371 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_max_payload_size() local
373 return sdev->ipc->max_payload_size; in sof_client_get_ipc_max_payload_size()
379 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_type() local
381 return sdev->pdata->ipc_type; in sof_client_get_ipc_type()
388 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_get() local
390 if (!try_module_get(sdev->dev->driver->owner)) in sof_client_core_module_get()
399 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_put() local
401 module_put(sdev->dev->driver->owner); in sof_client_core_module_put()
406 void sof_client_ipc_rx_dispatcher(struct snd_sof_dev *sdev, void *msg_buf) in sof_client_ipc_rx_dispatcher() argument
411 if (sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_rx_dispatcher()
415 } else if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_rx_dispatcher()
420 dev_dbg_once(sdev->dev, "Not supported IPC version: %d\n", in sof_client_ipc_rx_dispatcher()
421 sdev->pdata->ipc_type); in sof_client_ipc_rx_dispatcher()
425 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
427 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_ipc_rx_dispatcher()
432 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
439 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_ipc_rx_handler() local
445 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_register_ipc_rx_handler()
448 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_register_ipc_rx_handler()
452 dev_warn(sdev->dev, "%s: Not supported IPC version: %d\n", in sof_client_register_ipc_rx_handler()
453 __func__, sdev->pdata->ipc_type); in sof_client_register_ipc_rx_handler()
466 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
467 list_add(&event->list, &sdev->ipc_rx_handler_list); in sof_client_register_ipc_rx_handler()
468 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
477 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_ipc_rx_handler() local
480 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
482 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_unregister_ipc_rx_handler()
490 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
495 void sof_client_fw_state_dispatcher(struct snd_sof_dev *sdev) in sof_client_fw_state_dispatcher() argument
499 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
501 list_for_each_entry(event, &sdev->fw_state_handler_list, list) in sof_client_fw_state_dispatcher()
502 event->callback(event->cdev, sdev->fw_state); in sof_client_fw_state_dispatcher()
504 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
510 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_fw_state_handler() local
524 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
525 list_add(&event->list, &sdev->fw_state_handler_list); in sof_client_register_fw_state_handler()
526 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
534 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_fw_state_handler() local
537 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
539 list_for_each_entry(event, &sdev->fw_state_handler_list, list) { in sof_client_unregister_fw_state_handler()
547 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
553 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_state() local
555 return sdev->fw_state; in sof_client_get_fw_state()