ENGR00315894-77 mx6: soc: Add vadc power up/down function

Add vadc power up/down function.
When gis enable in uboot, the CSI0 input mux select setting
to vadc module, clean the bit when gis disabled

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Sandor Yu <R01008@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
This commit is contained in:
Ye Li 2018-03-26 01:56:39 -07:00
parent b6f962db57
commit e0cfa88953
2 changed files with 53 additions and 0 deletions

View File

@ -128,6 +128,9 @@ int mxs_reset_block(struct mxs_register_32 *reg);
int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout); int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout); int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
void vadc_power_up(void);
void vadc_power_down(void);
void pcie_power_up(void); void pcie_power_up(void);
void pcie_power_off(void); void pcie_power_off(void);
int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data); int arch_auxiliary_core_up(u32 core_id, ulong boot_private_data);

View File

@ -392,6 +392,56 @@ static void set_preclk_from_osc(void)
} }
#ifdef CONFIG_MX6SX #ifdef CONFIG_MX6SX
void vadc_power_up(void)
{
struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
u32 val;
/* csi0 */
val = readl(&iomux->gpr[5]);
val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK,
val |= IMX6SX_GPR5_CSI1_MUX_CTRL_CVD;
writel(val, &iomux->gpr[5]);
/* Power on vadc analog
* Power down vadc ext power */
val = readl(GPC_BASE_ADDR + 0);
val &= ~0x60000;
writel(val, GPC_BASE_ADDR + 0);
/* software reset afe */
val = readl(&iomux->gpr[1]);
writel(val | 0x80000, &iomux->gpr[1]);
udelay(10*1000);
/* Release reset bit */
writel(val & ~0x80000, &iomux->gpr[1]);
/* Power on vadc ext power */
val = readl(GPC_BASE_ADDR + 0);
val |= 0x40000;
writel(val, GPC_BASE_ADDR + 0);
}
void vadc_power_down(void)
{
struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
u32 val;
/* Power down vadc ext power
* Power off vadc analog */
val = readl(GPC_BASE_ADDR + 0);
val &= ~0x40000;
val |= 0x20000;
writel(val, GPC_BASE_ADDR + 0);
/* clean csi0 connect to vadc */
val = readl(&iomux->gpr[5]);
val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK,
writel(val, &iomux->gpr[5]);
}
void pcie_power_up(void) void pcie_power_up(void)
{ {
set_ldo_voltage(LDO_PU, 1100); /* Set VDDPU to 1.1V */ set_ldo_voltage(LDO_PU, 1100); /* Set VDDPU to 1.1V */