mfd: qcom_rpm: Handle message RAM clock
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 18 Aug 2016 18:40:45 +0000 (20:40 +0200)
committerLee Jones <lee.jones@linaro.org>
Tue, 4 Oct 2016 14:48:02 +0000 (15:48 +0100)
commit3526403353c2a1b94c3181f900582626d23c339b
tree3c784f6e23188b014d6138c867fc3a6d5ad050d4
parent8c5d0571596efa5656cc53144172baa7c5c57b43
mfd: qcom_rpm: Handle message RAM clock

The MSM8660, APQ8060, IPQ806x and MSM8960 have a GCC clock
to the message RAM used by the RPM. This needs to be enabled
for messages to pass through. This is a crude solution that
simply prepare/enable at probe() and disable/unprepare
at remove(). More elaborate PM is probably possible to
add later.

The construction uses IS_ERR() to gracefully handle the
platforms that do not provide a message RAM clock. It will
bail out of probe only if the clock is hitting a probe
deferral situation.

Of course this requires the proper device tree set-up:

rpm: rpm@104000 {
    compatible = "qcom,rpm-msm8660";
    clocks = <&gcc RPM_MSG_RAM_H_CLK>;
    clock-names = "ram";
    ...
};

I have provided this in the MSM8660 device tree, and will
provide patches for the other targets.

Cc: Björn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/qcom_rpm.c