From: John Jacques <john.jacq...@intel.com>

Axxia MTC driver changes:
 - Memory initialization completion check added
 - ECC error status clearing added

Signed-off-by: Sreedevi Joshi <sreedevi.jo...@intel.com>
Signed-off-by: John Jacques <john.jacq...@intel.com>
---
 drivers/misc/lsi-mtc.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/misc/lsi-mtc.c b/drivers/misc/lsi-mtc.c
index 55c3403..a9285fe 100644
--- a/drivers/misc/lsi-mtc.c
+++ b/drivers/misc/lsi-mtc.c
@@ -29,6 +29,8 @@
 #include <linux/atomic.h>
 #include <linux/io.h>
 #include <linux/string.h>
+#include <linux/delay.h>
+
 #include "linux/lsi_mtc_ioctl.h"
 
 
@@ -4114,6 +4116,7 @@ static long _mtc_config(struct mtc_device *dev, struct 
lsi_mtc_cfg_t *pMTCCfg)
        struct ncp_axis_mtc_MTC_CONFIG0_REG_ADDR_r_t cfg0 = { 0 };
        struct ncp_axis_mtc_MTC_CONFIG1_REG_ADDR_r_t cfg1 = { 0 };
        struct ncp_axis_mtc_MTC_EXECUTE1_REG_ADDR_r_t exec1 = { 0 };
+       u32     init_reg = { 0 };
 
        if ((!pMTCCfg) || (!dev))
                return -EINVAL;
@@ -4129,6 +4132,15 @@ static long _mtc_config(struct mtc_device *dev, struct 
lsi_mtc_cfg_t *pMTCCfg)
        exec1.sw_reset = 1;
        dev->regs->execute = *((u32 *) &exec1);
        dev->regs->mem_init = 0x202;
+       /* wait for the init to complete */
+       udelay(2);
+       init_reg = readl(&(dev->regs->mem_init));
+       if ((init_reg & 0x101) != 0x101) {
+               pr_debug("warning: mem_init failed value=0x%x 
(expected:0x101)\n",
+                              init_reg);
+       }
+       /* clear ECC interrupt status */
+       dev->regs->ecc_int_status = 0xF;
 
        /* 3. config MTC */
        cfg0 =
-- 
2.7.4

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to