[PATCH v3 12/17] crypto: talitos - base address for Execution Units

2015-04-17 Thread Christophe Leroy
SEC 1.0, 1.2 and 2.x+ have different EU base addresses, so we need to
define pointers for each EU in the driver private data structure.
The proper address is set by the probe function depending on the
SEC type, in order to provide access to the proper address.

Signed-off-by: Christophe Leroy 
---
 drivers/crypto/talitos.c | 83 
 drivers/crypto/talitos.h | 72 +
 2 files changed, 100 insertions(+), 55 deletions(-)

diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index e6ea651..6d77699 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -208,7 +208,7 @@ static int init_device(struct device *dev)
 
/* disable integrity check error interrupts (use writeback instead) */
if (priv->features & TALITOS_FTR_HW_AUTH_CHECK)
-   setbits32(priv->reg + TALITOS_MDEUICR_LO,
+   setbits32(priv->reg_mdeu + TALITOS_EUICR_LO,
  TALITOS_MDEUICR_LO_ICE);
 
return 0;
@@ -424,44 +424,44 @@ static void report_eu_error(struct device *dev, int ch, 
u32 desc_hdr)
switch (desc_hdr & DESC_HDR_SEL0_MASK) {
case DESC_HDR_SEL0_AFEU:
dev_err(dev, "AFEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_AFEUISR),
-   in_be32(priv->reg + TALITOS_AFEUISR_LO));
+   in_be32(priv->reg_afeu + TALITOS_EUISR),
+   in_be32(priv->reg_afeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_DEU:
dev_err(dev, "DEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_DEUISR),
-   in_be32(priv->reg + TALITOS_DEUISR_LO));
+   in_be32(priv->reg_deu + TALITOS_EUISR),
+   in_be32(priv->reg_deu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_MDEUA:
case DESC_HDR_SEL0_MDEUB:
dev_err(dev, "MDEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_MDEUISR),
-   in_be32(priv->reg + TALITOS_MDEUISR_LO));
+   in_be32(priv->reg_mdeu + TALITOS_EUISR),
+   in_be32(priv->reg_mdeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_RNG:
dev_err(dev, "RNGUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_RNGUISR),
-   in_be32(priv->reg + TALITOS_RNGUISR_LO));
+   in_be32(priv->reg_rngu + TALITOS_ISR),
+   in_be32(priv->reg_rngu + TALITOS_ISR_LO));
break;
case DESC_HDR_SEL0_PKEU:
dev_err(dev, "PKEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_PKEUISR),
-   in_be32(priv->reg + TALITOS_PKEUISR_LO));
+   in_be32(priv->reg_pkeu + TALITOS_EUISR),
+   in_be32(priv->reg_pkeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_AESU:
dev_err(dev, "AESUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_AESUISR),
-   in_be32(priv->reg + TALITOS_AESUISR_LO));
+   in_be32(priv->reg_aesu + TALITOS_EUISR),
+   in_be32(priv->reg_aesu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_CRCU:
dev_err(dev, "CRCUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_CRCUISR),
-   in_be32(priv->reg + TALITOS_CRCUISR_LO));
+   in_be32(priv->reg_crcu + TALITOS_EUISR),
+   in_be32(priv->reg_crcu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_KEU:
dev_err(dev, "KEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_KEUISR),
-   in_be32(priv->reg + TALITOS_KEUISR_LO));
+   in_be32(priv->reg_pkeu + TALITOS_EUISR),
+   in_be32(priv->reg_pkeu + TALITOS_EUISR_LO));
break;
}
 
@@ -469,13 +469,13 @@ static void report_eu_error(struct device *dev, int ch, 
u32 desc_hdr)
case DESC_HDR_SEL1_MDEUA:
case DESC_HDR_SEL1_MDEUB:
dev_err(dev, "MDEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_MDEUISR),
-   in_be32(priv->reg + TALITOS_MDEUISR_LO));
+   in_be32(priv->reg_mdeu + TALITOS_EUISR),
+   in_be32(priv->reg_mdeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL1_CRCU:
dev_err(dev, "CRCUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_CRCUISR),
-   in_be32(priv->reg + TALITOS_CRCUISR_LO));
+   in_be32(priv->reg_crcu + TALITOS_EUISR),
+   

[PATCH v3 12/17] crypto: talitos - base address for Execution Units

2015-04-17 Thread Christophe Leroy
SEC 1.0, 1.2 and 2.x+ have different EU base addresses, so we need to
define pointers for each EU in the driver private data structure.
The proper address is set by the probe function depending on the
SEC type, in order to provide access to the proper address.

Signed-off-by: Christophe Leroy 
---
 drivers/crypto/talitos.c | 83 
 drivers/crypto/talitos.h | 72 +
 2 files changed, 100 insertions(+), 55 deletions(-)

diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
index e6ea651..6d77699 100644
--- a/drivers/crypto/talitos.c
+++ b/drivers/crypto/talitos.c
@@ -208,7 +208,7 @@ static int init_device(struct device *dev)
 
/* disable integrity check error interrupts (use writeback instead) */
if (priv->features & TALITOS_FTR_HW_AUTH_CHECK)
-   setbits32(priv->reg + TALITOS_MDEUICR_LO,
+   setbits32(priv->reg_mdeu + TALITOS_EUICR_LO,
  TALITOS_MDEUICR_LO_ICE);
 
return 0;
@@ -424,44 +424,44 @@ static void report_eu_error(struct device *dev, int ch, 
u32 desc_hdr)
switch (desc_hdr & DESC_HDR_SEL0_MASK) {
case DESC_HDR_SEL0_AFEU:
dev_err(dev, "AFEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_AFEUISR),
-   in_be32(priv->reg + TALITOS_AFEUISR_LO));
+   in_be32(priv->reg_afeu + TALITOS_EUISR),
+   in_be32(priv->reg_afeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_DEU:
dev_err(dev, "DEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_DEUISR),
-   in_be32(priv->reg + TALITOS_DEUISR_LO));
+   in_be32(priv->reg_deu + TALITOS_EUISR),
+   in_be32(priv->reg_deu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_MDEUA:
case DESC_HDR_SEL0_MDEUB:
dev_err(dev, "MDEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_MDEUISR),
-   in_be32(priv->reg + TALITOS_MDEUISR_LO));
+   in_be32(priv->reg_mdeu + TALITOS_EUISR),
+   in_be32(priv->reg_mdeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_RNG:
dev_err(dev, "RNGUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_RNGUISR),
-   in_be32(priv->reg + TALITOS_RNGUISR_LO));
+   in_be32(priv->reg_rngu + TALITOS_ISR),
+   in_be32(priv->reg_rngu + TALITOS_ISR_LO));
break;
case DESC_HDR_SEL0_PKEU:
dev_err(dev, "PKEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_PKEUISR),
-   in_be32(priv->reg + TALITOS_PKEUISR_LO));
+   in_be32(priv->reg_pkeu + TALITOS_EUISR),
+   in_be32(priv->reg_pkeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_AESU:
dev_err(dev, "AESUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_AESUISR),
-   in_be32(priv->reg + TALITOS_AESUISR_LO));
+   in_be32(priv->reg_aesu + TALITOS_EUISR),
+   in_be32(priv->reg_aesu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_CRCU:
dev_err(dev, "CRCUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_CRCUISR),
-   in_be32(priv->reg + TALITOS_CRCUISR_LO));
+   in_be32(priv->reg_crcu + TALITOS_EUISR),
+   in_be32(priv->reg_crcu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL0_KEU:
dev_err(dev, "KEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_KEUISR),
-   in_be32(priv->reg + TALITOS_KEUISR_LO));
+   in_be32(priv->reg_pkeu + TALITOS_EUISR),
+   in_be32(priv->reg_pkeu + TALITOS_EUISR_LO));
break;
}
 
@@ -469,13 +469,13 @@ static void report_eu_error(struct device *dev, int ch, 
u32 desc_hdr)
case DESC_HDR_SEL1_MDEUA:
case DESC_HDR_SEL1_MDEUB:
dev_err(dev, "MDEUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_MDEUISR),
-   in_be32(priv->reg + TALITOS_MDEUISR_LO));
+   in_be32(priv->reg_mdeu + TALITOS_EUISR),
+   in_be32(priv->reg_mdeu + TALITOS_EUISR_LO));
break;
case DESC_HDR_SEL1_CRCU:
dev_err(dev, "CRCUISR 0x%08x_%08x\n",
-   in_be32(priv->reg + TALITOS_CRCUISR),
-   in_be32(priv->reg + TALITOS_CRCUISR_LO));
+   in_be32(priv->reg_crcu + TALITOS_EUISR),
+