xref: /linux/drivers/net/wireless/ath/ath12k/wifi7/mhi.c (revision 505d195b0f96fd613a51b13dde37aa5ad301eb32)
1a7202704SKiran Venkatappa // SPDX-License-Identifier: BSD-3-Clause-Clear
2a7202704SKiran Venkatappa /*
3a7202704SKiran Venkatappa  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
4a7202704SKiran Venkatappa  * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
5a7202704SKiran Venkatappa  */
6a7202704SKiran Venkatappa 
7a7202704SKiran Venkatappa #include "../mhi.h"
8a7202704SKiran Venkatappa #include "mhi.h"
9a7202704SKiran Venkatappa 
10*bce3b73dSKiran Venkatappa static const struct mhi_channel_config ath12k_wifi7_mhi_channels_qcn9274[] = {
11a7202704SKiran Venkatappa 	{
12a7202704SKiran Venkatappa 		.num = 20,
13a7202704SKiran Venkatappa 		.name = "IPCR",
14a7202704SKiran Venkatappa 		.num_elements = 32,
15a7202704SKiran Venkatappa 		.event_ring = 1,
16a7202704SKiran Venkatappa 		.dir = DMA_TO_DEVICE,
17a7202704SKiran Venkatappa 		.ee_mask = 0x4,
18a7202704SKiran Venkatappa 		.pollcfg = 0,
19a7202704SKiran Venkatappa 		.doorbell = MHI_DB_BRST_DISABLE,
20a7202704SKiran Venkatappa 		.lpm_notify = false,
21a7202704SKiran Venkatappa 		.offload_channel = false,
22a7202704SKiran Venkatappa 		.doorbell_mode_switch = false,
23a7202704SKiran Venkatappa 	},
24a7202704SKiran Venkatappa 	{
25a7202704SKiran Venkatappa 		.num = 21,
26a7202704SKiran Venkatappa 		.name = "IPCR",
27a7202704SKiran Venkatappa 		.num_elements = 32,
28a7202704SKiran Venkatappa 		.event_ring = 1,
29a7202704SKiran Venkatappa 		.dir = DMA_FROM_DEVICE,
30a7202704SKiran Venkatappa 		.ee_mask = 0x4,
31a7202704SKiran Venkatappa 		.pollcfg = 0,
32a7202704SKiran Venkatappa 		.doorbell = MHI_DB_BRST_DISABLE,
33a7202704SKiran Venkatappa 		.lpm_notify = false,
34a7202704SKiran Venkatappa 		.offload_channel = false,
35a7202704SKiran Venkatappa 		.doorbell_mode_switch = false,
36a7202704SKiran Venkatappa 	},
37a7202704SKiran Venkatappa };
38a7202704SKiran Venkatappa 
39*bce3b73dSKiran Venkatappa static struct mhi_event_config ath12k_wifi7_mhi_events_qcn9274[] = {
40a7202704SKiran Venkatappa 	{
41a7202704SKiran Venkatappa 		.num_elements = 32,
42a7202704SKiran Venkatappa 		.irq_moderation_ms = 0,
43a7202704SKiran Venkatappa 		.irq = 1,
44a7202704SKiran Venkatappa 		.data_type = MHI_ER_CTRL,
45a7202704SKiran Venkatappa 		.mode = MHI_DB_BRST_DISABLE,
46a7202704SKiran Venkatappa 		.hardware_event = false,
47a7202704SKiran Venkatappa 		.client_managed = false,
48a7202704SKiran Venkatappa 		.offload_channel = false,
49a7202704SKiran Venkatappa 	},
50a7202704SKiran Venkatappa 	{
51a7202704SKiran Venkatappa 		.num_elements = 256,
52a7202704SKiran Venkatappa 		.irq_moderation_ms = 1,
53a7202704SKiran Venkatappa 		.irq = 2,
54a7202704SKiran Venkatappa 		.mode = MHI_DB_BRST_DISABLE,
55a7202704SKiran Venkatappa 		.priority = 1,
56a7202704SKiran Venkatappa 		.hardware_event = false,
57a7202704SKiran Venkatappa 		.client_managed = false,
58a7202704SKiran Venkatappa 		.offload_channel = false,
59a7202704SKiran Venkatappa 	},
60a7202704SKiran Venkatappa };
61a7202704SKiran Venkatappa 
62*bce3b73dSKiran Venkatappa const struct mhi_controller_config ath12k_wifi7_mhi_config_qcn9274 = {
63a7202704SKiran Venkatappa 	.max_channels = 30,
64a7202704SKiran Venkatappa 	.timeout_ms = 10000,
65a7202704SKiran Venkatappa 	.use_bounce_buf = false,
66a7202704SKiran Venkatappa 	.buf_len = 0,
67*bce3b73dSKiran Venkatappa 	.num_channels = ARRAY_SIZE(ath12k_wifi7_mhi_channels_qcn9274),
68*bce3b73dSKiran Venkatappa 	.ch_cfg = ath12k_wifi7_mhi_channels_qcn9274,
69*bce3b73dSKiran Venkatappa 	.num_events = ARRAY_SIZE(ath12k_wifi7_mhi_events_qcn9274),
70*bce3b73dSKiran Venkatappa 	.event_cfg = ath12k_wifi7_mhi_events_qcn9274,
71a7202704SKiran Venkatappa };
72a7202704SKiran Venkatappa 
73*bce3b73dSKiran Venkatappa static const struct mhi_channel_config ath12k_wifi7_mhi_channels_wcn7850[] = {
74a7202704SKiran Venkatappa 	{
75a7202704SKiran Venkatappa 		.num = 20,
76a7202704SKiran Venkatappa 		.name = "IPCR",
77a7202704SKiran Venkatappa 		.num_elements = 64,
78a7202704SKiran Venkatappa 		.event_ring = 1,
79a7202704SKiran Venkatappa 		.dir = DMA_TO_DEVICE,
80a7202704SKiran Venkatappa 		.ee_mask = 0x4,
81a7202704SKiran Venkatappa 		.pollcfg = 0,
82a7202704SKiran Venkatappa 		.doorbell = MHI_DB_BRST_DISABLE,
83a7202704SKiran Venkatappa 		.lpm_notify = false,
84a7202704SKiran Venkatappa 		.offload_channel = false,
85a7202704SKiran Venkatappa 		.doorbell_mode_switch = false,
86a7202704SKiran Venkatappa 	},
87a7202704SKiran Venkatappa 	{
88a7202704SKiran Venkatappa 		.num = 21,
89a7202704SKiran Venkatappa 		.name = "IPCR",
90a7202704SKiran Venkatappa 		.num_elements = 64,
91a7202704SKiran Venkatappa 		.event_ring = 1,
92a7202704SKiran Venkatappa 		.dir = DMA_FROM_DEVICE,
93a7202704SKiran Venkatappa 		.ee_mask = 0x4,
94a7202704SKiran Venkatappa 		.pollcfg = 0,
95a7202704SKiran Venkatappa 		.doorbell = MHI_DB_BRST_DISABLE,
96a7202704SKiran Venkatappa 		.lpm_notify = false,
97a7202704SKiran Venkatappa 		.offload_channel = false,
98a7202704SKiran Venkatappa 		.doorbell_mode_switch = false,
99a7202704SKiran Venkatappa 	},
100a7202704SKiran Venkatappa };
101a7202704SKiran Venkatappa 
102*bce3b73dSKiran Venkatappa static struct mhi_event_config ath12k_wifi7_mhi_events_wcn7850[] = {
103a7202704SKiran Venkatappa 	{
104a7202704SKiran Venkatappa 		.num_elements = 32,
105a7202704SKiran Venkatappa 		.irq_moderation_ms = 0,
106a7202704SKiran Venkatappa 		.irq = 1,
107a7202704SKiran Venkatappa 		.mode = MHI_DB_BRST_DISABLE,
108a7202704SKiran Venkatappa 		.data_type = MHI_ER_CTRL,
109a7202704SKiran Venkatappa 		.hardware_event = false,
110a7202704SKiran Venkatappa 		.client_managed = false,
111a7202704SKiran Venkatappa 		.offload_channel = false,
112a7202704SKiran Venkatappa 	},
113a7202704SKiran Venkatappa 	{
114a7202704SKiran Venkatappa 		.num_elements = 256,
115a7202704SKiran Venkatappa 		.irq_moderation_ms = 1,
116a7202704SKiran Venkatappa 		.irq = 2,
117a7202704SKiran Venkatappa 		.mode = MHI_DB_BRST_DISABLE,
118a7202704SKiran Venkatappa 		.priority = 1,
119a7202704SKiran Venkatappa 		.hardware_event = false,
120a7202704SKiran Venkatappa 		.client_managed = false,
121a7202704SKiran Venkatappa 		.offload_channel = false,
122a7202704SKiran Venkatappa 	},
123a7202704SKiran Venkatappa };
124a7202704SKiran Venkatappa 
125*bce3b73dSKiran Venkatappa const struct mhi_controller_config ath12k_wifi7_mhi_config_wcn7850 = {
126a7202704SKiran Venkatappa 	.max_channels = 128,
127a7202704SKiran Venkatappa 	.timeout_ms = 2000,
128a7202704SKiran Venkatappa 	.use_bounce_buf = false,
129a7202704SKiran Venkatappa 	.buf_len = 8192,
130*bce3b73dSKiran Venkatappa 	.num_channels = ARRAY_SIZE(ath12k_wifi7_mhi_channels_wcn7850),
131*bce3b73dSKiran Venkatappa 	.ch_cfg = ath12k_wifi7_mhi_channels_wcn7850,
132*bce3b73dSKiran Venkatappa 	.num_events = ARRAY_SIZE(ath12k_wifi7_mhi_events_wcn7850),
133*bce3b73dSKiran Venkatappa 	.event_cfg = ath12k_wifi7_mhi_events_wcn7850,
134a7202704SKiran Venkatappa };
135