提交 ff788de0 编写于 作者: V Vaibhav Hiremath 提交者: Greg Kroah-Hartman

greybus: arche-platform: Make sure APB power cycles on coldboot

On first wake/detect pulse, everything works fine, as APB would be
in poweroff state initially.
But on subsequent wake/detect pulses, where APB is already in active
state, internal function just returns doing nothing, as it finds that
device is already in active state.

So the solution would be to make sure that, whenever execution reaches
to coldboot, make sure we power cycle it. Power off first, before
powering on.

Interrupt handler takes care of ignoring < 30msec pulses, so we should
be safe here to power cycle APB.

Testing Done: Testd on DB3.5 platform.
Signed-off-by: NVaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@google.com>
上级 7e43e337
...@@ -140,6 +140,8 @@ static irqreturn_t arche_platform_wd_irq_thread(int irq, void *devid) ...@@ -140,6 +140,8 @@ static irqreturn_t arche_platform_wd_irq_thread(int irq, void *devid)
arche_pdata->wake_detect_state = WD_STATE_COLDBOOT_START; arche_pdata->wake_detect_state = WD_STATE_COLDBOOT_START;
spin_unlock_irqrestore(&arche_pdata->lock, flags); spin_unlock_irqrestore(&arche_pdata->lock, flags);
/* It should complete power cycle, so first make sure it is poweroff */
device_for_each_child(arche_pdata->dev, NULL, apb_poweroff);
/* Bring APB out of reset: cold boot sequence */ /* Bring APB out of reset: cold boot sequence */
device_for_each_child(arche_pdata->dev, NULL, apb_cold_boot); device_for_each_child(arche_pdata->dev, NULL, apb_cold_boot);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册