ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set
One of the Freescale recommended sequences for power off with external PMIC is the following: ... 3. SoC is programming PMIC for power off when standby is asserted. 4. In CCM STOP mode, Standby is asserted, PMIC gates SoC supplies. See: http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf page 5083 This patch implements step 4. of this sequence. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
Родитель
9454a0caff
Коммит
8148d21360
|
@ -618,6 +618,28 @@ static void __init imx6_pm_common_init(const struct imx6_pm_socdata
|
|||
IMX6Q_GPR1_GINT);
|
||||
}
|
||||
|
||||
static void imx6_pm_stby_poweroff(void)
|
||||
{
|
||||
imx6_set_lpm(STOP_POWER_OFF);
|
||||
imx6q_suspend_finish(0);
|
||||
|
||||
mdelay(1000);
|
||||
|
||||
pr_emerg("Unable to poweroff system\n");
|
||||
}
|
||||
|
||||
static int imx6_pm_stby_poweroff_probe(void)
|
||||
{
|
||||
if (pm_power_off) {
|
||||
pr_warn("%s: pm_power_off already claimed %p %pf!\n",
|
||||
__func__, pm_power_off, pm_power_off);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
pm_power_off = imx6_pm_stby_poweroff;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init imx6_pm_ccm_init(const char *ccm_compat)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -634,6 +656,9 @@ void __init imx6_pm_ccm_init(const char *ccm_compat)
|
|||
val = readl_relaxed(ccm_base + CLPCR);
|
||||
val &= ~BM_CLPCR_LPM;
|
||||
writel_relaxed(val, ccm_base + CLPCR);
|
||||
|
||||
if (of_property_read_bool(np, "fsl,pmic-stby-poweroff"))
|
||||
imx6_pm_stby_poweroff_probe();
|
||||
}
|
||||
|
||||
void __init imx6q_pm_init(void)
|
||||
|
|
Загрузка…
Ссылка в новой задаче