Lines Matching refs:sdev

73 static int sof_register_ipc_flood_test(struct snd_sof_dev *sdev)  in sof_register_ipc_flood_test()  argument
78 if (sdev->pdata->ipc_type != SOF_IPC) in sof_register_ipc_flood_test()
82 ret = sof_client_dev_register(sdev, "ipc_flood", i, NULL, 0); in sof_register_ipc_flood_test()
89 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_register_ipc_flood_test()
95 static void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) in sof_unregister_ipc_flood_test() argument
100 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_unregister_ipc_flood_test()
103 static inline int sof_register_ipc_flood_test(struct snd_sof_dev *sdev) in sof_register_ipc_flood_test() argument
108 static inline void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_flood_test() argument
112 static int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
114 return sof_client_dev_register(sdev, "msg_injector", 0, NULL, 0); in sof_register_ipc_msg_injector()
117 static void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_msg_injector() argument
119 sof_client_dev_unregister(sdev, "msg_injector", 0); in sof_unregister_ipc_msg_injector()
122 static inline int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
127 static inline void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_msg_injector() argument
131 static int sof_register_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_register_ipc_kernel_injector() argument
134 if (sdev->pdata->ipc_type != SOF_IPC) in sof_register_ipc_kernel_injector()
137 return sof_client_dev_register(sdev, "kernel_injector", 0, NULL, 0); in sof_register_ipc_kernel_injector()
140 static void sof_unregister_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_kernel_injector() argument
142 sof_client_dev_unregister(sdev, "kernel_injector", 0); in sof_unregister_ipc_kernel_injector()
145 static inline int sof_register_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_register_ipc_kernel_injector() argument
150 static inline void sof_unregister_ipc_kernel_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_kernel_injector() argument
153 int sof_register_clients(struct snd_sof_dev *sdev) in sof_register_clients() argument
157 if (sdev->dspless_mode_selected) in sof_register_clients()
161 ret = sof_register_ipc_flood_test(sdev); in sof_register_clients()
163 dev_err(sdev->dev, "IPC flood test client registration failed\n"); in sof_register_clients()
167 ret = sof_register_ipc_msg_injector(sdev); in sof_register_clients()
169 dev_err(sdev->dev, "IPC message injector client registration failed\n"); in sof_register_clients()
173 ret = sof_register_ipc_kernel_injector(sdev); in sof_register_clients()
175 dev_err(sdev->dev, "IPC kernel injector client registration failed\n"); in sof_register_clients()
181 if (sof_ops(sdev) && sof_ops(sdev)->register_ipc_clients) in sof_register_clients()
182 ret = sof_ops(sdev)->register_ipc_clients(sdev); in sof_register_clients()
187 sof_unregister_ipc_kernel_injector(sdev); in sof_register_clients()
190 sof_unregister_ipc_msg_injector(sdev); in sof_register_clients()
193 sof_unregister_ipc_flood_test(sdev); in sof_register_clients()
198 void sof_unregister_clients(struct snd_sof_dev *sdev) in sof_unregister_clients() argument
200 if (sof_ops(sdev) && sof_ops(sdev)->unregister_ipc_clients) in sof_unregister_clients()
201 sof_ops(sdev)->unregister_ipc_clients(sdev); in sof_unregister_clients()
203 sof_unregister_ipc_kernel_injector(sdev); in sof_unregister_clients()
204 sof_unregister_ipc_msg_injector(sdev); in sof_unregister_clients()
205 sof_unregister_ipc_flood_test(sdev); in sof_unregister_clients()
208 int sof_client_dev_register(struct snd_sof_dev *sdev, const char *name, u32 id, in sof_client_dev_register() argument
219 cdev->sdev = sdev; in sof_client_dev_register()
222 auxdev->dev.parent = sdev->dev; in sof_client_dev_register()
232 dev_err(sdev->dev, "failed to initialize client dev %s.%d\n", name, id); in sof_client_dev_register()
238 dev_err(sdev->dev, "failed to add client dev %s.%d\n", name, id); in sof_client_dev_register()
248 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_register()
249 list_add(&cdev->list, &sdev->ipc_client_list); in sof_client_dev_register()
250 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_register()
264 void sof_client_dev_unregister(struct snd_sof_dev *sdev, const char *name, u32 id) in sof_client_dev_unregister() argument
268 mutex_lock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
274 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_client_dev_unregister()
283 mutex_unlock(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
290 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_tx_message()
293 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_tx_message()
295 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_tx_message()
298 return sof_ipc_tx_message(cdev->sdev->ipc, ipc_msg, msg->data_size, in sof_client_ipc_tx_message()
308 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_rx_message()
312 dev_err(cdev->sdev->dev, "The received message size is invalid\n"); in sof_client_ipc_rx_message()
316 sof_ipc3_do_rx_work(cdev->sdev, ipc_msg, msg_buf); in sof_client_ipc_rx_message()
327 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_set_get_data()
330 return sof_ipc_set_get_data(cdev->sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_set_get_data()
332 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_set_get_data()
335 return sof_ipc_set_get_data(cdev->sdev->ipc, ipc_msg, in sof_client_ipc_set_get_data()
346 struct snd_sof_dev *sdev = c->sdev; in sof_client_ipc4_find_module() local
348 if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) in sof_client_ipc4_find_module()
349 return sof_ipc4_find_module_by_uuid(sdev, uuid); in sof_client_ipc4_find_module()
350 dev_err(sdev->dev, "Only supported with IPC4\n"); in sof_client_ipc4_find_module()
357 int sof_suspend_clients(struct snd_sof_dev *sdev, pm_message_t state) in sof_suspend_clients() argument
362 mutex_lock(&sdev->ipc_client_mutex); in sof_suspend_clients()
364 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_suspend_clients()
374 mutex_unlock(&sdev->ipc_client_mutex); in sof_suspend_clients()
380 int sof_resume_clients(struct snd_sof_dev *sdev) in sof_resume_clients() argument
385 mutex_lock(&sdev->ipc_client_mutex); in sof_resume_clients()
387 list_for_each_entry(cdev, &sdev->ipc_client_list, list) { in sof_resume_clients()
397 mutex_unlock(&sdev->ipc_client_mutex); in sof_resume_clients()
405 return cdev->sdev->debugfs_root; in sof_client_get_debugfs_root()
412 return cdev->sdev->dev; in sof_client_get_dma_dev()
418 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_version() local
420 return &sdev->fw_ready.version; in sof_client_get_fw_version()
426 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_max_payload_size() local
428 return sdev->ipc->max_payload_size; in sof_client_get_ipc_max_payload_size()
434 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_type() local
436 return sdev->pdata->ipc_type; in sof_client_get_ipc_type()
443 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_get() local
445 if (!try_module_get(sdev->dev->driver->owner)) in sof_client_core_module_get()
454 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_put() local
456 module_put(sdev->dev->driver->owner); in sof_client_core_module_put()
461 void sof_client_ipc_rx_dispatcher(struct snd_sof_dev *sdev, void *msg_buf) in sof_client_ipc_rx_dispatcher() argument
466 if (sdev->pdata->ipc_type == SOF_IPC) { in sof_client_ipc_rx_dispatcher()
470 } else if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_ipc_rx_dispatcher()
475 dev_dbg_once(sdev->dev, "Not supported IPC version: %d\n", in sof_client_ipc_rx_dispatcher()
476 sdev->pdata->ipc_type); in sof_client_ipc_rx_dispatcher()
480 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
482 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_ipc_rx_dispatcher()
487 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
494 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_ipc_rx_handler() local
500 if (cdev->sdev->pdata->ipc_type == SOF_IPC) { in sof_client_register_ipc_rx_handler()
503 } else if (cdev->sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_client_register_ipc_rx_handler()
507 dev_warn(sdev->dev, "%s: Not supported IPC version: %d\n", in sof_client_register_ipc_rx_handler()
508 __func__, sdev->pdata->ipc_type); in sof_client_register_ipc_rx_handler()
521 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
522 list_add(&event->list, &sdev->ipc_rx_handler_list); in sof_client_register_ipc_rx_handler()
523 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
532 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_ipc_rx_handler() local
535 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
537 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_unregister_ipc_rx_handler()
545 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_ipc_rx_handler()
550 void sof_client_fw_state_dispatcher(struct snd_sof_dev *sdev) in sof_client_fw_state_dispatcher() argument
554 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
556 list_for_each_entry(event, &sdev->fw_state_handler_list, list) in sof_client_fw_state_dispatcher()
557 event->callback(event->cdev, sdev->fw_state); in sof_client_fw_state_dispatcher()
559 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_fw_state_dispatcher()
565 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_fw_state_handler() local
579 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
580 list_add(&event->list, &sdev->fw_state_handler_list); in sof_client_register_fw_state_handler()
581 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
589 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_fw_state_handler() local
592 mutex_lock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
594 list_for_each_entry(event, &sdev->fw_state_handler_list, list) { in sof_client_unregister_fw_state_handler()
602 mutex_unlock(&sdev->client_event_handler_mutex); in sof_client_unregister_fw_state_handler()
608 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_state() local
610 return sdev->fw_state; in sof_client_get_fw_state()