INT32 wmt_ctrl_hw_pwr_off(P_WMT_CTRL_DATA pWmtCtrlData) { INT32 iret; /*psm should be disabled before wmt_ic_deinit*/ P_DEV_WMT pDev = &gDevWmt; if (osal_test_and_clear_bit(WMT_STAT_PWR, &pDev->state)) { WMT_DBG_FUNC("on->off\n"); iret = wmt_plat_pwr_ctrl(FUNC_OFF); } else { WMT_WARN_FUNC("already off\n"); iret = 0; } return iret; }
INT32 wmt_ctrl_sdio_hw(P_WMT_CTRL_DATA pWmtCtrlData) { INT32 iRet = 0; UINT32 statBit = WMT_STAT_SDIO1_ON; P_DEV_WMT pDev = &gDevWmt; /* single instance */ WMT_SDIO_SLOT_NUM sdioSlotNum = pWmtCtrlData->au4CtrlData[0]; ENUM_FUNC_STATE funcState = pWmtCtrlData->au4CtrlData[1]; if ((WMT_SDIO_SLOT_INVALID == sdioSlotNum) || (WMT_SDIO_SLOT_MAX <= sdioSlotNum)) { WMT_WARN_FUNC("CTRL_SDIO_SLOT(%d) but invalid slot num \n", sdioSlotNum); return -1; } WMT_DBG_FUNC("WMT_CTRL_SDIO_HW (0x%x, %d)\n", sdioSlotNum, funcState); if (WMT_SDIO_SLOT_SDIO2 == sdioSlotNum) { statBit = WMT_STAT_SDIO2_ON; } if (funcState) { if (osal_test_and_set_bit(statBit, &pDev->state)) { WMT_WARN_FUNC("CTRL_SDIO_SLOT slotNum(%d) already ON \n", sdioSlotNum); //still return 0 iRet = 0; } else { iRet = wmt_plat_sdio_ctrl(sdioSlotNum, FUNC_ON); } } else { if (osal_test_and_clear_bit(statBit, &pDev->state)) { iRet = wmt_plat_sdio_ctrl(sdioSlotNum, FUNC_OFF); } else { WMT_WARN_FUNC("CTRL_SDIO_SLOT slotNum(%d) already OFF \n", sdioSlotNum); //still return 0 iRet = 0; } } return iRet; }