/* * Load descriptor aka #6 * * To load a previously saved context back to the MDHA unit * * p1: Saved Context * p2: NULL * */ static int sahara_sha_hw_context_descriptor_create(struct sahara_dev *dev, struct sahara_sha_reqctx *rctx, struct ahash_request *req, int index) { dev->hw_desc[index]->hdr = sahara_sha_init_hdr(dev, rctx); dev->hw_desc[index]->len1 = rctx->context
/* * Load descriptor aka #6 * * To load a previously saved context back to the MDHA unit * * p1: Saved Context * p2: NULL * */ static int sahara_sha_hw_context_descriptor_create(struct sahara_dev *dev, struct sahara_sha_reqctx *rctx, struct ahash_request *req, int index) { dev->hw_desc[index]->hdr = sahara_sha_init_hdr(dev, rctx); dev->hw_desc[index]->len1 = rctx->context_size; dev->hw_desc[index]->p1 = dev->hw_phys_link[index]; dev->hw_desc[index]->len2 = 0; dev->hw_desc[index]->p2 = 0; dev->hw_link[index]->len = rctx->context_size; dev->hw_link[index]->p = dev->context_phys_base; dev->hw_link[index]->next = 0; return 0; }
static int sahara_sha_hw_data_descriptor_create(struct sahara_dev *dev, struct sahara_sha_reqctx *rctx, struct ahash_request *req, int index) { unsigned result_len; int i = index; if (rctx->first) /* Create initial descriptor: #8*/ dev->hw_desc[index]->hdr = sahara_sha_init_hdr(dev, rctx); else /* Create hash descriptor: #10. Must follow #6. */ dev->hw_desc[index]->hdr = SAHARA_HDR_MDHA_HASH; dev->hw_desc[index]->len1 = rctx->total; if (dev->hw_desc[index]->len1 == 0) { /* if len1 is 0, p1 must be 0, too */ dev->hw_desc[index]->p1 = 0; rctx->sg_in_idx = 0; } else { /* Create input links */ dev->hw_desc[index]->p1 = dev->hw_phys_link[index]; i = sahara_sha_hw_links_create(dev, rctx, index); rctx->sg_in_idx = index; if (i < 0) return i; } dev->hw_desc[index]->p2 = dev->hw_phys_link[i]; /* Save the context for the next operation */ result_len = rctx->context_size; dev->hw_link[i]->p = dev->context_phys_base; dev->hw_link[i]->len = result_len; dev->hw_desc[index]->len2 = result_len; dev->hw_link[i]->next = 0; return 0; }