xref: /linux/drivers/net/wireless/ath/ath11k/hw.c (revision 4f6b838c378a52ea3ae0b15f12ca8a20849072fa)
1d547ca4cSAnilkumar Kolli // SPDX-License-Identifier: BSD-3-Clause-Clear
2d547ca4cSAnilkumar Kolli /*
3d547ca4cSAnilkumar Kolli  * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
4d547ca4cSAnilkumar Kolli  */
5d547ca4cSAnilkumar Kolli 
66976433cSCarl Huang #include <linux/types.h>
76976433cSCarl Huang #include <linux/bitops.h>
86976433cSCarl Huang #include <linux/bitfield.h>
96976433cSCarl Huang 
106976433cSCarl Huang #include "hw.h"
11d547ca4cSAnilkumar Kolli #include "core.h"
12e3396b8bSCarl Huang #include "ce.h"
13d547ca4cSAnilkumar Kolli 
14d547ca4cSAnilkumar Kolli /* Map from pdev index to hw mac index */
15d547ca4cSAnilkumar Kolli static u8 ath11k_hw_ipq8074_mac_from_pdev_id(int pdev_idx)
16d547ca4cSAnilkumar Kolli {
17d547ca4cSAnilkumar Kolli 	switch (pdev_idx) {
18d547ca4cSAnilkumar Kolli 	case 0:
19d547ca4cSAnilkumar Kolli 		return 0;
20d547ca4cSAnilkumar Kolli 	case 1:
21d547ca4cSAnilkumar Kolli 		return 2;
22d547ca4cSAnilkumar Kolli 	case 2:
23d547ca4cSAnilkumar Kolli 		return 1;
24d547ca4cSAnilkumar Kolli 	default:
25d547ca4cSAnilkumar Kolli 		return ATH11K_INVALID_HW_MAC_ID;
26d547ca4cSAnilkumar Kolli 	}
27d547ca4cSAnilkumar Kolli }
28d547ca4cSAnilkumar Kolli 
29d547ca4cSAnilkumar Kolli static u8 ath11k_hw_ipq6018_mac_from_pdev_id(int pdev_idx)
30d547ca4cSAnilkumar Kolli {
31d547ca4cSAnilkumar Kolli 	return pdev_idx;
32d547ca4cSAnilkumar Kolli }
33d547ca4cSAnilkumar Kolli 
342d4bcbedSCarl Huang static void ath11k_init_wmi_config_qca6390(struct ath11k_base *ab,
352d4bcbedSCarl Huang 					   struct target_resource_config *config)
362d4bcbedSCarl Huang {
372d4bcbedSCarl Huang 	config->num_vdevs = 4;
382d4bcbedSCarl Huang 	config->num_peers = 16;
392d4bcbedSCarl Huang 	config->num_tids = 32;
402d4bcbedSCarl Huang 
412d4bcbedSCarl Huang 	config->num_offload_peers = 3;
422d4bcbedSCarl Huang 	config->num_offload_reorder_buffs = 3;
432d4bcbedSCarl Huang 	config->num_peer_keys = TARGET_NUM_PEER_KEYS;
442d4bcbedSCarl Huang 	config->ast_skid_limit = TARGET_AST_SKID_LIMIT;
452d4bcbedSCarl Huang 	config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
462d4bcbedSCarl Huang 	config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
472d4bcbedSCarl Huang 	config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI;
482d4bcbedSCarl Huang 	config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI;
492d4bcbedSCarl Huang 	config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI;
502d4bcbedSCarl Huang 	config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI;
512d4bcbedSCarl Huang 	config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI;
522d4bcbedSCarl Huang 	config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS;
532d4bcbedSCarl Huang 	config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV;
542d4bcbedSCarl Huang 	config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV;
552d4bcbedSCarl Huang 	config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES;
562d4bcbedSCarl Huang 	config->num_mcast_groups = 0;
572d4bcbedSCarl Huang 	config->num_mcast_table_elems = 0;
582d4bcbedSCarl Huang 	config->mcast2ucast_mode = 0;
592d4bcbedSCarl Huang 	config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE;
602d4bcbedSCarl Huang 	config->num_wds_entries = 0;
612d4bcbedSCarl Huang 	config->dma_burst_size = 0;
622d4bcbedSCarl Huang 	config->rx_skip_defrag_timeout_dup_detection_check = 0;
632d4bcbedSCarl Huang 	config->vow_config = TARGET_VOW_CONFIG;
642d4bcbedSCarl Huang 	config->gtk_offload_max_vdev = 2;
652d4bcbedSCarl Huang 	config->num_msdu_desc = 0x400;
662d4bcbedSCarl Huang 	config->beacon_tx_offload_max_vdev = 2;
672d4bcbedSCarl Huang 	config->rx_batchmode = TARGET_RX_BATCHMODE;
682d4bcbedSCarl Huang 
692d4bcbedSCarl Huang 	config->peer_map_unmap_v2_support = 0;
702d4bcbedSCarl Huang 	config->use_pdev_id = 1;
712d4bcbedSCarl Huang 	config->max_frag_entries = 0xa;
722d4bcbedSCarl Huang 	config->num_tdls_vdevs = 0x1;
732d4bcbedSCarl Huang 	config->num_tdls_conn_table_entries = 8;
742d4bcbedSCarl Huang 	config->beacon_tx_offload_max_vdev = 0x2;
752d4bcbedSCarl Huang 	config->num_multicast_filter_entries = 0x20;
762d4bcbedSCarl Huang 	config->num_wow_filters = 0x16;
772d4bcbedSCarl Huang 	config->num_keep_alive_pattern = 0;
782d4bcbedSCarl Huang }
792d4bcbedSCarl Huang 
802d4bcbedSCarl Huang static void ath11k_init_wmi_config_ipq8074(struct ath11k_base *ab,
812d4bcbedSCarl Huang 					   struct target_resource_config *config)
822d4bcbedSCarl Huang {
832d4bcbedSCarl Huang 	config->num_vdevs = ab->num_radios * TARGET_NUM_VDEVS;
842d4bcbedSCarl Huang 
852d4bcbedSCarl Huang 	if (ab->num_radios == 2) {
862d4bcbedSCarl Huang 		config->num_peers = TARGET_NUM_PEERS(DBS);
872d4bcbedSCarl Huang 		config->num_tids = TARGET_NUM_TIDS(DBS);
882d4bcbedSCarl Huang 	} else if (ab->num_radios == 3) {
892d4bcbedSCarl Huang 		config->num_peers = TARGET_NUM_PEERS(DBS_SBS);
902d4bcbedSCarl Huang 		config->num_tids = TARGET_NUM_TIDS(DBS_SBS);
912d4bcbedSCarl Huang 	} else {
922d4bcbedSCarl Huang 		/* Control should not reach here */
932d4bcbedSCarl Huang 		config->num_peers = TARGET_NUM_PEERS(SINGLE);
942d4bcbedSCarl Huang 		config->num_tids = TARGET_NUM_TIDS(SINGLE);
952d4bcbedSCarl Huang 	}
962d4bcbedSCarl Huang 	config->num_offload_peers = TARGET_NUM_OFFLD_PEERS;
972d4bcbedSCarl Huang 	config->num_offload_reorder_buffs = TARGET_NUM_OFFLD_REORDER_BUFFS;
982d4bcbedSCarl Huang 	config->num_peer_keys = TARGET_NUM_PEER_KEYS;
992d4bcbedSCarl Huang 	config->ast_skid_limit = TARGET_AST_SKID_LIMIT;
1002d4bcbedSCarl Huang 	config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
1012d4bcbedSCarl Huang 	config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1;
1022d4bcbedSCarl Huang 	config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI;
1032d4bcbedSCarl Huang 	config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI;
1042d4bcbedSCarl Huang 	config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI;
1052d4bcbedSCarl Huang 	config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI;
106*c695faf7SKalle Valo 
107*c695faf7SKalle Valo 	if (test_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags))
108*c695faf7SKalle Valo 		config->rx_decap_mode = TARGET_DECAP_MODE_RAW;
109*c695faf7SKalle Valo 	else
1102d4bcbedSCarl Huang 		config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI;
111*c695faf7SKalle Valo 
1122d4bcbedSCarl Huang 	config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS;
1132d4bcbedSCarl Huang 	config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV;
1142d4bcbedSCarl Huang 	config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV;
1152d4bcbedSCarl Huang 	config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES;
1162d4bcbedSCarl Huang 	config->num_mcast_groups = TARGET_NUM_MCAST_GROUPS;
1172d4bcbedSCarl Huang 	config->num_mcast_table_elems = TARGET_NUM_MCAST_TABLE_ELEMS;
1182d4bcbedSCarl Huang 	config->mcast2ucast_mode = TARGET_MCAST2UCAST_MODE;
1192d4bcbedSCarl Huang 	config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE;
1202d4bcbedSCarl Huang 	config->num_wds_entries = TARGET_NUM_WDS_ENTRIES;
1212d4bcbedSCarl Huang 	config->dma_burst_size = TARGET_DMA_BURST_SIZE;
1222d4bcbedSCarl Huang 	config->rx_skip_defrag_timeout_dup_detection_check =
1232d4bcbedSCarl Huang 		TARGET_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK;
1242d4bcbedSCarl Huang 	config->vow_config = TARGET_VOW_CONFIG;
1252d4bcbedSCarl Huang 	config->gtk_offload_max_vdev = TARGET_GTK_OFFLOAD_MAX_VDEV;
1262d4bcbedSCarl Huang 	config->num_msdu_desc = TARGET_NUM_MSDU_DESC;
1272d4bcbedSCarl Huang 	config->beacon_tx_offload_max_vdev = ab->num_radios * TARGET_MAX_BCN_OFFLD;
1282d4bcbedSCarl Huang 	config->rx_batchmode = TARGET_RX_BATCHMODE;
1292d4bcbedSCarl Huang 	config->peer_map_unmap_v2_support = 1;
1302d4bcbedSCarl Huang 	config->twt_ap_pdev_count = 2;
1312d4bcbedSCarl Huang 	config->twt_ap_sta_count = 1000;
1322d4bcbedSCarl Huang }
1332d4bcbedSCarl Huang 
1344152e420SCarl Huang static int ath11k_hw_mac_id_to_pdev_id_ipq8074(struct ath11k_hw_params *hw,
1354152e420SCarl Huang 					       int mac_id)
1364152e420SCarl Huang {
1374152e420SCarl Huang 	return mac_id;
1384152e420SCarl Huang }
1394152e420SCarl Huang 
1404152e420SCarl Huang static int ath11k_hw_mac_id_to_srng_id_ipq8074(struct ath11k_hw_params *hw,
1414152e420SCarl Huang 					       int mac_id)
1424152e420SCarl Huang {
1434152e420SCarl Huang 	return 0;
1444152e420SCarl Huang }
1454152e420SCarl Huang 
1464152e420SCarl Huang static int ath11k_hw_mac_id_to_pdev_id_qca6390(struct ath11k_hw_params *hw,
1474152e420SCarl Huang 					       int mac_id)
1484152e420SCarl Huang {
1494152e420SCarl Huang 	return 0;
1504152e420SCarl Huang }
1514152e420SCarl Huang 
1524152e420SCarl Huang static int ath11k_hw_mac_id_to_srng_id_qca6390(struct ath11k_hw_params *hw,
1534152e420SCarl Huang 					       int mac_id)
1544152e420SCarl Huang {
1554152e420SCarl Huang 	return mac_id;
1564152e420SCarl Huang }
1574152e420SCarl Huang 
158d547ca4cSAnilkumar Kolli const struct ath11k_hw_ops ipq8074_ops = {
159d547ca4cSAnilkumar Kolli 	.get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id,
1602d4bcbedSCarl Huang 	.wmi_init_config = ath11k_init_wmi_config_qca6390,
1614152e420SCarl Huang 	.mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074,
1624152e420SCarl Huang 	.mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074,
163d547ca4cSAnilkumar Kolli };
164d547ca4cSAnilkumar Kolli 
165d547ca4cSAnilkumar Kolli const struct ath11k_hw_ops ipq6018_ops = {
166d547ca4cSAnilkumar Kolli 	.get_hw_mac_from_pdev_id = ath11k_hw_ipq6018_mac_from_pdev_id,
1672d4bcbedSCarl Huang 	.wmi_init_config = ath11k_init_wmi_config_ipq8074,
1684152e420SCarl Huang 	.mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074,
1694152e420SCarl Huang 	.mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074,
170d547ca4cSAnilkumar Kolli };
1719de2ad43SCarl Huang 
1729de2ad43SCarl Huang const struct ath11k_hw_ops qca6390_ops = {
1739de2ad43SCarl Huang 	.get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id,
1744152e420SCarl Huang 	.wmi_init_config = ath11k_init_wmi_config_qca6390,
1754152e420SCarl Huang 	.mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_qca6390,
1764152e420SCarl Huang 	.mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_qca6390,
1779de2ad43SCarl Huang };
17834d5a3a8SKalle Valo 
17934d5a3a8SKalle Valo #define ATH11K_TX_RING_MASK_0 0x1
18034d5a3a8SKalle Valo #define ATH11K_TX_RING_MASK_1 0x2
18134d5a3a8SKalle Valo #define ATH11K_TX_RING_MASK_2 0x4
18234d5a3a8SKalle Valo 
18334d5a3a8SKalle Valo #define ATH11K_RX_RING_MASK_0 0x1
18434d5a3a8SKalle Valo #define ATH11K_RX_RING_MASK_1 0x2
18534d5a3a8SKalle Valo #define ATH11K_RX_RING_MASK_2 0x4
18634d5a3a8SKalle Valo #define ATH11K_RX_RING_MASK_3 0x8
18734d5a3a8SKalle Valo 
18834d5a3a8SKalle Valo #define ATH11K_RX_ERR_RING_MASK_0 0x1
18934d5a3a8SKalle Valo 
19034d5a3a8SKalle Valo #define ATH11K_RX_WBM_REL_RING_MASK_0 0x1
19134d5a3a8SKalle Valo 
19234d5a3a8SKalle Valo #define ATH11K_REO_STATUS_RING_MASK_0 0x1
19334d5a3a8SKalle Valo 
19434d5a3a8SKalle Valo #define ATH11K_RXDMA2HOST_RING_MASK_0 0x1
19534d5a3a8SKalle Valo #define ATH11K_RXDMA2HOST_RING_MASK_1 0x2
19634d5a3a8SKalle Valo #define ATH11K_RXDMA2HOST_RING_MASK_2 0x4
19734d5a3a8SKalle Valo 
19834d5a3a8SKalle Valo #define ATH11K_HOST2RXDMA_RING_MASK_0 0x1
19934d5a3a8SKalle Valo #define ATH11K_HOST2RXDMA_RING_MASK_1 0x2
20034d5a3a8SKalle Valo #define ATH11K_HOST2RXDMA_RING_MASK_2 0x4
20134d5a3a8SKalle Valo 
20234d5a3a8SKalle Valo #define ATH11K_RX_MON_STATUS_RING_MASK_0 0x1
20334d5a3a8SKalle Valo #define ATH11K_RX_MON_STATUS_RING_MASK_1 0x2
20434d5a3a8SKalle Valo #define ATH11K_RX_MON_STATUS_RING_MASK_2 0x4
20534d5a3a8SKalle Valo 
20634d5a3a8SKalle Valo const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_ipq8074 = {
20734d5a3a8SKalle Valo 	.tx  = {
20834d5a3a8SKalle Valo 		ATH11K_TX_RING_MASK_0,
20934d5a3a8SKalle Valo 		ATH11K_TX_RING_MASK_1,
21034d5a3a8SKalle Valo 		ATH11K_TX_RING_MASK_2,
21134d5a3a8SKalle Valo 	},
21234d5a3a8SKalle Valo 	.rx_mon_status = {
21334d5a3a8SKalle Valo 		0, 0, 0, 0,
21434d5a3a8SKalle Valo 		ATH11K_RX_MON_STATUS_RING_MASK_0,
21534d5a3a8SKalle Valo 		ATH11K_RX_MON_STATUS_RING_MASK_1,
21634d5a3a8SKalle Valo 		ATH11K_RX_MON_STATUS_RING_MASK_2,
21734d5a3a8SKalle Valo 	},
21834d5a3a8SKalle Valo 	.rx = {
21934d5a3a8SKalle Valo 		0, 0, 0, 0, 0, 0, 0,
22034d5a3a8SKalle Valo 		ATH11K_RX_RING_MASK_0,
22134d5a3a8SKalle Valo 		ATH11K_RX_RING_MASK_1,
22234d5a3a8SKalle Valo 		ATH11K_RX_RING_MASK_2,
22334d5a3a8SKalle Valo 		ATH11K_RX_RING_MASK_3,
22434d5a3a8SKalle Valo 	},
22534d5a3a8SKalle Valo 	.rx_err = {
22634d5a3a8SKalle Valo 		ATH11K_RX_ERR_RING_MASK_0,
22734d5a3a8SKalle Valo 	},
22834d5a3a8SKalle Valo 	.rx_wbm_rel = {
22934d5a3a8SKalle Valo 		ATH11K_RX_WBM_REL_RING_MASK_0,
23034d5a3a8SKalle Valo 	},
23134d5a3a8SKalle Valo 	.reo_status = {
23234d5a3a8SKalle Valo 		ATH11K_REO_STATUS_RING_MASK_0,
23334d5a3a8SKalle Valo 	},
23434d5a3a8SKalle Valo 	.rxdma2host = {
23534d5a3a8SKalle Valo 		ATH11K_RXDMA2HOST_RING_MASK_0,
23634d5a3a8SKalle Valo 		ATH11K_RXDMA2HOST_RING_MASK_1,
23734d5a3a8SKalle Valo 		ATH11K_RXDMA2HOST_RING_MASK_2,
23834d5a3a8SKalle Valo 	},
23934d5a3a8SKalle Valo 	.host2rxdma = {
24034d5a3a8SKalle Valo 		ATH11K_HOST2RXDMA_RING_MASK_0,
24134d5a3a8SKalle Valo 		ATH11K_HOST2RXDMA_RING_MASK_1,
24234d5a3a8SKalle Valo 		ATH11K_HOST2RXDMA_RING_MASK_2,
24334d5a3a8SKalle Valo 	},
24434d5a3a8SKalle Valo };
24534d5a3a8SKalle Valo 
246d4ecb90bSCarl Huang const struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qca6390 = {
247d4ecb90bSCarl Huang 	.tx  = {
248d4ecb90bSCarl Huang 		ATH11K_TX_RING_MASK_0,
249d4ecb90bSCarl Huang 		ATH11K_TX_RING_MASK_1,
250d4ecb90bSCarl Huang 		ATH11K_TX_RING_MASK_2,
251d4ecb90bSCarl Huang 	},
252d4ecb90bSCarl Huang 	.rx_mon_status = {
253d4ecb90bSCarl Huang 		0, 0, 0, 0,
254d4ecb90bSCarl Huang 		ATH11K_RX_MON_STATUS_RING_MASK_0,
255d4ecb90bSCarl Huang 		ATH11K_RX_MON_STATUS_RING_MASK_1,
256d4ecb90bSCarl Huang 		ATH11K_RX_MON_STATUS_RING_MASK_2,
257d4ecb90bSCarl Huang 	},
258d4ecb90bSCarl Huang 	.rx = {
259d4ecb90bSCarl Huang 		0, 0, 0, 0, 0, 0, 0,
260d4ecb90bSCarl Huang 		ATH11K_RX_RING_MASK_0,
261d4ecb90bSCarl Huang 		ATH11K_RX_RING_MASK_1,
262d4ecb90bSCarl Huang 		ATH11K_RX_RING_MASK_2,
263d4ecb90bSCarl Huang 		ATH11K_RX_RING_MASK_3,
264d4ecb90bSCarl Huang 	},
265d4ecb90bSCarl Huang 	.rx_err = {
266d4ecb90bSCarl Huang 		ATH11K_RX_ERR_RING_MASK_0,
267d4ecb90bSCarl Huang 	},
268d4ecb90bSCarl Huang 	.rx_wbm_rel = {
269d4ecb90bSCarl Huang 		ATH11K_RX_WBM_REL_RING_MASK_0,
270d4ecb90bSCarl Huang 	},
271d4ecb90bSCarl Huang 	.reo_status = {
272d4ecb90bSCarl Huang 		ATH11K_REO_STATUS_RING_MASK_0,
273d4ecb90bSCarl Huang 	},
274d4ecb90bSCarl Huang 	.rxdma2host = {
275d4ecb90bSCarl Huang 		ATH11K_RXDMA2HOST_RING_MASK_0,
276d4ecb90bSCarl Huang 		ATH11K_RXDMA2HOST_RING_MASK_1,
277d4ecb90bSCarl Huang 		ATH11K_RXDMA2HOST_RING_MASK_2,
278d4ecb90bSCarl Huang 	},
279d4ecb90bSCarl Huang 	.host2rxdma = {
280d4ecb90bSCarl Huang 	},
281d4ecb90bSCarl Huang };
282d4ecb90bSCarl Huang 
283967c1d11SAnilkumar Kolli /* Target firmware's Copy Engine configuration. */
284967c1d11SAnilkumar Kolli const struct ce_pipe_config ath11k_target_ce_config_wlan_ipq8074[] = {
285967c1d11SAnilkumar Kolli 	/* CE0: host->target HTC control and raw streams */
286967c1d11SAnilkumar Kolli 	{
287967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
288967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
289967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
290967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
291967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
292967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
293967c1d11SAnilkumar Kolli 	},
294967c1d11SAnilkumar Kolli 
295967c1d11SAnilkumar Kolli 	/* CE1: target->host HTT + HTC control */
296967c1d11SAnilkumar Kolli 	{
297967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
298967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
299967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
300967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
301967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
302967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
303967c1d11SAnilkumar Kolli 	},
304967c1d11SAnilkumar Kolli 
305967c1d11SAnilkumar Kolli 	/* CE2: target->host WMI */
306967c1d11SAnilkumar Kolli 	{
307967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
308967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
309967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
310967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
311967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
312967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
313967c1d11SAnilkumar Kolli 	},
314967c1d11SAnilkumar Kolli 
315967c1d11SAnilkumar Kolli 	/* CE3: host->target WMI */
316967c1d11SAnilkumar Kolli 	{
317967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
318967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
319967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
320967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
321967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
322967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
323967c1d11SAnilkumar Kolli 	},
324967c1d11SAnilkumar Kolli 
325967c1d11SAnilkumar Kolli 	/* CE4: host->target HTT */
326967c1d11SAnilkumar Kolli 	{
327967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(4),
328967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
329967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(256),
330967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(256),
331967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
332967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
333967c1d11SAnilkumar Kolli 	},
334967c1d11SAnilkumar Kolli 
335967c1d11SAnilkumar Kolli 	/* CE5: target->host Pktlog */
336967c1d11SAnilkumar Kolli 	{
337967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(5),
338967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
339967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
340967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
341967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(0),
342967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
343967c1d11SAnilkumar Kolli 	},
344967c1d11SAnilkumar Kolli 
345967c1d11SAnilkumar Kolli 	/* CE6: Reserved for target autonomous hif_memcpy */
346967c1d11SAnilkumar Kolli 	{
347967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(6),
348967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
349967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
350967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(65535),
351967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
352967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
353967c1d11SAnilkumar Kolli 	},
354967c1d11SAnilkumar Kolli 
355967c1d11SAnilkumar Kolli 	/* CE7 used only by Host */
356967c1d11SAnilkumar Kolli 	{
357967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(7),
358967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
359967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
360967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
361967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
362967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
363967c1d11SAnilkumar Kolli 	},
364967c1d11SAnilkumar Kolli 
365967c1d11SAnilkumar Kolli 	/* CE8 target->host used only by IPA */
366967c1d11SAnilkumar Kolli 	{
367967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(8),
368967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
369967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
370967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(65535),
371967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
372967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
373967c1d11SAnilkumar Kolli 	},
374967c1d11SAnilkumar Kolli 
375967c1d11SAnilkumar Kolli 	/* CE9 host->target HTT */
376967c1d11SAnilkumar Kolli 	{
377967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(9),
378967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
379967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
380967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
381967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
382967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
383967c1d11SAnilkumar Kolli 	},
384967c1d11SAnilkumar Kolli 
385967c1d11SAnilkumar Kolli 	/* CE10 target->host HTT */
386967c1d11SAnilkumar Kolli 	{
387967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(10),
388967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H),
389967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(0),
390967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(0),
391967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
392967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
393967c1d11SAnilkumar Kolli 	},
394967c1d11SAnilkumar Kolli 
395967c1d11SAnilkumar Kolli 	/* CE11 Not used */
396967c1d11SAnilkumar Kolli };
397967c1d11SAnilkumar Kolli 
398967c1d11SAnilkumar Kolli /* Map from service/endpoint to Copy Engine.
399967c1d11SAnilkumar Kolli  * This table is derived from the CE_PCI TABLE, above.
400967c1d11SAnilkumar Kolli  * It is passed to the Target at startup for use by firmware.
401967c1d11SAnilkumar Kolli  */
402967c1d11SAnilkumar Kolli const struct service_to_pipe ath11k_target_service_to_ce_map_wlan_ipq8074[] = {
403967c1d11SAnilkumar Kolli 	{
404967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
405967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
406967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
407967c1d11SAnilkumar Kolli 	},
408967c1d11SAnilkumar Kolli 	{
409967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
410967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
411967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
412967c1d11SAnilkumar Kolli 	},
413967c1d11SAnilkumar Kolli 	{
414967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
415967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
416967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
417967c1d11SAnilkumar Kolli 	},
418967c1d11SAnilkumar Kolli 	{
419967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
420967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
421967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
422967c1d11SAnilkumar Kolli 	},
423967c1d11SAnilkumar Kolli 	{
424967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
425967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
426967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
427967c1d11SAnilkumar Kolli 	},
428967c1d11SAnilkumar Kolli 	{
429967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
430967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
431967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
432967c1d11SAnilkumar Kolli 	},
433967c1d11SAnilkumar Kolli 	{
434967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
435967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
436967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
437967c1d11SAnilkumar Kolli 	},
438967c1d11SAnilkumar Kolli 	{
439967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
440967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
441967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
442967c1d11SAnilkumar Kolli 	},
443967c1d11SAnilkumar Kolli 	{
444967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
445967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
446967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
447967c1d11SAnilkumar Kolli 	},
448967c1d11SAnilkumar Kolli 	{
449967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
450967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
451967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
452967c1d11SAnilkumar Kolli 	},
453967c1d11SAnilkumar Kolli 	{
454967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
455967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
456967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(7),
457967c1d11SAnilkumar Kolli 	},
458967c1d11SAnilkumar Kolli 	{
459967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
460967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
461967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
462967c1d11SAnilkumar Kolli 	},
463967c1d11SAnilkumar Kolli 	{
464967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC2),
465967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
466967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(9),
467967c1d11SAnilkumar Kolli 	},
468967c1d11SAnilkumar Kolli 	{
469967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC2),
470967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
471967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
472967c1d11SAnilkumar Kolli 	},
473967c1d11SAnilkumar Kolli 	{
474967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
475967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
476967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
477967c1d11SAnilkumar Kolli 	},
478967c1d11SAnilkumar Kolli 	{
479967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
480967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
481967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
482967c1d11SAnilkumar Kolli 	},
483967c1d11SAnilkumar Kolli 	{ /* not used */
484967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
485967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
486967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
487967c1d11SAnilkumar Kolli 	},
488967c1d11SAnilkumar Kolli 	{ /* not used */
489967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
490967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
491967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
492967c1d11SAnilkumar Kolli 	},
493967c1d11SAnilkumar Kolli 	{
494967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
495967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
496967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(4),
497967c1d11SAnilkumar Kolli 	},
498967c1d11SAnilkumar Kolli 	{
499967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
500967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
501967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
502967c1d11SAnilkumar Kolli 	},
503967c1d11SAnilkumar Kolli 	{
504967c1d11SAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG),
505967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
506967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(5),
507967c1d11SAnilkumar Kolli 	},
508967c1d11SAnilkumar Kolli 
509967c1d11SAnilkumar Kolli 	/* (Additions here) */
510967c1d11SAnilkumar Kolli 
511967c1d11SAnilkumar Kolli 	{ /* terminator entry */ }
512967c1d11SAnilkumar Kolli };
513967c1d11SAnilkumar Kolli 
514b129699aSAnilkumar Kolli const struct service_to_pipe ath11k_target_service_to_ce_map_wlan_ipq6018[] = {
515b129699aSAnilkumar Kolli 	{
516b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
517b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
518b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
519b129699aSAnilkumar Kolli 	},
520b129699aSAnilkumar Kolli 	{
521b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
522b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
523b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
524b129699aSAnilkumar Kolli 	},
525b129699aSAnilkumar Kolli 	{
526b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
527b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
528b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
529b129699aSAnilkumar Kolli 	},
530b129699aSAnilkumar Kolli 	{
531b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
532b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
533b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
534b129699aSAnilkumar Kolli 	},
535b129699aSAnilkumar Kolli 	{
536b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
537b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
538b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
539b129699aSAnilkumar Kolli 	},
540b129699aSAnilkumar Kolli 	{
541b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
542b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
543b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
544b129699aSAnilkumar Kolli 	},
545b129699aSAnilkumar Kolli 	{
546b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
547b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
548b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
549b129699aSAnilkumar Kolli 	},
550b129699aSAnilkumar Kolli 	{
551b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
552b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
553b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
554b129699aSAnilkumar Kolli 	},
555b129699aSAnilkumar Kolli 	{
556b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
557b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
558b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
559b129699aSAnilkumar Kolli 	},
560b129699aSAnilkumar Kolli 	{
561b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
562b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
563b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
564b129699aSAnilkumar Kolli 	},
565b129699aSAnilkumar Kolli 	{
566b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
567b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
568b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(7),
569b129699aSAnilkumar Kolli 	},
570b129699aSAnilkumar Kolli 	{
571b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1),
572b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
573b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
574b129699aSAnilkumar Kolli 	},
575b129699aSAnilkumar Kolli 	{
576b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
577b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
578b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
579b129699aSAnilkumar Kolli 	},
580b129699aSAnilkumar Kolli 	{
581b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
582b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
583b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
584b129699aSAnilkumar Kolli 	},
585b129699aSAnilkumar Kolli 	{ /* not used */
586b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
587b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
588b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
589b129699aSAnilkumar Kolli 	},
590b129699aSAnilkumar Kolli 	{ /* not used */
591b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS),
592b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
593b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
594b129699aSAnilkumar Kolli 	},
595b129699aSAnilkumar Kolli 	{
596b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
597b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
598b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(4),
599b129699aSAnilkumar Kolli 	},
600b129699aSAnilkumar Kolli 	{
601b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
602b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
603b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
604b129699aSAnilkumar Kolli 	},
605b129699aSAnilkumar Kolli 	{
606b129699aSAnilkumar Kolli 		.service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG),
607b129699aSAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
608b129699aSAnilkumar Kolli 		.pipenum = __cpu_to_le32(5),
609b129699aSAnilkumar Kolli 	},
610b129699aSAnilkumar Kolli 
611b129699aSAnilkumar Kolli 	/* (Additions here) */
612b129699aSAnilkumar Kolli 
613b129699aSAnilkumar Kolli 	{ /* terminator entry */ }
614b129699aSAnilkumar Kolli };
615b129699aSAnilkumar Kolli 
616967c1d11SAnilkumar Kolli /* Target firmware's Copy Engine configuration. */
617967c1d11SAnilkumar Kolli const struct ce_pipe_config ath11k_target_ce_config_wlan_qca6390[] = {
618967c1d11SAnilkumar Kolli 	/* CE0: host->target HTC control and raw streams */
619967c1d11SAnilkumar Kolli 	{
620967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(0),
621967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
622967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
623967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
624967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
625967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
626967c1d11SAnilkumar Kolli 	},
627967c1d11SAnilkumar Kolli 
628967c1d11SAnilkumar Kolli 	/* CE1: target->host HTT + HTC control */
629967c1d11SAnilkumar Kolli 	{
630967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(1),
631967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
632967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
633967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
634967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
635967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
636967c1d11SAnilkumar Kolli 	},
637967c1d11SAnilkumar Kolli 
638967c1d11SAnilkumar Kolli 	/* CE2: target->host WMI */
639967c1d11SAnilkumar Kolli 	{
640967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(2),
641967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
642967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
643967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
644967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
645967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
646967c1d11SAnilkumar Kolli 	},
647967c1d11SAnilkumar Kolli 
648967c1d11SAnilkumar Kolli 	/* CE3: host->target WMI */
649967c1d11SAnilkumar Kolli 	{
650967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(3),
651967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
652967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
653967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
654967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
655967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
656967c1d11SAnilkumar Kolli 	},
657967c1d11SAnilkumar Kolli 
658967c1d11SAnilkumar Kolli 	/* CE4: host->target HTT */
659967c1d11SAnilkumar Kolli 	{
660967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(4),
661967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_OUT),
662967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(256),
663967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(256),
664967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
665967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
666967c1d11SAnilkumar Kolli 	},
667967c1d11SAnilkumar Kolli 
668967c1d11SAnilkumar Kolli 	/* CE5: target->host Pktlog */
669967c1d11SAnilkumar Kolli 	{
670967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(5),
671967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_IN),
672967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
673967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(2048),
674967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
675967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
676967c1d11SAnilkumar Kolli 	},
677967c1d11SAnilkumar Kolli 
678967c1d11SAnilkumar Kolli 	/* CE6: Reserved for target autonomous hif_memcpy */
679967c1d11SAnilkumar Kolli 	{
680967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(6),
681967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
682967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
683967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(16384),
684967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
685967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
686967c1d11SAnilkumar Kolli 	},
687967c1d11SAnilkumar Kolli 
688967c1d11SAnilkumar Kolli 	/* CE7 used only by Host */
689967c1d11SAnilkumar Kolli 	{
690967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(7),
691967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H),
692967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(0),
693967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(0),
694967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR),
695967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
696967c1d11SAnilkumar Kolli 	},
697967c1d11SAnilkumar Kolli 
698967c1d11SAnilkumar Kolli 	/* CE8 target->host used only by IPA */
699967c1d11SAnilkumar Kolli 	{
700967c1d11SAnilkumar Kolli 		.pipenum = __cpu_to_le32(8),
701967c1d11SAnilkumar Kolli 		.pipedir = __cpu_to_le32(PIPEDIR_INOUT),
702967c1d11SAnilkumar Kolli 		.nentries = __cpu_to_le32(32),
703967c1d11SAnilkumar Kolli 		.nbytes_max = __cpu_to_le32(16384),
704967c1d11SAnilkumar Kolli 		.flags = __cpu_to_le32(CE_ATTR_FLAGS),
705967c1d11SAnilkumar Kolli 		.reserved = __cpu_to_le32(0),
706967c1d11SAnilkumar Kolli 	},
707967c1d11SAnilkumar Kolli 	/* CE 9, 10, 11 are used by MHI driver */
708967c1d11SAnilkumar Kolli };
709967c1d11SAnilkumar Kolli 
710967c1d11SAnilkumar Kolli /* Map from service/endpoint to Copy Engine.
711967c1d11SAnilkumar Kolli  * This table is derived from the CE_PCI TABLE, above.
712967c1d11SAnilkumar Kolli  * It is passed to the Target at startup for use by firmware.
713967c1d11SAnilkumar Kolli  */
714967c1d11SAnilkumar Kolli const struct service_to_pipe ath11k_target_service_to_ce_map_wlan_qca6390[] = {
715967c1d11SAnilkumar Kolli 	{
716967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
717967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
718967c1d11SAnilkumar Kolli 		__cpu_to_le32(3),
719967c1d11SAnilkumar Kolli 	},
720967c1d11SAnilkumar Kolli 	{
721967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO),
722967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
723967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
724967c1d11SAnilkumar Kolli 	},
725967c1d11SAnilkumar Kolli 	{
726967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
727967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
728967c1d11SAnilkumar Kolli 		__cpu_to_le32(3),
729967c1d11SAnilkumar Kolli 	},
730967c1d11SAnilkumar Kolli 	{
731967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK),
732967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
733967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
734967c1d11SAnilkumar Kolli 	},
735967c1d11SAnilkumar Kolli 	{
736967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
737967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
738967c1d11SAnilkumar Kolli 		__cpu_to_le32(3),
739967c1d11SAnilkumar Kolli 	},
740967c1d11SAnilkumar Kolli 	{
741967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE),
742967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
743967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
744967c1d11SAnilkumar Kolli 	},
745967c1d11SAnilkumar Kolli 	{
746967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
747967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
748967c1d11SAnilkumar Kolli 		__cpu_to_le32(3),
749967c1d11SAnilkumar Kolli 	},
750967c1d11SAnilkumar Kolli 	{
751967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI),
752967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
753967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
754967c1d11SAnilkumar Kolli 	},
755967c1d11SAnilkumar Kolli 	{
756967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
757967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
758967c1d11SAnilkumar Kolli 		__cpu_to_le32(3),
759967c1d11SAnilkumar Kolli 	},
760967c1d11SAnilkumar Kolli 	{
761967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL),
762967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
763967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
764967c1d11SAnilkumar Kolli 	},
765967c1d11SAnilkumar Kolli 	{
766967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
767967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
768967c1d11SAnilkumar Kolli 		__cpu_to_le32(0),
769967c1d11SAnilkumar Kolli 	},
770967c1d11SAnilkumar Kolli 	{
771967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL),
772967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
773967c1d11SAnilkumar Kolli 		__cpu_to_le32(2),
774967c1d11SAnilkumar Kolli 	},
775967c1d11SAnilkumar Kolli 	{
776967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
777967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_OUT),	/* out = UL = host -> target */
778967c1d11SAnilkumar Kolli 		__cpu_to_le32(4),
779967c1d11SAnilkumar Kolli 	},
780967c1d11SAnilkumar Kolli 	{
781967c1d11SAnilkumar Kolli 		__cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG),
782967c1d11SAnilkumar Kolli 		__cpu_to_le32(PIPEDIR_IN),	/* in = DL = target -> host */
783967c1d11SAnilkumar Kolli 		__cpu_to_le32(1),
784967c1d11SAnilkumar Kolli 	},
785967c1d11SAnilkumar Kolli 
786967c1d11SAnilkumar Kolli 	/* (Additions here) */
787967c1d11SAnilkumar Kolli 
788967c1d11SAnilkumar Kolli 	{ /* must be last */
789967c1d11SAnilkumar Kolli 		__cpu_to_le32(0),
790967c1d11SAnilkumar Kolli 		__cpu_to_le32(0),
791967c1d11SAnilkumar Kolli 		__cpu_to_le32(0),
792967c1d11SAnilkumar Kolli 	},
793967c1d11SAnilkumar Kolli };
794967c1d11SAnilkumar Kolli 
7956976433cSCarl Huang const struct ath11k_hw_regs ipq8074_regs = {
7966976433cSCarl Huang 	/* SW2TCL(x) R0 ring configuration address */
7976976433cSCarl Huang 	.hal_tcl1_ring_base_lsb = 0x00000510,
7986976433cSCarl Huang 	.hal_tcl1_ring_base_msb = 0x00000514,
7996976433cSCarl Huang 	.hal_tcl1_ring_id = 0x00000518,
8006976433cSCarl Huang 	.hal_tcl1_ring_misc = 0x00000520,
8016976433cSCarl Huang 	.hal_tcl1_ring_tp_addr_lsb = 0x0000052c,
8026976433cSCarl Huang 	.hal_tcl1_ring_tp_addr_msb = 0x00000530,
8036976433cSCarl Huang 	.hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000540,
8046976433cSCarl Huang 	.hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000544,
8056976433cSCarl Huang 	.hal_tcl1_ring_msi1_base_lsb = 0x00000558,
8066976433cSCarl Huang 	.hal_tcl1_ring_msi1_base_msb = 0x0000055c,
8076976433cSCarl Huang 	.hal_tcl1_ring_msi1_data = 0x00000560,
8086976433cSCarl Huang 	.hal_tcl2_ring_base_lsb = 0x00000568,
8096976433cSCarl Huang 	.hal_tcl_ring_base_lsb = 0x00000618,
8106976433cSCarl Huang 
8116976433cSCarl Huang 	/* TCL STATUS ring address */
8126976433cSCarl Huang 	.hal_tcl_status_ring_base_lsb = 0x00000720,
8136976433cSCarl Huang 
8146976433cSCarl Huang 	/* REO2SW(x) R0 ring configuration address */
8156976433cSCarl Huang 	.hal_reo1_ring_base_lsb = 0x0000029c,
8166976433cSCarl Huang 	.hal_reo1_ring_base_msb = 0x000002a0,
8176976433cSCarl Huang 	.hal_reo1_ring_id = 0x000002a4,
8186976433cSCarl Huang 	.hal_reo1_ring_misc = 0x000002ac,
8196976433cSCarl Huang 	.hal_reo1_ring_hp_addr_lsb = 0x000002b0,
8206976433cSCarl Huang 	.hal_reo1_ring_hp_addr_msb = 0x000002b4,
8216976433cSCarl Huang 	.hal_reo1_ring_producer_int_setup = 0x000002c0,
8226976433cSCarl Huang 	.hal_reo1_ring_msi1_base_lsb = 0x000002e4,
8236976433cSCarl Huang 	.hal_reo1_ring_msi1_base_msb = 0x000002e8,
8246976433cSCarl Huang 	.hal_reo1_ring_msi1_data = 0x000002ec,
8256976433cSCarl Huang 	.hal_reo2_ring_base_lsb = 0x000002f4,
8266976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_0 = 0x00000564,
8276976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_1 = 0x00000568,
8286976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_2 = 0x0000056c,
8296976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_3 = 0x00000570,
8306976433cSCarl Huang 
8316976433cSCarl Huang 	/* REO2SW(x) R2 ring pointers (head/tail) address */
8326976433cSCarl Huang 	.hal_reo1_ring_hp = 0x00003038,
8336976433cSCarl Huang 	.hal_reo1_ring_tp = 0x0000303c,
8346976433cSCarl Huang 	.hal_reo2_ring_hp = 0x00003040,
8356976433cSCarl Huang 
8366976433cSCarl Huang 	/* REO2TCL R0 ring configuration address */
8376976433cSCarl Huang 	.hal_reo_tcl_ring_base_lsb = 0x000003fc,
8386976433cSCarl Huang 	.hal_reo_tcl_ring_hp = 0x00003058,
8396976433cSCarl Huang 
8406976433cSCarl Huang 	/* REO status address */
8416976433cSCarl Huang 	.hal_reo_status_ring_base_lsb = 0x00000504,
8426976433cSCarl Huang 	.hal_reo_status_hp = 0x00003070,
8436976433cSCarl Huang 
8446976433cSCarl Huang };
8456976433cSCarl Huang 
8466976433cSCarl Huang const struct ath11k_hw_regs qca6390_regs = {
8476976433cSCarl Huang 	/* SW2TCL(x) R0 ring configuration address */
8486976433cSCarl Huang 	.hal_tcl1_ring_base_lsb = 0x00000684,
8496976433cSCarl Huang 	.hal_tcl1_ring_base_msb = 0x00000688,
8506976433cSCarl Huang 	.hal_tcl1_ring_id = 0x0000068c,
8516976433cSCarl Huang 	.hal_tcl1_ring_misc = 0x00000694,
8526976433cSCarl Huang 	.hal_tcl1_ring_tp_addr_lsb = 0x000006a0,
8536976433cSCarl Huang 	.hal_tcl1_ring_tp_addr_msb = 0x000006a4,
8546976433cSCarl Huang 	.hal_tcl1_ring_consumer_int_setup_ix0 = 0x000006b4,
8556976433cSCarl Huang 	.hal_tcl1_ring_consumer_int_setup_ix1 = 0x000006b8,
8566976433cSCarl Huang 	.hal_tcl1_ring_msi1_base_lsb = 0x000006cc,
8576976433cSCarl Huang 	.hal_tcl1_ring_msi1_base_msb = 0x000006d0,
8586976433cSCarl Huang 	.hal_tcl1_ring_msi1_data = 0x000006d4,
8596976433cSCarl Huang 	.hal_tcl2_ring_base_lsb = 0x000006dc,
8606976433cSCarl Huang 	.hal_tcl_ring_base_lsb = 0x0000078c,
8616976433cSCarl Huang 
8626976433cSCarl Huang 	/* TCL STATUS ring address */
8636976433cSCarl Huang 	.hal_tcl_status_ring_base_lsb = 0x00000894,
8646976433cSCarl Huang 
8656976433cSCarl Huang 	/* REO2SW(x) R0 ring configuration address */
8666976433cSCarl Huang 	.hal_reo1_ring_base_lsb = 0x00000244,
8676976433cSCarl Huang 	.hal_reo1_ring_base_msb = 0x00000248,
8686976433cSCarl Huang 	.hal_reo1_ring_id = 0x0000024c,
8696976433cSCarl Huang 	.hal_reo1_ring_misc = 0x00000254,
8706976433cSCarl Huang 	.hal_reo1_ring_hp_addr_lsb = 0x00000258,
8716976433cSCarl Huang 	.hal_reo1_ring_hp_addr_msb = 0x0000025c,
8726976433cSCarl Huang 	.hal_reo1_ring_producer_int_setup = 0x00000268,
8736976433cSCarl Huang 	.hal_reo1_ring_msi1_base_lsb = 0x0000028c,
8746976433cSCarl Huang 	.hal_reo1_ring_msi1_base_msb = 0x00000290,
8756976433cSCarl Huang 	.hal_reo1_ring_msi1_data = 0x00000294,
8766976433cSCarl Huang 	.hal_reo2_ring_base_lsb = 0x0000029c,
8776976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_0 = 0x0000050c,
8786976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_1 = 0x00000510,
8796976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_2 = 0x00000514,
8806976433cSCarl Huang 	.hal_reo1_aging_thresh_ix_3 = 0x00000518,
8816976433cSCarl Huang 
8826976433cSCarl Huang 	/* REO2SW(x) R2 ring pointers (head/tail) address */
8836976433cSCarl Huang 	.hal_reo1_ring_hp = 0x00003030,
8846976433cSCarl Huang 	.hal_reo1_ring_tp = 0x00003034,
8856976433cSCarl Huang 	.hal_reo2_ring_hp = 0x00003038,
8866976433cSCarl Huang 
8876976433cSCarl Huang 	/* REO2TCL R0 ring configuration address */
8886976433cSCarl Huang 	.hal_reo_tcl_ring_base_lsb = 0x000003a4,
8896976433cSCarl Huang 	.hal_reo_tcl_ring_hp = 0x00003050,
8906976433cSCarl Huang 
8916976433cSCarl Huang 	/* REO status address */
8926976433cSCarl Huang 	.hal_reo_status_ring_base_lsb = 0x000004ac,
8936976433cSCarl Huang 	.hal_reo_status_hp = 0x00003068,
8946976433cSCarl Huang };
895