mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-07-05 02:36:39 +09:00
pmic:pfuze implement pmic_mode_init
This patch is to implement pmic_mode_init function, and add prototype in header file. This function is to set switching mode for pmic buck regulators to improve system efficiency. Mode: OFF: The regulator is switched off and the output voltage is discharged. PFM: In this mode, the regulator is always in PFM mode, which is useful at light loads for optimized efficiency. PWM: In this mode, the regulator is always in PWM mode operation regardless of load conditions. APS: In this mode, the regulator moves automatically between pulse skipping mode and PWM mode depending on load conditions. Signed-off-by: Peng Fan <Peng.Fan@freescale.com> Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
This commit is contained in:
parent
aee0013e53
commit
7428f55c94
|
@ -5,9 +5,47 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <power/pmic.h>
|
#include <power/pmic.h>
|
||||||
#include <power/pfuze100_pmic.h>
|
#include <power/pfuze100_pmic.h>
|
||||||
|
|
||||||
|
int pfuze_mode_init(struct pmic *p, u32 mode)
|
||||||
|
{
|
||||||
|
unsigned char offset, i, switch_num;
|
||||||
|
u32 id, ret;
|
||||||
|
|
||||||
|
pmic_reg_read(p, PFUZE100_DEVICEID, &id);
|
||||||
|
id = id & 0xf;
|
||||||
|
|
||||||
|
if (id == 0) {
|
||||||
|
switch_num = 6;
|
||||||
|
offset = PFUZE100_SW1CMODE;
|
||||||
|
} else if (id == 1) {
|
||||||
|
switch_num = 4;
|
||||||
|
offset = PFUZE100_SW2MODE;
|
||||||
|
} else {
|
||||||
|
printf("Not supported, id=%d\n", id);
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = pmic_reg_write(p, PFUZE100_SW1ABMODE, mode);
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("Set SW1AB mode error!\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < switch_num - 1; i++) {
|
||||||
|
ret = pmic_reg_write(p, offset + i * SWITCH_SIZE, mode);
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("Set switch 0x%x mode error!\n",
|
||||||
|
offset + i * SWITCH_SIZE);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
struct pmic *pfuze_common_init(unsigned char i2cbus)
|
struct pmic *pfuze_common_init(unsigned char i2cbus)
|
||||||
{
|
{
|
||||||
struct pmic *p;
|
struct pmic *p;
|
||||||
|
|
|
@ -8,5 +8,6 @@
|
||||||
#define __PFUZE_BOARD_HELPER__
|
#define __PFUZE_BOARD_HELPER__
|
||||||
|
|
||||||
struct pmic *pfuze_common_init(unsigned char i2cbus);
|
struct pmic *pfuze_common_init(unsigned char i2cbus);
|
||||||
|
int pfuze_mode_init(struct pmic *p, u32 mode);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user