rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | /********************************************************************* |
| 2 | * LEGAL DISCLAIMER |
| 3 | * |
| 4 | * (Header of MediaTek Software/Firmware Release or Documentation) |
| 5 | * |
| 6 | * BY OPENING OR USING THIS FILE, BUYER HEREBY UNEQUIVOCALLY |
| 7 | * ACKNOWLEDGES AND AGREES THAT THE SOFTWARE/FIRMWARE AND ITS |
| 8 | * DOCUMENTATIONS ("MEDIATEK SOFTWARE") RECEIVED FROM MEDIATEK AND/OR |
| 9 | * ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. |
| 10 | * MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR |
| 11 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| 12 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR |
| 13 | * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY |
| 14 | * WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH |
| 15 | * MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK |
| 16 | * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY |
| 17 | * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE |
| 18 | * RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| 19 | * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| 20 | * |
| 21 | * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND |
| 22 | * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED |
| 23 | * HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE |
| 24 | * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR |
| 25 | * SERVICE CHARGE PAID BY BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE |
| 26 | * AT ISSUE. |
| 27 | * |
| 28 | * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN |
| 29 | * ACCORDANCE WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING |
| 30 | * ITS CONFLICT OF LAWS PRINCIPLES. |
| 31 | ********************************************************************** |
| 32 | */ |
| 33 | |
| 34 | |
| 35 | /******************************************************************************* |
| 36 | |
| 37 | * Include files |
| 38 | |
| 39 | ******************************************************************************/ |
| 40 | |
| 41 | #include "drv_iomux.h" |
| 42 | #include "kal_public_api.h" |
| 43 | /******************************************************************************* |
| 44 | |
| 45 | * LOCAL CONST DEFINATION |
| 46 | |
| 47 | ******************************************************************************/ |
| 48 | |
| 49 | |
| 50 | /******************************************************************************* |
| 51 | |
| 52 | * LOCAL TYPE DEFINATION |
| 53 | |
| 54 | ******************************************************************************/ |
| 55 | |
| 56 | |
| 57 | /******************************************************************************* |
| 58 | |
| 59 | * EXTERN DECLARATION |
| 60 | |
| 61 | ******************************************************************************/ |
| 62 | |
| 63 | |
| 64 | /******************************************************************************* |
| 65 | |
| 66 | * GLOBAL VARIABLE DEFINATIONS |
| 67 | |
| 68 | *******************************************************************************/ |
| 69 | kal_uint32 IOMUX_funcValid_check(kal_uint32 function_num, mod_sel_t mod_num, kal_uint32 sip_flag){ |
| 70 | return 0; |
| 71 | |
| 72 | } |
| 73 | |
| 74 | /* |
| 75 | * @brief set IOPAD group to special funciton mode |
| 76 | * @param |
| 77 | * funciton_num: function mode selection valid value 0~5; |
| 78 | * mod_num: IOPAD group selection, valied value please see enum module_sel; |
| 79 | * sip_flag: choose the chip is SIP or Non-SIP. |
| 80 | * 0: non-sip ; 1: sip |
| 81 | * @return |
| 82 | */ |
| 83 | |
| 84 | void IOMUX_set_module_func(mod_sel_t mod_num, kal_uint32 function_num){ |
| 85 | |
| 86 | kal_uint32 group_offset = 0; |
| 87 | kal_uint32 mod_offset = 0; |
| 88 | kal_uint32 gpio_val; |
| 89 | if(function_num>5){ |
| 90 | ASSERT(0); |
| 91 | } |
| 92 | if(mod_num< SEL_PMIC_BSI_0){ |
| 93 | group_offset = IOMUX0_MODE_SEL_1; |
| 94 | mod_offset = mod_num; |
| 95 | }else if(mod_num<SEL_C2K_UT0){ |
| 96 | group_offset = IOMUX0_MODE_SEL_2; |
| 97 | mod_offset = mod_num-SEL_PMIC_BSI_0; |
| 98 | }else if(mod_num< SEL_MISC_BSI_0){ |
| 99 | group_offset = IOMUX0_MODE_SEL_3; |
| 100 | mod_offset = mod_num-SEL_C2K_UT0; |
| 101 | }else if(mod_num< SEL_GPIO_0){ |
| 102 | group_offset = IOMUX1_MODE_SEL_0; |
| 103 | mod_offset = mod_num-SEL_MISC_BSI_0; |
| 104 | }else if(mod_num< SEL_BPI_0){ |
| 105 | group_offset = IOMUX1_MODE_SEL_1; |
| 106 | mod_offset = mod_num-SEL_GPIO_0; |
| 107 | }else if(mod_num< SEL_BPI_10){ |
| 108 | group_offset = IOMUX2_MODE_SEL_0; |
| 109 | mod_offset = mod_num-SEL_BPI_0; |
| 110 | }else if(mod_num< SEL_NFI_0){ |
| 111 | group_offset = IOMUX2_MODE_SEL_1; |
| 112 | mod_offset = mod_num-SEL_BPI_10; |
| 113 | }else if(mod_num< SEL_NFI_10){ |
| 114 | group_offset = IOMUX2_MODE_SEL_2; |
| 115 | mod_offset = mod_num-SEL_NFI_0; |
| 116 | }else if(mod_num< SEL_NFI_20){ |
| 117 | group_offset = IOMUX2_MODE_SEL_3; |
| 118 | mod_offset = mod_num-SEL_NFI_10; |
| 119 | }else if(mod_num< SEL_USIM_1){ |
| 120 | group_offset = IOMUX2_MODE_SEL_4; |
| 121 | mod_offset = mod_num-SEL_NFI_20; |
| 122 | }else if(mod_num<= SEL_SPI_1){ |
| 123 | group_offset = IOMUX2_MODE_SEL_5; |
| 124 | mod_offset = mod_num-SEL_USIM_1; |
| 125 | }else{ |
| 126 | ASSERT(0); |
| 127 | } |
| 128 | gpio_val = DRV_Reg32(group_offset); |
| 129 | gpio_val &= ~(0x7<<mod_offset*3); |
| 130 | gpio_val |= (function_num<<mod_offset*3); |
| 131 | DRV_WriteReg32(group_offset, gpio_val); |
| 132 | } |
| 133 | |
| 134 | /* |
| 135 | * @brief Get the special funciton mode of the IOPAD group. |
| 136 | * @param |
| 137 | * mod_num: IOPAD group selection, valied value please see enum module_sel; |
| 138 | * @return |
| 139 | return the function mode, valid value 0~5; |
| 140 | */ |
| 141 | kal_uint32 IOMUX_get_module_func(mod_sel_t mod_num){ |
| 142 | |
| 143 | kal_uint32 group_offset = 0; |
| 144 | kal_uint32 mod_offset = 0; |
| 145 | kal_uint32 gpio_val; |
| 146 | |
| 147 | if(mod_num< SEL_PMIC_BSI_0){ |
| 148 | group_offset = IOMUX0_MODE_SEL_1; |
| 149 | mod_offset = mod_num; |
| 150 | }else if(mod_num<SEL_C2K_UT0){ |
| 151 | group_offset = IOMUX0_MODE_SEL_2; |
| 152 | mod_offset = mod_num-SEL_PMIC_BSI_0; |
| 153 | }else if(mod_num< SEL_MISC_BSI_0){ |
| 154 | group_offset = IOMUX0_MODE_SEL_3; |
| 155 | mod_offset = mod_num-SEL_C2K_UT0; |
| 156 | }else if(mod_num< SEL_GPIO_0){ |
| 157 | group_offset = IOMUX1_MODE_SEL_0; |
| 158 | mod_offset = mod_num-SEL_MISC_BSI_0; |
| 159 | }else if(mod_num< SEL_BPI_0){ |
| 160 | group_offset = IOMUX1_MODE_SEL_1; |
| 161 | mod_offset = mod_num-SEL_GPIO_0; |
| 162 | }else if(mod_num< SEL_BPI_10){ |
| 163 | group_offset = IOMUX2_MODE_SEL_0; |
| 164 | mod_offset = mod_num-SEL_BPI_0; |
| 165 | }else if(mod_num< SEL_NFI_0){ |
| 166 | group_offset = IOMUX2_MODE_SEL_1; |
| 167 | mod_offset = mod_num-SEL_BPI_10; |
| 168 | }else if(mod_num< SEL_NFI_10){ |
| 169 | group_offset = IOMUX2_MODE_SEL_2; |
| 170 | mod_offset = mod_num-SEL_NFI_0; |
| 171 | }else if(mod_num< SEL_NFI_20){ |
| 172 | group_offset = IOMUX2_MODE_SEL_3; |
| 173 | mod_offset = mod_num-SEL_NFI_10; |
| 174 | }else if(mod_num< SEL_USIM_1){ |
| 175 | group_offset = IOMUX2_MODE_SEL_4; |
| 176 | mod_offset = mod_num-SEL_NFI_20; |
| 177 | }else if(mod_num<= SEL_SPI_1){ |
| 178 | group_offset = IOMUX2_MODE_SEL_5; |
| 179 | mod_offset = mod_num-SEL_USIM_1; |
| 180 | }else{ |
| 181 | ASSERT(0); |
| 182 | } |
| 183 | gpio_val = DRV_Reg32(group_offset); |
| 184 | gpio_val &= (0x7<<mod_offset*3); |
| 185 | gpio_val = gpio_val>>mod_offset; |
| 186 | |
| 187 | return gpio_val; |
| 188 | |
| 189 | } |
| 190 | |
| 191 | /* |
| 192 | SDIO IOPAD drving table: |
| 193 | DRIVE Driving Current (mA) |
| 194 | 000 3 |
| 195 | 001 6 |
| 196 | 010 9 |
| 197 | 011 12 |
| 198 | 100 15 |
| 199 | 101 18 |
| 200 | 110 21 |
| 201 | 111 24 |
| 202 | |
| 203 | Other IOPAD Driving table: |
| 204 | DRIVE Driving Current (mA) |
| 205 | (3.3V mode) (1.8V mode) |
| 206 | 00 4 3 |
| 207 | 01 8 6 |
| 208 | 10 12 9 |
| 209 | 11 16 12 |
| 210 | |
| 211 | */ |
| 212 | |
| 213 | void IOMUX_set_module_driving(config_sel_t cfg_sel, kal_uint32 drv_sel){ |
| 214 | kal_uint32 gpio_val; |
| 215 | kal_uint32 group_offset; |
| 216 | switch(cfg_sel){ |
| 217 | case CFG_GLOBAL: group_offset = IOMUX_CFG_GLOBAL; break; |
| 218 | case CFG_MDUART: group_offset = IOMUX_CFG_MDUART; break; |
| 219 | case CFG_APUART: group_offset = IOMUX_CFG_APUART ; break; |
| 220 | case CFG_SUART0: group_offset = IOMUX_CFG_SUART0; break; |
| 221 | case CFG_SUART1 : group_offset = IOMUX_CFG_SUART1; break; |
| 222 | case CFG_SDIO: group_offset = IOMUX_CFG_SDIO ; break; |
| 223 | case CFG_MSDC0P_0: group_offset = IOMUX_CFG_MSDC0P_0; break; |
| 224 | case CFG_MSDC0P_1: group_offset = IOMUX_CFG_MSDC0P_1; break; |
| 225 | case CFG_MSDC0P_2: group_offset = IOMUX_CFG_MSDC0P_2; break; |
| 226 | case CFG_MSDC1P: group_offset = IOMUX_CFG_MSDC1P; break; |
| 227 | case CFG_PMIC_BSI_0: group_offset = IOMUX_CFG_PMIC_BSI_0; break; |
| 228 | case CFG_PMIC_BSI_1: group_offset = IOMUX_CFG_PMIC_BSI_1; break; |
| 229 | case CFG_PMIC_BSI_2: group_offset = IOMUX_CFG_PMIC_BSI_2; break; |
| 230 | case CFG_RFIC2_BSI_0: group_offset = IOMUX_CFG_RFIC2_BSI_0; break; |
| 231 | case CFG_RFIC2_BSI_1: group_offset = IOMUX_CFG_RFIC2_BSI_1; break; |
| 232 | case CFG_CV : group_offset = IOMUX_CFG_CV ; break; |
| 233 | case CFG_SB : group_offset = IOMUX_CFG_SB; break; |
| 234 | case CFG_I2C: group_offset = IOMUX_CFG_I2C; break; |
| 235 | case CFG_SDIO_INT: group_offset = CFG_SDIO_INT; break; |
| 236 | case CFG_MSDC1P_CLK: group_offset = IOMUX_CFG_MSDC1P_CLK; break; |
| 237 | case CFG_MSDC1P_CMD: group_offset = IOMUX_CFG_MSDC1P_CMD; break; |
| 238 | case CFG_MSDC1P_DATA0: group_offset = IOMUX_CFG_MSDC1P_DATA0; break; |
| 239 | case CFG_MSDC1P_DATA1: group_offset = IOMUX_CFG_MSDC1P_DATA1; break; |
| 240 | case CFG_MSDC1P_DATA2: group_offset = IOMUX_CFG_MSDC1P_DATA2; break; |
| 241 | case CFG_MSDC1P_DATA3: group_offset = IOMUX_CFG_MSDC1P_DATA3; break; |
| 242 | case CFG_MSDC1P_RCLK: group_offset = IOMUX_CFG_MSDC1P_RCLK; break; |
| 243 | case CFG_BIAS_TUNE_0: group_offset = IOMUX0_CFG_BIAS_TUNE; break; |
| 244 | case CFG_RFIC1_BSI: group_offset = IOMUX_CFG_RFIC1_BSI; break; |
| 245 | case CFG_MISC_BSI_0: group_offset = IOMUX_CFG_MISC_BSI_0; break; |
| 246 | case CFG_MISC_BSI_1: group_offset = IOMUX_CFG_MISC_BSI_1; break; |
| 247 | case CFG_GPIO_0: group_offset = IOMUX_CFG_GPIO_0; break; |
| 248 | case CFG_GPIO_1: group_offset = IOMUX_CFG_GPIO_1; break; |
| 249 | case CFG_GPIO_2: group_offset = IOMUX_CFG_GPIO_2; break; |
| 250 | case CFG_GPIO_3: group_offset = IOMUX_CFG_GPIO_3; break; |
| 251 | case CFG_BIAS_TUNE_1: group_offset = IOMUX1_CFG_BIAS_TUNE; break; |
| 252 | case CFG_JTAG: group_offset = IOMUX_CFG_JTAG ; break; |
| 253 | case CFG_SPI_0: group_offset = IOMUX_CFG_SPI_0; break; |
| 254 | case CFG_SPI_1: group_offset = IOMUX_CFG_SPI_1; break; |
| 255 | case CFG_NFI_0: group_offset = IOMUX_CFG_NFI_0; break; |
| 256 | case CFG_NFI_1: group_offset = IOMUX_CFG_NFI_1; break; |
| 257 | case CFG_NFI_2: group_offset = IOMUX_CFG_NFI_2; break; |
| 258 | case CFG_NFI_3: group_offset = IOMUX_CFG_NFI_3; break; |
| 259 | case CFG_NFI_4: group_offset = IOMUX_CFG_NFI_4; break; |
| 260 | case CFG_BPI_0: group_offset = IOMUX_CFG_BPI_0; break; |
| 261 | case CFG_BPI_1: group_offset = IOMUX_CFG_BPI_1; break; |
| 262 | case CFG_BPI_2: group_offset = IOMUX_CFG_BPI_2; break; |
| 263 | case CFG_BPI_3: group_offset = IOMUX_CFG_BPI_3; break; |
| 264 | case CFG_BPI_4: group_offset = IOMUX_CFG_BPI_4; break; |
| 265 | case CFG_BPI_5: group_offset = IOMUX_CFG_BPI_5; break; |
| 266 | case CFG_BPI_6: group_offset = IOMUX_CFG_BPI_6; break; |
| 267 | case CFG_BPI_7: group_offset = IOMUX_CFG_BPI_7; break; |
| 268 | case CFG_BPI_8: group_offset = IOMUX_CFG_BPI_8; break; |
| 269 | case CFG_BPI_9: group_offset = IOMUX_CFG_BPI_9; break; |
| 270 | case CFG_BPI_10: group_offset = IOMUX_CFG_BPI_10; break; |
| 271 | case CFG_BPI_11: group_offset = IOMUX_CFG_BPI_11; break; |
| 272 | case CFG_USIM1: group_offset = IOMUX_CFG_USIM1; break; |
| 273 | case CFG_USIM2: group_offset = IOMUX_CFG_USIM2; break; |
| 274 | case CFG_BIAS_TUNE_2: group_offset = IOMUX2_CFG_BIAS_TUNE; break; |
| 275 | default: |
| 276 | ASSERT(0); |
| 277 | break; |
| 278 | } |
| 279 | gpio_val = DRV_Reg32(group_offset); |
| 280 | if(cfg_sel ==CFG_SDIO){ |
| 281 | gpio_val &= ~(0x7<<10); |
| 282 | if(drv_sel>0x7){ |
| 283 | ASSERT(0); |
| 284 | } |
| 285 | |
| 286 | }else{ |
| 287 | gpio_val &= ~(0x3<<10); |
| 288 | if(drv_sel>0x7){ |
| 289 | ASSERT(0); |
| 290 | } |
| 291 | } |
| 292 | gpio_val |= (drv_sel<<10); |
| 293 | DRV_WriteReg32(group_offset, gpio_val); |
| 294 | |
| 295 | } |
| 296 | |
| 297 | kal_uint32 IOMUX_get_module_driving(config_sel_t cfg_sel ){ |
| 298 | kal_uint32 drv_sel; |
| 299 | kal_uint32 gpio_val; |
| 300 | kal_uint32 group_offset; |
| 301 | |
| 302 | switch(cfg_sel){ |
| 303 | case CFG_GLOBAL: group_offset = IOMUX_CFG_GLOBAL; break; |
| 304 | case CFG_MDUART: group_offset = IOMUX_CFG_MDUART; break; |
| 305 | case CFG_APUART: group_offset = IOMUX_CFG_APUART ; break; |
| 306 | case CFG_SUART0: group_offset = IOMUX_CFG_SUART0; break; |
| 307 | case CFG_SUART1 : group_offset = IOMUX_CFG_SUART1; break; |
| 308 | case CFG_SDIO: group_offset = IOMUX_CFG_SDIO ; break; |
| 309 | case CFG_MSDC0P_0: group_offset = IOMUX_CFG_MSDC0P_0; break; |
| 310 | case CFG_MSDC0P_1: group_offset = IOMUX_CFG_MSDC0P_1; break; |
| 311 | case CFG_MSDC0P_2: group_offset = IOMUX_CFG_MSDC0P_2; break; |
| 312 | case CFG_MSDC1P: group_offset = IOMUX_CFG_MSDC1P; break; |
| 313 | case CFG_PMIC_BSI_0: group_offset = IOMUX_CFG_PMIC_BSI_0; break; |
| 314 | case CFG_PMIC_BSI_1: group_offset = IOMUX_CFG_PMIC_BSI_1; break; |
| 315 | case CFG_PMIC_BSI_2: group_offset = IOMUX_CFG_PMIC_BSI_2; break; |
| 316 | case CFG_RFIC2_BSI_0: group_offset = IOMUX_CFG_RFIC2_BSI_0; break; |
| 317 | case CFG_RFIC2_BSI_1: group_offset = IOMUX_CFG_RFIC2_BSI_1; break; |
| 318 | case CFG_CV : group_offset = IOMUX_CFG_CV ; break; |
| 319 | case CFG_SB : group_offset = IOMUX_CFG_SB; break; |
| 320 | case CFG_I2C: group_offset = IOMUX_CFG_I2C; break; |
| 321 | case CFG_SDIO_INT: group_offset = CFG_SDIO_INT; break; |
| 322 | case CFG_MSDC1P_CLK: group_offset = IOMUX_CFG_MSDC1P_CLK; break; |
| 323 | case CFG_MSDC1P_CMD: group_offset = IOMUX_CFG_MSDC1P_CMD; break; |
| 324 | case CFG_MSDC1P_DATA0: group_offset = IOMUX_CFG_MSDC1P_DATA0; break; |
| 325 | case CFG_MSDC1P_DATA1: group_offset = IOMUX_CFG_MSDC1P_DATA1; break; |
| 326 | case CFG_MSDC1P_DATA2: group_offset = IOMUX_CFG_MSDC1P_DATA2; break; |
| 327 | case CFG_MSDC1P_DATA3: group_offset = IOMUX_CFG_MSDC1P_DATA3; break; |
| 328 | case CFG_MSDC1P_RCLK: group_offset = IOMUX_CFG_MSDC1P_RCLK; break; |
| 329 | case CFG_BIAS_TUNE_0: group_offset = IOMUX0_CFG_BIAS_TUNE; break; |
| 330 | case CFG_RFIC1_BSI: group_offset = IOMUX_CFG_RFIC1_BSI; break; |
| 331 | case CFG_MISC_BSI_0: group_offset = IOMUX_CFG_MISC_BSI_0; break; |
| 332 | case CFG_MISC_BSI_1: group_offset = IOMUX_CFG_MISC_BSI_1; break; |
| 333 | case CFG_GPIO_0: group_offset = IOMUX_CFG_GPIO_0; break; |
| 334 | case CFG_GPIO_1: group_offset = IOMUX_CFG_GPIO_1; break; |
| 335 | case CFG_GPIO_2: group_offset = IOMUX_CFG_GPIO_2; break; |
| 336 | case CFG_GPIO_3: group_offset = IOMUX_CFG_GPIO_3; break; |
| 337 | case CFG_BIAS_TUNE_1: group_offset = IOMUX1_CFG_BIAS_TUNE; break; |
| 338 | case CFG_JTAG: group_offset = IOMUX_CFG_JTAG ; break; |
| 339 | case CFG_SPI_0: group_offset = IOMUX_CFG_SPI_0; break; |
| 340 | case CFG_SPI_1: group_offset = IOMUX_CFG_SPI_1; break; |
| 341 | case CFG_NFI_0: group_offset = IOMUX_CFG_NFI_0; break; |
| 342 | case CFG_NFI_1: group_offset = IOMUX_CFG_NFI_1; break; |
| 343 | case CFG_NFI_2: group_offset = IOMUX_CFG_NFI_2; break; |
| 344 | case CFG_NFI_3: group_offset = IOMUX_CFG_NFI_3; break; |
| 345 | case CFG_NFI_4: group_offset = IOMUX_CFG_NFI_4; break; |
| 346 | case CFG_BPI_0: group_offset = IOMUX_CFG_BPI_0; break; |
| 347 | case CFG_BPI_1: group_offset = IOMUX_CFG_BPI_1; break; |
| 348 | case CFG_BPI_2: group_offset = IOMUX_CFG_BPI_2; break; |
| 349 | case CFG_BPI_3: group_offset = IOMUX_CFG_BPI_3; break; |
| 350 | case CFG_BPI_4: group_offset = IOMUX_CFG_BPI_4; break; |
| 351 | case CFG_BPI_5: group_offset = IOMUX_CFG_BPI_5; break; |
| 352 | case CFG_BPI_6: group_offset = IOMUX_CFG_BPI_6; break; |
| 353 | case CFG_BPI_7: group_offset = IOMUX_CFG_BPI_7; break; |
| 354 | case CFG_BPI_8: group_offset = IOMUX_CFG_BPI_8; break; |
| 355 | case CFG_BPI_9: group_offset = IOMUX_CFG_BPI_9; break; |
| 356 | case CFG_BPI_10: group_offset = IOMUX_CFG_BPI_10; break; |
| 357 | case CFG_BPI_11: group_offset = IOMUX_CFG_BPI_11 ; break; |
| 358 | case CFG_USIM1: group_offset = IOMUX_CFG_USIM1; break; |
| 359 | case CFG_USIM2: group_offset = IOMUX_CFG_USIM2; break; |
| 360 | case CFG_BIAS_TUNE_2: group_offset = IOMUX2_CFG_BIAS_TUNE; break; |
| 361 | default: |
| 362 | ASSERT(0); |
| 363 | break; |
| 364 | } |
| 365 | gpio_val = DRV_Reg32(group_offset); |
| 366 | if(cfg_sel ==CFG_SDIO){ |
| 367 | gpio_val &= (0x7<<10); |
| 368 | drv_sel = (gpio_val>>10); |
| 369 | |
| 370 | }else{ |
| 371 | gpio_val &= (0x3<<10); |
| 372 | drv_sel = (gpio_val>>10); |
| 373 | } |
| 374 | |
| 375 | return drv_sel; |
| 376 | } |
| 377 | |
| 378 | void IOMUX_set_moduleconfig(module_conf_t* iomux_cfg){} |
| 379 | module_conf_t* IOMUX_get_moduleconfig(config_sel_t cfg_sel, module_type_t type){ |
| 380 | return 0; |
| 381 | } |
| 382 | |
| 383 | void IOMUX_init(){ |
| 384 | //kal_uint32 func_num = 0; |
| 385 | //IOMUX_PRINT("IOMUX init"); |
| 386 | #error "The chip type is non-supported" |
| 387 | |
| 388 | |
| 389 | |
| 390 | } |
| 391 | |
| 392 | |
| 393 | |