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 #if defined(AR6002_HEADERS_DEF) 47 case TARGET_TYPE_AR6002: 48 scn->targetdef = AR6002_TARGETdef; 49 break; 50 #endif 51 #if defined(AR6003_HEADERS_DEF) 52 case TARGET_TYPE_AR6003: 53 scn->targetdef = AR6003_TARGETdef; 54 break; 55 #endif 56 #if defined(AR6004_HEADERS_DEF) 57 case TARGET_TYPE_AR6004: 58 scn->targetdef = AR6004_TARGETdef; 59 break; 60 #endif 61 #if defined(AR9888_HEADERS_DEF) 62 case TARGET_TYPE_AR9888: 63 scn->targetdef = AR9888_TARGETdef; 64 scn->target_ce_def = AR9888_CE_TARGETdef; 65 break; 66 #endif 67 #if defined(AR9888V2_HEADERS_DEF) 68 case TARGET_TYPE_AR9888V2: 69 scn->targetdef = AR9888V2_TARGETdef; 70 scn->target_ce_def = AR9888_CE_TARGETdef; 71 break; 72 #endif 73 #if defined(AR900B_HEADERS_DEF) 74 case TARGET_TYPE_AR900B: 75 scn->targetdef = AR900B_TARGETdef; 76 scn->target_ce_def = AR900B_CE_TARGETdef; 77 break; 78 #endif 79 #if defined(QCA9984_HEADERS_DEF) 80 case TARGET_TYPE_QCA9984: 81 scn->targetdef = QCA9984_TARGETdef; 82 scn->target_ce_def = QCA9984_CE_TARGETdef; 83 break; 84 #endif 85 #if defined(QCA9888_HEADERS_DEF) 86 case TARGET_TYPE_QCA9888: 87 scn->targetdef = QCA9888_TARGETdef; 88 scn->target_ce_def = QCA9888_CE_TARGETdef; 89 break; 90 #endif 91 #ifdef ATH_AHB 92 #if defined(IPQ4019_HEADERS_DEF) 93 case TARGET_TYPE_IPQ4019: 94 scn->targetdef = IPQ4019_TARGETdef; 95 scn->target_ce_def = IPQ4019_CE_TARGETdef; 96 break; 97 #endif 98 #endif 99 #if defined(QCA8074_HEADERS_DEF) 100 case TARGET_TYPE_QCA8074: 101 scn->targetdef = QCA8074_TARGETdef; 102 scn->target_ce_def = QCA8074_CE_TARGETdef; 103 break; 104 #endif 105 106 #if defined(QCA6290_HEADERS_DEF) 107 /* use the same defs for HAWKEYE & NAPIER */ 108 case TARGET_TYPE_QCA6290: 109 scn->targetdef = QCA6290_TARGETdef; 110 scn->target_ce_def = QCA6290_CE_TARGETdef; 111 break; 112 #endif 113 114 default: 115 break; 116 } 117 } 118 119 void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type) 120 { 121 switch (hif_type) { 122 case HIF_TYPE_AR6320V2: 123 scn->hostdef = &ar6320v2_hostdef; 124 break; 125 case HIF_TYPE_ADRASTEA: 126 scn->hostdef = &adrastea_hostdef; 127 scn->host_shadow_regs = &adrastea_host_shadow_regs; 128 break; 129 #if defined(AR6002_HEADERS_DEF) 130 case HIF_TYPE_AR6002: 131 scn->hostdef = AR6002_HOSTdef; 132 break; 133 #endif 134 #if defined(AR6003_HEADERS_DEF) 135 case HIF_TYPE_AR6003: 136 scn->hostdef = AR6003_HOSTdef; 137 break; 138 #endif 139 #if defined(AR6004_HEADERS_DEF) 140 case HIF_TYPE_AR6004: 141 scn->hostdef = AR6004_HOSTdef; 142 break; 143 #endif 144 #if defined(AR9888_HEADERS_DEF) 145 case HIF_TYPE_AR9888: 146 scn->hostdef = AR9888_HOSTdef; 147 break; 148 #endif 149 #if defined(AR9888V2_HEADERS_DEF) 150 case HIF_TYPE_AR9888V2: 151 scn->hostdef = AR9888V2_HOSTdef; 152 break; 153 #endif 154 #if defined(AR900B_HEADERS_DEF) 155 case HIF_TYPE_AR900B: 156 scn->hostdef = AR900B_HOSTdef; 157 break; 158 #endif 159 #if defined(QCA9984_HEADERS_DEF) 160 case HIF_TYPE_QCA9984: 161 scn->hostdef = QCA9984_HOSTdef; 162 break; 163 #endif 164 #if defined(QCA9888_HEADERS_DEF) 165 case HIF_TYPE_QCA9888: 166 scn->hostdef = QCA9888_HOSTdef; 167 break; 168 #endif 169 170 #ifdef ATH_AHB 171 #if defined(IPQ4019_HEADERS_DEF) 172 case HIF_TYPE_IPQ4019: 173 scn->hostdef = IPQ4019_HOSTdef; 174 break; 175 #endif 176 #endif 177 #if defined(QCA8074_HEADERS_DEF) 178 case HIF_TYPE_QCA8074: 179 scn->hostdef = QCA8074_HOSTdef; 180 break; 181 #endif 182 183 #if defined(QCA6290_HEADERS_DEF) 184 case HIF_TYPE_QCA6290: 185 scn->hostdef = QCA6290_HOSTdef; 186 break; 187 #endif 188 189 default: 190 break; 191 } 192 } 193