ARM: 8245/1: pcmcia: soc-common: enable/disable socket clocks
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Wed, 3 Dec 2014 17:37:10 +0000 (18:37 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 5 Dec 2014 16:30:26 +0000 (16:30 +0000)
Call clk_prepare_enable() during hw_init() and clk_disable_unprepare()
during hw_shutdown() to ensure that the clock rates returned by
clk_get_rate() are correct.

It is safe to call enable/disable functions even on NULL clock, so this
patch will not break cases when the socket clock is not set.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/pcmcia/soc_common.c

index a2bc6ee..933f465 100644 (file)
@@ -120,6 +120,8 @@ static void __soc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt,
 
        if (skt->ops->hw_shutdown)
                skt->ops->hw_shutdown(skt);
+
+       clk_disable_unprepare(skt->clk);
 }
 
 static void soc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
@@ -131,6 +133,8 @@ static int soc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
 {
        int ret = 0, i;
 
+       clk_prepare_enable(skt->clk);
+
        if (skt->ops->hw_init) {
                ret = skt->ops->hw_init(skt);
                if (ret)