summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
authorVictor(Weiguo) Pan <wpan@nvidia.com>2012-07-02 15:53:08 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 00:48:20 -0700
commit6e04c14b94aa3568ebc8f4cafc1030f2d33c51ee (patch)
tree3e23a874772a65b14373670b7d7cc00520cef0f5 /drivers/crypto
parentb019ab0a498b95e8fb62fa3edfbb60d062637f0a (diff)
crypto: tegra-se: Enable interrupts after clock enable
Because SE interrupts could be enabled in bootloader, if it's not cleared before jumping into kernel, it continues to assert the interrupt line to interrupt controller. When SE interrupts is enabled in kernel, to access SE registers in IST without clock enabled hung the CPU. To fix this issue, interrupt enabling is moved after clock is enabled. bug 1010334 Change-Id: I1b909efce2c9d92c3112039fc217f7c1360f9bbb Reviewed-on: http://git-master/r/113073 (cherry picked from commit b06e6662f738ad01a3b2b6803db654abaa03385e) Signed-off-by: Victor(Weiguo) Pan <wpan@nvidia.com> Change-Id: Ide4b0295c781e0bba7aa071616e3e6160e44ee76 Reviewed-on: http://git-master/r/114064 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Rebase-Id: R1305d95edece3af1653a8e8ad5e86dc5aded76f4
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/tegra-se.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/crypto/tegra-se.c b/drivers/crypto/tegra-se.c
index d0a5494a53ee..abe153dcd347 100644
--- a/drivers/crypto/tegra-se.c
+++ b/drivers/crypto/tegra-se.c
@@ -2420,14 +2420,6 @@ static int tegra_se_probe(struct platform_device *pdev)
goto err_irq;
}
- err = request_irq(se_dev->irq, tegra_se_irq, IRQF_DISABLED,
- DRIVER_NAME, se_dev);
- if (err) {
- dev_err(se_dev->dev, "request_irq failed - irq[%d] err[%d]\n",
- se_dev->irq, err);
- goto err_irq;
- }
-
se_dev->chipdata =
(struct tegra_se_chipdata *)pdev->id_entry->driver_data;
@@ -2469,6 +2461,14 @@ static int tegra_se_probe(struct platform_device *pdev)
pm_runtime_enable(se_dev->dev);
tegra_se_key_read_disable_all();
+ err = request_irq(se_dev->irq, tegra_se_irq, IRQF_DISABLED,
+ DRIVER_NAME, se_dev);
+ if (err) {
+ dev_err(se_dev->dev, "request_irq failed - irq[%d] err[%d]\n",
+ se_dev->irq, err);
+ goto err_irq;
+ }
+
err = tegra_se_alloc_ll_buf(se_dev, SE_MAX_SRC_SG_COUNT,
SE_MAX_DST_SG_COUNT);
if (err) {