Lines Matching refs:sdev

71 static int sof_register_ipc_flood_test(struct snd_sof_dev *sdev)  in sof_register_ipc_flood_test()  argument
76 if (sdev->pdata->ipc_type != SOF_IPC) in sof_register_ipc_flood_test()
80 ret = sof_client_dev_register(sdev, "ipc_flood", i, NULL, 0); in sof_register_ipc_flood_test()
87 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_register_ipc_flood_test()
93 static void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) in sof_unregister_ipc_flood_test() argument
98 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_unregister_ipc_flood_test()
101 static inline int sof_register_ipc_flood_test(struct snd_sof_dev *sdev) in sof_register_ipc_flood_test() argument
106 static inline void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_flood_test() argument
110 static int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
112 return sof_client_dev_register(sdev, "msg_injector", 0, NULL, 0); in sof_register_ipc_msg_injector()
115 static void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_msg_injector() argument
117 sof_client_dev_unregister(sdev, "msg_injector", 0); in sof_unregister_ipc_msg_injector()
120 static inline int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
125 static inline void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_msg_injector() argument
128 int sof_register_clients(struct snd_sof_dev *sdev) in sof_register_clients() argument
133 ret = sof_register_ipc_flood_test(sdev); in sof_register_clients()
135 dev_err(sdev->dev, "IPC flood test client registration failed\n"); in sof_register_clients()
139 ret = sof_register_ipc_msg_injector(sdev); in sof_register_clients()
141 dev_err(sdev->dev, "IPC message injector client registration failed\n"); in sof_register_clients()
147 if (sof_ops(sdev) && sof_ops(sdev)->register_ipc_clients) in sof_register_clients()
148 ret = sof_ops(sdev)->register_ipc_clients(sdev); in sof_register_clients()
153 sof_unregister_ipc_msg_injector(sdev); in sof_register_clients()
156 sof_unregister_ipc_flood_test(sdev); in sof_register_clients()
161 void sof_unregister_clients(struct snd_sof_dev *sdev) in sof_unregister_clients() argument
163 if (sof_ops(sdev) && sof_ops(sdev)->unregister_ipc_clients) in sof_unregister_clients()
164 sof_ops(sdev)->unregister_ipc_clients(sdev); in sof_unregister_clients()
166 sof_unregister_ipc_msg_injector(sdev); in sof_unregister_clients()
167 sof_unregister_ipc_flood_test(sdev); in sof_unregister_clients()
170 int sof_client_dev_register(struct snd_sof_dev *sdev, const char *name, u32 id, in sof_client_dev_register() argument
181 cdev->sdev = sdev; in sof_client_dev_register()
184 auxdev->dev.parent = sdev->dev; in sof_client_dev_register()
194 dev_err(sdev->dev, "failed to initialize client dev %s.%d\n", name, id); in sof_client_dev_register()
200 dev_err(sdev->dev, "failed to add client dev %s.%d\n", name, id); in sof_client_dev_register()
210 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_register()
211 list_add(&cdev->list, &sdev->ipc_client_list); in sof_client_dev_register()
212 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_register()
226 void sof_client_dev_unregister(struct snd_sof_dev *sdev, const char *name, u32 id) in sof_client_dev_unregister() argument
230 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
236 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_client_dev_unregister()
245 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
252 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_tx_message()
255 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_tx_message()
257 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_tx_message()
260 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, msg->data_size, in sof_client_ipc_tx_message()
268 int sof_suspend_clients(struct snd_sof_dev *sdev, pm_message_t state) in sof_suspend_clients() argument
273 mutex_lock(&sdev->ipc_client_mutex); in sof_suspend_clients()
275 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_suspend_clients()
285 mutex_unlock(&sdev->ipc_client_mutex); in sof_suspend_clients()
291 int sof_resume_clients(struct snd_sof_dev *sdev) in sof_resume_clients() argument
296 mutex_lock(&sdev->ipc_client_mutex); in sof_resume_clients()
298 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_resume_clients()
308 mutex_unlock(&sdev->ipc_client_mutex); in sof_resume_clients()
316 return cdev->sdev->debugfs_root; in sof_client_get_debugfs_root()
323 return cdev->sdev->dev; in sof_client_get_dma_dev()
329 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_version() local
331 return &sdev->fw_ready.version; in sof_client_get_fw_version()
337 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_max_payload_size() local
339 return sdev->ipc->max_payload_size; in sof_client_get_ipc_max_payload_size()
345 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_type() local
347 return sdev->pdata->ipc_type; in sof_client_get_ipc_type()
354 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_get() local
356 if (!try_module_get(sdev->dev->driver->owner)) in sof_client_core_module_get()
365 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_put() local
367 module_put(sdev->dev->driver->owner); in sof_client_core_module_put()
372 void sof_client_ipc_rx_dispatcher(struct snd_sof_dev *sdev, void *msg_buf) in sof_client_ipc_rx_dispatcher() argument
377 if (sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_rx_dispatcher()
381 } else if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_rx_dispatcher()
386 dev_dbg_once(sdev->dev, "Not supported IPC version: %d\n", in sof_client_ipc_rx_dispatcher()
387 sdev->pdata->ipc_type); in sof_client_ipc_rx_dispatcher()
391 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
393 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_ipc_rx_dispatcher()
398 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
405 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_ipc_rx_handler() local
411 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_register_ipc_rx_handler()
414 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_register_ipc_rx_handler()
418 dev_warn(sdev->dev, "%s: Not supported IPC version: %d\n", in sof_client_register_ipc_rx_handler()
419 __func__, sdev->pdata->ipc_type); in sof_client_register_ipc_rx_handler()
432 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
433 list_add(&event->list, &sdev->ipc_rx_handler_list); in sof_client_register_ipc_rx_handler()
434 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
443 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_ipc_rx_handler() local
446 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
448 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_unregister_ipc_rx_handler()
456 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
461 void sof_client_fw_state_dispatcher(struct snd_sof_dev *sdev) in sof_client_fw_state_dispatcher() argument
465 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
467 list_for_each_entry(event, &sdev->fw_state_handler_list, list) in sof_client_fw_state_dispatcher()
468 event->callback(event->cdev, sdev->fw_state); in sof_client_fw_state_dispatcher()
470 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
476 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_fw_state_handler() local
490 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
491 list_add(&event->list, &sdev->fw_state_handler_list); in sof_client_register_fw_state_handler()
492 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
500 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_fw_state_handler() local
503 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
505 list_for_each_entry(event, &sdev->fw_state_handler_list, list) { in sof_client_unregister_fw_state_handler()
513 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
519 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_state() local
521 return sdev->fw_state; in sof_client_get_fw_state()