summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSteve Cornelius <steve.cornelius@freescale.com>2012-11-08 00:39:05 -0700
committerTerry Lv <r65388@freescale.com>2012-11-13 13:45:59 +0800
commit261d069a7193ab6854b8ce5884e101722fa1f26e (patch)
treec6f02bb6c9bdd5d8eea872ec5d9317e7425f89c6 /drivers
parent6ac35bb16b4f90a945e70d262ae9d8407cf332fc (diff)
ENGR00232945-2: CAAM: Add SNVS state handler startup
Add SNVS state handler startup to CAAM controller driver. Signed-off-by: Steve Cornelius <steve.cornelius@freescale.com> Signed-off-by: Terry Lv <r65388@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/crypto/caam/ctrl.c12
-rw-r--r--drivers/crypto/caam/intern.h10
-rw-r--r--drivers/crypto/caam/snvsregs.h14
3 files changed, 29 insertions, 7 deletions
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index 2eba900de1c2..0cadb8ef29b4 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -26,6 +26,10 @@ static int caam_remove(struct platform_device *pdev)
topregs = (struct caam_full __iomem *)ctrlpriv->ctrl;
#ifndef CONFIG_OF
+#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO
+ caam_secvio_shutdown(pdev);
+#endif /* SECVIO */
+
#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SM
caam_sm_shutdown(pdev);
#endif
@@ -296,7 +300,9 @@ static int caam_probe(struct platform_device *pdev)
ctrlpriv->sm_base = (void __force *)sm_base;
ctrlpriv->sm_size = res->end - res->start + 1;
- /* Get the IRQ for security violations only */
+ /*
+ * Get the IRQ for security violations
+ */
#ifdef CONFIG_OF
ctrlpriv->secvio_irq = of_irq_to_resource(nprop, 0, NULL);
#else
@@ -585,6 +591,10 @@ static int caam_probe(struct platform_device *pdev)
#endif /* SM_TEST */
#endif /* SM */
+#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO
+ caam_secvio_startup(pdev);
+#endif /* SECVIO */
+
#endif /* CONFIG_OF */
return status;
}
diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h
index 87c3b68193d6..991ce0b586da 100644
--- a/drivers/crypto/caam/intern.h
+++ b/drivers/crypto/caam/intern.h
@@ -124,6 +124,11 @@ struct caam_drv_private {
#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SM
struct device *smdev; /* Secure Memory dev */
#endif
+
+#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO
+ struct device *secviodev;
+#endif
+
/*
* debugfs entries for developer view into driver/device
* variables at runtime.
@@ -173,6 +178,11 @@ void caam_sm_shutdown(struct platform_device *pdev);
int caam_sm_example_init(struct platform_device *pdev);
#endif
+#ifdef CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO
+int caam_secvio_startup(struct platform_device *pdev);
+void caam_secvio_shutdown(struct platform_device *pdev);
+#endif /* SECVIO */
+
#endif /* CONFIG_OF */
#endif /* INTERN_H */
diff --git a/drivers/crypto/caam/snvsregs.h b/drivers/crypto/caam/snvsregs.h
index 4a1e4a8b414a..5655f6e88b4b 100644
--- a/drivers/crypto/caam/snvsregs.h
+++ b/drivers/crypto/caam/snvsregs.h
@@ -77,6 +77,7 @@ struct snvs_hp {
#define HP_SECVIO_INTEN_SRC2 0x00000004
#define HP_SECVIO_INTEN_SRC1 0x00000002
#define HP_SECVIO_INTEN_SRC0 0x00000001
+#define HP_SECVIO_INTEN_ALL 0x8000003f
#define HP_SECVIO_ICTL_CFG_SHIFT 30
#define HP_SECVIO_ICTL_CFG_MASK (0x3 << HP_SECVIO_ICTL_CFG_SHIFT)
@@ -109,12 +110,13 @@ struct snvs_hp {
#define HP_SECVIOST_ZMK_ECC_FAIL 0x08000000 /* write to clear */
#define HP_SECVIOST_ZMK_SYN_SHIFT 16
#define HP_SECVIOST_ZMK_SYN_MASK (0x1ff << HP_SECVIOST_ZMK_SYN_SHIFT)
-#define HP_SECVIOST_ZMK_SECVIO5 0x00000020
-#define HP_SECVIOST_ZMK_SECVIO4 0x00000010
-#define HP_SECVIOST_ZMK_SECVIO3 0x00000008
-#define HP_SECVIOST_ZMK_SECVIO2 0x00000004
-#define HP_SECVIOST_ZMK_SECVIO1 0x00000002
-#define HP_SECVIOST_ZMK_SECVIO0 0x00000001
+#define HP_SECVIOST_SECVIO5 0x00000020
+#define HP_SECVIOST_SECVIO4 0x00000010
+#define HP_SECVIOST_SECVIO3 0x00000008
+#define HP_SECVIOST_SECVIO2 0x00000004
+#define HP_SECVIOST_SECVIO1 0x00000002
+#define HP_SECVIOST_SECVIO0 0x00000001
+#define HP_SECVIOST_SECVIOMASK 0x0000003f
/*
* SNVS Low Power Domain