cnss_plat_ipc_qmi.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. */
  3. #ifndef _CNSS_PLAT_IPC_QMI_H
  4. #define _CNSS_PLAT_IPC_QMI_H
  5. #include "cnss_plat_ipc_service_v01.h"
  6. /* As the value of CNSS_PLAT_IPC_MAX_QMI_CLIENTS will keep changing
  7. * addition of new QMI client, it cannot be kept in IDL as change in
  8. * existing value can cause backward compatibily issue. Keep it here
  9. * and update its value with new QMI client ID added in enum in IDL.
  10. */
  11. #define CNSS_PLAT_IPC_MAX_QMI_CLIENTS CNSS_PLAT_IPC_DAEMON_QMI_CLIENT_V01
  12. /**
  13. * cnss_plat_ipc_daemon_config: Config options provided by cnss-daemon
  14. * @dms_mac_addr_supported: DMS MAC address provisioning support
  15. * @qdss_hw_trace_override: QDSS config for HW trace enable
  16. * @cal_file_available_bitmask: Calibration file available
  17. */
  18. struct cnss_plat_ipc_daemon_config {
  19. u8 dms_mac_addr_supported;
  20. u8 qdss_hw_trace_override;
  21. u32 cal_file_available_bitmask;
  22. };
  23. typedef void (*cnss_plat_ipc_connection_update)(void *cb_ctx,
  24. bool connection_status);
  25. /**
  26. * Persistent caldb file store which is a runtime FW param based feature will
  27. * fail if CONFIG_CNSS_PLAT_IPC_QMI_SVC is not enabled.
  28. **/
  29. #if IS_ENABLED(CONFIG_CNSS_PLAT_IPC_QMI_SVC)
  30. int cnss_plat_ipc_register(enum cnss_plat_ipc_qmi_client_id_v01 client_id,
  31. cnss_plat_ipc_connection_update
  32. connection_update_cb, void *cb_ctx);
  33. void cnss_plat_ipc_unregister(enum cnss_plat_ipc_qmi_client_id_v01 client_id,
  34. void *cb_ctx);
  35. int cnss_plat_ipc_qmi_file_download(enum cnss_plat_ipc_qmi_client_id_v01
  36. client_id, char *file_name, char *buf,
  37. u32 *size);
  38. int cnss_plat_ipc_qmi_file_upload(enum cnss_plat_ipc_qmi_client_id_v01
  39. client_id, char *file_name, u8 *file_buf,
  40. u32 file_size);
  41. struct cnss_plat_ipc_daemon_config *cnss_plat_ipc_qmi_daemon_config(void);
  42. #else
  43. static inline
  44. int cnss_plat_ipc_register(enum cnss_plat_ipc_qmi_client_id_v01 client_id,
  45. cnss_plat_ipc_connection_update
  46. connection_update_cb, void *cb_ctx)
  47. {
  48. return 0;
  49. }
  50. static inline
  51. void cnss_plat_ipc_unregister(enum cnss_plat_ipc_qmi_client_id_v01 client_id,
  52. void *cb_ctx)
  53. {
  54. }
  55. static inline
  56. int cnss_plat_ipc_qmi_file_download(enum cnss_plat_ipc_qmi_client_id_v01
  57. client_id, char *file_name, char *buf,
  58. u32 *size)
  59. {
  60. return -EOPNOTSUPP;
  61. }
  62. static inline
  63. int cnss_plat_ipc_qmi_file_upload(enum cnss_plat_ipc_qmi_client_id_v01
  64. client_id, char *file_name, u8 *file_buf,
  65. u32 file_size)
  66. {
  67. return -EOPNOTSUPP;
  68. }
  69. static inline
  70. struct cnss_plat_ipc_daemon_config *cnss_plat_ipc_qmi_daemon_config(void)
  71. {
  72. return NULL;
  73. }
  74. #endif
  75. #endif