Lines Matching refs:sdev

55 	struct snd_sof_dev *sdev;  member
90 static int sof_register_ipc_flood_test(struct snd_sof_dev *sdev) in sof_register_ipc_flood_test() argument
95 if (sdev->pdata->ipc_type != SOF_IPC_TYPE_3) in sof_register_ipc_flood_test()
99 ret = sof_client_dev_register(sdev, "ipc_flood", i, NULL, 0); in sof_register_ipc_flood_test()
106 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_register_ipc_flood_test()
112 static void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) in sof_unregister_ipc_flood_test() argument
117 sof_client_dev_unregister(sdev, "ipc_flood", i); in sof_unregister_ipc_flood_test()
120 static inline int sof_register_ipc_flood_test(struct snd_sof_dev *sdev) in sof_register_ipc_flood_test() argument
125 static inline void sof_unregister_ipc_flood_test(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_flood_test() argument
129 static int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
131 return sof_client_dev_register(sdev, "msg_injector", 0, NULL, 0); in sof_register_ipc_msg_injector()
134 static void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_msg_injector() argument
136 sof_client_dev_unregister(sdev, "msg_injector", 0); in sof_unregister_ipc_msg_injector()
139 static inline int sof_register_ipc_msg_injector(struct snd_sof_dev *sdev) in sof_register_ipc_msg_injector() argument
144 static inline void sof_unregister_ipc_msg_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_msg_injector() argument
148 static int sof_register_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_register_ipc_kernel_injector() argument
151 if (sdev->pdata->ipc_type != SOF_IPC_TYPE_3) in sof_register_ipc_kernel_injector()
154 return sof_client_dev_register(sdev, "kernel_injector", 0, NULL, 0); in sof_register_ipc_kernel_injector()
157 static void sof_unregister_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_unregister_ipc_kernel_injector() argument
159 sof_client_dev_unregister(sdev, "kernel_injector", 0); in sof_unregister_ipc_kernel_injector()
162 static inline int sof_register_ipc_kernel_injector(struct snd_sof_dev *sdev) in sof_register_ipc_kernel_injector() argument
167 static inline void sof_unregister_ipc_kernel_injector(struct snd_sof_dev *sdev) {} in sof_unregister_ipc_kernel_injector() argument
170 int sof_register_clients(struct snd_sof_dev *sdev) in sof_register_clients() argument
174 if (sdev->dspless_mode_selected) in sof_register_clients()
178 ret = sof_register_ipc_flood_test(sdev); in sof_register_clients()
180 dev_err(sdev->dev, "IPC flood test client registration failed\n"); in sof_register_clients()
184 ret = sof_register_ipc_msg_injector(sdev); in sof_register_clients()
186 dev_err(sdev->dev, "IPC message injector client registration failed\n"); in sof_register_clients()
190 ret = sof_register_ipc_kernel_injector(sdev); in sof_register_clients()
192 dev_err(sdev->dev, "IPC kernel injector client registration failed\n"); in sof_register_clients()
198 if (sof_ops(sdev) && sof_ops(sdev)->register_ipc_clients) in sof_register_clients()
199 ret = sof_ops(sdev)->register_ipc_clients(sdev); in sof_register_clients()
204 sof_unregister_ipc_kernel_injector(sdev); in sof_register_clients()
207 sof_unregister_ipc_msg_injector(sdev); in sof_register_clients()
210 sof_unregister_ipc_flood_test(sdev); in sof_register_clients()
215 void sof_unregister_clients(struct snd_sof_dev *sdev) in sof_unregister_clients() argument
217 if (sof_ops(sdev) && sof_ops(sdev)->unregister_ipc_clients) in sof_unregister_clients()
218 sof_ops(sdev)->unregister_ipc_clients(sdev); in sof_unregister_clients()
220 sof_unregister_ipc_kernel_injector(sdev); in sof_unregister_clients()
221 sof_unregister_ipc_msg_injector(sdev); in sof_unregister_clients()
222 sof_unregister_ipc_flood_test(sdev); in sof_unregister_clients()
225 int sof_client_dev_register(struct snd_sof_dev *sdev, const char *name, u32 id, in sof_client_dev_register() argument
239 centry->sdev = sdev; in sof_client_dev_register()
242 auxdev->dev.parent = sdev->dev; in sof_client_dev_register()
252 dev_err(sdev->dev, "failed to initialize client dev %s.%d\n", name, id); in sof_client_dev_register()
258 dev_err(sdev->dev, "failed to add client dev %s.%d\n", name, id); in sof_client_dev_register()
268 scoped_guard(mutex, &sdev->ipc_client_mutex) in sof_client_dev_register()
269 list_add(&centry->list, &sdev->ipc_client_list); in sof_client_dev_register()
283 void sof_client_dev_unregister(struct snd_sof_dev *sdev, const char *name, u32 id) in sof_client_dev_unregister() argument
287 guard(mutex)(&sdev->ipc_client_mutex); in sof_client_dev_unregister()
293 list_for_each_entry(centry, &sdev->ipc_client_list, list) { in sof_client_dev_unregister()
309 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_ipc_tx_message() local
311 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_client_ipc_tx_message()
314 return sof_ipc_tx_message(sdev->ipc, ipc_msg, hdr->size, in sof_client_ipc_tx_message()
316 } else if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_client_ipc_tx_message()
319 return sof_ipc_tx_message(sdev->ipc, ipc_msg, msg->data_size, in sof_client_ipc_tx_message()
329 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_ipc_rx_message() local
332 sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_client_ipc_rx_message()
336 dev_err(sdev->dev, "The received message size is invalid\n"); in sof_client_ipc_rx_message()
340 sof_ipc3_do_rx_work(sdev, ipc_msg, msg_buf); in sof_client_ipc_rx_message()
351 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_ipc_set_get_data() local
353 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_client_ipc_set_get_data()
356 return sof_ipc_set_get_data(sdev->ipc, ipc_msg, hdr->size, set); in sof_client_ipc_set_get_data()
357 } else if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_client_ipc_set_get_data()
360 return sof_ipc_set_get_data(sdev->ipc, ipc_msg, msg->data_size, in sof_client_ipc_set_get_data()
371 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(c); in sof_client_ipc4_find_module() local
373 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) in sof_client_ipc4_find_module()
374 return sof_ipc4_find_module_by_uuid(sdev, uuid); in sof_client_ipc4_find_module()
375 dev_err(sdev->dev, "Only supported with IPC4\n"); in sof_client_ipc4_find_module()
384 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_ipc4_find_swidget_by_id() local
386 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) in sof_client_ipc4_find_swidget_by_id()
387 return sof_ipc4_find_swidget_by_ids(sdev, module_id, instance_id); in sof_client_ipc4_find_swidget_by_id()
388 dev_err(sdev->dev, "Only supported with IPC4\n"); in sof_client_ipc4_find_swidget_by_id()
395 int sof_suspend_clients(struct snd_sof_dev *sdev, pm_message_t state) in sof_suspend_clients() argument
400 guard(mutex)(&sdev->ipc_client_mutex); in sof_suspend_clients()
402 list_for_each_entry(centry, &sdev->ipc_client_list, list) { in sof_suspend_clients()
418 int sof_resume_clients(struct snd_sof_dev *sdev) in sof_resume_clients() argument
423 guard(mutex)(&sdev->ipc_client_mutex); in sof_resume_clients()
425 list_for_each_entry(centry, &sdev->ipc_client_list, list) { in sof_resume_clients()
443 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_debugfs_root() local
445 return sdev->debugfs_root; in sof_client_get_debugfs_root()
452 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_dma_dev() local
454 return sdev->dev; in sof_client_get_dma_dev()
460 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_version() local
462 return &sdev->fw_ready.version; in sof_client_get_fw_version()
468 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_max_payload_size() local
470 return sdev->ipc->max_payload_size; in sof_client_get_ipc_max_payload_size()
476 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_ipc_type() local
478 return sdev->pdata->ipc_type; in sof_client_get_ipc_type()
491 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_get() local
493 if (!try_module_get(sdev->dev->driver->owner)) in sof_client_core_module_get()
502 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_core_module_put() local
504 module_put(sdev->dev->driver->owner); in sof_client_core_module_put()
509 void sof_client_ipc_rx_dispatcher(struct snd_sof_dev *sdev, void *msg_buf) in sof_client_ipc_rx_dispatcher() argument
514 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_client_ipc_rx_dispatcher()
518 } else if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_client_ipc_rx_dispatcher()
523 dev_dbg_once(sdev->dev, "Not supported IPC version: %d\n", in sof_client_ipc_rx_dispatcher()
524 sdev->pdata->ipc_type); in sof_client_ipc_rx_dispatcher()
528 guard(mutex)(&sdev->client_event_handler_mutex); in sof_client_ipc_rx_dispatcher()
529 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_ipc_rx_dispatcher()
539 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_ipc_rx_handler() local
545 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_client_register_ipc_rx_handler()
548 } else if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_client_register_ipc_rx_handler()
552 dev_warn(sdev->dev, "%s: Not supported IPC version: %d\n", in sof_client_register_ipc_rx_handler()
553 __func__, sdev->pdata->ipc_type); in sof_client_register_ipc_rx_handler()
566 guard(mutex)(&sdev->client_event_handler_mutex); in sof_client_register_ipc_rx_handler()
567 list_add(&event->list, &sdev->ipc_rx_handler_list); in sof_client_register_ipc_rx_handler()
576 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_ipc_rx_handler() local
579 guard(mutex)(&sdev->ipc_client_mutex); in sof_client_unregister_ipc_rx_handler()
581 list_for_each_entry(event, &sdev->ipc_rx_handler_list, list) { in sof_client_unregister_ipc_rx_handler()
592 void sof_client_fw_state_dispatcher(struct snd_sof_dev *sdev) in sof_client_fw_state_dispatcher() argument
596 guard(mutex)(&sdev->ipc_client_mutex); in sof_client_fw_state_dispatcher()
598 list_for_each_entry(event, &sdev->fw_state_handler_list, list) in sof_client_fw_state_dispatcher()
599 event->callback(event->cdev, sdev->fw_state); in sof_client_fw_state_dispatcher()
605 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_register_fw_state_handler() local
619 guard(mutex)(&sdev->client_event_handler_mutex); in sof_client_register_fw_state_handler()
620 list_add(&event->list, &sdev->fw_state_handler_list); in sof_client_register_fw_state_handler()
628 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_unregister_fw_state_handler() local
631 guard(mutex)(&sdev->ipc_client_mutex); in sof_client_unregister_fw_state_handler()
633 list_for_each_entry(event, &sdev->fw_state_handler_list, list) { in sof_client_unregister_fw_state_handler()
645 struct snd_sof_dev *sdev = sof_client_dev_to_sof_dev(cdev); in sof_client_get_fw_state() local
647 return sdev->fw_state; in sof_client_get_fw_state()
655 return centry->sdev; in sof_client_dev_to_sof_dev()