blob: 7c9928c0700dd65116f4536fae05431d4229484c [file] [log] [blame]
/*********************************************************************
Copyright 2016 by ZIXC Corporation.
*
* FileName:: power.c
* File Mark:
* Description:
* Others:
* Version: v1.0
* Author: zhouqi
* Date: 2014-1-15
* History 1:
* Date:
* Version:
* Author:
* Modification:
* History 2:
**********************************************************************/
#include <common.h>
#include <errno.h>
#include <command.h>
#include <malloc.h>
#include <asm/io.h>
#include <power.h>
#include <config.h>
static struct pmu_opt *s_pmu = NULL;
/*******************************************************************************
* Function: power_init
* Description:
* Parameters:
* Input:
*
* Output:
*
* Returns:
*
*
* Others:
********************************************************************************/
int power_init(void)
{
/* ·ÖÅä½á¹¹Ìå¿Õ¼ä */
s_pmu = malloc(sizeof(struct pmu_opt));
if (!s_pmu)
{
printf( "power: out of memory for data structure pmu_opt\n");
return -EIO;
}
/* pmu³õʼ»¯ */
pmu_init();
return 0;
}
/*******************************************************************************
* Function: register_pmu_opt
* Description:
* Parameters:
* Input:
*
* Output:
*
* Returns:
*
*
* Others:
********************************************************************************/
int register_pmu_opt(struct pmu_opt *opt)
{
if( opt->read_reg )
s_pmu->read_reg = opt->read_reg;
else
return -EIO;
if( opt->write_reg )
s_pmu->write_reg = opt->write_reg;
else
return -EIO;
if( opt->get_boot_reason )
s_pmu->get_boot_reason = opt->get_boot_reason;
else
return -EIO;
if( opt->ps_hold_pull_on )
s_pmu->ps_hold_pull_on = opt->ps_hold_pull_on;
else
return -EIO;
if( opt->ps_hold_pull_off )
s_pmu->ps_hold_pull_off = opt->ps_hold_pull_off;
else
return -EIO;
if( opt->ps_hold2_pull_on )
s_pmu->ps_hold2_pull_on = opt->ps_hold2_pull_on;
if( opt->ps_hold2_pull_off )
s_pmu->ps_hold2_pull_off = opt->ps_hold2_pull_off;
if( opt->power_off )
s_pmu->power_off = opt->power_off;
else
return -EIO;
return SUCCESS;
}
/*******************************************************************************
* Function: get_pmu_opt
* Description:
* Parameters:
* Input:
*
* Output:
*
* Returns:
*
*
* Others:
********************************************************************************/
struct pmu_opt * get_pmu_opt(void)
{
return s_pmu;
}