Hi Dmitry,
On Mon, Apr 22, 2024 at 5:11 AM Dmitry Baryshkov
<[email protected]> wrote:
>
> The in-kernel PD mapper is going to use same message structures as the
> QCOM_PDR_HELPERS module. Extract message marshalling data to separate
> module that can be used by both PDR helpers and by PD mapper.
>
> Reviewed-by: Bryan O'Donoghue <[email protected]>
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> drivers/soc/qcom/Kconfig | 4 +
> drivers/soc/qcom/Makefile | 1 +
> drivers/soc/qcom/pdr_internal.h | 306 ++------------------------------------
> drivers/soc/qcom/qcom_pdr_msg.c | 315
> ++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 330 insertions(+), 296 deletions(-)
<snip>
> diff --git a/drivers/soc/qcom/qcom_pdr_msg.c b/drivers/soc/qcom/qcom_pdr_msg.c
> new file mode 100644
> index 000000000000..a8867e8b1319
> --- /dev/null
> +++ b/drivers/soc/qcom/qcom_pdr_msg.c
> @@ -0,0 +1,315 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2020 The Linux Foundation. All rights reserved.
> + */
> +
> +#include <linux/soc/qcom/qmi.h>
> +
> +#include "pdr_internal.h"
> +
> +const struct qmi_elem_info servreg_location_entry_ei[] = {
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0,
> + .offset = offsetof(struct servreg_location_entry,
> + name),
> + },
> + {
> + .data_type = QMI_UNSIGNED_4_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u32),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0,
> + .offset = offsetof(struct servreg_location_entry,
> + instance),
> + },
> + {
> + .data_type = QMI_UNSIGNED_1_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0,
> + .offset = offsetof(struct servreg_location_entry,
> + service_data_valid),
> + },
> + {
> + .data_type = QMI_UNSIGNED_4_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u32),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0,
> + .offset = offsetof(struct servreg_location_entry,
> + service_data),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_location_entry_ei);
> +
> +const struct qmi_elem_info servreg_get_domain_list_req_ei[] = {
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x01,
> + .offset = offsetof(struct servreg_get_domain_list_req,
> + service_name),
> + },
> + {
> + .data_type = QMI_OPT_FLAG,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct servreg_get_domain_list_req,
> + domain_offset_valid),
> + },
> + {
> + .data_type = QMI_UNSIGNED_4_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u32),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct servreg_get_domain_list_req,
> + domain_offset),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_get_domain_list_req_ei);
> +
> +const struct qmi_elem_info servreg_get_domain_list_resp_ei[] = {
> + {
> + .data_type = QMI_STRUCT,
> + .elem_len = 1,
> + .elem_size = sizeof(struct qmi_response_type_v01),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + resp),
> + .ei_array = qmi_response_type_v01_ei,
> + },
> + {
> + .data_type = QMI_OPT_FLAG,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + total_domains_valid),
> + },
> + {
> + .data_type = QMI_UNSIGNED_2_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u16),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + total_domains),
> + },
> + {
> + .data_type = QMI_OPT_FLAG,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x11,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + db_rev_count_valid),
> + },
> + {
> + .data_type = QMI_UNSIGNED_2_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u16),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x11,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + db_rev_count),
> + },
> + {
> + .data_type = QMI_OPT_FLAG,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x12,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + domain_list_valid),
> + },
> + {
> + .data_type = QMI_DATA_LEN,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x12,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + domain_list_len),
> + },
> + {
> + .data_type = QMI_STRUCT,
> + .elem_len = SERVREG_DOMAIN_LIST_LENGTH,
> + .elem_size = sizeof(struct servreg_location_entry),
> + .array_type = VAR_LEN_ARRAY,
> + .tlv_type = 0x12,
> + .offset = offsetof(struct
> servreg_get_domain_list_resp,
> + domain_list),
> + .ei_array = servreg_location_entry_ei,
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_get_domain_list_resp_ei);
> +
> +const struct qmi_elem_info servreg_register_listener_req_ei[] = {
> + {
> + .data_type = QMI_UNSIGNED_1_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x01,
> + .offset = offsetof(struct
> servreg_register_listener_req,
> + enable),
> + },
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct
> servreg_register_listener_req,
> + service_path),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_register_listener_req_ei);
> +
> +const struct qmi_elem_info servreg_register_listener_resp_ei[] = {
> + {
> + .data_type = QMI_STRUCT,
> + .elem_len = 1,
> + .elem_size = sizeof(struct qmi_response_type_v01),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct
> servreg_register_listener_resp,
> + resp),
> + .ei_array = qmi_response_type_v01_ei,
> + },
> + {
> + .data_type = QMI_OPT_FLAG,
> + .elem_len = 1,
> + .elem_size = sizeof(u8),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct
> servreg_register_listener_resp,
> + curr_state_valid),
> + },
> + {
> + .data_type = QMI_SIGNED_4_BYTE_ENUM,
> + .elem_len = 1,
> + .elem_size = sizeof(enum servreg_service_state),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x10,
> + .offset = offsetof(struct
> servreg_register_listener_resp,
> + curr_state),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_register_listener_resp_ei);
> +
> +const struct qmi_elem_info servreg_restart_pd_req_ei[] = {
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x01,
> + .offset = offsetof(struct servreg_restart_pd_req,
> + service_path),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_restart_pd_req_ei);
> +
> +const struct qmi_elem_info servreg_restart_pd_resp_ei[] = {
> + {
> + .data_type = QMI_STRUCT,
> + .elem_len = 1,
> + .elem_size = sizeof(struct qmi_response_type_v01),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct servreg_restart_pd_resp,
> + resp),
> + .ei_array = qmi_response_type_v01_ei,
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_restart_pd_resp_ei);
> +
> +const struct qmi_elem_info servreg_state_updated_ind_ei[] = {
> + {
> + .data_type = QMI_SIGNED_4_BYTE_ENUM,
> + .elem_len = 1,
> + .elem_size = sizeof(u32),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x01,
> + .offset = offsetof(struct servreg_state_updated_ind,
> + curr_state),
> + },
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct servreg_state_updated_ind,
> + service_path),
> + },
> + {
> + .data_type = QMI_UNSIGNED_2_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u16),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x03,
> + .offset = offsetof(struct servreg_state_updated_ind,
> + transaction_id),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_state_updated_ind_ei);
> +
> +const struct qmi_elem_info servreg_set_ack_req_ei[] = {
> + {
> + .data_type = QMI_STRING,
> + .elem_len = SERVREG_NAME_LENGTH + 1,
> + .elem_size = sizeof(char),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x01,
> + .offset = offsetof(struct servreg_set_ack_req,
> + service_path),
> + },
> + {
> + .data_type = QMI_UNSIGNED_2_BYTE,
> + .elem_len = 1,
> + .elem_size = sizeof(u16),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct servreg_set_ack_req,
> + transaction_id),
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_set_ack_req_ei);
> +
> +const struct qmi_elem_info servreg_set_ack_resp_ei[] = {
> + {
> + .data_type = QMI_STRUCT,
> + .elem_len = 1,
> + .elem_size = sizeof(struct qmi_response_type_v01),
> + .array_type = NO_ARRAY,
> + .tlv_type = 0x02,
> + .offset = offsetof(struct servreg_set_ack_resp,
> + resp),
> + .ei_array = qmi_response_type_v01_ei,
> + },
> + {}
> +};
> +EXPORT_SYMBOL_GPL(servreg_set_ack_resp_ei);
>
> --
> 2.39.2
>
This is missing MODULE_LICENSE
ERROR: modpost: missing MODULE_LICENSE() in drivers/soc/qcom/qcom_pdr_msg.o