]> asedeno.scripts.mit.edu Git - linux.git/commit
greybus: arche-platform: Enable SVC clock during FW_FLASHING state
authorVaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tue, 24 May 2016 13:02:04 +0000 (18:32 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 26 May 2016 05:36:45 +0000 (22:36 -0700)
commit7a867d149f0c0cb9184a38f83704d37439a17f3e
tree2523f830bd9f30870726c3885671360e5f5e43ad
parent0b1283e33f7a38645c9d060ce2e2b24a44e3b125
greybus: arche-platform: Enable SVC clock during FW_FLASHING state

The issue is, as part of kernel-only build we started seeing
failures in SVC FW flashing. It was reproducible easily in kernel-only
build, but never observed on Android build.

During debugging, there were couple of observations,

1. If SVC clock enabled and disables (which is REFCLK_MAIN), then SVC FW
   flashing works.
2. If we do not switch SVC to HSE (external clock source) it works.
   Recently, SVC code has been updated to switch HSE clock, so removing
   it (remove/skip rcc_switch_ara_pll() fn) would use internal clock only.

As per STM32 spec, for flashing through USART we do not need
to enable HSE, but the above observation contradicts with it.

There is still something missing in terms of understanding of how STM32
device functions as far as Flashing is concerned. There is something
hidden in HW, which probably still need to identify.

So as a interim solution we will enable clock for FW_FLASHING state,
which seems to be fixing the issue here.

Testing Done: Tested on EVT1.5 with arche6.0 and kernel-only build.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Michael Scott <michael.scott@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/arche-platform.c