[linux-yocto] [PATCH 17/28] arch/arm/mach-axxia: Clear MTC Errors During Initialization

Charlie Paul cpaul.windriver at gmail.com
Fri May 2 09:22:21 PDT 2014


From: John Jacques <john.jacques at lsi.com>

The MTC status registers are not cleared by a reset.  So, clear them
during driver initialization.

Signed-off-by: John Jacques <john.jacques at lsi.com>
---
 drivers/misc/lsi-mtc.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/lsi-mtc.c b/drivers/misc/lsi-mtc.c
index ebbdac8..8e1ae77 100644
--- a/drivers/misc/lsi-mtc.c
+++ b/drivers/misc/lsi-mtc.c
@@ -2731,6 +2731,7 @@ mtc_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 		{
 			struct ncp_axis_mtc_MTC_CONFIG0_REG_ADDR_r_t cfg0 = { 0 };
 			int start_stop;
+
 			if (copy_from_user
 			    ((void *)&start_stop, (void *)arg, sizeof(int))) {
 				printk(KERN_DEBUG "MTC Error ioctl\n");
@@ -2740,6 +2741,10 @@ mtc_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 			if ((start_stop != 0) && (start_stop != 1))
 				return -EINVAL;
 
+			/* clear interrupt status before hit start */
+			if (start_stop == 1)
+				dev->regs->int_status = 0x7f;
+
 			cfg0 =
 			    *((struct ncp_axis_mtc_MTC_CONFIG0_REG_ADDR_r_t *)
 			      &(dev->regs->config0));
@@ -3080,6 +3085,8 @@ static long _mtc_config(struct mtc_device *dev, struct lsi_mtc_cfg_t *pMTCCfg)
 	       dev->regs->config1, dev->regs->execute);
 
 #endif
-	/* test */
+	/* clear ecc interrupt status */
+	dev->regs->ecc_int_status = 0xf;
+
 	return 0;
 }
-- 
1.7.9.5



More information about the linux-yocto mailing list