18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: BSD-3-Clause-Clear 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/types.h> 78c2ecf20Sopenharmony_ci#include <linux/bitops.h> 88c2ecf20Sopenharmony_ci#include <linux/bitfield.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include "hw.h" 118c2ecf20Sopenharmony_ci#include "core.h" 128c2ecf20Sopenharmony_ci#include "ce.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci/* Map from pdev index to hw mac index */ 158c2ecf20Sopenharmony_cistatic u8 ath11k_hw_ipq8074_mac_from_pdev_id(int pdev_idx) 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci switch (pdev_idx) { 188c2ecf20Sopenharmony_ci case 0: 198c2ecf20Sopenharmony_ci return 0; 208c2ecf20Sopenharmony_ci case 1: 218c2ecf20Sopenharmony_ci return 2; 228c2ecf20Sopenharmony_ci case 2: 238c2ecf20Sopenharmony_ci return 1; 248c2ecf20Sopenharmony_ci default: 258c2ecf20Sopenharmony_ci return ATH11K_INVALID_HW_MAC_ID; 268c2ecf20Sopenharmony_ci } 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistatic u8 ath11k_hw_ipq6018_mac_from_pdev_id(int pdev_idx) 308c2ecf20Sopenharmony_ci{ 318c2ecf20Sopenharmony_ci return pdev_idx; 328c2ecf20Sopenharmony_ci} 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistatic void ath11k_init_wmi_config_qca6390(struct ath11k_base *ab, 358c2ecf20Sopenharmony_ci struct target_resource_config *config) 368c2ecf20Sopenharmony_ci{ 378c2ecf20Sopenharmony_ci config->num_vdevs = 4; 388c2ecf20Sopenharmony_ci config->num_peers = 16; 398c2ecf20Sopenharmony_ci config->num_tids = 32; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci config->num_offload_peers = 3; 428c2ecf20Sopenharmony_ci config->num_offload_reorder_buffs = 3; 438c2ecf20Sopenharmony_ci config->num_peer_keys = TARGET_NUM_PEER_KEYS; 448c2ecf20Sopenharmony_ci config->ast_skid_limit = TARGET_AST_SKID_LIMIT; 458c2ecf20Sopenharmony_ci config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 468c2ecf20Sopenharmony_ci config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 478c2ecf20Sopenharmony_ci config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI; 488c2ecf20Sopenharmony_ci config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI; 498c2ecf20Sopenharmony_ci config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI; 508c2ecf20Sopenharmony_ci config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI; 518c2ecf20Sopenharmony_ci config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI; 528c2ecf20Sopenharmony_ci config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS; 538c2ecf20Sopenharmony_ci config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV; 548c2ecf20Sopenharmony_ci config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV; 558c2ecf20Sopenharmony_ci config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES; 568c2ecf20Sopenharmony_ci config->num_mcast_groups = 0; 578c2ecf20Sopenharmony_ci config->num_mcast_table_elems = 0; 588c2ecf20Sopenharmony_ci config->mcast2ucast_mode = 0; 598c2ecf20Sopenharmony_ci config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE; 608c2ecf20Sopenharmony_ci config->num_wds_entries = 0; 618c2ecf20Sopenharmony_ci config->dma_burst_size = 0; 628c2ecf20Sopenharmony_ci config->rx_skip_defrag_timeout_dup_detection_check = 0; 638c2ecf20Sopenharmony_ci config->vow_config = TARGET_VOW_CONFIG; 648c2ecf20Sopenharmony_ci config->gtk_offload_max_vdev = 2; 658c2ecf20Sopenharmony_ci config->num_msdu_desc = 0x400; 668c2ecf20Sopenharmony_ci config->beacon_tx_offload_max_vdev = 2; 678c2ecf20Sopenharmony_ci config->rx_batchmode = TARGET_RX_BATCHMODE; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci config->peer_map_unmap_v2_support = 0; 708c2ecf20Sopenharmony_ci config->use_pdev_id = 1; 718c2ecf20Sopenharmony_ci config->max_frag_entries = 0xa; 728c2ecf20Sopenharmony_ci config->num_tdls_vdevs = 0x1; 738c2ecf20Sopenharmony_ci config->num_tdls_conn_table_entries = 8; 748c2ecf20Sopenharmony_ci config->beacon_tx_offload_max_vdev = 0x2; 758c2ecf20Sopenharmony_ci config->num_multicast_filter_entries = 0x20; 768c2ecf20Sopenharmony_ci config->num_wow_filters = 0x16; 778c2ecf20Sopenharmony_ci config->num_keep_alive_pattern = 0; 788c2ecf20Sopenharmony_ci} 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_cistatic void ath11k_init_wmi_config_ipq8074(struct ath11k_base *ab, 818c2ecf20Sopenharmony_ci struct target_resource_config *config) 828c2ecf20Sopenharmony_ci{ 838c2ecf20Sopenharmony_ci config->num_vdevs = ab->num_radios * TARGET_NUM_VDEVS; 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci if (ab->num_radios == 2) { 868c2ecf20Sopenharmony_ci config->num_peers = TARGET_NUM_PEERS(DBS); 878c2ecf20Sopenharmony_ci config->num_tids = TARGET_NUM_TIDS(DBS); 888c2ecf20Sopenharmony_ci } else if (ab->num_radios == 3) { 898c2ecf20Sopenharmony_ci config->num_peers = TARGET_NUM_PEERS(DBS_SBS); 908c2ecf20Sopenharmony_ci config->num_tids = TARGET_NUM_TIDS(DBS_SBS); 918c2ecf20Sopenharmony_ci } else { 928c2ecf20Sopenharmony_ci /* Control should not reach here */ 938c2ecf20Sopenharmony_ci config->num_peers = TARGET_NUM_PEERS(SINGLE); 948c2ecf20Sopenharmony_ci config->num_tids = TARGET_NUM_TIDS(SINGLE); 958c2ecf20Sopenharmony_ci } 968c2ecf20Sopenharmony_ci config->num_offload_peers = TARGET_NUM_OFFLD_PEERS; 978c2ecf20Sopenharmony_ci config->num_offload_reorder_buffs = TARGET_NUM_OFFLD_REORDER_BUFFS; 988c2ecf20Sopenharmony_ci config->num_peer_keys = TARGET_NUM_PEER_KEYS; 998c2ecf20Sopenharmony_ci config->ast_skid_limit = TARGET_AST_SKID_LIMIT; 1008c2ecf20Sopenharmony_ci config->tx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 1018c2ecf20Sopenharmony_ci config->rx_chain_mask = (1 << ab->target_caps.num_rf_chains) - 1; 1028c2ecf20Sopenharmony_ci config->rx_timeout_pri[0] = TARGET_RX_TIMEOUT_LO_PRI; 1038c2ecf20Sopenharmony_ci config->rx_timeout_pri[1] = TARGET_RX_TIMEOUT_LO_PRI; 1048c2ecf20Sopenharmony_ci config->rx_timeout_pri[2] = TARGET_RX_TIMEOUT_LO_PRI; 1058c2ecf20Sopenharmony_ci config->rx_timeout_pri[3] = TARGET_RX_TIMEOUT_HI_PRI; 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci if (test_bit(ATH11K_FLAG_RAW_MODE, &ab->dev_flags)) 1088c2ecf20Sopenharmony_ci config->rx_decap_mode = TARGET_DECAP_MODE_RAW; 1098c2ecf20Sopenharmony_ci else 1108c2ecf20Sopenharmony_ci config->rx_decap_mode = TARGET_DECAP_MODE_NATIVE_WIFI; 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci config->scan_max_pending_req = TARGET_SCAN_MAX_PENDING_REQS; 1138c2ecf20Sopenharmony_ci config->bmiss_offload_max_vdev = TARGET_BMISS_OFFLOAD_MAX_VDEV; 1148c2ecf20Sopenharmony_ci config->roam_offload_max_vdev = TARGET_ROAM_OFFLOAD_MAX_VDEV; 1158c2ecf20Sopenharmony_ci config->roam_offload_max_ap_profiles = TARGET_ROAM_OFFLOAD_MAX_AP_PROFILES; 1168c2ecf20Sopenharmony_ci config->num_mcast_groups = TARGET_NUM_MCAST_GROUPS; 1178c2ecf20Sopenharmony_ci config->num_mcast_table_elems = TARGET_NUM_MCAST_TABLE_ELEMS; 1188c2ecf20Sopenharmony_ci config->mcast2ucast_mode = TARGET_MCAST2UCAST_MODE; 1198c2ecf20Sopenharmony_ci config->tx_dbg_log_size = TARGET_TX_DBG_LOG_SIZE; 1208c2ecf20Sopenharmony_ci config->num_wds_entries = TARGET_NUM_WDS_ENTRIES; 1218c2ecf20Sopenharmony_ci config->dma_burst_size = TARGET_DMA_BURST_SIZE; 1228c2ecf20Sopenharmony_ci config->rx_skip_defrag_timeout_dup_detection_check = 1238c2ecf20Sopenharmony_ci TARGET_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK; 1248c2ecf20Sopenharmony_ci config->vow_config = TARGET_VOW_CONFIG; 1258c2ecf20Sopenharmony_ci config->gtk_offload_max_vdev = TARGET_GTK_OFFLOAD_MAX_VDEV; 1268c2ecf20Sopenharmony_ci config->num_msdu_desc = TARGET_NUM_MSDU_DESC; 1278c2ecf20Sopenharmony_ci config->beacon_tx_offload_max_vdev = ab->num_radios * TARGET_MAX_BCN_OFFLD; 1288c2ecf20Sopenharmony_ci config->rx_batchmode = TARGET_RX_BATCHMODE; 1298c2ecf20Sopenharmony_ci config->peer_map_unmap_v2_support = 1; 1308c2ecf20Sopenharmony_ci config->twt_ap_pdev_count = ab->num_radios; 1318c2ecf20Sopenharmony_ci config->twt_ap_sta_count = 1000; 1328c2ecf20Sopenharmony_ci} 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_cistatic int ath11k_hw_mac_id_to_pdev_id_ipq8074(struct ath11k_hw_params *hw, 1358c2ecf20Sopenharmony_ci int mac_id) 1368c2ecf20Sopenharmony_ci{ 1378c2ecf20Sopenharmony_ci return mac_id; 1388c2ecf20Sopenharmony_ci} 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_cistatic int ath11k_hw_mac_id_to_srng_id_ipq8074(struct ath11k_hw_params *hw, 1418c2ecf20Sopenharmony_ci int mac_id) 1428c2ecf20Sopenharmony_ci{ 1438c2ecf20Sopenharmony_ci return 0; 1448c2ecf20Sopenharmony_ci} 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_cistatic int ath11k_hw_mac_id_to_pdev_id_qca6390(struct ath11k_hw_params *hw, 1478c2ecf20Sopenharmony_ci int mac_id) 1488c2ecf20Sopenharmony_ci{ 1498c2ecf20Sopenharmony_ci return 0; 1508c2ecf20Sopenharmony_ci} 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_cistatic int ath11k_hw_mac_id_to_srng_id_qca6390(struct ath11k_hw_params *hw, 1538c2ecf20Sopenharmony_ci int mac_id) 1548c2ecf20Sopenharmony_ci{ 1558c2ecf20Sopenharmony_ci return mac_id; 1568c2ecf20Sopenharmony_ci} 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ciconst struct ath11k_hw_ops ipq8074_ops = { 1598c2ecf20Sopenharmony_ci .get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id, 1608c2ecf20Sopenharmony_ci .wmi_init_config = ath11k_init_wmi_config_ipq8074, 1618c2ecf20Sopenharmony_ci .mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074, 1628c2ecf20Sopenharmony_ci .mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074, 1638c2ecf20Sopenharmony_ci}; 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ciconst struct ath11k_hw_ops ipq6018_ops = { 1668c2ecf20Sopenharmony_ci .get_hw_mac_from_pdev_id = ath11k_hw_ipq6018_mac_from_pdev_id, 1678c2ecf20Sopenharmony_ci .wmi_init_config = ath11k_init_wmi_config_ipq8074, 1688c2ecf20Sopenharmony_ci .mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074, 1698c2ecf20Sopenharmony_ci .mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074, 1708c2ecf20Sopenharmony_ci}; 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ciconst struct ath11k_hw_ops qca6390_ops = { 1738c2ecf20Sopenharmony_ci .get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id, 1748c2ecf20Sopenharmony_ci .wmi_init_config = ath11k_init_wmi_config_qca6390, 1758c2ecf20Sopenharmony_ci .mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_qca6390, 1768c2ecf20Sopenharmony_ci .mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_qca6390, 1778c2ecf20Sopenharmony_ci}; 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci#define ATH11K_TX_RING_MASK_0 0x1 1808c2ecf20Sopenharmony_ci#define ATH11K_TX_RING_MASK_1 0x2 1818c2ecf20Sopenharmony_ci#define ATH11K_TX_RING_MASK_2 0x4 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci#define ATH11K_RX_RING_MASK_0 0x1 1848c2ecf20Sopenharmony_ci#define ATH11K_RX_RING_MASK_1 0x2 1858c2ecf20Sopenharmony_ci#define ATH11K_RX_RING_MASK_2 0x4 1868c2ecf20Sopenharmony_ci#define ATH11K_RX_RING_MASK_3 0x8 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci#define ATH11K_RX_ERR_RING_MASK_0 0x1 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci#define ATH11K_RX_WBM_REL_RING_MASK_0 0x1 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_ci#define ATH11K_REO_STATUS_RING_MASK_0 0x1 1938c2ecf20Sopenharmony_ci 1948c2ecf20Sopenharmony_ci#define ATH11K_RXDMA2HOST_RING_MASK_0 0x1 1958c2ecf20Sopenharmony_ci#define ATH11K_RXDMA2HOST_RING_MASK_1 0x2 1968c2ecf20Sopenharmony_ci#define ATH11K_RXDMA2HOST_RING_MASK_2 0x4 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci#define ATH11K_HOST2RXDMA_RING_MASK_0 0x1 1998c2ecf20Sopenharmony_ci#define ATH11K_HOST2RXDMA_RING_MASK_1 0x2 2008c2ecf20Sopenharmony_ci#define ATH11K_HOST2RXDMA_RING_MASK_2 0x4 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci#define ATH11K_RX_MON_STATUS_RING_MASK_0 0x1 2038c2ecf20Sopenharmony_ci#define ATH11K_RX_MON_STATUS_RING_MASK_1 0x2 2048c2ecf20Sopenharmony_ci#define ATH11K_RX_MON_STATUS_RING_MASK_2 0x4 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ciconst struct ath11k_hw_ring_mask ath11k_hw_ring_mask_ipq8074 = { 2078c2ecf20Sopenharmony_ci .tx = { 2088c2ecf20Sopenharmony_ci ATH11K_TX_RING_MASK_0, 2098c2ecf20Sopenharmony_ci ATH11K_TX_RING_MASK_1, 2108c2ecf20Sopenharmony_ci ATH11K_TX_RING_MASK_2, 2118c2ecf20Sopenharmony_ci }, 2128c2ecf20Sopenharmony_ci .rx_mon_status = { 2138c2ecf20Sopenharmony_ci 0, 0, 0, 0, 2148c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_0, 2158c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_1, 2168c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_2, 2178c2ecf20Sopenharmony_ci }, 2188c2ecf20Sopenharmony_ci .rx = { 2198c2ecf20Sopenharmony_ci 0, 0, 0, 0, 0, 0, 0, 2208c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_0, 2218c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_1, 2228c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_2, 2238c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_3, 2248c2ecf20Sopenharmony_ci }, 2258c2ecf20Sopenharmony_ci .rx_err = { 2268c2ecf20Sopenharmony_ci ATH11K_RX_ERR_RING_MASK_0, 2278c2ecf20Sopenharmony_ci }, 2288c2ecf20Sopenharmony_ci .rx_wbm_rel = { 2298c2ecf20Sopenharmony_ci ATH11K_RX_WBM_REL_RING_MASK_0, 2308c2ecf20Sopenharmony_ci }, 2318c2ecf20Sopenharmony_ci .reo_status = { 2328c2ecf20Sopenharmony_ci ATH11K_REO_STATUS_RING_MASK_0, 2338c2ecf20Sopenharmony_ci }, 2348c2ecf20Sopenharmony_ci .rxdma2host = { 2358c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_0, 2368c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_1, 2378c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_2, 2388c2ecf20Sopenharmony_ci }, 2398c2ecf20Sopenharmony_ci .host2rxdma = { 2408c2ecf20Sopenharmony_ci ATH11K_HOST2RXDMA_RING_MASK_0, 2418c2ecf20Sopenharmony_ci ATH11K_HOST2RXDMA_RING_MASK_1, 2428c2ecf20Sopenharmony_ci ATH11K_HOST2RXDMA_RING_MASK_2, 2438c2ecf20Sopenharmony_ci }, 2448c2ecf20Sopenharmony_ci}; 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ciconst struct ath11k_hw_ring_mask ath11k_hw_ring_mask_qca6390 = { 2478c2ecf20Sopenharmony_ci .tx = { 2488c2ecf20Sopenharmony_ci ATH11K_TX_RING_MASK_0, 2498c2ecf20Sopenharmony_ci }, 2508c2ecf20Sopenharmony_ci .rx_mon_status = { 2518c2ecf20Sopenharmony_ci 0, 0, 0, 0, 2528c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_0, 2538c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_1, 2548c2ecf20Sopenharmony_ci ATH11K_RX_MON_STATUS_RING_MASK_2, 2558c2ecf20Sopenharmony_ci }, 2568c2ecf20Sopenharmony_ci .rx = { 2578c2ecf20Sopenharmony_ci 0, 0, 0, 0, 0, 0, 0, 2588c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_0, 2598c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_1, 2608c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_2, 2618c2ecf20Sopenharmony_ci ATH11K_RX_RING_MASK_3, 2628c2ecf20Sopenharmony_ci }, 2638c2ecf20Sopenharmony_ci .rx_err = { 2648c2ecf20Sopenharmony_ci ATH11K_RX_ERR_RING_MASK_0, 2658c2ecf20Sopenharmony_ci }, 2668c2ecf20Sopenharmony_ci .rx_wbm_rel = { 2678c2ecf20Sopenharmony_ci ATH11K_RX_WBM_REL_RING_MASK_0, 2688c2ecf20Sopenharmony_ci }, 2698c2ecf20Sopenharmony_ci .reo_status = { 2708c2ecf20Sopenharmony_ci ATH11K_REO_STATUS_RING_MASK_0, 2718c2ecf20Sopenharmony_ci }, 2728c2ecf20Sopenharmony_ci .rxdma2host = { 2738c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_0, 2748c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_1, 2758c2ecf20Sopenharmony_ci ATH11K_RXDMA2HOST_RING_MASK_2, 2768c2ecf20Sopenharmony_ci }, 2778c2ecf20Sopenharmony_ci .host2rxdma = { 2788c2ecf20Sopenharmony_ci }, 2798c2ecf20Sopenharmony_ci}; 2808c2ecf20Sopenharmony_ci 2818c2ecf20Sopenharmony_ci/* Target firmware's Copy Engine configuration. */ 2828c2ecf20Sopenharmony_ciconst struct ce_pipe_config ath11k_target_ce_config_wlan_ipq8074[] = { 2838c2ecf20Sopenharmony_ci /* CE0: host->target HTC control and raw streams */ 2848c2ecf20Sopenharmony_ci { 2858c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 2868c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 2878c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 2888c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 2898c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 2908c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 2918c2ecf20Sopenharmony_ci }, 2928c2ecf20Sopenharmony_ci 2938c2ecf20Sopenharmony_ci /* CE1: target->host HTT + HTC control */ 2948c2ecf20Sopenharmony_ci { 2958c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 2968c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 2978c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 2988c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 2998c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3008c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3018c2ecf20Sopenharmony_ci }, 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ci /* CE2: target->host WMI */ 3048c2ecf20Sopenharmony_ci { 3058c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 3068c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 3078c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3088c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 3098c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3108c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3118c2ecf20Sopenharmony_ci }, 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ci /* CE3: host->target WMI */ 3148c2ecf20Sopenharmony_ci { 3158c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 3168c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 3178c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3188c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 3198c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3208c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3218c2ecf20Sopenharmony_ci }, 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ci /* CE4: host->target HTT */ 3248c2ecf20Sopenharmony_ci { 3258c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(4), 3268c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 3278c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(256), 3288c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(256), 3298c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR), 3308c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3318c2ecf20Sopenharmony_ci }, 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ci /* CE5: target->host Pktlog */ 3348c2ecf20Sopenharmony_ci { 3358c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(5), 3368c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 3378c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3388c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 3398c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(0), 3408c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3418c2ecf20Sopenharmony_ci }, 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ci /* CE6: Reserved for target autonomous hif_memcpy */ 3448c2ecf20Sopenharmony_ci { 3458c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(6), 3468c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT), 3478c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3488c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(65535), 3498c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3508c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3518c2ecf20Sopenharmony_ci }, 3528c2ecf20Sopenharmony_ci 3538c2ecf20Sopenharmony_ci /* CE7 used only by Host */ 3548c2ecf20Sopenharmony_ci { 3558c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(7), 3568c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 3578c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3588c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 3598c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3608c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3618c2ecf20Sopenharmony_ci }, 3628c2ecf20Sopenharmony_ci 3638c2ecf20Sopenharmony_ci /* CE8 target->host used only by IPA */ 3648c2ecf20Sopenharmony_ci { 3658c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(8), 3668c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT), 3678c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3688c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(65535), 3698c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3708c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3718c2ecf20Sopenharmony_ci }, 3728c2ecf20Sopenharmony_ci 3738c2ecf20Sopenharmony_ci /* CE9 host->target HTT */ 3748c2ecf20Sopenharmony_ci { 3758c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(9), 3768c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 3778c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 3788c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 3798c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3808c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3818c2ecf20Sopenharmony_ci }, 3828c2ecf20Sopenharmony_ci 3838c2ecf20Sopenharmony_ci /* CE10 target->host HTT */ 3848c2ecf20Sopenharmony_ci { 3858c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(10), 3868c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H), 3878c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(0), 3888c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(0), 3898c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 3908c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 3918c2ecf20Sopenharmony_ci }, 3928c2ecf20Sopenharmony_ci 3938c2ecf20Sopenharmony_ci /* CE11 Not used */ 3948c2ecf20Sopenharmony_ci}; 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ci/* Map from service/endpoint to Copy Engine. 3978c2ecf20Sopenharmony_ci * This table is derived from the CE_PCI TABLE, above. 3988c2ecf20Sopenharmony_ci * It is passed to the Target at startup for use by firmware. 3998c2ecf20Sopenharmony_ci */ 4008c2ecf20Sopenharmony_ciconst struct service_to_pipe ath11k_target_service_to_ce_map_wlan_ipq8074[] = { 4018c2ecf20Sopenharmony_ci { 4028c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 4038c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4048c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 4058c2ecf20Sopenharmony_ci }, 4068c2ecf20Sopenharmony_ci { 4078c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 4088c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4098c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4108c2ecf20Sopenharmony_ci }, 4118c2ecf20Sopenharmony_ci { 4128c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 4138c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4148c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 4158c2ecf20Sopenharmony_ci }, 4168c2ecf20Sopenharmony_ci { 4178c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 4188c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4198c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4208c2ecf20Sopenharmony_ci }, 4218c2ecf20Sopenharmony_ci { 4228c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 4238c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4248c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 4258c2ecf20Sopenharmony_ci }, 4268c2ecf20Sopenharmony_ci { 4278c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 4288c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4298c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4308c2ecf20Sopenharmony_ci }, 4318c2ecf20Sopenharmony_ci { 4328c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 4338c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4348c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 4358c2ecf20Sopenharmony_ci }, 4368c2ecf20Sopenharmony_ci { 4378c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 4388c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4398c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4408c2ecf20Sopenharmony_ci }, 4418c2ecf20Sopenharmony_ci { 4428c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 4438c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4448c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 4458c2ecf20Sopenharmony_ci }, 4468c2ecf20Sopenharmony_ci { 4478c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 4488c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4498c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4508c2ecf20Sopenharmony_ci }, 4518c2ecf20Sopenharmony_ci { 4528c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1), 4538c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4548c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(7), 4558c2ecf20Sopenharmony_ci }, 4568c2ecf20Sopenharmony_ci { 4578c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1), 4588c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4598c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4608c2ecf20Sopenharmony_ci }, 4618c2ecf20Sopenharmony_ci { 4628c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC2), 4638c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4648c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(9), 4658c2ecf20Sopenharmony_ci }, 4668c2ecf20Sopenharmony_ci { 4678c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC2), 4688c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4698c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 4708c2ecf20Sopenharmony_ci }, 4718c2ecf20Sopenharmony_ci { 4728c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 4738c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4748c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 4758c2ecf20Sopenharmony_ci }, 4768c2ecf20Sopenharmony_ci { 4778c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 4788c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4798c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 4808c2ecf20Sopenharmony_ci }, 4818c2ecf20Sopenharmony_ci { /* not used */ 4828c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS), 4838c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4848c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 4858c2ecf20Sopenharmony_ci }, 4868c2ecf20Sopenharmony_ci { /* not used */ 4878c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS), 4888c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4898c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 4908c2ecf20Sopenharmony_ci }, 4918c2ecf20Sopenharmony_ci { 4928c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 4938c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 4948c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(4), 4958c2ecf20Sopenharmony_ci }, 4968c2ecf20Sopenharmony_ci { 4978c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 4988c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 4998c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 5008c2ecf20Sopenharmony_ci }, 5018c2ecf20Sopenharmony_ci { 5028c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG), 5038c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5048c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(5), 5058c2ecf20Sopenharmony_ci }, 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ci /* (Additions here) */ 5088c2ecf20Sopenharmony_ci 5098c2ecf20Sopenharmony_ci { /* terminator entry */ } 5108c2ecf20Sopenharmony_ci}; 5118c2ecf20Sopenharmony_ci 5128c2ecf20Sopenharmony_ciconst struct service_to_pipe ath11k_target_service_to_ce_map_wlan_ipq6018[] = { 5138c2ecf20Sopenharmony_ci { 5148c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 5158c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5168c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 5178c2ecf20Sopenharmony_ci }, 5188c2ecf20Sopenharmony_ci { 5198c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 5208c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5218c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5228c2ecf20Sopenharmony_ci }, 5238c2ecf20Sopenharmony_ci { 5248c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 5258c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5268c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 5278c2ecf20Sopenharmony_ci }, 5288c2ecf20Sopenharmony_ci { 5298c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 5308c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5318c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5328c2ecf20Sopenharmony_ci }, 5338c2ecf20Sopenharmony_ci { 5348c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 5358c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5368c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 5378c2ecf20Sopenharmony_ci }, 5388c2ecf20Sopenharmony_ci { 5398c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 5408c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5418c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5428c2ecf20Sopenharmony_ci }, 5438c2ecf20Sopenharmony_ci { 5448c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 5458c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5468c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 5478c2ecf20Sopenharmony_ci }, 5488c2ecf20Sopenharmony_ci { 5498c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 5508c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5518c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5528c2ecf20Sopenharmony_ci }, 5538c2ecf20Sopenharmony_ci { 5548c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 5558c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5568c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 5578c2ecf20Sopenharmony_ci }, 5588c2ecf20Sopenharmony_ci { 5598c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 5608c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5618c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5628c2ecf20Sopenharmony_ci }, 5638c2ecf20Sopenharmony_ci { 5648c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1), 5658c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5668c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(7), 5678c2ecf20Sopenharmony_ci }, 5688c2ecf20Sopenharmony_ci { 5698c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL_MAC1), 5708c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5718c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 5728c2ecf20Sopenharmony_ci }, 5738c2ecf20Sopenharmony_ci { 5748c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 5758c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5768c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 5778c2ecf20Sopenharmony_ci }, 5788c2ecf20Sopenharmony_ci { 5798c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 5808c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5818c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 5828c2ecf20Sopenharmony_ci }, 5838c2ecf20Sopenharmony_ci { /* not used */ 5848c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS), 5858c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5868c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 5878c2ecf20Sopenharmony_ci }, 5888c2ecf20Sopenharmony_ci { /* not used */ 5898c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_TEST_RAW_STREAMS), 5908c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 5918c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 5928c2ecf20Sopenharmony_ci }, 5938c2ecf20Sopenharmony_ci { 5948c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 5958c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 5968c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(4), 5978c2ecf20Sopenharmony_ci }, 5988c2ecf20Sopenharmony_ci { 5998c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 6008c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 6018c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 6028c2ecf20Sopenharmony_ci }, 6038c2ecf20Sopenharmony_ci { 6048c2ecf20Sopenharmony_ci .service_id = __cpu_to_le32(ATH11K_HTC_SVC_ID_PKT_LOG), 6058c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 6068c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(5), 6078c2ecf20Sopenharmony_ci }, 6088c2ecf20Sopenharmony_ci 6098c2ecf20Sopenharmony_ci /* (Additions here) */ 6108c2ecf20Sopenharmony_ci 6118c2ecf20Sopenharmony_ci { /* terminator entry */ } 6128c2ecf20Sopenharmony_ci}; 6138c2ecf20Sopenharmony_ci 6148c2ecf20Sopenharmony_ci/* Target firmware's Copy Engine configuration. */ 6158c2ecf20Sopenharmony_ciconst struct ce_pipe_config ath11k_target_ce_config_wlan_qca6390[] = { 6168c2ecf20Sopenharmony_ci /* CE0: host->target HTC control and raw streams */ 6178c2ecf20Sopenharmony_ci { 6188c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(0), 6198c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 6208c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6218c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 6228c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6238c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6248c2ecf20Sopenharmony_ci }, 6258c2ecf20Sopenharmony_ci 6268c2ecf20Sopenharmony_ci /* CE1: target->host HTT + HTC control */ 6278c2ecf20Sopenharmony_ci { 6288c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(1), 6298c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 6308c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6318c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 6328c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6338c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6348c2ecf20Sopenharmony_ci }, 6358c2ecf20Sopenharmony_ci 6368c2ecf20Sopenharmony_ci /* CE2: target->host WMI */ 6378c2ecf20Sopenharmony_ci { 6388c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(2), 6398c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 6408c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6418c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 6428c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6438c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6448c2ecf20Sopenharmony_ci }, 6458c2ecf20Sopenharmony_ci 6468c2ecf20Sopenharmony_ci /* CE3: host->target WMI */ 6478c2ecf20Sopenharmony_ci { 6488c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(3), 6498c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 6508c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6518c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 6528c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6538c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6548c2ecf20Sopenharmony_ci }, 6558c2ecf20Sopenharmony_ci 6568c2ecf20Sopenharmony_ci /* CE4: host->target HTT */ 6578c2ecf20Sopenharmony_ci { 6588c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(4), 6598c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_OUT), 6608c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(256), 6618c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(256), 6628c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR), 6638c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6648c2ecf20Sopenharmony_ci }, 6658c2ecf20Sopenharmony_ci 6668c2ecf20Sopenharmony_ci /* CE5: target->host Pktlog */ 6678c2ecf20Sopenharmony_ci { 6688c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(5), 6698c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_IN), 6708c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6718c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(2048), 6728c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6738c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6748c2ecf20Sopenharmony_ci }, 6758c2ecf20Sopenharmony_ci 6768c2ecf20Sopenharmony_ci /* CE6: Reserved for target autonomous hif_memcpy */ 6778c2ecf20Sopenharmony_ci { 6788c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(6), 6798c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT), 6808c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 6818c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(16384), 6828c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 6838c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6848c2ecf20Sopenharmony_ci }, 6858c2ecf20Sopenharmony_ci 6868c2ecf20Sopenharmony_ci /* CE7 used only by Host */ 6878c2ecf20Sopenharmony_ci { 6888c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(7), 6898c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT_H2H), 6908c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(0), 6918c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(0), 6928c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS | CE_ATTR_DIS_INTR), 6938c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 6948c2ecf20Sopenharmony_ci }, 6958c2ecf20Sopenharmony_ci 6968c2ecf20Sopenharmony_ci /* CE8 target->host used only by IPA */ 6978c2ecf20Sopenharmony_ci { 6988c2ecf20Sopenharmony_ci .pipenum = __cpu_to_le32(8), 6998c2ecf20Sopenharmony_ci .pipedir = __cpu_to_le32(PIPEDIR_INOUT), 7008c2ecf20Sopenharmony_ci .nentries = __cpu_to_le32(32), 7018c2ecf20Sopenharmony_ci .nbytes_max = __cpu_to_le32(16384), 7028c2ecf20Sopenharmony_ci .flags = __cpu_to_le32(CE_ATTR_FLAGS), 7038c2ecf20Sopenharmony_ci .reserved = __cpu_to_le32(0), 7048c2ecf20Sopenharmony_ci }, 7058c2ecf20Sopenharmony_ci /* CE 9, 10, 11 are used by MHI driver */ 7068c2ecf20Sopenharmony_ci}; 7078c2ecf20Sopenharmony_ci 7088c2ecf20Sopenharmony_ci/* Map from service/endpoint to Copy Engine. 7098c2ecf20Sopenharmony_ci * This table is derived from the CE_PCI TABLE, above. 7108c2ecf20Sopenharmony_ci * It is passed to the Target at startup for use by firmware. 7118c2ecf20Sopenharmony_ci */ 7128c2ecf20Sopenharmony_ciconst struct service_to_pipe ath11k_target_service_to_ce_map_wlan_qca6390[] = { 7138c2ecf20Sopenharmony_ci { 7148c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 7158c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7168c2ecf20Sopenharmony_ci __cpu_to_le32(3), 7178c2ecf20Sopenharmony_ci }, 7188c2ecf20Sopenharmony_ci { 7198c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VO), 7208c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7218c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7228c2ecf20Sopenharmony_ci }, 7238c2ecf20Sopenharmony_ci { 7248c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 7258c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7268c2ecf20Sopenharmony_ci __cpu_to_le32(3), 7278c2ecf20Sopenharmony_ci }, 7288c2ecf20Sopenharmony_ci { 7298c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BK), 7308c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7318c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7328c2ecf20Sopenharmony_ci }, 7338c2ecf20Sopenharmony_ci { 7348c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 7358c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7368c2ecf20Sopenharmony_ci __cpu_to_le32(3), 7378c2ecf20Sopenharmony_ci }, 7388c2ecf20Sopenharmony_ci { 7398c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_BE), 7408c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7418c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7428c2ecf20Sopenharmony_ci }, 7438c2ecf20Sopenharmony_ci { 7448c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 7458c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7468c2ecf20Sopenharmony_ci __cpu_to_le32(3), 7478c2ecf20Sopenharmony_ci }, 7488c2ecf20Sopenharmony_ci { 7498c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_DATA_VI), 7508c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7518c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7528c2ecf20Sopenharmony_ci }, 7538c2ecf20Sopenharmony_ci { 7548c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 7558c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7568c2ecf20Sopenharmony_ci __cpu_to_le32(3), 7578c2ecf20Sopenharmony_ci }, 7588c2ecf20Sopenharmony_ci { 7598c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_WMI_CONTROL), 7608c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7618c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7628c2ecf20Sopenharmony_ci }, 7638c2ecf20Sopenharmony_ci { 7648c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 7658c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7668c2ecf20Sopenharmony_ci __cpu_to_le32(0), 7678c2ecf20Sopenharmony_ci }, 7688c2ecf20Sopenharmony_ci { 7698c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_RSVD_CTRL), 7708c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7718c2ecf20Sopenharmony_ci __cpu_to_le32(2), 7728c2ecf20Sopenharmony_ci }, 7738c2ecf20Sopenharmony_ci { 7748c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 7758c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_OUT), /* out = UL = host -> target */ 7768c2ecf20Sopenharmony_ci __cpu_to_le32(4), 7778c2ecf20Sopenharmony_ci }, 7788c2ecf20Sopenharmony_ci { 7798c2ecf20Sopenharmony_ci __cpu_to_le32(ATH11K_HTC_SVC_ID_HTT_DATA_MSG), 7808c2ecf20Sopenharmony_ci __cpu_to_le32(PIPEDIR_IN), /* in = DL = target -> host */ 7818c2ecf20Sopenharmony_ci __cpu_to_le32(1), 7828c2ecf20Sopenharmony_ci }, 7838c2ecf20Sopenharmony_ci 7848c2ecf20Sopenharmony_ci /* (Additions here) */ 7858c2ecf20Sopenharmony_ci 7868c2ecf20Sopenharmony_ci { /* must be last */ 7878c2ecf20Sopenharmony_ci __cpu_to_le32(0), 7888c2ecf20Sopenharmony_ci __cpu_to_le32(0), 7898c2ecf20Sopenharmony_ci __cpu_to_le32(0), 7908c2ecf20Sopenharmony_ci }, 7918c2ecf20Sopenharmony_ci}; 7928c2ecf20Sopenharmony_ci 7938c2ecf20Sopenharmony_ciconst struct ath11k_hw_regs ipq8074_regs = { 7948c2ecf20Sopenharmony_ci /* SW2TCL(x) R0 ring configuration address */ 7958c2ecf20Sopenharmony_ci .hal_tcl1_ring_base_lsb = 0x00000510, 7968c2ecf20Sopenharmony_ci .hal_tcl1_ring_base_msb = 0x00000514, 7978c2ecf20Sopenharmony_ci .hal_tcl1_ring_id = 0x00000518, 7988c2ecf20Sopenharmony_ci .hal_tcl1_ring_misc = 0x00000520, 7998c2ecf20Sopenharmony_ci .hal_tcl1_ring_tp_addr_lsb = 0x0000052c, 8008c2ecf20Sopenharmony_ci .hal_tcl1_ring_tp_addr_msb = 0x00000530, 8018c2ecf20Sopenharmony_ci .hal_tcl1_ring_consumer_int_setup_ix0 = 0x00000540, 8028c2ecf20Sopenharmony_ci .hal_tcl1_ring_consumer_int_setup_ix1 = 0x00000544, 8038c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_base_lsb = 0x00000558, 8048c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_base_msb = 0x0000055c, 8058c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_data = 0x00000560, 8068c2ecf20Sopenharmony_ci .hal_tcl2_ring_base_lsb = 0x00000568, 8078c2ecf20Sopenharmony_ci .hal_tcl_ring_base_lsb = 0x00000618, 8088c2ecf20Sopenharmony_ci 8098c2ecf20Sopenharmony_ci /* TCL STATUS ring address */ 8108c2ecf20Sopenharmony_ci .hal_tcl_status_ring_base_lsb = 0x00000720, 8118c2ecf20Sopenharmony_ci 8128c2ecf20Sopenharmony_ci /* REO2SW(x) R0 ring configuration address */ 8138c2ecf20Sopenharmony_ci .hal_reo1_ring_base_lsb = 0x0000029c, 8148c2ecf20Sopenharmony_ci .hal_reo1_ring_base_msb = 0x000002a0, 8158c2ecf20Sopenharmony_ci .hal_reo1_ring_id = 0x000002a4, 8168c2ecf20Sopenharmony_ci .hal_reo1_ring_misc = 0x000002ac, 8178c2ecf20Sopenharmony_ci .hal_reo1_ring_hp_addr_lsb = 0x000002b0, 8188c2ecf20Sopenharmony_ci .hal_reo1_ring_hp_addr_msb = 0x000002b4, 8198c2ecf20Sopenharmony_ci .hal_reo1_ring_producer_int_setup = 0x000002c0, 8208c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_base_lsb = 0x000002e4, 8218c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_base_msb = 0x000002e8, 8228c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_data = 0x000002ec, 8238c2ecf20Sopenharmony_ci .hal_reo2_ring_base_lsb = 0x000002f4, 8248c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_0 = 0x00000564, 8258c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_1 = 0x00000568, 8268c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_2 = 0x0000056c, 8278c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_3 = 0x00000570, 8288c2ecf20Sopenharmony_ci 8298c2ecf20Sopenharmony_ci /* REO2SW(x) R2 ring pointers (head/tail) address */ 8308c2ecf20Sopenharmony_ci .hal_reo1_ring_hp = 0x00003038, 8318c2ecf20Sopenharmony_ci .hal_reo1_ring_tp = 0x0000303c, 8328c2ecf20Sopenharmony_ci .hal_reo2_ring_hp = 0x00003040, 8338c2ecf20Sopenharmony_ci 8348c2ecf20Sopenharmony_ci /* REO2TCL R0 ring configuration address */ 8358c2ecf20Sopenharmony_ci .hal_reo_tcl_ring_base_lsb = 0x000003fc, 8368c2ecf20Sopenharmony_ci .hal_reo_tcl_ring_hp = 0x00003058, 8378c2ecf20Sopenharmony_ci 8388c2ecf20Sopenharmony_ci /* REO status address */ 8398c2ecf20Sopenharmony_ci .hal_reo_status_ring_base_lsb = 0x00000504, 8408c2ecf20Sopenharmony_ci .hal_reo_status_hp = 0x00003070, 8418c2ecf20Sopenharmony_ci 8428c2ecf20Sopenharmony_ci}; 8438c2ecf20Sopenharmony_ci 8448c2ecf20Sopenharmony_ciconst struct ath11k_hw_regs qca6390_regs = { 8458c2ecf20Sopenharmony_ci /* SW2TCL(x) R0 ring configuration address */ 8468c2ecf20Sopenharmony_ci .hal_tcl1_ring_base_lsb = 0x00000684, 8478c2ecf20Sopenharmony_ci .hal_tcl1_ring_base_msb = 0x00000688, 8488c2ecf20Sopenharmony_ci .hal_tcl1_ring_id = 0x0000068c, 8498c2ecf20Sopenharmony_ci .hal_tcl1_ring_misc = 0x00000694, 8508c2ecf20Sopenharmony_ci .hal_tcl1_ring_tp_addr_lsb = 0x000006a0, 8518c2ecf20Sopenharmony_ci .hal_tcl1_ring_tp_addr_msb = 0x000006a4, 8528c2ecf20Sopenharmony_ci .hal_tcl1_ring_consumer_int_setup_ix0 = 0x000006b4, 8538c2ecf20Sopenharmony_ci .hal_tcl1_ring_consumer_int_setup_ix1 = 0x000006b8, 8548c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_base_lsb = 0x000006cc, 8558c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_base_msb = 0x000006d0, 8568c2ecf20Sopenharmony_ci .hal_tcl1_ring_msi1_data = 0x000006d4, 8578c2ecf20Sopenharmony_ci .hal_tcl2_ring_base_lsb = 0x000006dc, 8588c2ecf20Sopenharmony_ci .hal_tcl_ring_base_lsb = 0x0000078c, 8598c2ecf20Sopenharmony_ci 8608c2ecf20Sopenharmony_ci /* TCL STATUS ring address */ 8618c2ecf20Sopenharmony_ci .hal_tcl_status_ring_base_lsb = 0x00000894, 8628c2ecf20Sopenharmony_ci 8638c2ecf20Sopenharmony_ci /* REO2SW(x) R0 ring configuration address */ 8648c2ecf20Sopenharmony_ci .hal_reo1_ring_base_lsb = 0x00000244, 8658c2ecf20Sopenharmony_ci .hal_reo1_ring_base_msb = 0x00000248, 8668c2ecf20Sopenharmony_ci .hal_reo1_ring_id = 0x0000024c, 8678c2ecf20Sopenharmony_ci .hal_reo1_ring_misc = 0x00000254, 8688c2ecf20Sopenharmony_ci .hal_reo1_ring_hp_addr_lsb = 0x00000258, 8698c2ecf20Sopenharmony_ci .hal_reo1_ring_hp_addr_msb = 0x0000025c, 8708c2ecf20Sopenharmony_ci .hal_reo1_ring_producer_int_setup = 0x00000268, 8718c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_base_lsb = 0x0000028c, 8728c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_base_msb = 0x00000290, 8738c2ecf20Sopenharmony_ci .hal_reo1_ring_msi1_data = 0x00000294, 8748c2ecf20Sopenharmony_ci .hal_reo2_ring_base_lsb = 0x0000029c, 8758c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_0 = 0x0000050c, 8768c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_1 = 0x00000510, 8778c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_2 = 0x00000514, 8788c2ecf20Sopenharmony_ci .hal_reo1_aging_thresh_ix_3 = 0x00000518, 8798c2ecf20Sopenharmony_ci 8808c2ecf20Sopenharmony_ci /* REO2SW(x) R2 ring pointers (head/tail) address */ 8818c2ecf20Sopenharmony_ci .hal_reo1_ring_hp = 0x00003030, 8828c2ecf20Sopenharmony_ci .hal_reo1_ring_tp = 0x00003034, 8838c2ecf20Sopenharmony_ci .hal_reo2_ring_hp = 0x00003038, 8848c2ecf20Sopenharmony_ci 8858c2ecf20Sopenharmony_ci /* REO2TCL R0 ring configuration address */ 8868c2ecf20Sopenharmony_ci .hal_reo_tcl_ring_base_lsb = 0x000003a4, 8878c2ecf20Sopenharmony_ci .hal_reo_tcl_ring_hp = 0x00003050, 8888c2ecf20Sopenharmony_ci 8898c2ecf20Sopenharmony_ci /* REO status address */ 8908c2ecf20Sopenharmony_ci .hal_reo_status_ring_base_lsb = 0x000004ac, 8918c2ecf20Sopenharmony_ci .hal_reo_status_hp = 0x00003068, 8928c2ecf20Sopenharmony_ci}; 893