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