Commit 3f3ad98ceb995a4f9238e0d21d2b1d162cfed6d9

Authored by Eric Lee
1 parent b567902d9d

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)