/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright (c) 2018, The Linux Foundation. All rights reserved. * Copyright (C) 2018-2024 Linaro Ltd. */ #ifndef _IPA_QMI_MSG_H_ #define _IPA_QMI_MSG_H_ /* === Only "ipa_qmi" and "ipa_qmi_msg.c" should include this file === */ #include <linux/types.h> #include <linux/soc/qcom/qmi.h> /* Request/response/indication QMI message ids used for IPA. Receiving * end issues a response for requests; indications require no response. */ #define IPA_QMI_INDICATION_REGISTER … #define IPA_QMI_INIT_DRIVER … #define IPA_QMI_INIT_COMPLETE … #define IPA_QMI_DRIVER_INIT_COMPLETE … /* The maximum size required for message types. These sizes include * the message data, along with type (1 byte) and length (2 byte) * information for each field. The qmi_send_*() interfaces require * the message size to be provided. */ #define IPA_QMI_INDICATION_REGISTER_REQ_SZ … #define IPA_QMI_INDICATION_REGISTER_RSP_SZ … #define IPA_QMI_INIT_DRIVER_REQ_SZ … #define IPA_QMI_INIT_DRIVER_RSP_SZ … #define IPA_QMI_INIT_COMPLETE_IND_SZ … #define IPA_QMI_DRIVER_INIT_COMPLETE_REQ_SZ … #define IPA_QMI_DRIVER_INIT_COMPLETE_RSP_SZ … /* Maximum size of messages we expect the AP to receive (max of above) */ #define IPA_QMI_SERVER_MAX_RCV_SZ … #define IPA_QMI_CLIENT_MAX_RCV_SZ … /* Request message for the IPA_QMI_INDICATION_REGISTER request */ struct ipa_indication_register_req { … }; /* The response to a IPA_QMI_INDICATION_REGISTER request consists only of * a standard QMI response. */ struct ipa_indication_register_rsp { … }; /* Request message for the IPA_QMI_DRIVER_INIT_COMPLETE request */ struct ipa_driver_init_complete_req { … }; /* The response to a IPA_QMI_DRIVER_INIT_COMPLETE request consists only * of a standard QMI response. */ struct ipa_driver_init_complete_rsp { … }; /* The message for the IPA_QMI_INIT_COMPLETE_IND indication consists * only of a standard QMI response. */ struct ipa_init_complete_ind { … }; /* The AP tells the modem its platform type. We assume Android. */ enum ipa_platform_type { … }; /* This defines the start and end offset of a range of memory. The start * value is a byte offset relative to the start of IPA shared memory. The * end value is the last addressable unit *within* the range. Typically * the end value is in units of bytes, however it can also be a maximum * array index value. */ struct ipa_mem_bounds { … }; /* This defines the location and size of an array. The start value * is an offset relative to the start of IPA shared memory. The * size of the array is implied by the number of entries (the entry * size is assumed to be known). */ struct ipa_mem_array { … }; /* This defines the location and size of a range of memory. The * start is an offset relative to the start of IPA shared memory. * This differs from the ipa_mem_bounds structure in that the size * (in bytes) of the memory region is specified rather than the * offset of its last byte. */ struct ipa_mem_range { … }; /* The message for the IPA_QMI_INIT_DRIVER request contains information * from the AP that affects modem initialization. */ struct ipa_init_modem_driver_req { … }; /* The response to a IPA_QMI_INIT_DRIVER request begins with a standard * QMI response, but contains other information as well. Currently we * simply wait for the INIT_DRIVER transaction to complete and * ignore any other data that might be returned. */ struct ipa_init_modem_driver_rsp { … }; /* Message structure definitions defined in "ipa_qmi_msg.c" */ extern const struct qmi_elem_info ipa_indication_register_req_ei[]; extern const struct qmi_elem_info ipa_indication_register_rsp_ei[]; extern const struct qmi_elem_info ipa_driver_init_complete_req_ei[]; extern const struct qmi_elem_info ipa_driver_init_complete_rsp_ei[]; extern const struct qmi_elem_info ipa_init_complete_ind_ei[]; extern const struct qmi_elem_info ipa_mem_bounds_ei[]; extern const struct qmi_elem_info ipa_mem_array_ei[]; extern const struct qmi_elem_info ipa_mem_range_ei[]; extern const struct qmi_elem_info ipa_init_modem_driver_req_ei[]; extern const struct qmi_elem_info ipa_init_modem_driver_rsp_ei[]; #endif /* !_IPA_QMI_MSG_H_ */