mmrm_vm_fe.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #ifndef __MMRM_VM_FE_H__
  6. #define __MMRM_VM_FE_H__
  7. #include <mmrm_vm_msgq.h>
  8. #include <mmrm_vm_interface.h>
  9. struct mmrm_vm_fe_clk_src_info {
  10. struct mmrm_clk_client_desc client_desc;
  11. int flags;
  12. };
  13. struct mmrm_vm_fe_clk_src_set {
  14. struct mmrm_vm_fe_clk_src_info *clk_src_tbl;
  15. u32 count;
  16. };
  17. struct mmrm_vm_fe_priv {
  18. struct device *dev;
  19. struct mmrm_client *client_tbl;
  20. struct list_head mmrm_work_list;
  21. struct mutex work_list_lock;
  22. struct mmrm_vm_fe_clk_src_set clk_src_set;
  23. struct mutex msg_send_lock;
  24. int seq_no;
  25. };
  26. /*
  27. * mmrm_vm_fe_recv_cb -- FE message receiving thread call this function
  28. * for transfer receiving packet to FE
  29. * @mmrm_vm: specific device driver info
  30. * @data: message pointer
  31. * @size: message size
  32. */
  33. void mmrm_vm_fe_recv_cb(struct mmrm_vm_driver_data *mmrm_vm, void *data, size_t size);
  34. /*
  35. * mmrm_vm_fe_request_send -- FE send mmrm request message
  36. * @mmrm_vm: device data, includes message handle
  37. * @msg_pkt: request message pointer
  38. * @msg_size: message size
  39. */
  40. int mmrm_vm_fe_request_send(struct mmrm_vm_driver_data *mmrm_vm,
  41. struct mmrm_vm_request_msg_pkt *msg_pkt, size_t msg_size);
  42. /*
  43. * get_client_id_2_handle -- get handle from client ID
  44. * @client_id: client ID
  45. */
  46. struct mmrm_client *mmrm_vm_fe_get_client(u32 client_id);
  47. /*
  48. * load_clk_resource_info -- get clk resource info from DT
  49. * @drv_priv: device data
  50. */
  51. int mmrm_vm_fe_load_clk_rsrc(struct mmrm_vm_driver_data *drv_priv);
  52. /*
  53. * mmrm_vm_fe_recv -- process received response info
  54. * @mmrm_vm: device data
  55. * @data: received response info buffer
  56. * @size: message size
  57. */
  58. void mmrm_vm_fe_recv(struct mmrm_vm_driver_data *mmrm_vm, void *data, size_t size);
  59. #endif /* __MMRM_VM_FE_H__ */