Skip to content
Snippets Groups Projects
Commit 3d622b78 authored by Fabio Estevam's avatar Fabio Estevam Committed by Stefano Babic
Browse files

mx6: soc: Introduce set_ldo_voltage()


Introduce set_ldo_voltage() so that all three LDO regulators can be configured.

Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
parent 7e5e8c94
No related branches found
No related tags found
No related merge requests found
...@@ -19,6 +19,12 @@ ...@@ -19,6 +19,12 @@
#include <asm/arch/mxc_hdmi.h> #include <asm/arch/mxc_hdmi.h>
#include <asm/arch/crm_regs.h> #include <asm/arch/crm_regs.h>
enum ldo_reg {
LDO_ARM,
LDO_SOC,
LDO_PU,
};
struct scu_regs { struct scu_regs {
u32 ctrl; u32 ctrl;
u32 config; u32 config;
...@@ -115,10 +121,11 @@ static void clear_ldo_ramp(void) ...@@ -115,10 +121,11 @@ static void clear_ldo_ramp(void)
* Possible values are from 0.725V to 1.450V in steps of * Possible values are from 0.725V to 1.450V in steps of
* 0.025V (25mV). * 0.025V (25mV).
*/ */
static void set_vddsoc(u32 mv) static int set_ldo_voltage(enum ldo_reg ldo, u32 mv)
{ {
struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
u32 val, reg = readl(&anatop->reg_core); u32 val, reg = readl(&anatop->reg_core);
u8 shift;
if (mv < 725) if (mv < 725)
val = 0x00; /* Power gated off */ val = 0x00; /* Power gated off */
...@@ -129,12 +136,24 @@ static void set_vddsoc(u32 mv) ...@@ -129,12 +136,24 @@ static void set_vddsoc(u32 mv)
clear_ldo_ramp(); clear_ldo_ramp();
/* switch (ldo) {
* Mask out the REG_CORE[22:18] bits (REG2_TRIG) case LDO_SOC:
* and set them to the calculated value (0.7V + val * 0.25V) shift = 18;
*/ break;
reg = (reg & ~(0x1F << 18)) | (val << 18); case LDO_PU:
shift = 9;
break;
case LDO_ARM:
shift = 0;
break;
default:
return -EINVAL;
}
reg = (reg & ~(0x1F << shift)) | (val << shift);
writel(reg, &anatop->reg_core); writel(reg, &anatop->reg_core);
return 0;
} }
static void imx_set_wdog_powerdown(bool enable) static void imx_set_wdog_powerdown(bool enable)
...@@ -151,7 +170,7 @@ int arch_cpu_init(void) ...@@ -151,7 +170,7 @@ int arch_cpu_init(void)
{ {
init_aips(); init_aips();
set_vddsoc(1175); /* Set VDDSOC to 1.175V */ set_ldo_voltage(LDO_SOC, 1175); /* Set VDDSOC to 1.175V */
imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */ imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment