Lines Matching refs:dd

49 #define SHA_REG_IDIGEST(dd, x)		((dd)->pdata->idigest_ofs + ((x)*0x04))  argument
50 #define SHA_REG_DIN(dd, x) ((dd)->pdata->din_ofs + ((x) * 0x04)) argument
51 #define SHA_REG_DIGCNT(dd) ((dd)->pdata->digcnt_ofs) argument
53 #define SHA_REG_ODIGEST(dd, x) ((dd)->pdata->odigest_ofs + (x * 0x04)) argument
63 #define SHA_REG_REV(dd) ((dd)->pdata->rev_ofs) argument
65 #define SHA_REG_MASK(dd) ((dd)->pdata->mask_ofs) argument
71 #define SHA_REG_SYSSTATUS(dd) ((dd)->pdata->sysstatus_ofs) argument
74 #define SHA_REG_MODE(dd) ((dd)->pdata->mode_ofs) argument
88 #define SHA_REG_LENGTH(dd) ((dd)->pdata->length_ofs) argument
141 struct omap_sham_dev *dd; member
167 struct omap_sham_dev *dd; member
192 void (*write_ctrl)(struct omap_sham_dev *dd, size_t length,
194 void (*trigger)(struct omap_sham_dev *dd, size_t length);
195 int (*poll_irq)(struct omap_sham_dev *dd);
245 static inline u32 omap_sham_read(struct omap_sham_dev *dd, u32 offset) in omap_sham_read() argument
247 return __raw_readl(dd->io_base + offset); in omap_sham_read()
250 static inline void omap_sham_write(struct omap_sham_dev *dd, in omap_sham_write() argument
253 __raw_writel(value, dd->io_base + offset); in omap_sham_write()
256 static inline void omap_sham_write_mask(struct omap_sham_dev *dd, u32 address, in omap_sham_write_mask() argument
261 val = omap_sham_read(dd, address); in omap_sham_write_mask()
264 omap_sham_write(dd, address, val); in omap_sham_write_mask()
267 static inline int omap_sham_wait(struct omap_sham_dev *dd, u32 offset, u32 bit) in omap_sham_wait() argument
271 while (!(omap_sham_read(dd, offset) & bit)) { in omap_sham_wait()
282 struct omap_sham_dev *dd = ctx->dd; in omap_sham_copy_hash_omap2() local
286 for (i = 0; i < dd->pdata->digest_size / sizeof(u32); i++) { in omap_sham_copy_hash_omap2()
288 hash[i] = omap_sham_read(dd, SHA_REG_IDIGEST(dd, i)); in omap_sham_copy_hash_omap2()
290 omap_sham_write(dd, SHA_REG_IDIGEST(dd, i), hash[i]); in omap_sham_copy_hash_omap2()
297 struct omap_sham_dev *dd = ctx->dd; in omap_sham_copy_hash_omap4() local
301 struct crypto_ahash *tfm = crypto_ahash_reqtfm(dd->req); in omap_sham_copy_hash_omap4()
306 for (i = 0; i < dd->pdata->digest_size / sizeof(u32); i++) { in omap_sham_copy_hash_omap4()
308 opad[i] = omap_sham_read(dd, in omap_sham_copy_hash_omap4()
309 SHA_REG_ODIGEST(dd, i)); in omap_sham_copy_hash_omap4()
311 omap_sham_write(dd, SHA_REG_ODIGEST(dd, i), in omap_sham_copy_hash_omap4()
335 if (test_bit(FLAGS_BE32_SHA1, &ctx->dd->flags)) in omap_sham_copy_ready_hash()
363 static int omap_sham_hw_init(struct omap_sham_dev *dd) in omap_sham_hw_init() argument
367 err = pm_runtime_get_sync(dd->dev); in omap_sham_hw_init()
369 dev_err(dd->dev, "failed to get sync: %d\n", err); in omap_sham_hw_init()
373 if (!test_bit(FLAGS_INIT, &dd->flags)) { in omap_sham_hw_init()
374 set_bit(FLAGS_INIT, &dd->flags); in omap_sham_hw_init()
375 dd->err = 0; in omap_sham_hw_init()
381 static void omap_sham_write_ctrl_omap2(struct omap_sham_dev *dd, size_t length, in omap_sham_write_ctrl_omap2() argument
384 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_write_ctrl_omap2()
388 omap_sham_write(dd, SHA_REG_DIGCNT(dd), ctx->digcnt); in omap_sham_write_ctrl_omap2()
390 omap_sham_write_mask(dd, SHA_REG_MASK(dd), in omap_sham_write_ctrl_omap2()
407 omap_sham_write_mask(dd, SHA_REG_CTRL, val, mask); in omap_sham_write_ctrl_omap2()
410 static void omap_sham_trigger_omap2(struct omap_sham_dev *dd, size_t length) in omap_sham_trigger_omap2() argument
414 static int omap_sham_poll_irq_omap2(struct omap_sham_dev *dd) in omap_sham_poll_irq_omap2() argument
416 return omap_sham_wait(dd, SHA_REG_CTRL, SHA_REG_CTRL_INPUT_READY); in omap_sham_poll_irq_omap2()
443 static void omap_sham_write_n(struct omap_sham_dev *dd, u32 offset, in omap_sham_write_n() argument
447 omap_sham_write(dd, offset, *value); in omap_sham_write_n()
450 static void omap_sham_write_ctrl_omap4(struct omap_sham_dev *dd, size_t length, in omap_sham_write_ctrl_omap4() argument
453 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_write_ctrl_omap4()
463 struct crypto_ahash *tfm = crypto_ahash_reqtfm(dd->req); in omap_sham_write_ctrl_omap4()
474 omap_sham_write_n(dd, SHA_REG_ODIGEST(dd, 0), in omap_sham_write_ctrl_omap4()
476 omap_sham_write_n(dd, SHA_REG_IDIGEST(dd, 0), in omap_sham_write_ctrl_omap4()
493 dev_dbg(dd->dev, "ctrl: %08x, flags: %08lx\n", val, ctx->flags); in omap_sham_write_ctrl_omap4()
494 omap_sham_write_mask(dd, SHA_REG_MODE(dd), val, mask); in omap_sham_write_ctrl_omap4()
495 omap_sham_write(dd, SHA_REG_IRQENA, SHA_REG_IRQENA_OUTPUT_RDY); in omap_sham_write_ctrl_omap4()
496 omap_sham_write_mask(dd, SHA_REG_MASK(dd), in omap_sham_write_ctrl_omap4()
502 static void omap_sham_trigger_omap4(struct omap_sham_dev *dd, size_t length) in omap_sham_trigger_omap4() argument
504 omap_sham_write(dd, SHA_REG_LENGTH(dd), length); in omap_sham_trigger_omap4()
507 static int omap_sham_poll_irq_omap4(struct omap_sham_dev *dd) in omap_sham_poll_irq_omap4() argument
509 return omap_sham_wait(dd, SHA_REG_IRQSTATUS, in omap_sham_poll_irq_omap4()
513 static int omap_sham_xmit_cpu(struct omap_sham_dev *dd, const u8 *buf, in omap_sham_xmit_cpu() argument
516 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_xmit_cpu()
520 dev_dbg(dd->dev, "xmit_cpu: digcnt: %d, length: %d, final: %d\n", in omap_sham_xmit_cpu()
523 dd->pdata->write_ctrl(dd, length, final, 0); in omap_sham_xmit_cpu()
524 dd->pdata->trigger(dd, length); in omap_sham_xmit_cpu()
530 set_bit(FLAGS_FINAL, &dd->flags); /* catch last interrupt */ in omap_sham_xmit_cpu()
532 set_bit(FLAGS_CPU, &dd->flags); in omap_sham_xmit_cpu()
538 if (dd->pdata->poll_irq(dd)) in omap_sham_xmit_cpu()
542 omap_sham_write(dd, SHA_REG_DIN(dd, count), in omap_sham_xmit_cpu()
552 struct omap_sham_dev *dd = param; in omap_sham_dma_callback() local
554 set_bit(FLAGS_DMA_READY, &dd->flags); in omap_sham_dma_callback()
555 tasklet_schedule(&dd->done_task); in omap_sham_dma_callback()
558 static int omap_sham_xmit_dma(struct omap_sham_dev *dd, dma_addr_t dma_addr, in omap_sham_xmit_dma() argument
561 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_xmit_dma()
566 dev_dbg(dd->dev, "xmit_dma: digcnt: %d, length: %d, final: %d\n", in omap_sham_xmit_dma()
571 cfg.dst_addr = dd->phys_base + SHA_REG_DIN(dd, 0); in omap_sham_xmit_dma()
575 ret = dmaengine_slave_config(dd->dma_lch, &cfg); in omap_sham_xmit_dma()
596 tx = dmaengine_prep_slave_sg(dd->dma_lch, &ctx->sgl, 1, in omap_sham_xmit_dma()
599 tx = dmaengine_prep_slave_single(dd->dma_lch, dma_addr, len32, in omap_sham_xmit_dma()
604 dev_err(dd->dev, "prep_slave_sg/single() failed\n"); in omap_sham_xmit_dma()
609 tx->callback_param = dd; in omap_sham_xmit_dma()
611 dd->pdata->write_ctrl(dd, length, final, 1); in omap_sham_xmit_dma()
616 set_bit(FLAGS_FINAL, &dd->flags); /* catch last interrupt */ in omap_sham_xmit_dma()
618 set_bit(FLAGS_DMA_ACTIVE, &dd->flags); in omap_sham_xmit_dma()
621 dma_async_issue_pending(dd->dma_lch); in omap_sham_xmit_dma()
623 dd->pdata->trigger(dd, length); in omap_sham_xmit_dma()
673 static int omap_sham_xmit_dma_map(struct omap_sham_dev *dd, in omap_sham_xmit_dma_map() argument
679 ctx->dma_addr = dma_map_single(dd->dev, ctx->buffer, ctx->buflen, in omap_sham_xmit_dma_map()
681 if (dma_mapping_error(dd->dev, ctx->dma_addr)) { in omap_sham_xmit_dma_map()
682 dev_err(dd->dev, "dma %u bytes error\n", ctx->buflen); in omap_sham_xmit_dma_map()
688 ret = omap_sham_xmit_dma(dd, ctx->dma_addr, length, final, 0); in omap_sham_xmit_dma_map()
690 dma_unmap_single(dd->dev, ctx->dma_addr, ctx->buflen, in omap_sham_xmit_dma_map()
696 static int omap_sham_update_dma_slow(struct omap_sham_dev *dd) in omap_sham_update_dma_slow() argument
698 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_update_dma_slow()
706 dev_dbg(dd->dev, "slow: bufcnt: %u, digcnt: %d, final: %d\n", in omap_sham_update_dma_slow()
712 return omap_sham_xmit_dma_map(dd, ctx, count, final); in omap_sham_update_dma_slow()
723 static int omap_sham_update_dma_start(struct omap_sham_dev *dd) in omap_sham_update_dma_start() argument
725 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_update_dma_start()
734 return omap_sham_update_dma_slow(dd); in omap_sham_update_dma_start()
743 return omap_sham_update_dma_slow(dd); in omap_sham_update_dma_start()
745 dev_dbg(dd->dev, "fast: digcnt: %d, bufcnt: %u, total: %u\n", in omap_sham_update_dma_start()
752 return omap_sham_update_dma_slow(dd); in omap_sham_update_dma_start()
756 return omap_sham_update_dma_slow(dd); in omap_sham_update_dma_start()
771 if (!dma_map_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE)) { in omap_sham_update_dma_start()
772 dev_err(dd->dev, "dma_map_sg error\n"); in omap_sham_update_dma_start()
783 ret = omap_sham_xmit_dma(dd, sg_dma_address(ctx->sg), length, final, 1); in omap_sham_update_dma_start()
785 dma_unmap_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE); in omap_sham_update_dma_start()
790 static int omap_sham_update_cpu(struct omap_sham_dev *dd) in omap_sham_update_cpu() argument
792 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_update_cpu()
802 dev_dbg(dd->dev, "cpu: bufcnt: %u, digcnt: %d, final: %d\n", in omap_sham_update_cpu()
808 return omap_sham_xmit_cpu(dd, ctx->buffer, bufcnt, final); in omap_sham_update_cpu()
814 static int omap_sham_update_dma_stop(struct omap_sham_dev *dd) in omap_sham_update_dma_stop() argument
816 struct omap_sham_reqctx *ctx = ahash_request_ctx(dd->req); in omap_sham_update_dma_stop()
818 dmaengine_terminate_all(dd->dma_lch); in omap_sham_update_dma_stop()
821 dma_unmap_sg(dd->dev, ctx->sg, 1, DMA_TO_DEVICE); in omap_sham_update_dma_stop()
828 dma_unmap_single(dd->dev, ctx->dma_addr, ctx->buflen, in omap_sham_update_dma_stop()
840 struct omap_sham_dev *dd = NULL, *tmp; in omap_sham_init() local
844 if (!tctx->dd) { in omap_sham_init()
846 dd = tmp; in omap_sham_init()
849 tctx->dd = dd; in omap_sham_init()
851 dd = tctx->dd; in omap_sham_init()
855 ctx->dd = dd; in omap_sham_init()
859 dev_dbg(dd->dev, "init: digest size: %d\n", in omap_sham_init()
894 if (!test_bit(FLAGS_AUTO_XOR, &dd->flags)) { in omap_sham_init()
908 static int omap_sham_update_req(struct omap_sham_dev *dd) in omap_sham_update_req() argument
910 struct ahash_request *req = dd->req; in omap_sham_update_req()
914 dev_dbg(dd->dev, "update_req: total: %u, digcnt: %d, finup: %d\n", in omap_sham_update_req()
918 err = omap_sham_update_cpu(dd); in omap_sham_update_req()
920 err = omap_sham_update_dma_start(dd); in omap_sham_update_req()
923 dev_dbg(dd->dev, "update: err: %d, digcnt: %d\n", err, ctx->digcnt); in omap_sham_update_req()
928 static int omap_sham_final_req(struct omap_sham_dev *dd) in omap_sham_final_req() argument
930 struct ahash_request *req = dd->req; in omap_sham_final_req()
934 if ((ctx->bufcnt <= get_block_size(ctx)) || dd->polling_mode) in omap_sham_final_req()
942 err = omap_sham_xmit_dma_map(dd, ctx, ctx->bufcnt, 1); in omap_sham_final_req()
944 err = omap_sham_xmit_cpu(dd, ctx->buffer, ctx->bufcnt, 1); in omap_sham_final_req()
948 dev_dbg(dd->dev, "final_req: err: %d\n", err); in omap_sham_final_req()
972 struct omap_sham_dev *dd = ctx->dd; in omap_sham_finish() local
978 !test_bit(FLAGS_AUTO_XOR, &dd->flags)) in omap_sham_finish()
982 dev_dbg(dd->dev, "digcnt: %d, bufcnt: %d\n", ctx->digcnt, ctx->bufcnt); in omap_sham_finish()
990 struct omap_sham_dev *dd = ctx->dd; in omap_sham_finish_req() local
993 dd->pdata->copy_hash(req, 1); in omap_sham_finish_req()
994 if (test_bit(FLAGS_FINAL, &dd->flags)) in omap_sham_finish_req()
1001 dd->flags &= ~(BIT(FLAGS_BUSY) | BIT(FLAGS_FINAL) | BIT(FLAGS_CPU) | in omap_sham_finish_req()
1004 pm_runtime_put(dd->dev); in omap_sham_finish_req()
1010 tasklet_schedule(&dd->done_task); in omap_sham_finish_req()
1013 static int omap_sham_handle_queue(struct omap_sham_dev *dd, in omap_sham_handle_queue() argument
1021 spin_lock_irqsave(&dd->lock, flags); in omap_sham_handle_queue()
1023 ret = ahash_enqueue_request(&dd->queue, req); in omap_sham_handle_queue()
1024 if (test_bit(FLAGS_BUSY, &dd->flags)) { in omap_sham_handle_queue()
1025 spin_unlock_irqrestore(&dd->lock, flags); in omap_sham_handle_queue()
1028 backlog = crypto_get_backlog(&dd->queue); in omap_sham_handle_queue()
1029 async_req = crypto_dequeue_request(&dd->queue); in omap_sham_handle_queue()
1031 set_bit(FLAGS_BUSY, &dd->flags); in omap_sham_handle_queue()
1032 spin_unlock_irqrestore(&dd->lock, flags); in omap_sham_handle_queue()
1041 dd->req = req; in omap_sham_handle_queue()
1044 dev_dbg(dd->dev, "handling new req, op: %lu, nbytes: %d\n", in omap_sham_handle_queue()
1047 err = omap_sham_hw_init(dd); in omap_sham_handle_queue()
1053 dd->pdata->copy_hash(req, 0); in omap_sham_handle_queue()
1056 err = omap_sham_update_req(dd); in omap_sham_handle_queue()
1059 err = omap_sham_final_req(dd); in omap_sham_handle_queue()
1061 err = omap_sham_final_req(dd); in omap_sham_handle_queue()
1068 dev_dbg(dd->dev, "exit, err: %d\n", err); in omap_sham_handle_queue()
1077 struct omap_sham_dev *dd = tctx->dd; in omap_sham_enqueue() local
1081 return omap_sham_handle_queue(dd, req); in omap_sham_enqueue()
1087 struct omap_sham_dev *dd = ctx->dd; in omap_sham_update() local
1107 dd->polling_mode) { in omap_sham_update()
1119 if (dd->polling_mode) in omap_sham_update()
1196 struct omap_sham_dev *dd = NULL, *tmp; in omap_sham_setkey() local
1200 if (!tctx->dd) { in omap_sham_setkey()
1202 dd = tmp; in omap_sham_setkey()
1205 tctx->dd = dd; in omap_sham_setkey()
1207 dd = tctx->dd; in omap_sham_setkey()
1228 if (!test_bit(FLAGS_AUTO_XOR, &dd->flags)) { in omap_sham_setkey()
1614 struct omap_sham_dev *dd = (struct omap_sham_dev *)data; in omap_sham_done_task() local
1617 if (!test_bit(FLAGS_BUSY, &dd->flags)) { in omap_sham_done_task()
1618 omap_sham_handle_queue(dd, NULL); in omap_sham_done_task()
1622 if (test_bit(FLAGS_CPU, &dd->flags)) { in omap_sham_done_task()
1623 if (test_and_clear_bit(FLAGS_OUTPUT_READY, &dd->flags)) { in omap_sham_done_task()
1625 err = omap_sham_update_cpu(dd); in omap_sham_done_task()
1629 } else if (test_bit(FLAGS_DMA_READY, &dd->flags)) { in omap_sham_done_task()
1630 if (test_and_clear_bit(FLAGS_DMA_ACTIVE, &dd->flags)) { in omap_sham_done_task()
1631 omap_sham_update_dma_stop(dd); in omap_sham_done_task()
1632 if (dd->err) { in omap_sham_done_task()
1633 err = dd->err; in omap_sham_done_task()
1637 if (test_and_clear_bit(FLAGS_OUTPUT_READY, &dd->flags)) { in omap_sham_done_task()
1639 clear_bit(FLAGS_DMA_READY, &dd->flags); in omap_sham_done_task()
1640 err = omap_sham_update_dma_start(dd); in omap_sham_done_task()
1649 dev_dbg(dd->dev, "update done: err: %d\n", err); in omap_sham_done_task()
1651 omap_sham_finish_req(dd->req, err); in omap_sham_done_task()
1654 static irqreturn_t omap_sham_irq_common(struct omap_sham_dev *dd) in omap_sham_irq_common() argument
1656 if (!test_bit(FLAGS_BUSY, &dd->flags)) { in omap_sham_irq_common()
1657 dev_warn(dd->dev, "Interrupt when no active requests.\n"); in omap_sham_irq_common()
1659 set_bit(FLAGS_OUTPUT_READY, &dd->flags); in omap_sham_irq_common()
1660 tasklet_schedule(&dd->done_task); in omap_sham_irq_common()
1668 struct omap_sham_dev *dd = dev_id; in omap_sham_irq_omap2() local
1670 if (unlikely(test_bit(FLAGS_FINAL, &dd->flags))) in omap_sham_irq_omap2()
1672 omap_sham_write_mask(dd, SHA_REG_CTRL, 0, SHA_REG_CTRL_LENGTH); in omap_sham_irq_omap2()
1674 omap_sham_write_mask(dd, SHA_REG_CTRL, SHA_REG_CTRL_OUTPUT_READY, in omap_sham_irq_omap2()
1676 omap_sham_read(dd, SHA_REG_CTRL); in omap_sham_irq_omap2()
1678 return omap_sham_irq_common(dd); in omap_sham_irq_omap2()
1683 struct omap_sham_dev *dd = dev_id; in omap_sham_irq_omap4() local
1685 omap_sham_write_mask(dd, SHA_REG_MASK(dd), 0, SHA_REG_MASK_IT_EN); in omap_sham_irq_omap4()
1687 return omap_sham_irq_common(dd); in omap_sham_irq_omap4()
1817 static int omap_sham_get_res_of(struct omap_sham_dev *dd, in omap_sham_get_res_of() argument
1838 dd->irq = irq_of_parse_and_map(node, 0); in omap_sham_get_res_of()
1839 if (!dd->irq) { in omap_sham_get_res_of()
1845 dd->dma = -1; /* Dummy value that's unused */ in omap_sham_get_res_of()
1846 dd->pdata = match->data; in omap_sham_get_res_of()
1856 static int omap_sham_get_res_of(struct omap_sham_dev *dd, in omap_sham_get_res_of() argument
1863 static int omap_sham_get_res_pdev(struct omap_sham_dev *dd, in omap_sham_get_res_pdev() argument
1880 dd->irq = platform_get_irq(pdev, 0); in omap_sham_get_res_pdev()
1881 if (dd->irq < 0) { in omap_sham_get_res_pdev()
1883 err = dd->irq; in omap_sham_get_res_pdev()
1894 dd->dma = r->start; in omap_sham_get_res_pdev()
1897 dd->pdata = &omap_sham_pdata_omap2; in omap_sham_get_res_pdev()
1905 struct omap_sham_dev *dd; in omap_sham_probe() local
1912 dd = devm_kzalloc(dev, sizeof(struct omap_sham_dev), GFP_KERNEL); in omap_sham_probe()
1913 if (dd == NULL) { in omap_sham_probe()
1918 dd->dev = dev; in omap_sham_probe()
1919 platform_set_drvdata(pdev, dd); in omap_sham_probe()
1921 INIT_LIST_HEAD(&dd->list); in omap_sham_probe()
1922 spin_lock_init(&dd->lock); in omap_sham_probe()
1923 tasklet_init(&dd->done_task, omap_sham_done_task, (unsigned long)dd); in omap_sham_probe()
1924 crypto_init_queue(&dd->queue, OMAP_SHAM_QUEUE_LENGTH); in omap_sham_probe()
1926 err = (dev->of_node) ? omap_sham_get_res_of(dd, dev, &res) : in omap_sham_probe()
1927 omap_sham_get_res_pdev(dd, pdev, &res); in omap_sham_probe()
1931 dd->io_base = devm_ioremap_resource(dev, &res); in omap_sham_probe()
1932 if (IS_ERR(dd->io_base)) { in omap_sham_probe()
1933 err = PTR_ERR(dd->io_base); in omap_sham_probe()
1936 dd->phys_base = res.start; in omap_sham_probe()
1938 err = devm_request_irq(dev, dd->irq, dd->pdata->intr_hdlr, in omap_sham_probe()
1939 IRQF_TRIGGER_NONE, dev_name(dev), dd); in omap_sham_probe()
1942 dd->irq, err); in omap_sham_probe()
1949 dd->dma_lch = dma_request_slave_channel_compat(mask, omap_dma_filter_fn, in omap_sham_probe()
1950 &dd->dma, dev, "rx"); in omap_sham_probe()
1951 if (!dd->dma_lch) { in omap_sham_probe()
1952 dd->polling_mode = 1; in omap_sham_probe()
1956 dd->flags |= dd->pdata->flags; in omap_sham_probe()
1967 rev = omap_sham_read(dd, SHA_REG_REV(dd)); in omap_sham_probe()
1971 (rev & dd->pdata->major_mask) >> dd->pdata->major_shift, in omap_sham_probe()
1972 (rev & dd->pdata->minor_mask) >> dd->pdata->minor_shift); in omap_sham_probe()
1975 list_add_tail(&dd->list, &sham.dev_list); in omap_sham_probe()
1978 for (i = 0; i < dd->pdata->algs_info_size; i++) { in omap_sham_probe()
1979 for (j = 0; j < dd->pdata->algs_info[i].size; j++) { in omap_sham_probe()
1981 &dd->pdata->algs_info[i].algs_list[j]); in omap_sham_probe()
1985 dd->pdata->algs_info[i].registered++; in omap_sham_probe()
1992 for (i = dd->pdata->algs_info_size - 1; i >= 0; i--) in omap_sham_probe()
1993 for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--) in omap_sham_probe()
1995 &dd->pdata->algs_info[i].algs_list[j]); in omap_sham_probe()
1998 if (dd->dma_lch) in omap_sham_probe()
1999 dma_release_channel(dd->dma_lch); in omap_sham_probe()
2008 static struct omap_sham_dev *dd; in omap_sham_remove() local
2011 dd = platform_get_drvdata(pdev); in omap_sham_remove()
2012 if (!dd) in omap_sham_remove()
2015 list_del(&dd->list); in omap_sham_remove()
2017 for (i = dd->pdata->algs_info_size - 1; i >= 0; i--) in omap_sham_remove()
2018 for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--) in omap_sham_remove()
2020 &dd->pdata->algs_info[i].algs_list[j]); in omap_sham_remove()
2021 tasklet_kill(&dd->done_task); in omap_sham_remove()
2024 if (dd->dma_lch) in omap_sham_remove()
2025 dma_release_channel(dd->dma_lch); in omap_sham_remove()