Lines Matching refs:sha_dd
1366 struct atmel_sha_dev *sha_dd = dev_id; in atmel_sha_irq() local
1369 reg = atmel_sha_read(sha_dd, SHA_ISR); in atmel_sha_irq()
1370 if (reg & atmel_sha_read(sha_dd, SHA_IMR)) { in atmel_sha_irq()
1371 atmel_sha_write(sha_dd, SHA_IDR, reg); in atmel_sha_irq()
1372 if (SHA_FLAGS_BUSY & sha_dd->flags) { in atmel_sha_irq()
1373 sha_dd->flags |= SHA_FLAGS_OUTPUT_READY; in atmel_sha_irq()
1374 if (!(SHA_FLAGS_CPU & sha_dd->flags)) in atmel_sha_irq()
1375 sha_dd->flags |= SHA_FLAGS_DMA_READY; in atmel_sha_irq()
1376 tasklet_schedule(&sha_dd->done_task); in atmel_sha_irq()
1378 dev_warn(sha_dd->dev, "SHA interrupt when no active requests.\n"); in atmel_sha_irq()
2558 struct atmel_sha_dev *sha_dd; in atmel_sha_probe() local
2563 sha_dd = devm_kzalloc(&pdev->dev, sizeof(*sha_dd), GFP_KERNEL); in atmel_sha_probe()
2564 if (!sha_dd) in atmel_sha_probe()
2567 sha_dd->dev = dev; in atmel_sha_probe()
2569 platform_set_drvdata(pdev, sha_dd); in atmel_sha_probe()
2571 INIT_LIST_HEAD(&sha_dd->list); in atmel_sha_probe()
2572 spin_lock_init(&sha_dd->lock); in atmel_sha_probe()
2574 tasklet_init(&sha_dd->done_task, atmel_sha_done_task, in atmel_sha_probe()
2575 (unsigned long)sha_dd); in atmel_sha_probe()
2576 tasklet_init(&sha_dd->queue_task, atmel_sha_queue_task, in atmel_sha_probe()
2577 (unsigned long)sha_dd); in atmel_sha_probe()
2579 crypto_init_queue(&sha_dd->queue, ATMEL_SHA_QUEUE_LENGTH); in atmel_sha_probe()
2588 sha_dd->phys_base = sha_res->start; in atmel_sha_probe()
2591 sha_dd->irq = platform_get_irq(pdev, 0); in atmel_sha_probe()
2592 if (sha_dd->irq < 0) { in atmel_sha_probe()
2593 err = sha_dd->irq; in atmel_sha_probe()
2597 err = devm_request_irq(&pdev->dev, sha_dd->irq, atmel_sha_irq, in atmel_sha_probe()
2598 IRQF_SHARED, "atmel-sha", sha_dd); in atmel_sha_probe()
2605 sha_dd->iclk = devm_clk_get(&pdev->dev, "sha_clk"); in atmel_sha_probe()
2606 if (IS_ERR(sha_dd->iclk)) { in atmel_sha_probe()
2608 err = PTR_ERR(sha_dd->iclk); in atmel_sha_probe()
2612 sha_dd->io_base = devm_ioremap_resource(&pdev->dev, sha_res); in atmel_sha_probe()
2613 if (IS_ERR(sha_dd->io_base)) { in atmel_sha_probe()
2615 err = PTR_ERR(sha_dd->io_base); in atmel_sha_probe()
2619 err = clk_prepare(sha_dd->iclk); in atmel_sha_probe()
2623 err = atmel_sha_hw_version_init(sha_dd); in atmel_sha_probe()
2627 atmel_sha_get_cap(sha_dd); in atmel_sha_probe()
2629 if (sha_dd->caps.has_dma) { in atmel_sha_probe()
2630 err = atmel_sha_dma_init(sha_dd); in atmel_sha_probe()
2635 dma_chan_name(sha_dd->dma_lch_in.chan)); in atmel_sha_probe()
2639 list_add_tail(&sha_dd->list, &atmel_sha.dev_list); in atmel_sha_probe()
2642 err = atmel_sha_register_algs(sha_dd); in atmel_sha_probe()
2647 sha_dd->caps.has_sha224 ? "/SHA224" : "", in atmel_sha_probe()
2648 sha_dd->caps.has_sha_384_512 ? "/SHA384/SHA512" : ""); in atmel_sha_probe()
2654 list_del(&sha_dd->list); in atmel_sha_probe()
2656 if (sha_dd->caps.has_dma) in atmel_sha_probe()
2657 atmel_sha_dma_cleanup(sha_dd); in atmel_sha_probe()
2659 clk_unprepare(sha_dd->iclk); in atmel_sha_probe()
2661 tasklet_kill(&sha_dd->queue_task); in atmel_sha_probe()
2662 tasklet_kill(&sha_dd->done_task); in atmel_sha_probe()
2669 struct atmel_sha_dev *sha_dd = platform_get_drvdata(pdev); in atmel_sha_remove() local
2672 list_del(&sha_dd->list); in atmel_sha_remove()
2675 atmel_sha_unregister_algs(sha_dd); in atmel_sha_remove()
2677 tasklet_kill(&sha_dd->queue_task); in atmel_sha_remove()
2678 tasklet_kill(&sha_dd->done_task); in atmel_sha_remove()
2680 if (sha_dd->caps.has_dma) in atmel_sha_remove()
2681 atmel_sha_dma_cleanup(sha_dd); in atmel_sha_remove()
2683 clk_unprepare(sha_dd->iclk); in atmel_sha_remove()