int hif_sdio_match_chipid_by_dev_id (const struct sdio_device_id *id) { int maxIndex = sizeof (gChipInfoArray) / sizeof (gChipInfoArray[0]); int index = 0; struct sdio_device_id *localId = NULL; int chipId = -1; for (index = 0; index < maxIndex; index++) { localId = &(gChipInfoArray[index].deviceId); if ((localId->vendor == id->vendor) && (localId->device == id->device)) { chipId = gChipInfoArray[index].chipId; WMT_DETECT_INFO_FUNC("valid chipId found, index(%d), vendor id(0x%x), device id(0x%x), chip id(0x%x)\n", index, localId->vendor, localId->device, chipId); gComboChipId = chipId; mtk_wcn_wmt_set_chipid(gComboChipId); break; } } if (0 > chipId) { WMT_DETECT_ERR_FUNC("No valid chipId found, vendor id(0x%x), device id(0x%x)\n", id->vendor, id->device); } return chipId; }
static long wmt_detect_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int retval = 0; WMT_DETECT_INFO_FUNC("cmd (%d),arg(%ld)\n", cmd,arg); switch(cmd){ case COMBO_IOCTL_GET_CHIP_ID: /*just get chipid from sdio-detect module*/ /*check if external combo chip exists or not*/ /*if yes, just return combo chip id*/ /*if no, get soc chipid*/ retval = mtk_wcn_wmt_chipid_query(); break; case COMBO_IOCTL_SET_CHIP_ID: mtk_wcn_wmt_set_chipid(arg); break; case COMBO_IOCTL_EXT_CHIP_PWR_ON: retval = wmt_detect_ext_chip_pwr_on(); break; case COMBO_IOCTL_EXT_CHIP_DETECT: retval = wmt_detect_ext_chip_detect(); break; case COMBO_IOCTL_EXT_CHIP_PWR_OFF: retval = wmt_detect_ext_chip_pwr_off(); break; case COMBO_IOCTL_DO_SDIO_AUDOK: retval = sdio_detect_do_autok(arg); break; case COMBO_IOCTL_GET_SOC_CHIP_ID: retval = wmt_plat_get_soc_chipid(); /*get soc chipid by HAL interface*/ break; case COMBO_IOCTL_MODULE_CLEANUP: #if (MTK_WCN_REMOVE_KO) /*deinit SDIO-DETECT module*/ retval = sdio_detect_exit(); #else WMT_DETECT_INFO_FUNC("no MTK_WCN_REMOVE_KO defined\n"); #endif break; case COMBO_IOCTL_DO_MODULE_INIT: #if (MTK_WCN_REMOVE_KO) /*deinit SDIO-DETECT module*/ retval = do_connectivity_driver_init(arg); #else WMT_DETECT_INFO_FUNC("no MTK_WCN_REMOVE_KO defined\n"); #endif break; default: WMT_DETECT_WARN_FUNC("unknown cmd (%d)\n", cmd); retval = 0; break; } return retval; }