From: Lee Jones <lee.jones@linaro.org>
To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
Cc: arnd@arndb.de, linus.walleij@stericsson.com,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
Andreas Westin <andreas.westin@stericsson.com>,
linux-crypto@vger.kernel.org
Subject: [PATCH 4/9 v2] crypto: ux500/cryp - Prepare clock before enabling it
Date: Fri, 19 Apr 2013 13:22:26 +0100 [thread overview]
Message-ID: <20130419122226.GB3432@gmail.com> (raw)
In-Reply-To: <1366280825-31136-5-git-send-email-lee.jones@linaro.org>
Slight change of plan for v2.
Now we're doing a seperate clk_prepare(), as the clk_enable() in the
previous patch turned out to be called inside a spin_lock().
Arnd, can you confirm your Ack please?
----
crypto: ux500/cryp - Prepare clock before enabling it
If we fail to prepare the ux500-cryp clock before enabling it the
platform will fail to boot. Here we insure this happens.
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David S. Miller <davem@davemloft.net>
Cc: Andreas Westin <andreas.westin@stericsson.com>
Cc: linux-crypto@vger.kernel.org
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c
index 22c9063..bf78d60 100644
--- a/drivers/crypto/ux500/cryp/cryp_core.c
+++ b/drivers/crypto/ux500/cryp/cryp_core.c
@@ -1459,11 +1459,17 @@ static int ux500_cryp_probe(struct platform_device *pdev)
goto out_regulator;
}
+ ret = clk_prepare(device_data->clk);
+ if (ret) {
+ dev_err(dev, "[%s]: clk_prepare() failed!", __func__);
+ goto out_clk;
+ }
+
/* Enable device power (and clock) */
ret = cryp_enable_power(device_data->dev, device_data, false);
if (ret) {
dev_err(dev, "[%s]: cryp_enable_power() failed!", __func__);
- goto out_clk;
+ goto out_clk_unprepare;
}
cryp_error = cryp_check(device_data);
@@ -1524,6 +1530,9 @@ static int ux500_cryp_probe(struct platform_device *pdev)
out_power:
cryp_disable_power(device_data->dev, device_data, false);
+out_clk_unprepare:
+ clk_unprepare(device_data->clk);
+
out_clk:
clk_put(device_data->clk);
@@ -1594,6 +1603,7 @@ static int ux500_cryp_remove(struct platform_device *pdev)
dev_err(&pdev->dev, "[%s]: cryp_disable_power() failed",
__func__);
+ clk_unprepare(device_data->clk);
clk_put(device_data->clk);
regulator_put(device_data->pwr_regulator);
WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/9 v2] crypto: ux500/cryp - Prepare clock before enabling it
Date: Fri, 19 Apr 2013 13:22:26 +0100 [thread overview]
Message-ID: <20130419122226.GB3432@gmail.com> (raw)
In-Reply-To: <1366280825-31136-5-git-send-email-lee.jones@linaro.org>
Slight change of plan for v2.
Now we're doing a seperate clk_prepare(), as the clk_enable() in the
previous patch turned out to be called inside a spin_lock().
Arnd, can you confirm your Ack please?
----
crypto: ux500/cryp - Prepare clock before enabling it
If we fail to prepare the ux500-cryp clock before enabling it the
platform will fail to boot. Here we insure this happens.
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David S. Miller <davem@davemloft.net>
Cc: Andreas Westin <andreas.westin@stericsson.com>
Cc: linux-crypto at vger.kernel.org
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c
index 22c9063..bf78d60 100644
--- a/drivers/crypto/ux500/cryp/cryp_core.c
+++ b/drivers/crypto/ux500/cryp/cryp_core.c
@@ -1459,11 +1459,17 @@ static int ux500_cryp_probe(struct platform_device *pdev)
goto out_regulator;
}
+ ret = clk_prepare(device_data->clk);
+ if (ret) {
+ dev_err(dev, "[%s]: clk_prepare() failed!", __func__);
+ goto out_clk;
+ }
+
/* Enable device power (and clock) */
ret = cryp_enable_power(device_data->dev, device_data, false);
if (ret) {
dev_err(dev, "[%s]: cryp_enable_power() failed!", __func__);
- goto out_clk;
+ goto out_clk_unprepare;
}
cryp_error = cryp_check(device_data);
@@ -1524,6 +1530,9 @@ static int ux500_cryp_probe(struct platform_device *pdev)
out_power:
cryp_disable_power(device_data->dev, device_data, false);
+out_clk_unprepare:
+ clk_unprepare(device_data->clk);
+
out_clk:
clk_put(device_data->clk);
@@ -1594,6 +1603,7 @@ static int ux500_cryp_remove(struct platform_device *pdev)
dev_err(&pdev->dev, "[%s]: cryp_disable_power() failed",
__func__);
+ clk_unprepare(device_data->clk);
clk_put(device_data->clk);
regulator_put(device_data->pwr_regulator);
WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
Cc: arnd@arndb.de, linus.walleij@stericsson.com,
Herbert Xu <herbert@gondor.hengli.com.au>,
"David S. Miller" <davem@davemloft.net>,
Andreas Westin <andreas.westin@stericsson.com>,
linux-crypto@vger.kernel.org
Subject: [PATCH 4/9 v2] crypto: ux500/cryp - Prepare clock before enabling it
Date: Fri, 19 Apr 2013 13:22:26 +0100 [thread overview]
Message-ID: <20130419122226.GB3432@gmail.com> (raw)
In-Reply-To: <1366280825-31136-5-git-send-email-lee.jones@linaro.org>
Slight change of plan for v2.
Now we're doing a seperate clk_prepare(), as the clk_enable() in the
previous patch turned out to be called inside a spin_lock().
Arnd, can you confirm your Ack please?
----
crypto: ux500/cryp - Prepare clock before enabling it
If we fail to prepare the ux500-cryp clock before enabling it the
platform will fail to boot. Here we insure this happens.
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: David S. Miller <davem@davemloft.net>
Cc: Andreas Westin <andreas.westin@stericsson.com>
Cc: linux-crypto@vger.kernel.org
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c
index 22c9063..bf78d60 100644
--- a/drivers/crypto/ux500/cryp/cryp_core.c
+++ b/drivers/crypto/ux500/cryp/cryp_core.c
@@ -1459,11 +1459,17 @@ static int ux500_cryp_probe(struct platform_device *pdev)
goto out_regulator;
}
+ ret = clk_prepare(device_data->clk);
+ if (ret) {
+ dev_err(dev, "[%s]: clk_prepare() failed!", __func__);
+ goto out_clk;
+ }
+
/* Enable device power (and clock) */
ret = cryp_enable_power(device_data->dev, device_data, false);
if (ret) {
dev_err(dev, "[%s]: cryp_enable_power() failed!", __func__);
- goto out_clk;
+ goto out_clk_unprepare;
}
cryp_error = cryp_check(device_data);
@@ -1524,6 +1530,9 @@ static int ux500_cryp_probe(struct platform_device *pdev)
out_power:
cryp_disable_power(device_data->dev, device_data, false);
+out_clk_unprepare:
+ clk_unprepare(device_data->clk);
+
out_clk:
clk_put(device_data->clk);
@@ -1594,6 +1603,7 @@ static int ux500_cryp_remove(struct platform_device *pdev)
dev_err(&pdev->dev, "[%s]: cryp_disable_power() failed",
__func__);
+ clk_unprepare(device_data->clk);
clk_put(device_data->clk);
regulator_put(device_data->pwr_regulator);
next prev parent reply other threads:[~2013-04-19 12:22 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-18 10:26 [PATCH 0/9] Fix ux500 crypto drivers and init DMA in the correct way Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-18 10:26 ` [PATCH 1/9] crypto: ux500/hash - Prepare clock before enabling it Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-19 12:24 ` [PATCH 1/9 v2] " Lee Jones
2013-04-19 12:24 ` Lee Jones
2013-04-19 12:24 ` Lee Jones
2013-04-19 12:26 ` Arnd Bergmann
2013-04-19 12:26 ` Arnd Bergmann
2013-04-19 12:26 ` Arnd Bergmann
2013-04-25 11:49 ` Linus Walleij
2013-04-25 11:49 ` Linus Walleij
2013-04-25 11:49 ` Linus Walleij
2013-04-25 13:46 ` Lee Jones
2013-04-25 13:46 ` Lee Jones
2013-04-25 13:46 ` Lee Jones
2013-04-18 10:26 ` [PATCH 2/9] crypto: ux500/hash - Set DMA configuration though dma_slave_config() Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-25 11:55 ` Linus Walleij
2013-04-25 11:55 ` Linus Walleij
2013-04-25 11:55 ` Linus Walleij
2013-04-18 10:26 ` [PATCH 3/9] ARM: ux500: Stop passing Hash DMA channel config information though pdata Lee Jones
2013-04-18 10:26 ` Lee Jones
2013-04-25 11:56 ` Linus Walleij
2013-04-25 11:56 ` Linus Walleij
2013-04-18 10:27 ` [PATCH 4/9] crypto: ux500/cryp - Prepare clock before enabling it Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-19 12:22 ` Lee Jones [this message]
2013-04-19 12:22 ` [PATCH 4/9 v2] " Lee Jones
2013-04-19 12:22 ` Lee Jones
2013-04-19 12:23 ` Arnd Bergmann
2013-04-19 12:23 ` Arnd Bergmann
2013-04-19 12:23 ` Arnd Bergmann
2013-04-25 11:57 ` Linus Walleij
2013-04-25 11:57 ` Linus Walleij
2013-04-25 11:57 ` Linus Walleij
2013-04-18 10:27 ` [PATCH 5/9] crypto: ux500/cryp - Fix compile error Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-25 12:00 ` Linus Walleij
2013-04-25 12:00 ` Linus Walleij
2013-04-25 12:00 ` Linus Walleij
2013-04-25 13:44 ` Lee Jones
2013-04-25 13:44 ` Lee Jones
2013-04-25 13:44 ` Lee Jones
2013-04-18 10:27 ` [PATCH 6/9] crypto: ux500/cryp - Set DMA configuration though dma_slave_config() Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-25 12:02 ` Linus Walleij
2013-04-25 12:02 ` Linus Walleij
2013-04-25 12:02 ` Linus Walleij
2013-04-25 13:44 ` Lee Jones
2013-04-25 13:44 ` Lee Jones
2013-04-25 13:44 ` Lee Jones
2013-04-25 14:05 ` Linus Walleij
2013-04-25 14:05 ` Linus Walleij
2013-04-25 14:05 ` Linus Walleij
2013-04-25 14:11 ` Arnd Bergmann
2013-04-25 14:11 ` Arnd Bergmann
2013-04-25 14:11 ` Arnd Bergmann
2013-04-26 8:28 ` Linus Walleij
2013-04-26 8:28 ` Linus Walleij
2013-04-26 8:28 ` Linus Walleij
2013-04-26 8:16 ` Vinod Koul
2013-04-26 8:16 ` Vinod Koul
2013-04-26 9:07 ` Linus Walleij
2013-04-26 9:07 ` Linus Walleij
2013-04-26 9:39 ` Arnd Bergmann
2013-04-26 9:39 ` Arnd Bergmann
2013-04-26 9:44 ` Russell King - ARM Linux
2013-04-26 9:44 ` Russell King - ARM Linux
2013-04-26 9:41 ` Russell King - ARM Linux
2013-04-26 9:41 ` Russell King - ARM Linux
2013-04-26 9:41 ` Russell King - ARM Linux
2013-04-30 10:08 ` Vinod Koul
2013-04-30 10:08 ` Vinod Koul
2013-04-26 9:34 ` Arnd Bergmann
2013-04-26 9:34 ` Arnd Bergmann
2013-04-26 9:34 ` Arnd Bergmann
2013-04-18 10:27 ` [PATCH 7/9] ARM: ux500: Stop passing Cryp DMA channel config information though pdata Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-25 12:02 ` Linus Walleij
2013-04-25 12:02 ` Linus Walleij
2013-04-18 10:27 ` [PATCH 8/9] crypto: ux500/[cryp|hash] - Show successful start-up in the bootlog Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-25 12:03 ` Linus Walleij
2013-04-25 12:03 ` Linus Walleij
2013-04-25 12:03 ` Linus Walleij
2013-04-18 10:27 ` [PATCH 9/9] ARM: ux500: Register Cyrp and Hash platform drivers on Snowball Lee Jones
2013-04-18 10:27 ` Lee Jones
2013-04-25 12:04 ` Linus Walleij
2013-04-25 12:04 ` Linus Walleij
2013-04-18 10:44 ` [PATCH 0/9] Fix ux500 crypto drivers and init DMA in the correct way Arnd Bergmann
2013-04-18 10:44 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130419122226.GB3432@gmail.com \
--to=lee.jones@linaro.org \
--cc=andreas.westin@stericsson.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linus.walleij@stericsson.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.