Esempio n. 1
0
/*resume时需要开启电源*/
int bsp_pmu_sdio_resume(void)
{
    int iret = BSP_PMU_OK;
    PMIC_HI6551_VLTGS_TABLE *hi6551_volt_table = (PMIC_HI6551_VLTGS_TABLE *)SHM_PMU_VOLTTABLE_ADDR;
    PMIC_HI6551_VLTGS_ATTR *hi6551_volt;
    int i = 0 ;
    u8 volt_id = 0;
    u8 regval = 0;


    /*DDR中电压属性表安全性检查*/
    iret = hi6551_volt_table_check(hi6551_volt_table);
    if(BSP_PMU_OK != iret)
        return  BSP_PMU_VOLTTABLE_ERROR;

    //for(i = 0;i < sizeof(pmu_volt)/(sizeof((pmu_volt)[0]));i++)
    for(i = (signed)(sizeof(pmu_volt_sdio)/(sizeof((pmu_volt_sdio)[0])) - 1);i >= 0;i--)
    {
        volt_id = pmu_volt_sdio[i].volt_id;
        hi6551_volt = &hi6551_volt_table->hi6551_volt_attr[volt_id];

        if(pmu_volt_sdio[i].flag)
        {
            regval = (u8)((u32)0x1 << hi6551_volt->enable_bit_offset);
            bsp_hi6551_reg_write(hi6551_volt->enable_reg_addr, regval);
            pmu_volt_sdio[i].flag = 0;

            if(PMIC_HI6551_LDO22 == volt_id)
                udelay(20);
        }
    }

    return  BSP_PMU_OK;
}
Esempio n. 2
0
/*suspend时需要关闭电源*/
int bsp_pmu_suspend(void)
{

    int iret = BSP_PMU_OK;
    PMIC_HI6551_VLTGS_TABLE *hi6551_volt_table = (PMIC_HI6551_VLTGS_TABLE *)SHM_PMU_VOLTTABLE_ADDR;
    PMIC_HI6551_VLTGS_ATTR *hi6551_volt;
    unsigned int i = 0 ;
    u8 volt_id = 0;
    u8 regval = 0;


    /*DDR中电压属性表安全性检查*/
    iret = hi6551_volt_table_check(hi6551_volt_table);
    if(BSP_PMU_OK != iret)
        return  BSP_PMU_VOLTTABLE_ERROR;

    for(i = 0;i < sizeof(pmu_volt)/(sizeof((pmu_volt)[0]));i++)
    {
        volt_id = pmu_volt[i].volt_id;
        hi6551_volt = &hi6551_volt_table->hi6551_volt_attr[volt_id];

        bsp_hi6551_reg_read(hi6551_volt->is_enabled_reg_addr, &regval);
        if(regval & ((u32)0x1 << hi6551_volt->is_enabled_bit_offset))
        {
            regval = (u8)((u32)0x1 << hi6551_volt->disable_bit_offset);
            bsp_hi6551_reg_write(hi6551_volt->disable_reg_addr, regval);
            pmu_volt[i].flag = 1;
        }
    }

     return  BSP_PMU_OK;
}
static int __ddrrun_func pmussi_send_data (int reg_addr, char *buffer, int len)
{
    int i;

    for (i = 0; i < len; i++) {
        bsp_hi6551_reg_write( reg_addr + i, *(buffer + i));
        PMUSSI_DELAY();
    }

    return 0;
}
/*****************************************************************************
* 函 数 名  : hi6551_reg_read
*
* 功能描述  : 对pmu芯片寄存器的读函数
*
* 输入参数  : u16 addr:待写入的寄存器地址
*             u8 u8Data:读出的数据
*
* 输出参数  : 无
*
* 返 回 值  : 无
*****************************************************************************/
void bsp_dr_reg_write( u16 addr, u8 value)
{
    bsp_hi6551_reg_write(addr,value);
}
Esempio n. 5
0
void coul_reg_write(u16 reg, u8 val)
{
    bsp_hi6551_reg_write(reg, val);
}