Skip to content

Commit 0ac5c7d

Browse files
lumagandersson
authored andcommitted
soc: qcom: pdr: extract PDR message marshalling data
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]> Tested-by: Steev Klimaszewski <[email protected]> Tested-by: Alexey Minnekhanov <[email protected]> Tested-by: Neil Armstrong <[email protected]> # on SM8550-QRD Signed-off-by: Dmitry Baryshkov <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Bjorn Andersson <[email protected]>
1 parent 57f20d5 commit 0ac5c7d

File tree

4 files changed

+334
-296
lines changed

4 files changed

+334
-296
lines changed

drivers/soc/qcom/Kconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ config QCOM_OCMEM
7575
config QCOM_PDR_HELPERS
7676
tristate
7777
select QCOM_QMI_HELPERS
78+
select QCOM_PDR_MSG
7879
depends on NET
7980

81+
config QCOM_PDR_MSG
82+
tristate
83+
8084
config QCOM_PMIC_PDCHARGER_ULOG
8185
tristate "Qualcomm PMIC PDCharger ULOG driver"
8286
depends on RPMSG

drivers/soc/qcom/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ obj-$(CONFIG_QCOM_GSBI) += qcom_gsbi.o
88
obj-$(CONFIG_QCOM_MDT_LOADER) += mdt_loader.o
99
obj-$(CONFIG_QCOM_OCMEM) += ocmem.o
1010
obj-$(CONFIG_QCOM_PDR_HELPERS) += pdr_interface.o
11+
obj-$(CONFIG_QCOM_PDR_MSG) += qcom_pdr_msg.o
1112
obj-$(CONFIG_QCOM_PMIC_GLINK) += pmic_glink.o
1213
obj-$(CONFIG_QCOM_PMIC_GLINK) += pmic_glink_altmode.o
1314
obj-$(CONFIG_QCOM_PMIC_PDCHARGER_ULOG) += pmic_pdcharger_ulog.o

drivers/soc/qcom/pdr_internal.h

Lines changed: 10 additions & 296 deletions
Original file line numberDiff line numberDiff line change
@@ -28,83 +28,12 @@ struct servreg_location_entry {
2828
u32 instance;
2929
};
3030

31-
static const struct qmi_elem_info servreg_location_entry_ei[] = {
32-
{
33-
.data_type = QMI_STRING,
34-
.elem_len = SERVREG_NAME_LENGTH + 1,
35-
.elem_size = sizeof(char),
36-
.array_type = NO_ARRAY,
37-
.tlv_type = 0,
38-
.offset = offsetof(struct servreg_location_entry,
39-
name),
40-
},
41-
{
42-
.data_type = QMI_UNSIGNED_4_BYTE,
43-
.elem_len = 1,
44-
.elem_size = sizeof(u32),
45-
.array_type = NO_ARRAY,
46-
.tlv_type = 0,
47-
.offset = offsetof(struct servreg_location_entry,
48-
instance),
49-
},
50-
{
51-
.data_type = QMI_UNSIGNED_1_BYTE,
52-
.elem_len = 1,
53-
.elem_size = sizeof(u8),
54-
.array_type = NO_ARRAY,
55-
.tlv_type = 0,
56-
.offset = offsetof(struct servreg_location_entry,
57-
service_data_valid),
58-
},
59-
{
60-
.data_type = QMI_UNSIGNED_4_BYTE,
61-
.elem_len = 1,
62-
.elem_size = sizeof(u32),
63-
.array_type = NO_ARRAY,
64-
.tlv_type = 0,
65-
.offset = offsetof(struct servreg_location_entry,
66-
service_data),
67-
},
68-
{}
69-
};
70-
7131
struct servreg_get_domain_list_req {
7232
char service_name[SERVREG_NAME_LENGTH + 1];
7333
u8 domain_offset_valid;
7434
u32 domain_offset;
7535
};
7636

