Adding John Jacques, the proper person to respond on this. Regards, Daniel ________________________________________ From: Winkler, Tomas [tomas.wink...@intel.com] Sent: Monday, August 22, 2016 12:52 PM To: Dragomir, Daniel; linux-yocto@yoctoproject.org Subject: RE: [linux-yocto] [PATCH 1/3] drivers/misc: Axxia MTC Driver Memory Initialization Check
> > Axxia MTC driver changes: > - Memory initialization completion check added > - ECC error status clearing added > > Signed-off-by: Sreedevi Joshi <sreedevi.jo...@intel.com> > --- > drivers/misc/lsi-mtc.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/misc/lsi-mtc.c b/drivers/misc/lsi-mtc.c index > 55c3403..f4fbe6f 100644 > --- a/drivers/misc/lsi-mtc.c > +++ b/drivers/misc/lsi-mtc.c > @@ -31,6 +31,7 @@ > #include <linux/string.h> > #include "linux/lsi_mtc_ioctl.h" > > +#define MTC_POLL_TIMEOUT (msecs_to_jiffies(1000)) > > /* > device tree node: > @@ -4114,6 +4115,8 @@ 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 }; > + unsigned long tmo = 0; > > if ((!pMTCCfg) || (!dev)) > return -EINVAL; > @@ -4129,6 +4132,21 @@ 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 */ > + tmo = jiffies + MTC_POLL_TIMEOUT; > + do { > + init_reg = *(&(dev->regs->mem_init));+ I'm not familiar with this code but I don't think this is the way to read a register , why not using readl(), you are at least missing memory barrier here. > + if ((init_reg & 0x101) == 0x101) > + break; > + } while (time_before(jiffies, tmo)); This is busy loop, how fast is that going to settle ? > + > + 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 -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto