⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmic_regulator.cpp

📁 i.mx27 soc for wince 6.0
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOHIEN);
            break;

        case VIOLO:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VIOLOEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOLOEN);
            break;
             
        case VDIG:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VDIGEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VDIGEN);
            break;
             
        case VGEN:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VGENEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VGENEN);
            break;
             
        case VRFDIG:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFDIGEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFDIGEN);
            break;
             
        case VRFREF:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFREFEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFREFEN);
            break;
             
        case VRFCP:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFCPEN, ENABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFCPEN);
            break;

                     
        case VSIM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VSIMEN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VSIMEN);
             break;
             
        case VESIM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VESIMEN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VESIMEN);
             break;
             
        case VCAM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VCAMEN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VCAMEN);
             break;

        case V_VIB:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VVIBEN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VVIBEN);
             break;

        case VRF1:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VRF1EN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF1EN);
             break;
        case VRF2:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VRF2EN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF2EN);
             break;
        case VMMC1:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VMMC1EN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC1EN);
             break;
        case VMMC2:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VMMC2EN, ENABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC2EN);
             break;

		default:
			return PMIC_PARAMETER_ERROR;
    }

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
            sizeof(param), NULL, 0, NULL, NULL))
            return PMIC_ERROR;

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}

//------------------------------------------------------------------------------
//
// Function: PmicVoltageRegulatorOff
//
// This function is used to turn off the regulator
//
// Parameters:
//             regulator [in]              which voltage regulator to turn off
// 
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicVoltageRegulatorOff (PMIC_REGULATOR_VREG regulator) 
{
    PMIC_PARAM_LLA_WRITE_REG param;
   
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    switch (regulator) 
    {
        case VIOHI:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VIOHIEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOHIEN);
            break;
             
        case VIOLO:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VIOLOEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VIOLOEN);
            break;

        case VDIG:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VDIGEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VDIGEN);
            break;
             
        case VGEN:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VGENEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VGENEN);
            break;
             
        case VRFDIG:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFDIGEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFDIGEN);
            break;
             
        case VRFREF:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFREFEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFREFEN);
            break;
             
        case VRFCP:
            param.addr = MC13783_REG_MOD0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_MODE0_VRFCPEN, DISABLE);
            param.mask = CSP_BITFMASK(MC13783_REG_MODE0_VRFCPEN);
            break;

                     
        case VSIM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VSIMEN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VSIMEN);
             break;
             
        case VESIM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VESIMEN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VESIMEN);
             break;
             
        case VCAM:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VCAMEN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VCAMEN);
             break;

        case V_VIB:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VVIBEN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VVIBEN);
             break;

        case VRF1:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VRF1EN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF1EN);
             break;
        case VRF2:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VRF2EN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VRF2EN);
             break;
        case VMMC1:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VMMC1EN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC1EN);
             break;
        case VMMC2:
             param.addr = MC13783_REG_MOD1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_MODE1_VMMC2EN, DISABLE);
             param.mask = CSP_BITFMASK(MC13783_REG_MODE1_VMMC2EN);
             break;
		
		default:
			return PMIC_PARAMETER_ERROR;
    }

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
            sizeof(param), NULL, 0, NULL, NULL))
            return PMIC_ERROR;

    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;
}


//------------------------------------------------------------------------------
//
// Function: PmicVoltageRegulatorSetVoltageLevel
//
// This function is used to set voltage level for the voltage regulator.
//
// Parameters:
//          regulator [in]     which voltage regulator to be set
//          voltage [in]       the voltage level to set
//
// Returns:
//          status 
//                  PMIC_SUCCESS for success and PMIC_ERROR for failure
//
//------------------------------------------------------------------------------
PMIC_STATUS PmicVoltageRegulatorSetVoltageLevel (
                                                       PMIC_REGULATOR_VREG regulator, 
                                                       PMIC_REGULATOR_VREG_VOLTAGE voltage ) 
{
    PMIC_PARAM_LLA_WRITE_REG param;
       
    DEBUGMSG(ZONE_FUNC, (TEXT("+%s()\r\n"), __WFUNCTION__));

    switch (regulator) 
    {
        case VIOHI:
            // VIOHI is fixed to 2.775v output.
            return PMIC_SUCCESS;

        case VIOLO:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VIOLO, voltage.violo);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VIOLO);
            break;
             
        case VDIG:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VDIG, voltage.vdig);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VDIG);
            break;
             
        case VGEN:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VGEN, voltage.vgen);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VGEN);
            break;
             
        case VRFDIG:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VRFDIG, voltage.vrfdig);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFDIG);
            break;
             
        case VRFREF:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VRFREF, voltage.vrfref);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFREF);
            break;
             
        case VRFCP:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VRFCP, voltage.vrfcp);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VRFCP);
            break;

                     
        case VSIM:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VSIM, voltage.vsim);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VSIM);
             break;
             
        case VESIM:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VESIM, voltage.vesim);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VESIM);
             break;
             
        case VCAM:
            param.addr = MC13783_REG_SET0_ADDR;
            param.data =    CSP_BITFVAL(MC13783_REG_SET0_VCAM, voltage.vcam);
            param.mask = CSP_BITFMASK(MC13783_REG_SET0_VCAM);
             break;

        case V_VIB:
             param.addr = MC13783_REG_SET1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_SET1_VVIB, voltage.v_vib);
             param.mask = CSP_BITFMASK(MC13783_REG_SET1_VVIB);
             break;

        case VRF1:
             param.addr = MC13783_REG_SET1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_SET1_VRF1, voltage.vrf);
             param.mask = CSP_BITFMASK(MC13783_REG_SET1_VRF1);
             break;
             
        case VRF2:
             param.addr = MC13783_REG_SET1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_SET1_VRF2, voltage.vrf);
             param.mask = CSP_BITFMASK(MC13783_REG_SET1_VRF2);
             break;
             
        case VMMC1:
             param.addr = MC13783_REG_SET1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_SET1_VMMC1, voltage.vmmc);
             param.mask = CSP_BITFMASK(MC13783_REG_SET1_VMMC1);
             break;
             
        case VMMC2:
             param.addr = MC13783_REG_SET1_ADDR;
             param.data =   CSP_BITFVAL(MC13783_REG_SET1_VMMC2, voltage.vmmc);
             param.mask = CSP_BITFMASK(MC13783_REG_SET1_VMMC2);
             break;

		default:
			return PMIC_PARAMETER_ERROR;
    }

    if(!DeviceIoControl(hPMI, PMIC_IOCTL_LLA_WRITE_REG, &param,
            sizeof(param), NULL, 0, NULL, NULL)) 
            return PMIC_ERROR;          
    
    DEBUGMSG(ZONE_FUNC, (TEXT("-%s()\r\n"), __WFUNCTION__));

    return PMIC_SUCCESS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -