void ldo_mode_set(int ldo_bypass) { unsigned int value; u32 vddarm; struct pmic *p = pfuze; if (!p) { printf("No PMIC found!\n"); return; } /* switch to ldo_bypass mode */ if (ldo_bypass) { prep_anatop_bypass(); /* decrease VDDARM to 1.275V */ pmic_reg_read(pfuze, PFUZE300_SW1BVOLT, &value); value &= ~0x1f; value |= PFUZE300_SW1AB_SETP(1275); pmic_reg_write(pfuze, PFUZE300_SW1BVOLT, value); set_anatop_bypass(1); vddarm = PFUZE300_SW1AB_SETP(1175); pmic_reg_read(pfuze, PFUZE300_SW1BVOLT, &value); value &= ~0x1f; value |= vddarm; pmic_reg_write(pfuze, PFUZE300_SW1BVOLT, value); finish_anatop_bypass(); printf("switch to ldo_bypass mode!\n"); } }
void ldo_mode_set(int ldo_bypass) { u32 value; int is_400M; struct pmic *p = pfuze; if (!p) { printf("No pmic!\n"); return; } /* swith to ldo_bypass mode */ if (ldo_bypass) { prep_anatop_bypass(); /* decrease VDDARM to 1.1V */ pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; value |= 0x20; pmic_reg_write(p, PFUZE100_SW1ABVOL, value); /* increase VDDSOC to 1.3V */ pmic_reg_read(p, PFUZE100_SW1CVOL, &value); value &= ~0x3f; value |= 0x28; pmic_reg_write(p, PFUZE100_SW1CVOL, value); is_400M = set_anatop_bypass(0); /* * MX6SL: VDDARM:1.175V@800M; VDDSOC:1.175V@800M * VDDARM:0.975V@400M; VDDSOC:1.175V@400M */ pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; if (is_400M) value |= 0x1b; else value |= 0x23; pmic_reg_write(p, PFUZE100_SW1ABVOL, value); /* decrease VDDSOC to 1.175V */ pmic_reg_read(p, PFUZE100_SW1CVOL, &value); value &= ~0x3f; value |= 0x23; pmic_reg_write(p, PFUZE100_SW1CVOL, value); finish_anatop_bypass(); printf("switch to ldo_bypass mode!\n"); } }
void ldo_mode_set(int ldo_bypass) { unsigned int value; int is_400M; u32 vddarm; struct pmic *p = pfuze; if (!p) { printf("No PMIC found!\n"); return; } /* switch to ldo_bypass mode */ if (ldo_bypass) { prep_anatop_bypass(); /* decrease VDDARM to 1.275V */ pmic_reg_read(pfuze, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; value |= PFUZE100_SW1ABC_SETP(12750); pmic_reg_write(pfuze, PFUZE100_SW1ABVOL, value); is_400M = set_anatop_bypass(1); if (is_400M) vddarm = PFUZE100_SW1ABC_SETP(10750); else vddarm = PFUZE100_SW1ABC_SETP(11750); pmic_reg_read(pfuze, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; value |= vddarm; pmic_reg_write(pfuze, PFUZE100_SW1ABVOL, value); finish_anatop_bypass(); printf("switch to ldo_bypass mode!\n"); } }
void ldo_mode_set(int ldo_bypass) { unsigned int value; int is_400M; unsigned char vddarm; struct pmic *p = pfuze; if (!p) { printf("No PMIC found!\n"); return; } /* increase VDDARM/VDDSOC to support 1.2G chip */ if (check_1_2G()) { ldo_bypass = 0; /* ldo_enable on 1.2G chip */ printf("1.2G chip, increase VDDARM_IN/VDDSOC_IN\n"); /* increase VDDARM to 1.425V */ pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; value |= 0x2d; pmic_reg_write(p, PFUZE100_SW1ABVOL, value); /* increase VDDSOC to 1.425V */ pmic_reg_read(p, PFUZE100_SW1CVOL, &value); value &= ~0x3f; value |= 0x2d; pmic_reg_write(p, PFUZE100_SW1CVOL, value); } /* switch to ldo_bypass mode , boot on 800Mhz */ if (ldo_bypass) { prep_anatop_bypass(); /* decrease VDDARM for 400Mhz DQ:1.1V, DL:1.275V */ pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; #if defined(CONFIG_MX6DL) value |= 0x27; #else value |= 0x20; #endif pmic_reg_write(p, PFUZE100_SW1ABVOL, value); /* increase VDDSOC to 1.3V */ pmic_reg_read(p, PFUZE100_SW1CVOL, &value); value &= ~0x3f; value |= 0x28; pmic_reg_write(p, PFUZE100_SW1CVOL, value); /* * MX6Q: * VDDARM:1.15V@800M; VDDSOC:1.175V@800M * VDDARM:0.975V@400M; VDDSOC:1.175V@400M * MX6DL: * VDDARM:1.175V@800M; VDDSOC:1.175V@800M * VDDARM:1.075V@400M; VDDSOC:1.175V@400M */ is_400M = set_anatop_bypass(2); if (is_400M) #if defined(CONFIG_MX6DL) vddarm = 0x1f; #else vddarm = 0x1b; #endif else #if defined(CONFIG_MX6DL) vddarm = 0x23; #else vddarm = 0x22; #endif pmic_reg_read(p, PFUZE100_SW1ABVOL, &value); value &= ~0x3f; value |= vddarm; pmic_reg_write(p, PFUZE100_SW1ABVOL, value); /* decrease VDDSOC to 1.175V */ pmic_reg_read(p, PFUZE100_SW1CVOL, &value); value &= ~0x3f; value |= 0x23; pmic_reg_write(p, PFUZE100_SW1CVOL, value); finish_anatop_bypass(); printf("switch to ldo_bypass mode!\n"); }