Commit 3f3ad98ceb995a4f9238e0d21d2b1d162cfed6d9
1 parent
b567902d9d
Exists in
v3.2_SMARCT335xPSP_04.06.00.11
and in
2 other branches
Add 0002-crypto-omap4-sham-Use-finer-grained-PM-management.patch that wasn't par…
…t of the official PSP 04.06.00.11 release
Showing 1 changed file with 8 additions and 15 deletions Side-by-side Diff
drivers/crypto/omap4-sham.c
... | ... | @@ -138,7 +138,6 @@ |
138 | 138 | struct device *dev; |
139 | 139 | void __iomem *io_base; |
140 | 140 | int irq; |
141 | - struct clk *iclk; | |
142 | 141 | spinlock_t lock; |
143 | 142 | int err; |
144 | 143 | int dma; |
... | ... | @@ -701,6 +700,8 @@ |
701 | 700 | dd->dflags &= ~(BIT(FLAGS_BUSY) | BIT(FLAGS_FINAL) | BIT(FLAGS_CPU) | |
702 | 701 | BIT(FLAGS_DMA_READY) | BIT(FLAGS_OUTPUT_READY)); |
703 | 702 | |
703 | + pm_runtime_put_sync(dd->dev); | |
704 | + | |
704 | 705 | if (req->base.complete) |
705 | 706 | req->base.complete(&req->base, err); |
706 | 707 | |
... | ... | @@ -742,6 +743,8 @@ |
742 | 743 | dev_dbg(dd->dev, "handling new req, op: %lu, nbytes: %d\n", |
743 | 744 | ctx->op, req->nbytes); |
744 | 745 | |
746 | + pm_runtime_get_sync(dd->dev); | |
747 | + | |
745 | 748 | if (!test_bit(FLAGS_INIT, &dd->dflags)) { |
746 | 749 | set_bit(FLAGS_INIT, &dd->dflags); |
747 | 750 | dd->err = 0; |
... | ... | @@ -1306,11 +1309,6 @@ |
1306 | 1309 | if (err) |
1307 | 1310 | goto dma_err; |
1308 | 1311 | |
1309 | - pm_runtime_enable(dev); | |
1310 | - udelay(1); | |
1311 | - pm_runtime_get_sync(dev); | |
1312 | - udelay(1); | |
1313 | - | |
1314 | 1312 | dd->io_base = ioremap(dd->phys_base, SZ_4K); |
1315 | 1313 | if (!dd->io_base) { |
1316 | 1314 | dev_err(dev, "can't ioremap\n"); |
1317 | 1315 | |
... | ... | @@ -1318,7 +1316,11 @@ |
1318 | 1316 | goto io_err; |
1319 | 1317 | } |
1320 | 1318 | |
1319 | + | |
1320 | + pm_runtime_enable(dev); | |
1321 | + pm_runtime_get_sync(dev); | |
1321 | 1322 | reg = omap4_sham_read(dd, SHA_REG_REV); |
1323 | + pm_runtime_put_sync(&pdev->dev); | |
1322 | 1324 | |
1323 | 1325 | dev_info(dev, "AM33X SHA/MD5 hw accel rev: %u.%02u\n", |
1324 | 1326 | (reg & SHA_REG_REV_X_MAJOR_MASK) >> 8, reg & SHA_REG_REV_Y_MINOR_MASK); |
1325 | 1327 | |
1326 | 1328 | |
... | ... | @@ -1342,14 +1344,8 @@ |
1342 | 1344 | crypto_unregister_ahash(&algs[j]); |
1343 | 1345 | iounmap(dd->io_base); |
1344 | 1346 | io_err: |
1345 | - pm_runtime_put_sync(dev); | |
1346 | - udelay(1); | |
1347 | 1347 | pm_runtime_disable(dev); |
1348 | - udelay(1); | |
1349 | 1348 | |
1350 | -//clk_err: | |
1351 | -// omap4_sham_dma_cleanup(dd); | |
1352 | - | |
1353 | 1349 | dma_err: |
1354 | 1350 | if (dd->irq >= 0) |
1355 | 1351 | free_irq(dd->irq, dd); |
1356 | 1352 | |
... | ... | @@ -1377,10 +1373,7 @@ |
1377 | 1373 | crypto_unregister_ahash(&algs[i]); |
1378 | 1374 | tasklet_kill(&dd->done_task); |
1379 | 1375 | iounmap(dd->io_base); |
1380 | - pm_runtime_put_sync(&pdev->dev); | |
1381 | - udelay(1); | |
1382 | 1376 | pm_runtime_disable(&pdev->dev); |
1383 | - udelay(1); | |
1384 | 1377 | |
1385 | 1378 | omap4_sham_dma_cleanup(dd); |
1386 | 1379 | if (dd->irq >= 0) |