1 /* 2 * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #include "targaddrs.h" 20 #include "target_type.h" 21 #include "cepci.h" 22 #include "regtable.h" 23 #include "ar6320def.h" 24 #include "ar6320v2def.h" 25 #include "hif_main.h" 26 #include "adrastea_reg_def.h" 27 28 #include "targetdef.h" 29 #include "hostdef.h" 30 31 void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type) 32 { 33 switch (target_type) { 34 case TARGET_TYPE_AR6320: 35 scn->targetdef = &ar6320_targetdef; 36 scn->target_ce_def = &ar6320_ce_targetdef; 37 break; 38 case TARGET_TYPE_AR6320V2: 39 scn->targetdef = &ar6320v2_targetdef; 40 scn->target_ce_def = &ar6320v2_ce_targetdef; 41 break; 42 case TARGET_TYPE_ADRASTEA: 43 scn->targetdef = &adrastea_targetdef; 44 scn->target_ce_def = &adrastea_ce_targetdef; 45 break; 46 case TARGET_TYPE_QCN7605: 47 scn->targetdef = &adrastea_targetdef; 48 scn->target_ce_def = &adrastea_ce_targetdef; 49 break; 50 #if defined(AR6002_HEADERS_DEF) 51 case TARGET_TYPE_AR6002: 52 scn->targetdef = AR6002_TARGETdef; 53 break; 54 #endif 55 #if defined(AR6003_HEADERS_DEF) 56 case TARGET_TYPE_AR6003: 57 scn->targetdef = AR6003_TARGETdef; 58 break; 59 #endif 60 #if defined(AR6004_HEADERS_DEF) 61 case TARGET_TYPE_AR6004: 62 scn->targetdef = AR6004_TARGETdef; 63 break; 64 #endif 65 #if defined(AR9888_HEADERS_DEF) 66 case TARGET_TYPE_AR9888: 67 scn->targetdef = AR9888_TARGETdef; 68 scn->target_ce_def = AR9888_CE_TARGETdef; 69 break; 70 #endif 71 #if defined(AR9888V2_HEADERS_DEF) 72 case TARGET_TYPE_AR9888V2: 73 scn->targetdef = AR9888V2_TARGETdef; 74 scn->target_ce_def = AR9888_CE_TARGETdef; 75 break; 76 #endif 77 #if defined(AR900B_HEADERS_DEF) 78 case TARGET_TYPE_AR900B: 79 scn->targetdef = AR900B_TARGETdef; 80 scn->target_ce_def = AR900B_CE_TARGETdef; 81 break; 82 #endif 83 #if defined(QCA9984_HEADERS_DEF) 84 case TARGET_TYPE_QCA9984: 85 scn->targetdef = QCA9984_TARGETdef; 86 scn->target_ce_def = QCA9984_CE_TARGETdef; 87 break; 88 #endif 89 #if defined(QCA9888_HEADERS_DEF) 90 case TARGET_TYPE_QCA9888: 91 scn->targetdef = QCA9888_TARGETdef; 92 scn->target_ce_def = QCA9888_CE_TARGETdef; 93 break; 94 #endif 95 #ifdef ATH_AHB 96 #if defined(IPQ4019_HEADERS_DEF) 97 case TARGET_TYPE_IPQ4019: 98 scn->targetdef = IPQ4019_TARGETdef; 99 scn->target_ce_def = IPQ4019_CE_TARGETdef; 100 break; 101 #endif 102 #endif 103 #if defined(QCA8074_HEADERS_DEF) 104 case TARGET_TYPE_QCA8074: 105 scn->targetdef = QCA8074_TARGETdef; 106 scn->target_ce_def = QCA8074_CE_TARGETdef; 107 break; 108 #endif 109 110 #if defined(QCA6290_HEADERS_DEF) 111 /* use the same defs for HAWKEYE & NAPIER */ 112 case TARGET_TYPE_QCA6290: 113 scn->targetdef = QCA6290_TARGETdef; 114 scn->target_ce_def = QCA6290_CE_TARGETdef; 115 break; 116 #endif 117 118 default: 119 break; 120 } 121 } 122 123 void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type) 124 { 125 switch (hif_type) { 126 case HIF_TYPE_AR6320V2: 127 scn->hostdef = &ar6320v2_hostdef; 128 break; 129 case HIF_TYPE_ADRASTEA: 130 scn->hostdef = &adrastea_hostdef; 131 scn->host_shadow_regs = &adrastea_host_shadow_regs; 132 break; 133 case HIF_TYPE_QCN7605: 134 scn->hostdef = &adrastea_hostdef; 135 scn->host_shadow_regs = &adrastea_host_shadow_regs; 136 break; 137 #if defined(AR6002_HEADERS_DEF) 138 case HIF_TYPE_AR6002: 139 scn->hostdef = AR6002_HOSTdef; 140 break; 141 #endif 142 #if defined(AR6003_HEADERS_DEF) 143 case HIF_TYPE_AR6003: 144 scn->hostdef = AR6003_HOSTdef; 145 break; 146 #endif 147 #if defined(AR6004_HEADERS_DEF) 148 case HIF_TYPE_AR6004: 149 scn->hostdef = AR6004_HOSTdef; 150 break; 151 #endif 152 #if defined(AR9888_HEADERS_DEF) 153 case HIF_TYPE_AR9888: 154 scn->hostdef = AR9888_HOSTdef; 155 break; 156 #endif 157 #if defined(AR9888V2_HEADERS_DEF) 158 case HIF_TYPE_AR9888V2: 159 scn->hostdef = AR9888V2_HOSTdef; 160 break; 161 #endif 162 #if defined(AR900B_HEADERS_DEF) 163 case HIF_TYPE_AR900B: 164 scn->hostdef = AR900B_HOSTdef; 165 break; 166 #endif 167 #if defined(QCA9984_HEADERS_DEF) 168 case HIF_TYPE_QCA9984: 169 scn->hostdef = QCA9984_HOSTdef; 170 break; 171 #endif 172 #if defined(QCA9888_HEADERS_DEF) 173 case HIF_TYPE_QCA9888: 174 scn->hostdef = QCA9888_HOSTdef; 175 break; 176 #endif 177 178 #ifdef ATH_AHB 179 #if defined(IPQ4019_HEADERS_DEF) 180 case HIF_TYPE_IPQ4019: 181 scn->hostdef = IPQ4019_HOSTdef; 182 break; 183 #endif 184 #endif 185 #if defined(QCA8074_HEADERS_DEF) 186 case HIF_TYPE_QCA8074: 187 scn->hostdef = QCA8074_HOSTdef; 188 break; 189 #endif 190 191 #if defined(QCA6290_HEADERS_DEF) 192 case HIF_TYPE_QCA6290: 193 scn->hostdef = QCA6290_HOSTdef; 194 break; 195 #endif 196 197 default: 198 break; 199 } 200 } 201