INT32 wmt_dbg_reg_write(INT32 par1, INT32 par2, INT32 par3) { //par2-->register address //par3-->value to set UINT32 iRet = -1; #if 0 DISABLE_PSM_MONITOR(); iRet = wmt_core_reg_rw_raw(1, par2, &par3, 0xffffffff); ENABLE_PSM_MONITOR(); #endif iRet = wmt_lib_reg_rw(1, par2, &par3, 0xffffffff); WMT_INFO_FUNC("write combo chip register (0x%08x) with value (0x%08x) %s\n", \ par2, \ par3, \ iRet != 0 ? "failed" : "succeed"\ ); return 0; }
INT32 wmt_dbg_reg_read(INT32 par1, INT32 par2, INT32 par3) { //par2-->register address //par3-->register mask UINT32 value = 0x0; UINT32 iRet = -1; #if 0 DISABLE_PSM_MONITOR(); iRet = wmt_core_reg_rw_raw(0, par2, &value, par3); ENABLE_PSM_MONITOR(); #endif iRet = wmt_lib_reg_rw(0, par2, &value, par3); WMT_INFO_FUNC("read combo chip register (0x%08x) with mask (0x%08x) %s, value = 0x%08x\n", \ par2, \ par3, \ iRet != 0 ? "failed" : "succeed", \ iRet != 0 ? -1: value\ ); return 0; }
INT32 wmt_func_gps_pre_ctrl(P_WMT_IC_OPS pOps, P_WMT_GEN_CONF pConf, ENUM_FUNC_STATE funcStatus) { UINT32 i = 0; UINT32 iRet = 0; UINT32 regAddr = 0; UINT32 regValue = 0; UINT32 regMask = 0; UINT32 regNum = 0; P_CMB_PIN_CTRL_REG pReg; P_CMB_PIN_CTRL pCmbPinCtrl; WMT_CTRL_DATA ctrlData; WMT_IC_PIN_ID wmtIcPinId = WMT_IC_PIN_MAX; /* sanity check */ if (FUNC_ON != funcStatus && FUNC_OFF != funcStatus) { WMT_ERR_FUNC("invalid funcStatus(%d)\n", funcStatus); return -1; } /* turn on GPS sync function on both side */ ctrlData.ctrlId = WMT_CTRL_GPS_SYNC_SET; ctrlData.au4CtrlData[0] = (FUNC_ON == funcStatus) ? 1 : 0; iRet = wmt_ctrl(&ctrlData); if (iRet) { /*we suppose this would never print */ WMT_ERR_FUNC("ctrl GPS_SYNC_SET(%d) fail, ret(%d)\n", funcStatus, iRet); /* TODO:[FixMe][George] error handling? */ return -2; } else { WMT_INFO_FUNC("ctrl GPS_SYNC_SET(%d) ok\n", funcStatus); } if ((NULL == pOps->ic_pin_ctrl) || (0 > pOps->ic_pin_ctrl(WMT_IC_PIN_GSYNC, FUNC_ON == funcStatus ? WMT_IC_PIN_MUX : WMT_IC_PIN_GPIO, 1))) { /*WMT_IC_PIN_GSYNC */ pCmbPinCtrl = &gCmbPinCtrl[CMB_PIN_GSYNC_ID]; regNum = pCmbPinCtrl->regNum; for (i = 0; i < regNum; i++) { pReg = FUNC_ON == funcStatus ? &pCmbPinCtrl->pFuncOnArray[i] : &pCmbPinCtrl-> pFuncOffArray[i]; regAddr = pReg->regAddr; regValue = pReg->regValue; regMask = pReg->regMask; iRet = wmt_core_reg_rw_raw(1, regAddr, ®Value, regMask); if (iRet) { WMT_ERR_FUNC("set reg for GPS_SYNC function fail(%d)\n", iRet); /* TODO:[FixMe][Chaozhong] error handling? */ return -2; } } } else { WMT_INFO_FUNC("set reg for GPS_SYNC function okay by chip ic_pin_ctrl\n"); } WMT_INFO_FUNC("ctrl combo chip gps sync function succeed\n"); /* turn on GPS lna ctrl function */ if (NULL != pConf) { if (0 == pConf->wmt_gps_lna_enable) { WMT_INFO_FUNC("host pin used for gps lna\n"); /* host LNA ctrl pin needed */ ctrlData.ctrlId = WMT_CTRL_GPS_LNA_SET; ctrlData.au4CtrlData[0] = FUNC_ON == funcStatus ? 1 : 0; iRet = wmt_ctrl(&ctrlData); if (iRet) { /*we suppose this would never print */ WMT_ERR_FUNC("ctrl host GPS_LNA output high fail, ret(%d)\n", iRet); /* TODO:[FixMe][Chaozhong] error handling? */ return -3; } else { WMT_INFO_FUNC("ctrl host gps lna function succeed\n"); } } else { WMT_INFO_FUNC("combo chip pin(%s) used for gps lna\n", 0 == pConf->wmt_gps_lna_pin ? "EEDI" : "EEDO"); wmtIcPinId = 0 == pConf->wmt_gps_lna_pin ? WMT_IC_PIN_EEDI : WMT_IC_PIN_EEDO; if ((NULL == pOps->ic_pin_ctrl) || (0 > pOps->ic_pin_ctrl(wmtIcPinId, FUNC_ON == funcStatus ? WMT_IC_PIN_GPIO_HIGH : WMT_IC_PIN_GPIO_LOW, 1))) { /*WMT_IC_PIN_GSYNC */ if (0 == pConf->wmt_gps_lna_pin) { /* EEDI needed */ pCmbPinCtrl = &gCmbPinCtrl[CMB_PIN_EEDI_ID]; } else if (1 == pConf->wmt_gps_lna_pin) { /* EEDO needed */ pCmbPinCtrl = &gCmbPinCtrl[CMB_PIN_EEDO_ID]; } regNum = pCmbPinCtrl->regNum; for (i = 0; i < regNum; i++) { pReg = FUNC_ON == funcStatus ? &pCmbPinCtrl-> pFuncOnArray[i] : &pCmbPinCtrl->pFuncOffArray[i]; regAddr = pReg->regAddr; regValue = pReg->regValue; regMask = pReg->regMask; iRet = wmt_core_reg_rw_raw(1, regAddr, ®Value, regMask); if (iRet) { WMT_ERR_FUNC ("set reg for GPS_LNA function fail(%d)\n", iRet); /* TODO:[FixMe][Chaozhong] error handling? */ return -3; } } WMT_INFO_FUNC("ctrl combo chip gps lna succeed\n"); } else { WMT_INFO_FUNC ("set reg for GPS_LNA function okay by chip ic_pin_ctrl\n"); } } } return 0; }