[PATCH v4 17/19] crypto: talitos - Replace has_ftr_sec1() with is_sec1() static key helper

Paul Louvel <[email protected]>
Newsgroups org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Now that is_sec1() is available, replace all has_ftr_sec1(priv) calls
and the local "bool is_sec1" variables with direct is_sec1()
invocations.

It removes the requirement that every caller has to either get struct
talitos_private out of dev_get_drvdata() or/and pass the is_sec1
parameter to each inline helper.

Drop the now-unused has_ftr_sec1() helper.

Signed-off-by: Paul Louvel <[email protected]>
---
 drivers/crypto/talitos/talitos-aead.c     |  24 +++----
 drivers/crypto/talitos/talitos-hash.c     |  26 +++----
 drivers/crypto/talitos/talitos-skcipher.c |  15 ++--
 drivers/crypto/talitos/talitos.c          | 113 +++++++++++++-----------------
 drivers/crypto/talitos/talitos.h          |  49 ++++---------
 5 files changed, 87 insertions(+), 140 deletions(-)

diff --git a/drivers/crypto/talitos/talitos-aead.c b/drivers/crypto/talitos/talitos-aead.c
index cd1b8e6d371b..d9e27eddfd1d 100644
--- a/drivers/crypto/talitos/talitos-aead.c
+++ b/drivers/crypto/talitos/talitos-aead.c
@@ -208,18 +208,16 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
 	int sg_count, ret;
 	int elen = 0;
 	bool sync_needed = false;
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	bool is_ipsec_esp = desc->hdr & DESC_HDR_TYPE_IPSEC_ESP;
 	struct talitos_ptr *civ_ptr = &desc->ptr[is_ipsec_esp ? 2 : 3];
 	struct talitos_ptr *ckey_ptr = &desc->ptr[is_ipsec_esp ? 3 : 2];
 	dma_addr_t dma_icv = edesc->dma_link_tbl + edesc->dma_len - authsize;
 
 	/* hmac key */
-	to_talitos_ptr(&desc->ptr[0], ctx->dma_key, ctx->authkeylen, is_sec1);
+	to_talitos_ptr(&desc->ptr[0], ctx->dma_key, ctx->authkeylen);
 
 	sg_count = edesc->src_nents ?: 1;
-	if (is_sec1 && sg_count > 1)
+	if (is_sec1() && sg_count > 1)
 		sg_copy_to_buffer(areq->src, sg_count, edesc->buf,
 				  areq->assoclen + cryptlen);
 	else
@@ -237,11 +235,11 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
 	}
 
 	/* cipher iv */
-	to_talitos_ptr(civ_ptr, edesc->iv_dma, ivsize, is_sec1);
+	to_talitos_ptr(civ_ptr, edesc->iv_dma, ivsize);
 
 	/* cipher key */
 	to_talitos_ptr(ckey_ptr, ctx->dma_key  + ctx->authkeylen,
-		       ctx->enckeylen, is_sec1);
+		       ctx->enckeylen);
 
 	/*
 	 * cipher in
@@ -264,7 +262,7 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
 	/* cipher out */
 	if (areq->src != areq->dst) {
 		sg_count = edesc->dst_nents ? : 1;
-		if (!is_sec1 || sg_count == 1)
+		if (!is_sec1() || sg_count == 1)
 			dma_map_sg(dev, areq->dst, sg_count, DMA_FROM_DEVICE);
 	}
 
@@ -281,15 +279,15 @@ static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
 		struct talitos_ptr *tbl_ptr = &edesc->link_tbl[tbl_off];
 
 		/* Add an entry to the link table for ICV data */
-		to_talitos_ptr_ext_set(tbl_ptr - 1, 0, is_sec1);
-		to_talitos_ptr_ext_set(tbl_ptr, DESC_PTR_LNKTBL_RET, is_sec1);
+		to_talitos_ptr_ext_set(tbl_ptr - 1, 0);
+		to_talitos_ptr_ext_set(tbl_ptr, DESC_PTR_LNKTBL_RET);
 
 		/* icv data follows link tables */
