aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/edac/altera_edac.c30
-rw-r--r--drivers/edac/altera_edac.h2
2 files changed, 14 insertions, 18 deletions
diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
index 5ff263850cc7..acb3006df631 100644
--- a/drivers/edac/altera_edac.c
+++ b/drivers/edac/altera_edac.c
@@ -1762,28 +1762,24 @@ static ssize_t altr_edac_a10_device_trig2(struct file *file,
1762 if (trig_type == ALTR_UE_TRIGGER_CHAR) { 1762 if (trig_type == ALTR_UE_TRIGGER_CHAR) {
1763 writel(priv->ue_set_mask, set_addr); 1763 writel(priv->ue_set_mask, set_addr);
1764 } else { 1764 } else {
1765 /* Setup write of 0 to first 4 bytes */ 1765 /* Setup read/write of 4 bytes */
1766 writel(0x0, drvdata->base + ECC_BLK_WDATA0_OFST);
1767 writel(0x0, drvdata->base + ECC_BLK_WDATA1_OFST);
1768 writel(0x0, drvdata->base + ECC_BLK_WDATA2_OFST);
1769 writel(0x0, drvdata->base + ECC_BLK_WDATA3_OFST);
1770 /* Setup write of 4 bytes */
1771 writel(ECC_WORD_WRITE, drvdata->base + ECC_BLK_DBYTECTRL_OFST); 1766 writel(ECC_WORD_WRITE, drvdata->base + ECC_BLK_DBYTECTRL_OFST);
1772 /* Setup Address to 0 */ 1767 /* Setup Address to 0 */
1773 writel(0x0, drvdata->base + ECC_BLK_ADDRESS_OFST); 1768 writel(0, drvdata->base + ECC_BLK_ADDRESS_OFST);
1774 /* Setup accctrl to write & data override */ 1769 /* Setup accctrl to read & ecc & data override */
1775 writel(ECC_WRITE_DOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST); 1770 writel(ECC_READ_EDOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST);
1776 /* Kick it. */
1777 writel(ECC_XACT_KICK, drvdata->base + ECC_BLK_STARTACC_OFST);
1778 /* Setup accctrl to read & ecc override */
1779 writel(ECC_READ_EOVR, drvdata->base + ECC_BLK_ACCCTRL_OFST);
1780 /* Kick it. */ 1771 /* Kick it. */
1781 writel(ECC_XACT_KICK, drvdata->base + ECC_BLK_STARTACC_OFST); 1772 writel(ECC_XACT_KICK, drvdata->base + ECC_BLK_STARTACC_OFST);
1782 /* Setup write for single bit change */ 1773 /* Setup write for single bit change */
1783 writel(0x1, drvdata->base + ECC_BLK_WDATA0_OFST); 1774 writel(readl(drvdata->base + ECC_BLK_RDATA0_OFST) ^ 0x1,
1784 writel(0x0, drvdata->base + ECC_BLK_WDATA1_OFST); 1775 drvdata->base + ECC_BLK_WDATA0_OFST);
1785 writel(0x0, drvdata->base + ECC_BLK_WDATA2_OFST); 1776 writel(readl(drvdata->base + ECC_BLK_RDATA1_OFST),
1786 writel(0x0, drvdata->base + ECC_BLK_WDATA3_OFST); 1777 drvdata->base + ECC_BLK_WDATA1_OFST);
1778 writel(readl(drvdata->base + ECC_BLK_RDATA2_OFST),
1779 drvdata->base + ECC_BLK_WDATA2_OFST);
1780 writel(readl(drvdata->base + ECC_BLK_RDATA3_OFST),
1781 drvdata->base + ECC_BLK_WDATA3_OFST);
1782
1787 /* Copy Read ECC to Write ECC */ 1783 /* Copy Read ECC to Write ECC */
1788 writel(readl(drvdata->base + ECC_BLK_RECC0_OFST), 1784 writel(readl(drvdata->base + ECC_BLK_RECC0_OFST),
1789 drvdata->base + ECC_BLK_WECC0_OFST); 1785 drvdata->base + ECC_BLK_WECC0_OFST);
diff --git a/drivers/edac/altera_edac.h b/drivers/edac/altera_edac.h
index 60513f201ffb..1532ec9c3510 100644
--- a/drivers/edac/altera_edac.h
+++ b/drivers/edac/altera_edac.h
@@ -321,7 +321,7 @@ struct altr_sdram_mc_data {
321#define ECC_BLK_STARTACC_OFST 0x7C 321#define ECC_BLK_STARTACC_OFST 0x7C
322 322
323#define ECC_XACT_KICK 0x10000 323#define ECC_XACT_KICK 0x10000
324#define ECC_WORD_WRITE 0xF 324#define ECC_WORD_WRITE 0xFF
325#define ECC_WRITE_DOVR 0x101 325#define ECC_WRITE_DOVR 0x101
326#define ECC_WRITE_EDOVR 0x103 326#define ECC_WRITE_EDOVR 0x103
327#define ECC_READ_EOVR 0x2 327#define ECC_READ_EOVR 0x2