int wmt_detect_sdio_pwr_ctrl (int on)
{
	int retval = -1;
#ifdef MTK_WCN_COMBO_CHIP_SUPPORT	
	if (0 == on)
	{
		/*power off SDIO slot*/
		retval = board_sdio_ctrl(1, 0);
	}
	else
	{
		/*power on SDIO slot*/
		retval = board_sdio_ctrl(1, 1);
	}
#else
	WMT_DETECT_WARN_FUNC("WMT-DETECT: MTK_WCN_COMBO_CHIP_SUPPORT is not set\n");
#endif
	return retval;
}
Beispiel #2
0
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;
}