77-
static const struct qmi_elem_info servreg_get_domain_list_req_ei[] = {
78-
{
79-
.data_type = QMI_STRING,
80-
.elem_len = SERVREG_NAME_LENGTH + 1,
81-
.elem_size = sizeof(char),
82-
.array_type = NO_ARRAY,
83-
.tlv_type = 0x01,
84-
.offset = offsetof(struct servreg_get_domain_list_req,
85-
service_name),
86-
},
87-
{
88-
.data_type = QMI_OPT_FLAG,
89-
.elem_len = 1,
90-
.elem_size = sizeof(u8),
91-
.array_type = NO_ARRAY,
92-
.tlv_type = 0x10,
93-
.offset = offsetof(struct servreg_get_domain_list_req,
94-
domain_offset_valid),
95-
},
96-
{
97-
.data_type = QMI_UNSIGNED_4_BYTE,
98-
.elem_len = 1,
99-
.elem_size = sizeof(u32),
100-
.array_type = NO_ARRAY,
101-
.tlv_type = 0x10,
102-
.offset = offsetof(struct servreg_get_domain_list_req,
103-
domain_offset),
104-
},
105-
{}
106-
};
107-
10837
struct servreg_get_domain_list_resp {
10938
struct qmi_response_type_v01 resp;
11039
u8 total_domains_valid;
@@ -116,264 +45,49 @@ struct servreg_get_domain_list_resp {
11645
struct servreg_location_entry domain_list[SERVREG_DOMAIN_LIST_LENGTH];
11746
};
11847

119-
static const struct qmi_elem_info servreg_get_domain_list_resp_ei[] = {
120-
{
121-
.data_type = QMI_STRUCT,
122-
.elem_len = 1,
123-
.elem_size = sizeof(struct qmi_response_type_v01),
124-
.array_type = NO_ARRAY,
125-
.tlv_type = 0x02,
126-
.offset = offsetof(struct servreg_get_domain_list_resp,
127-
resp),
128-
.ei_array = qmi_response_type_v01_ei,
129-
},
130-
{
131-
.data_type = QMI_OPT_FLAG,
132-
.elem_len = 1,
133-
.elem_size = sizeof(u8),
134-
.array_type = NO_ARRAY,
135-
.tlv_type = 0x10,
136-
.offset = offsetof(struct servreg_get_domain_list_resp,
137-
total_domains_valid),
138-
},
139-
{
140-
.data_type = QMI_UNSIGNED_2_BYTE,
141-
.elem_len = 1,
142-
.elem_size = sizeof(u16),
143-
.array_type = NO_ARRAY,
144-
.tlv_type = 0x10,
145-
.offset = offsetof(struct servreg_get_domain_list_resp,
146-
total_domains),
147-
},
148-
{
149-
.data_type = QMI_OPT_FLAG,
150-
.elem_len = 1,
151-
.elem_size = sizeof(u8),
152-
.array_type = NO_ARRAY,
153-
.tlv_type = 0x11,
154-
.offset = offsetof(struct servreg_get_domain_list_resp,
155-
db_rev_count_valid),
156-
},
157-
{
158-
.data_type = QMI_UNSIGNED_2_BYTE,
159-
.elem_len = 1,
160-
.elem_size = sizeof(u16),
161-
.array_type = NO_ARRAY,
162-
.tlv_type = 0x11,
163-
.offset = offsetof(struct servreg_get_domain_list_resp,
164-
db_rev_count),
165-
},
166-
{
167-
.data_type = QMI_OPT_FLAG,
168-
.elem_len = 1,
169-
.elem_size = sizeof(u8),
170-
.array_type = NO_ARRAY,
171-
.tlv_type = 0x12,
172-
.offset = offsetof(struct servreg_get_domain_list_resp,
173-
domain_list_valid),
174-
},
175-
{
176-
.data_type = QMI_DATA_LEN,
177-
.elem_len = 1,
178-
.elem_size = sizeof(u8),
179-
.array_type = NO_ARRAY,
180-
.tlv_type = 0x12,
181-
.offset = offsetof(struct servreg_get_domain_list_resp,
182-
domain_list_len),
183-
},
184-
{
185-
.data_type = QMI_STRUCT,
186-
.elem_len = SERVREG_DOMAIN_LIST_LENGTH,
187-
.elem_size = sizeof(struct servreg_location_entry),
188-
.array_type = VAR_LEN_ARRAY,
189-
.tlv_type = 0x12,
190-
.offset = offsetof(struct servreg_get_domain_list_resp,
191-
domain_list),
192-
.ei_array = servreg_location_entry_ei,
193-
},
194-
{}
195-
};
196-
19748
struct servreg_register_listener_req {
19849
u8 enable;
19950
char service_path[SERVREG_NAME_LENGTH + 1];
20051
};
20152

202-
static const struct qmi_elem_info servreg_register_listener_req_ei[] = {
203-
{
204-
.data_type = QMI_UNSIGNED_1_BYTE,
205-
.elem_len = 1,
206-
.elem_size = sizeof(u8),
207-
.array_type = NO_ARRAY,
208-
.tlv_type = 0x01,
209-
.offset = offsetof(struct servreg_register_listener_req,
210-
enable),
211-
},
212-
{
213-
.data_type = QMI_STRING,
214-
.elem_len = SERVREG_NAME_LENGTH + 1,
215-
.elem_size = sizeof(char),
216-
.array_type = NO_ARRAY,
217-
.tlv_type = 0x02,
218-
.offset = offsetof(struct servreg_register_listener_req,
219-
service_path),
220-
},
221-
{}
222-
};
223-
22453
struct servreg_register_listener_resp {
22554
struct qmi_response_type_v01 resp;
22655
u8 curr_state_valid;
22756
enum servreg_service_state curr_state;
22857
};
22958

230-
static const struct qmi_elem_info servreg_register_listener_resp_ei[] = {
231-
{
232-
.data_type = QMI_STRUCT,
233-
.elem_len = 1,
234-
.elem_size = sizeof(struct qmi_response_type_v01),
235-
.array_type = NO_ARRAY,
236-
.tlv_type = 0x02,
237-
.offset = offsetof(struct servreg_register_listener_resp,
238-
resp),
239-
.ei_array = qmi_response_type_v01_ei,
240-
},
241-
{
242-
.data_type = QMI_OPT_FLAG,
243-
.elem_len = 1,
244-
.elem_size = sizeof(u8),
245-
.array_type = NO_ARRAY,
246-
.tlv_type = 0x10,
247-
.offset = offsetof(struct servreg_register_listener_resp,
248-
curr_state_valid),
249-
},
250-
{
251-
.data_type = QMI_SIGNED_4_BYTE_ENUM,
252-
.elem_len = 1,
253-
.elem_size = sizeof(enum servreg_service_state),
254-
.array_type = NO_ARRAY,
255-
.tlv_type = 0x10,
256-
.offset = offsetof(struct servreg_register_listener_resp,
257-
curr_state),
258-
},
259-
{}
260-
};
261-
26259
struct servreg_restart_pd_req {
26360
char service_path[SERVREG_NAME_LENGTH + 1];
26461
};
26562

266-
static const struct qmi_elem_info servreg_restart_pd_req_ei[] = {
267-
{
268-
.data_type = QMI_STRING,
269-
.elem_len = SERVREG_NAME_LENGTH + 1,
270-
.elem_size = sizeof(char),
271-
.array_type = NO_ARRAY,
272-
.tlv_type = 0x01,
273-
.offset = offsetof(struct servreg_restart_pd_req,
274-
service_path),
275-
},
276-
{}
277-
};
278-
27963
struct servreg_restart_pd_resp {
28064
struct qmi_response_type_v01 resp;
28165
};
28266

283-
static const struct qmi_elem_info servreg_restart_pd_resp_ei[] = {
284-
{
285-
.data_type = QMI_STRUCT,
286-
.elem_len = 1,
287-
.elem_size = sizeof(struct qmi_response_type_v01),
288-
.array_type = NO_ARRAY,
289-
.tlv_type = 0x02,
290-
.offset = offsetof(struct servreg_restart_pd_resp,
291-
resp),
292-
.ei_array = qmi_response_type_v01_ei,
293-
},
294-
{}
295-
};
296-
29767
struct servreg_state_updated_ind {
29868
enum servreg_service_state curr_state;
29969
char service_path[SERVREG_NAME_LENGTH + 1];
30070
u16 transaction_id;
30171
};
30272

303-
static const struct qmi_elem_info servreg_state_updated_ind_ei[] = {
304-
{
305-
.data_type = QMI_SIGNED_4_BYTE_ENUM,
306-
.elem_len = 1,
307-
.elem_size = sizeof(u32),
308-
.array_type = NO_ARRAY,
309-
.tlv_type = 0x01,
310-
.offset = offsetof(struct servreg_state_updated_ind,
311-
curr_state),
312-
},
313-
{
314-
.data_type = QMI_STRING,
315-
.elem_len = SERVREG_NAME_LENGTH + 1,
316-
.elem_size = sizeof(char),
317-
.array_type = NO_ARRAY,
318-
.tlv_type = 0x02,
319-
.offset = offsetof(struct servreg_state_updated_ind,
320-
service_path),
321-
},
322-
{
323-
.data_type = QMI_UNSIGNED_2_BYTE,
324-
.elem_len = 1,
325-
.elem_size = sizeof(u16),
326-
.array_type = NO_ARRAY,
327-
.tlv_type = 0x03,
328-
.offset = offsetof(struct servreg_state_updated_ind,
329-
transaction_id),
330-
},
331-
{}
332-
};
333-
33473
struct servreg_set_ack_req {
33574
char service_path[SERVREG_NAME_LENGTH + 1];
33675
u16 transaction_id;
33776
};
33877

339-
static const struct qmi_elem_info servreg_set_ack_req_ei[] = {
340-
{
341-
.data_type = QMI_STRING,
342-
.elem_len = SERVREG_NAME_LENGTH + 1,
343-
.elem_size = sizeof(char),
344-
.array_type = NO_ARRAY,
345-
.tlv_type = 0x01,
346-
.offset = offsetof(struct servreg_set_ack_req,
347-
service_path),
348-
},
349-
{
350-
.data_type = QMI_UNSIGNED_2_BYTE,
351-
.elem_len = 1,
352-
.elem_size = sizeof(u16),
353-
.array_type = NO_ARRAY,
354-
.tlv_type = 0x02,
355-
.offset = offsetof(struct servreg_set_ack_req,
356-
transaction_id),
357-
},
358-
{}
359-
};
360-
36178
struct servreg_set_ack_resp {
36279
struct qmi_response_type_v01 resp;
36380
};
36481

365-
static const struct qmi_elem_info servreg_set_ack_resp_ei[] = {
366-
{
367-
.data_type = QMI_STRUCT,
368-
.elem_len = 1,
369-
.elem_size = sizeof(struct qmi_response_type_v01),
370-
.array_type = NO_ARRAY,
371-
.tlv_type = 0x02,
372-
.offset = offsetof(struct servreg_set_ack_resp,
373-
resp),
374-
.ei_array = qmi_response_type_v01_ei,
375-
},
376-
{}
377-
};
82+
extern const struct qmi_elem_info servreg_location_entry_ei[];
83+
extern const struct qmi_elem_info servreg_get_domain_list_req_ei[];
84+
extern const struct qmi_elem_info servreg_get_domain_list_resp_ei[];
85+
extern const struct qmi_elem_info servreg_register_listener_req_ei[];
86+
extern const struct qmi_elem_info servreg_register_listener_resp_ei[];
87+
extern const struct qmi_elem_info servreg_restart_pd_req_ei[];
88+
extern const struct qmi_elem_info servreg_restart_pd_resp_ei[];
89+
extern const struct qmi_elem_info servreg_state_updated_ind_ei[];
90+
extern const struct qmi_elem_info servreg_set_ack_req_ei[];
91+
extern const struct qmi_elem_info servreg_set_ack_resp_ei[];
37892

37993
#endif

0 commit comments

Comments
 (0)