cnss_plat_ipc_qmi.h 2.7 KB

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