-		to_talitos_ptr(tbl_ptr, dma_icv, authsize, is_sec1);
-		to_talitos_ptr_ext_or(&desc->ptr[5], authsize, is_sec1);
+		to_talitos_ptr(tbl_ptr, dma_icv, authsize);
+		to_talitos_ptr_ext_or(&desc->ptr[5], authsize);
 		sync_needed = true;
 	} else if (!encrypt) {
-		to_talitos_ptr(&desc->ptr[6], dma_icv, authsize, is_sec1);
+		to_talitos_ptr(&desc->ptr[6], dma_icv, authsize);
 		sync_needed = true;
 	} else if (!is_ipsec_esp) {
 		talitos_sg_map(dev, areq->dst, authsize, edesc, &desc->ptr[6],
@@ -642,7 +640,7 @@ int talitos_register_aead(struct device *dev)
 		aead_alg = &aead_driver_algs[i].alg.aead;
 		alg = &aead_alg->base;
 
-		if (has_ftr_sec1(priv))
+		if (is_sec1())
 			alg->cra_alignmask = 3;
 
 		if (!(priv->features & TALITOS_FTR_SHA224_HWINIT) &&
diff --git a/drivers/crypto/talitos/talitos-hash.c b/drivers/crypto/talitos/talitos-hash.c
index a52305969588..8c3a57801025 100644
--- a/drivers/crypto/talitos/talitos-hash.c
+++ b/drivers/crypto/talitos/talitos-hash.c
@@ -44,8 +44,6 @@ static void common_nonsnoop_hash_unmap(struct device *dev,
 {
 	struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
 	struct crypto_ahash *tfm = crypto_ahash_reqtfm(areq);
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	struct talitos_desc *desc = &edesc->desc;
 
 	unmap_single_talitos_ptr(dev, &desc->ptr[5], DMA_FROM_DEVICE);
@@ -58,7 +56,7 @@ static void common_nonsnoop_hash_unmap(struct device *dev,
 		talitos_sg_unmap(dev, edesc, edesc->src, NULL, 0, 0);
 
 	/* When using hashctx-in, must unmap it. */
-	if (from_talitos_ptr_len(&desc->ptr[1], is_sec1))
+	if (from_talitos_ptr_len(&desc->ptr[1]))
 		unmap_single_talitos_ptr(dev, &desc->ptr[1],
 					 DMA_TO_DEVICE);
 
@@ -89,11 +87,10 @@ static void ahash_done(struct device *dev,
 		 container_of(desc, struct talitos_edesc, desc);
 	struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
 	struct crypto_ahash *tfm = crypto_ahash_reqtfm(areq);
-	bool is_sec1 = has_ftr_sec1(dev_get_drvdata(dev));
 	struct talitos_ctx *ctx = crypto_ahash_ctx(tfm);
 	struct talitos_edesc *next;
 
-	if (is_sec1) {
+	if (is_sec1()) {
 		free_edesc_list_from(areq, edesc);
 		ahash_request_complete(areq, err ?: req_ctx->to_hash_later);
 	} else {
@@ -150,8 +147,6 @@ static void common_nonsnoop_hash(struct talitos_edesc *edesc,
 	struct device *dev = ctx->dev;
 	struct talitos_desc *desc = &edesc->desc;
 	bool sync_needed = false;
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	int sg_count;
 
 	/* first DWORD empty */
@@ -169,11 +164,10 @@ static void common_nonsnoop_hash(struct talitos_edesc *edesc,
 
 	/* HMAC key */
 	if (ctx->keylen)
-		to_talitos_ptr(&desc->ptr[2], ctx->dma_key, ctx->keylen,
-			       is_sec1);
+		to_talitos_ptr(&desc->ptr[2], ctx->dma_key, ctx->keylen);
 
 	sg_count = edesc->src_nents ?: 1;
-	if (is_sec1 && sg_count > 1)
+	if (is_sec1() && sg_count > 1)
 		sg_copy_to_buffer(edesc->src, sg_count, edesc->buf, length);
 	else if (length)
 		sg_count = dma_map_sg(dev, edesc->src, sg_count, DMA_TO_DEVICE);
@@ -201,7 +195,7 @@ static void common_nonsnoop_hash(struct talitos_edesc *edesc,
 
 	/* last DWORD empty */
 
-	if (is_sec1 && from_talitos_ptr_len(&desc->ptr[3], true) == 0)
+	if (is_sec1() && from_talitos_ptr_len(&desc->ptr[3]) == 0)
 		talitos_handle_buggy_hash(req_ctx, ctx, edesc, &desc->ptr[3]);
 
 	if (sync_needed)
@@ -222,12 +216,12 @@ static struct talitos_edesc *ahash_edesc_alloc(struct ahash_request *areq,
 
 static struct talitos_edesc *
 ahash_process_req_prepare(struct ahash_request *areq, unsigned int nbytes,
-			  unsigned int blocksize, bool is_sec1)
+			  unsigned int blocksize)
 {
 	struct talitos_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
 	struct talitos_ahash_req_ctx *req_ctx = ahash_request_ctx(areq);
 	struct talitos_edesc *first = NULL, *prev_edesc = NULL, *edesc;
-	size_t desc_max = is_sec1 ? TALITOS1_MAX_DATA_LEN :
+	size_t desc_max = is_sec1() ? TALITOS1_MAX_DATA_LEN :
 				    TALITOS2_MAX_DATA_LEN;
 	struct scatterlist tmp[2];
 	size_t to_hash_this_desc;
@@ -272,7 +266,7 @@ ahash_process_req_prepare(struct ahash_request *areq, unsigned int nbytes,
 			edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_HMAC;
 
 		/* clear the DN bit  */
-		if (is_sec1 && !edesc->last)
+		if (is_sec1() && !edesc->last)
 			edesc->desc.hdr &= ~DESC_HDR_DONE_NOTIFY;
 
 		common_nonsnoop_hash(edesc, areq, to_hash_this_desc);
@@ -298,7 +292,6 @@ static int ahash_process_req(struct ahash_request *areq, unsigned int nbytes)
 	struct talitos_edesc *edesc;
 	unsigned int blocksize =
 			crypto_tfm_alg_blocksize(crypto_ahash_tfm(tfm));
-	bool is_sec1 = has_ftr_sec1(dev_get_drvdata(ctx->dev));
 	unsigned int nbytes_to_hash;
 	unsigned int to_hash_later;
 	struct device *dev = ctx->dev;
@@ -315,8 +308,7 @@ static int ahash_process_req(struct ahash_request *areq, unsigned int nbytes)
 	req_ctx->to_hash_later = to_hash_later;
 	req_ctx->message_size += nbytes_to_hash;
 
-	edesc = ahash_process_req_prepare(areq, nbytes_to_hash, blocksize,
-					  is_sec1);
+	edesc = ahash_process_req_prepare(areq, nbytes_to_hash, blocksize);
 	if (IS_ERR(edesc))
 		return PTR_ERR(edesc);
 
diff --git a/drivers/crypto/talitos/talitos-skcipher.c b/drivers/crypto/talitos/talitos-skcipher.c
index b12191243aae..2c34e2ffbf7e 100644
--- a/drivers/crypto/talitos/talitos-skcipher.c
+++ b/drivers/crypto/talitos/talitos-skcipher.c
@@ -59,21 +59,19 @@ static int common_nonsnoop(struct talitos_edesc *edesc,
 	unsigned int ivsize = crypto_skcipher_ivsize(cipher);
 	int sg_count, ret;
 	bool sync_needed = false;
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	bool is_ctr = (desc->hdr & DESC_HDR_SEL0_MASK) == DESC_HDR_SEL0_AESU &&
 		      (desc->hdr & DESC_HDR_MODE0_AESU_MASK) == DESC_HDR_MODE0_AESU_CTR;
 
 	/* first DWORD empty */
 
 	/* cipher iv */
-	to_talitos_ptr(&desc->ptr[1], edesc->iv_dma, ivsize, is_sec1);
+	to_talitos_ptr(&desc->ptr[1], edesc->iv_dma, ivsize);
 
 	/* cipher key */
-	to_talitos_ptr(&desc->ptr[2], ctx->dma_key, ctx->keylen, is_sec1);
+	to_talitos_ptr(&desc->ptr[2], ctx->dma_key, ctx->keylen);
 
 	sg_count = edesc->src_nents ?: 1;
-	if (is_sec1 && sg_count > 1)
+	if (is_sec1() && sg_count > 1)
 		sg_copy_to_buffer(areq->src, sg_count, edesc->buf,
 				  cryptlen);
 	else
@@ -91,7 +89,7 @@ static int common_nonsnoop(struct talitos_edesc *edesc,
 	/* cipher out */
 	if (areq->src != areq->dst) {
 		sg_count = edesc->dst_nents ? : 1;
-		if (!is_sec1 || sg_count == 1)
+		if (!is_sec1() || sg_count == 1)
 			dma_map_sg(dev, areq->dst, sg_count, DMA_FROM_DEVICE);
 	}
 
@@ -324,7 +322,6 @@ static struct talitos_alg_template skcipher_driver_algs[] = {
 
 int talitos_register_skcipher(struct device *dev)
 {
-	struct talitos_private *priv = dev_get_drvdata(dev);
 	struct skcipher_alg *skcipher_alg;
 	struct crypto_alg *alg;
 	size_t i;
@@ -338,10 +335,10 @@ int talitos_register_skcipher(struct device *dev)
 		skcipher_alg = &skcipher_driver_algs[i].alg.skcipher;
 		alg = &skcipher_alg->base;
 
-		if (has_ftr_sec1(priv))
+		if (is_sec1())
 			alg->cra_alignmask = 3;
 
-		if (!strcmp(alg->cra_name, "ctr(aes)") && !has_ftr_sec1(priv) &&
+		if (!strcmp(alg->cra_name, "ctr(aes)") && !is_sec1() &&
 		    DESC_TYPE(skcipher_driver_algs[i].desc_hdr_template) !=
 			    DESC_TYPE(DESC_HDR_TYPE_AESU_CTR_NONSNOOP)) {
 			continue;
diff --git a/drivers/crypto/talitos/talitos.c b/drivers/crypto/talitos/talitos.c
index c93e3b551f6d..8ea26422f449 100644
--- a/drivers/crypto/talitos/talitos.c
+++ b/drivers/crypto/talitos/talitos.c
@@ -44,9 +44,8 @@ static int reset_channel(struct device *dev, int ch)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	unsigned int timeout = TALITOS_TIMEOUT;
-	bool is_sec1 = has_ftr_sec1(priv);
 
-	if (is_sec1) {
+	if (is_sec1()) {
 		setbits32(priv->chan[ch].reg + TALITOS_CCCR_LO,
 			  TALITOS1_CCCR_LO_RESET);
 
@@ -71,7 +70,7 @@ static int reset_channel(struct device *dev, int ch)
 	setbits32(priv->chan[ch].reg + TALITOS_CCCR_LO, TALITOS_CCCR_LO_EAE |
 		  TALITOS_CCCR_LO_CDWE | TALITOS_CCCR_LO_CDIE);
 	/* enable chaining descriptors */
-	if (is_sec1)
+	if (is_sec1())
 		setbits32(priv->chan[ch].reg + TALITOS_CCCR_LO,
 			  TALITOS_CCCR_LO_NE);
 
@@ -87,8 +86,7 @@ static int reset_device(struct device *dev)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	unsigned int timeout = TALITOS_TIMEOUT;
-	bool is_sec1 = has_ftr_sec1(priv);
-	u32 mcr = is_sec1 ? TALITOS1_MCR_SWR : TALITOS2_MCR_SWR;
+	u32 mcr = is_sec1() ? TALITOS1_MCR_SWR : TALITOS2_MCR_SWR;
 
 	setbits32(priv->reg + TALITOS_MCR, mcr);
 
@@ -116,7 +114,6 @@ static int init_device(struct device *dev)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	int ch, err;
-	bool is_sec1 = has_ftr_sec1(priv);
 
 	/*
 	 * Master reset
@@ -140,7 +137,7 @@ static int init_device(struct device *dev)
 	}
 
 	/* enable channel done and error interrupts */
-	if (is_sec1) {
+	if (is_sec1()) {
 		clrbits32(priv->reg + TALITOS_IMR, TALITOS1_IMR_INIT);
 		clrbits32(priv->reg + TALITOS_IMR_LO, TALITOS1_IMR_LO_INIT);
 		/* disable parity error check in DEU (erroneous? test vect.) */
@@ -159,14 +156,14 @@ static int init_device(struct device *dev)
 }
 
 static void dma_map_request(struct device *dev, struct talitos_request *request,
-			    struct talitos_desc *desc, bool is_sec1)
+			    struct talitos_desc *desc)
 {
 	struct talitos_edesc *edesc =
 		container_of(desc, struct talitos_edesc, desc);
 	dma_addr_t dma_desc, prev_dma_desc;
 	struct talitos_edesc *prev_edesc = NULL;
 
-	if (is_sec1) {
+	if (is_sec1()) {
 		while (edesc) {
 			edesc->desc.hdr1 = edesc->desc.hdr;
 
@@ -220,7 +217,6 @@ int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,
 	struct talitos_request *request;
 	unsigned long flags;
 	int head;
-	bool is_sec1 = has_ftr_sec1(priv);
 
 	spin_lock_irqsave(&priv->chan[ch].head_lock, flags);
 
@@ -234,7 +230,7 @@ int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,
 	request = &priv->chan[ch].fifo[head];
 
 	/* map descriptor and save caller data */
-	dma_map_request(dev, request, desc, is_sec1);
+	dma_map_request(dev, request, desc);
 	request->callback = callback;
 	request->context = context;
 
@@ -257,12 +253,12 @@ int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,
 }
 
 static __be32 get_request_hdr(struct device *dev,
-			      struct talitos_request *request, bool is_sec1)
+			      struct talitos_request *request)
 {
 	struct talitos_edesc *edesc;
 	dma_addr_t dma_desc;
 
-	if (!is_sec1) {
+	if (!is_sec1()) {
 		dma_sync_single_for_cpu(dev, request->dma_desc,
 					TALITOS_DESC_SIZE, DMA_BIDIRECTIONAL);
 
@@ -283,11 +279,11 @@ static __be32 get_request_hdr(struct device *dev,
 }
 
 static void dma_unmap_request(struct device *dev,
-			      struct talitos_request *request, bool is_sec1)
+			      struct talitos_request *request)
 {
 	struct talitos_edesc *edesc;
 
-	if (is_sec1) {
+	if (is_sec1()) {
 		dma_unmap_single(dev, request->dma_desc, TALITOS_DESC_SIZE,
 				 DMA_BIDIRECTIONAL);
 		edesc = container_of(request->desc, struct talitos_edesc, desc);
@@ -312,7 +308,6 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
 	struct talitos_request *request, saved_req;
 	unsigned long flags;
 	int tail, status;
-	bool is_sec1 = has_ftr_sec1(priv);
 
 	spin_lock_irqsave(&priv->chan[ch].tail_lock, flags);
 
@@ -324,7 +319,7 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
 
 		/* descriptors with their done bits set don't get the error */
 		rmb();
-		hdr = get_request_hdr(dev, request, is_sec1);
+		hdr = get_request_hdr(dev, request);
 
 		if ((hdr & DESC_HDR_DONE) == DESC_HDR_DONE)
 			status = 0;
@@ -334,7 +329,7 @@ static void flush_channel(struct device *dev, int ch, int error, int reset_ch)
 			else
 				status = error;
 
-		dma_unmap_request(dev, request, is_sec1);
+		dma_unmap_request(dev, request);
 
 		/* copy entries so we can call callback outside lock */
 		saved_req.desc = request->desc;
@@ -424,13 +419,13 @@ DEF_TALITOS2_DONE(ch0_2, TALITOS2_ISR_CH_0_2_DONE)
 DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)
 
 static __be32 search_desc_hdr_in_request(struct talitos_request *request,
-					 dma_addr_t cur_desc, bool is_sec1)
+					 dma_addr_t cur_desc)
 {
 	struct talitos_edesc *edesc;
 
 	if (request->dma_desc == cur_desc) {
 		return request->desc->hdr;
-	} else if (is_sec1) {
+	} else if (is_sec1()) {
 		edesc = container_of(request->desc, struct talitos_edesc, desc);
 		while (edesc->next_desc) {
 			if (edesc->desc.next_desc == cpu_to_be32(cur_desc))
@@ -447,7 +442,6 @@ static __be32 search_desc_hdr_in_request(struct talitos_request *request,
 static __be32 current_desc_hdr(struct device *dev, int ch)
 {
 	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	struct talitos_request *request;
 	int tail, iter;
 	dma_addr_t cur_desc;
@@ -466,7 +460,7 @@ static __be32 current_desc_hdr(struct device *dev, int ch)
 	do {
 		request = &priv->chan[ch].fifo[iter];
 
-		hdr = search_desc_hdr_in_request(request, cur_desc, is_sec1);
+		hdr = search_desc_hdr_in_request(request, cur_desc);
 		if (hdr)
 			break;
 
@@ -563,12 +557,11 @@ static void talitos_error(struct device *dev, u32 isr, u32 isr_lo)
 	unsigned int timeout = TALITOS_TIMEOUT;
 	int ch, error, reset_dev = 0;
 	u32 v_lo;
-	bool is_sec1 = has_ftr_sec1(priv);
-	int reset_ch = is_sec1 ? 1 : 0; /* only SEC2 supports continuation */
+	int reset_ch = is_sec1() ? 1 : 0; /* only SEC2 supports continuation */
 
 	for (ch = 0; ch < priv->num_channels; ch++) {
 		/* skip channels without errors */
-		if (is_sec1) {
+		if (is_sec1()) {
 			/* bits 29, 31, 17, 19 */
 			if (!(isr & (1 << (29 + (ch & 1) * 2 - (ch & 2) * 6))))
 				continue;
@@ -594,19 +587,19 @@ static void talitos_error(struct device *dev, u32 isr, u32 isr_lo)
 		if (v_lo & TALITOS_CCPSR_LO_MDTE)
 			dev_err(dev, "master data transfer error\n");
 		if (v_lo & TALITOS_CCPSR_LO_SGDLZ)
-			dev_err(dev, is_sec1 ? "pointer not complete error\n"
+			dev_err(dev, is_sec1() ? "pointer not complete error\n"
 					     : "s/g data length zero error\n");
 		if (v_lo & TALITOS_CCPSR_LO_FPZ)
-			dev_err(dev, is_sec1 ? "parity error\n"
+			dev_err(dev, is_sec1() ? "parity error\n"
 					     : "fetch pointer zero error\n");
 		if (v_lo & TALITOS_CCPSR_LO_IDH)
 			dev_err(dev, "illegal descriptor header error\n");
 		if (v_lo & TALITOS_CCPSR_LO_IEU)
-			dev_err(dev, is_sec1 ? "static assignment error\n"
+			dev_err(dev, is_sec1() ? "static assignment error\n"
 					     : "invalid exec unit error\n");
 		if (v_lo & TALITOS_CCPSR_LO_EU)
 			report_eu_error(dev, ch, current_desc_hdr(dev, ch));
-		if (!is_sec1) {
+		if (!is_sec1()) {
 			if (v_lo & TALITOS_CCPSR_LO_GB)
 				dev_err(dev, "gather boundary error\n");
 			if (v_lo & TALITOS_CCPSR_LO_GRL)
@@ -635,9 +628,9 @@ static void talitos_error(struct device *dev, u32 isr, u32 isr_lo)
 			}
 		}
 	}
-	if (reset_dev || (is_sec1 && isr & ~TALITOS1_ISR_4CHERR) ||
-	    (!is_sec1 && isr & ~TALITOS2_ISR_4CHERR) || isr_lo) {
-		if (is_sec1 && (isr_lo & TALITOS1_ISR_TEA_ERR))
+	if (reset_dev || (is_sec1() && isr & ~TALITOS1_ISR_4CHERR) ||
+	    (!is_sec1() && isr & ~TALITOS2_ISR_4CHERR) || isr_lo) {
+		if (is_sec1() && (isr_lo & TALITOS1_ISR_TEA_ERR))
 			dev_err(dev, "TEA error: ISR 0x%08x_%08x\n",
 				isr, isr_lo);
 		else
@@ -733,24 +726,22 @@ void talitos_sg_unmap(struct device *dev,
 			     struct scatterlist *dst,
 			     unsigned int len, unsigned int offset)
 {
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	unsigned int src_nents = edesc->src_nents ? : 1;
 	unsigned int dst_nents = edesc->dst_nents ? : 1;
 
-	if (is_sec1 && dst && dst_nents > 1) {
+	if (is_sec1() && dst && dst_nents > 1) {
 		dma_sync_single_for_device(dev, edesc->dma_link_tbl + offset,
 					   len, DMA_FROM_DEVICE);
 		sg_pcopy_from_buffer(dst, dst_nents, edesc->buf + offset, len,
 				     offset);
 	}
 	if (src != dst) {
-		if (src_nents == 1 || !is_sec1)
+		if (src_nents == 1 || !is_sec1())
 			dma_unmap_sg(dev, src, src_nents, DMA_TO_DEVICE);
 
-		if (dst && (dst_nents == 1 || !is_sec1))
+		if (dst && (dst_nents == 1 || !is_sec1()))
 			dma_unmap_sg(dev, dst, dst_nents, DMA_FROM_DEVICE);
-	} else if (src_nents == 1 || !is_sec1) {
+	} else if (src_nents == 1 || !is_sec1()) {
 		dma_unmap_sg(dev, src, src_nents, DMA_BIDIRECTIONAL);
 	}
 }
@@ -783,15 +774,15 @@ static int sg_to_link_tbl_offset(struct scatterlist *sg, int sg_count,
 
 		if (datalen > 0 && len > datalen) {
 			to_talitos_ptr(link_tbl_ptr + count,
-				       sg_dma_address(sg) + offset, datalen, 0);
-			to_talitos_ptr_ext_set(link_tbl_ptr + count, 0, 0);
+				       sg_dma_address(sg) + offset, datalen);
+			to_talitos_ptr_ext_set(link_tbl_ptr + count, 0);
 			count++;
 			len -= datalen;
 			offset += datalen;
 		}
 		to_talitos_ptr(link_tbl_ptr + count,
-			       sg_dma_address(sg) + offset, sg_next(sg) ? len : len + padding, 0);
-		to_talitos_ptr_ext_set(link_tbl_ptr + count, 0, 0);
+			       sg_dma_address(sg) + offset, sg_next(sg) ? len : len + padding);
+		to_talitos_ptr_ext_set(link_tbl_ptr + count, 0);
 		count++;
 		cryptlen -= len;
 		datalen -= len;
@@ -804,7 +795,7 @@ static int sg_to_link_tbl_offset(struct scatterlist *sg, int sg_count,
 	/* tag end of link table */
 	if (count > 0)
 		to_talitos_ptr_ext_set(link_tbl_ptr + count - 1,
-				       DESC_PTR_LNKTBL_RET, 0);
+				       DESC_PTR_LNKTBL_RET);
 
 	return count;
 }
@@ -815,33 +806,30 @@ int talitos_sg_map_ext(struct device *dev, struct scatterlist *src,
 			      unsigned int offset, int tbl_off, int elen,
 			      bool force, int align)
 {
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 	int aligned_len = ALIGN(len, align);
 
 	if (!src) {
-		to_talitos_ptr(ptr, 0, 0, is_sec1);
+		to_talitos_ptr(ptr, 0, 0);
 		return 1;
 	}
-	to_talitos_ptr_ext_set(ptr, elen, is_sec1);
+	to_talitos_ptr_ext_set(ptr, elen);
 	if (sg_count == 1 && !force) {
-		to_talitos_ptr(ptr, sg_dma_address(src) + offset, aligned_len, is_sec1);
+		to_talitos_ptr(ptr, sg_dma_address(src) + offset, aligned_len);
 		return sg_count;
 	}
-	if (is_sec1) {
-		to_talitos_ptr(ptr, edesc->dma_link_tbl + offset, aligned_len, is_sec1);
+	if (is_sec1()) {
+		to_talitos_ptr(ptr, edesc->dma_link_tbl + offset, aligned_len);
 		return sg_count;
 	}
 	sg_count = sg_to_link_tbl_offset(src, sg_count, offset, len, elen,
 					 &edesc->link_tbl[tbl_off], align);
 	if (sg_count == 1 && !force) {
-		/* Only one segment now, so no link tbl needed*/
-		copy_talitos_ptr(ptr, &edesc->link_tbl[tbl_off], is_sec1);
+		copy_talitos_ptr(ptr, &edesc->link_tbl[tbl_off]);
 		return sg_count;
 	}
 	to_talitos_ptr(ptr, edesc->dma_link_tbl +
-			    tbl_off * sizeof(struct talitos_ptr), aligned_len, is_sec1);
-	to_talitos_ptr_ext_or(ptr, DESC_PTR_LNKTBL_JUMP, is_sec1);
+			    tbl_off * sizeof(struct talitos_ptr), aligned_len);
+	to_talitos_ptr_ext_or(ptr, DESC_PTR_LNKTBL_JUMP);
 
 	return sg_count;
 }
@@ -875,9 +863,7 @@ struct talitos_edesc *talitos_edesc_alloc(struct device *dev,
 	dma_addr_t iv_dma = 0;
 	gfp_t flags = cryptoflags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL :
 		      GFP_ATOMIC;
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
-	int max_len = is_sec1 ? TALITOS1_MAX_DATA_LEN : TALITOS2_MAX_DATA_LEN;
+	int max_len = is_sec1() ? TALITOS1_MAX_DATA_LEN : TALITOS2_MAX_DATA_LEN;
 
 	if (cryptlen + authsize > max_len) {
 		dev_err(dev, "length exceeds h/w max limit\n");
@@ -918,7 +904,7 @@ struct talitos_edesc *talitos_edesc_alloc(struct device *dev,
 	 */
 	alloc_len = sizeof(struct talitos_edesc);
 	if (src_nents || dst_nents || !encrypt) {
-		if (is_sec1)
+		if (is_sec1())
 			dma_len = (src_nents ? src_len : 0) +
 				  (dst_nents ? dst_len : 0) + authsize;
 		else
@@ -1094,14 +1080,13 @@ static int talitos_probe_irq(struct platform_device *ofdev)
 	struct device_node *np = ofdev->dev.of_node;
 	struct talitos_private *priv = dev_get_drvdata(dev);
 	int err;
-	bool is_sec1 = has_ftr_sec1(priv);
 
 	priv->irq[0] = irq_of_parse_and_map(np, 0);
 	if (!priv->irq[0]) {
 		dev_err(dev, "failed to map irq\n");
 		return -EINVAL;
 	}
-	if (is_sec1) {
+	if (is_sec1()) {
 		err = request_irq(priv->irq[0], talitos1_interrupt_4ch, 0,
 				  dev_driver_string(dev), dev);
 		goto primary_out;
@@ -1196,12 +1181,10 @@ static int talitos_probe(struct platform_device *ofdev)
 				  TALITOS_FTR_SHA224_HWINIT |
 				  TALITOS_FTR_HMAC_OK;
 
-	if (of_device_is_compatible(np, "fsl,sec1.0")) {
-		priv->features |= TALITOS_FTR_SEC1;
+	if (of_device_is_compatible(np, "fsl,sec1.0"))
 		talitos_init_branch(true);
-	} else {
+	else
 		talitos_init_branch(false);
-	}
 
 	if (of_device_is_compatible(np, "fsl,sec1.2")) {
 		priv->reg_deu = priv->reg + TALITOS12_DEU;
@@ -1232,7 +1215,7 @@ static int talitos_probe(struct platform_device *ofdev)
 	if (err)
 		goto err_out;
 
-	if (has_ftr_sec1(priv)) {
+	if (is_sec1()) {
 		if (priv->num_channels == 1)
 			tasklet_init(&priv->done_task[0], talitos1_done_ch0,
 				     (unsigned long)dev);
diff --git a/drivers/crypto/talitos/talitos.h b/drivers/crypto/talitos/talitos.h
index b0d176c7dab2..9bbdd409da5a 100644
--- a/drivers/crypto/talitos/talitos.h
+++ b/drivers/crypto/talitos/talitos.h
@@ -223,7 +223,6 @@ struct talitos_crypto_alg {
 #define TALITOS_FTR_HW_AUTH_CHECK 0x00000002
 #define TALITOS_FTR_SHA224_HWINIT 0x00000004
 #define TALITOS_FTR_HMAC_OK 0x00000008
-#define TALITOS_FTR_SEC1 0x00000010
 
 #if defined(CONFIG_CRYPTO_DEV_TALITOS1) && defined(CONFIG_CRYPTO_DEV_TALITOS2)
 DECLARE_STATIC_KEY_FALSE(talitos_is_sec1);
@@ -252,20 +251,6 @@ static inline void talitos_init_branch(bool sec1)
 
 #endif
 
-/*
- * If both CONFIG_CRYPTO_DEV_TALITOS1 and CONFIG_CRYPTO_DEV_TALITOS2 are
- * defined, we check the features which are set according to the device tree.
- * Otherwise, we answer true or false directly
- */
-static inline bool has_ftr_sec1(struct talitos_private *priv)
-{
-	if (IS_ENABLED(CONFIG_CRYPTO_DEV_TALITOS1) &&
-	    IS_ENABLED(CONFIG_CRYPTO_DEV_TALITOS2))
-		return priv->features & TALITOS_FTR_SEC1;
-
-	return IS_ENABLED(CONFIG_CRYPTO_DEV_TALITOS1);
-}
-
 /*
  * TALITOS_xxx_LO addresses point to the low data bits (32-63) of the register
  */
@@ -504,10 +489,10 @@ static inline bool has_ftr_sec1(struct talitos_private *priv)
 #define DESC_PTR_LNKTBL_NEXT			0x01
 
 static inline void to_talitos_ptr(struct talitos_ptr *ptr, dma_addr_t dma_addr,
-				  unsigned int len, bool is_sec1)
+				  unsigned int len)
 {
 	ptr->ptr = cpu_to_be32(lower_32_bits(dma_addr));
-	if (is_sec1) {
+	if (is_sec1()) {
 		ptr->len1 = cpu_to_be16(len);
 	} else {
 		ptr->len = cpu_to_be16(len);
@@ -516,10 +501,10 @@ static inline void to_talitos_ptr(struct talitos_ptr *ptr, dma_addr_t dma_addr,
 }
 
 static inline void copy_talitos_ptr(struct talitos_ptr *dst_ptr,
-				    struct talitos_ptr *src_ptr, bool is_sec1)
+				    struct talitos_ptr *src_ptr)
 {
 	dst_ptr->ptr = src_ptr->ptr;
-	if (is_sec1) {
+	if (is_sec1()) {
 		dst_ptr->len1 = src_ptr->len1;
 	} else {
 		dst_ptr->len = src_ptr->len;
@@ -527,26 +512,23 @@ static inline void copy_talitos_ptr(struct talitos_ptr *dst_ptr,
 	}
 }
 
-static inline unsigned short from_talitos_ptr_len(struct talitos_ptr *ptr,
-						  bool is_sec1)
+static inline unsigned short from_talitos_ptr_len(struct talitos_ptr *ptr)
 {
-	if (is_sec1)
+	if (is_sec1())
 		return be16_to_cpu(ptr->len1);
 	else
 		return be16_to_cpu(ptr->len);
 }
 
-static inline void to_talitos_ptr_ext_set(struct talitos_ptr *ptr, u8 val,
-					  bool is_sec1)
+static inline void to_talitos_ptr_ext_set(struct talitos_ptr *ptr, u8 val)
 {
-	if (!is_sec1)
+	if (!is_sec1())
 		ptr->j_extent = val;
 }
 
-static inline void to_talitos_ptr_ext_or(struct talitos_ptr *ptr, u8 val,
-					 bool is_sec1)
+static inline void to_talitos_ptr_ext_or(struct talitos_ptr *ptr, u8 val)
 {
-	if (!is_sec1)
+	if (!is_sec1())
 		ptr->j_extent |= val;
 }
 
@@ -559,10 +541,8 @@ static void __map_single_talitos_ptr(struct device *dev,
 				     unsigned long attrs)
 {
 	dma_addr_t dma_addr = dma_map_single_attrs(dev, data, len, dir, attrs);
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
 
-	to_talitos_ptr(ptr, dma_addr, len, is_sec1);
+	to_talitos_ptr(ptr, dma_addr, len);
 }
 
 static inline void map_single_talitos_ptr(struct device *dev,
@@ -589,11 +569,8 @@ static inline void unmap_single_talitos_ptr(struct device *dev,
 					    struct talitos_ptr *ptr,
 					    enum dma_data_direction dir)
 {
-	struct talitos_private *priv = dev_get_drvdata(dev);
-	bool is_sec1 = has_ftr_sec1(priv);
-
-	dma_unmap_single(dev, be32_to_cpu(ptr->ptr),
-			 from_talitos_ptr_len(ptr, is_sec1), dir);
+	dma_unmap_single(dev, be32_to_cpu(ptr->ptr), from_talitos_ptr_len(ptr),
+			 dir);
 }
 
 int talitos_submit(struct device *dev, int ch, struct talitos_desc *desc,

-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.