Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e40fdb50 authored by Gilad Ben-Yossef's avatar Gilad Ben-Yossef Committed by Herbert Xu
Browse files

crypto: ccree - add support for CryptoCell 713



Add support for Arm TrustZone CryptoCell 713.
Note that this patch just enables using a 713 in backwards compatible mode
to 712. Newer 713 specific features will follow.

Signed-off-by: default avatarGilad Ben-Yossef <gilad@benyossef.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 913a3aa0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -765,7 +765,7 @@ config CRYPTO_DEV_CCREE
	help
	  Say 'Y' to enable a driver for the REE interface of the Arm
	  TrustZone CryptoCell family of processors. Currently the
	  CryptoCell 712, 710 and 630 are supported.
	  CryptoCell 713, 712, 710 and 630 are supported.
	  Choose this if you wish to use hardware acceleration of
	  cryptographic operations on the system REE.
	  If unsure say Y.
+15 −8
Original line number Diff line number Diff line
@@ -43,6 +43,10 @@ struct cc_hw_data {

/* Hardware revisions defs. */

static const struct cc_hw_data cc713_hw = {
	.name = "713", .rev = CC_HW_REV_713
};

static const struct cc_hw_data cc712_hw = {
	.name = "712", .rev = CC_HW_REV_712, .sig =  0xDCC71200U
};
@@ -56,6 +60,7 @@ static const struct cc_hw_data cc630p_hw = {
};

static const struct of_device_id arm_ccree_dev_of_match[] = {
	{ .compatible = "arm,cryptocell-713-ree", .data = &cc713_hw },
	{ .compatible = "arm,cryptocell-712-ree", .data = &cc712_hw },
	{ .compatible = "arm,cryptocell-710-ree", .data = &cc710_hw },
	{ .compatible = "arm,cryptocell-630p-ree", .data = &cc630p_hw },
@@ -297,6 +302,7 @@ static int init_cc_resources(struct platform_device *plat_dev)
		return rc;
	}

	if (hw_rev->rev <= CC_HW_REV_712) {
		/* Verify correct mapping */
		signature_val = cc_ioread(new_drvdata, new_drvdata->sig_offset);
		if (signature_val != hw_rev->sig) {
@@ -306,6 +312,7 @@ static int init_cc_resources(struct platform_device *plat_dev)
			goto post_clk_err;
		}
		dev_dbg(dev, "CC SIGNATURE=0x%08X\n", signature_val);
	}

	/* Display HW versions */
	dev_info(dev, "ARM CryptoCell %s Driver: HW version 0x%08X, Driver version %s\n",
+3 −2
Original line number Diff line number Diff line
@@ -36,12 +36,13 @@
extern bool cc_dump_desc;
extern bool cc_dump_bytes;

#define DRV_MODULE_VERSION "4.0"
#define DRV_MODULE_VERSION "5.0"

enum cc_hw_rev {
	CC_HW_REV_630 = 630,
	CC_HW_REV_710 = 710,
	CC_HW_REV_712 = 712
	CC_HW_REV_712 = 712,
	CC_HW_REV_713 = 713
};

#define CC_COHERENT_CACHE_PARAMS 0xEEE