int power_init_board(void) { struct pmic *p; unsigned int reg, ret; p = pfuze_common_init(I2C_PMIC); if (!p) return -ENODEV; ret = pfuze_mode_init(p, APS_PFM); if (ret < 0) return ret; /* Increase VGEN3 from 2.5 to 2.8V */ pmic_reg_read(p, PFUZE100_VGEN3VOL, ®); reg &= ~LDO_VOL_MASK; reg |= LDOB_2_80V; pmic_reg_write(p, PFUZE100_VGEN3VOL, reg); /* Increase VGEN5 from 2.8 to 3V */ pmic_reg_read(p, PFUZE100_VGEN5VOL, ®); reg &= ~LDO_VOL_MASK; reg |= LDOB_3_00V; pmic_reg_write(p, PFUZE100_VGEN5VOL, reg); return 0; }
int power_init_board(void) { unsigned int reg, ret; pfuze = pfuze_common_init(I2C_PMIC); if (!pfuze) return -ENODEV; ret = pfuze_mode_init(pfuze, APS_PFM); if (ret < 0) return ret; /* Increase VGEN3 from 2.5 to 2.8V */ pmic_reg_read(pfuze, PFUZE100_VGEN3VOL, ®); reg &= ~LDO_VOL_MASK; reg |= LDOB_2_80V; pmic_reg_write(pfuze, PFUZE100_VGEN3VOL, reg); /* Increase VGEN5 from 2.8 to 3V */ pmic_reg_read(pfuze, PFUZE100_VGEN5VOL, ®); reg &= ~LDO_VOL_MASK; reg |= LDOB_3_00V; pmic_reg_write(pfuze, PFUZE100_VGEN5VOL, reg); /* set SW1AB staby volatage 0.975V*/ pmic_reg_read(pfuze, PFUZE100_SW1ABSTBY, ®); reg &= ~0x3f; reg |= 0x1b; pmic_reg_write(pfuze, PFUZE100_SW1ABSTBY, reg); /* set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */ pmic_reg_read(pfuze, PFUZE100_SW1ABCONF, ®); reg &= ~0xc0; reg |= 0x40; pmic_reg_write(pfuze, PFUZE100_SW1ABCONF, reg); /* set SW1C staby volatage 0.975V*/ pmic_reg_read(pfuze, PFUZE100_SW1CSTBY, ®); reg &= ~0x3f; reg |= 0x1b; pmic_reg_write(pfuze, PFUZE100_SW1CSTBY, reg); /* set SW1C/VDDSOC step ramp up time to from 16us to 4us/25mV */ pmic_reg_read(pfuze, PFUZE100_SW1CCONF, ®); reg &= ~0xc0; reg |= 0x40; pmic_reg_write(pfuze, PFUZE100_SW1CCONF, reg); return 0; }
int power_init_board(void) { unsigned int reg, ret; pfuze = pfuze_common_init(I2C_PMIC); if (!pfuze) return -ENODEV; ret = pfuze_mode_init(pfuze, APS_PFM); if (ret < 0) return ret; /* set SW1AB standby volatage 0.975V */ pmic_reg_read(pfuze, PFUZE100_SW1ABSTBY, ®); reg &= ~0x3f; reg |= PFUZE100_SW1ABC_SETP(9750); pmic_reg_write(pfuze, PFUZE100_SW1ABSTBY, reg); /* set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */ pmic_reg_read(pfuze, PFUZE100_SW1ABCONF, ®); reg &= ~0xc0; reg |= 0x40; pmic_reg_write(pfuze, PFUZE100_SW1ABCONF, reg); /* set SW1C standby volatage 1.10V */ pmic_reg_read(pfuze, PFUZE100_SW1CSTBY, ®); reg &= ~0x3f; reg |= PFUZE100_SW1ABC_SETP(11000); pmic_reg_write(pfuze, PFUZE100_SW1CSTBY, reg); /* set SW1C/VDDSOC step ramp up time to from 16us to 4us/25mV */ pmic_reg_read(pfuze, PFUZE100_SW1CCONF, ®); reg &= ~0xc0; reg |= 0x40; pmic_reg_write(pfuze, PFUZE100_SW1CCONF, reg); /* Enable power of VGEN5 3V3, needed for SD3 */ pmic_reg_read(pfuze, PFUZE100_VGEN5VOL, ®); reg &= ~LDO_VOL_MASK; reg |= (LDOB_3_30V | (1 << LDO_EN)); pmic_reg_write(pfuze, PFUZE100_VGEN5VOL, reg); return 0; }
int power_init_board(void) { struct pmic *p; unsigned int value; p = pfuze_common_init(I2C_PMIC); if (!p) return -ENODEV; if (is_mx6dqp()) { /* set SW2 staby volatage 0.975V*/ pmic_reg_read(p, PFUZE100_SW2STBY, &value); value &= ~0x3f; value |= 0x17; pmic_reg_write(p, PFUZE100_SW2STBY, value); } return pfuze_mode_init(p, APS_PFM); }
int power_init_board(void) { struct pmic *p; int ret; unsigned int reg; ret = power_pfuze100_init(I2C_PMIC); if (ret) return -ENODEV; p = pmic_get("PFUZE100"); ret = pmic_probe(p); if (ret) return -ENODEV; pmic_reg_read(p, PFUZE100_DEVICEID, ®); printf("PMIC: PFUZE100 ID=0x%02x\n", reg); pmic_reg_read(p, PFUZE100_SW3AVOL, ®); if ((reg & 0x3f) != 0x18) { reg &= ~0x3f; reg |= 0x18; pmic_reg_write(p, PFUZE100_SW3AVOL, reg); } ret = pfuze_mode_init(p, APS_PFM); if (ret < 0) return ret; /* set SW3A standby mode to off */ pmic_reg_read(p, PFUZE100_SW3AMODE, ®); reg &= ~0xf; reg |= APS_OFF; pmic_reg_write(p, PFUZE100_SW3AMODE, reg); return 0; }
int power_init_board(void) { int ret; u32 rev_id, value; ret = power_pfuze100_init(I2C_PMIC); if (ret) return ret; pfuze = pmic_get("PFUZE100"); if (!pfuze) return -ENODEV; ret = pmic_probe(pfuze); if (ret) return ret; ret = pfuze_mode_init(pfuze, APS_PFM); if (ret < 0) return ret; pmic_reg_read(pfuze, PFUZE100_DEVICEID, &value); pmic_reg_read(pfuze, PFUZE100_REVID, &rev_id); printf("PMIC: PFUZE200! DEV_ID=0x%x REV_ID=0x%x\n", value, rev_id); /* * Our PFUZE0200 is PMPF0200X0AEP, the Pre-programmed OTP * Configuration is F0. * Default VOLT: * VSNVS_VOLT | 3.0V * SW1AB | 1.375V * SW2 | 3.3V * SW3A | 1.5V * SW3B | 1.5V * VGEN1 | 1.5V * VGEN2 | 1.5V * VGEN3 | 2.5V * VGEN4 | 1.8V * VGEN5 | 2.8V * VGEN6 | 3.3V * * According to schematic, we need SW3A 1.35V, SW3B 3.3V, * VGEN1 1.2V, VGEN2 1.5V, VGEN3 2.8V, VGEN4 1.8V, * VGEN5 3.3V, VGEN6 3.0V. * * Here we just use the default VOLT, but not configure * them, when needed, configure them to our requested voltage. */ /* set SW1AB standby volatage 1.3V */ pmic_reg_read(pfuze, PFUZE100_SW1ABSTBY, &value); value &= ~0x3f; value |= PFUZE100_SW1ABC_SETP(13000); pmic_reg_write(pfuze, PFUZE100_SW1ABSTBY, value); /* set SW1AB/VDDARM step ramp up time from 16us to 4us/25mV */ pmic_reg_read(pfuze, PFUZE100_SW1ABCONF, &value); value &= ~0xc0; value |= 0x40; pmic_reg_write(pfuze, PFUZE100_SW1ABCONF, value); /* Enable power of VGEN5 3V3 */ pmic_reg_read(pfuze, PFUZE100_VGEN5VOL, &value); value &= ~0x1F; value |= 0x1F; pmic_reg_write(pfuze, PFUZE100_VGEN5VOL, value); return 0; }