> > > + oh->_sysc_cache = v; > > > + omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs); > > > > Direct SYSCONFIG access isn't right here. This should go through > > omap_hwmod. > > > > What is probably needed is exposing _ocp_softreset to device code > > via something like omap_hwmod_ocp_softreset() and calling that here. > > Hi Kevin , Looking more closely, i realised that, the sequence of _ocp_softreset doesn't work for I2C. It has a special programming sequence which needs to be followed to reset the IP. That was the reason, we created omap_i2c_reset. So i feel we need not expose _ocp_softreset. Since, the problem here is accessing the SYSCONFIG here, instead, what i can do is, something like below. omap_hwmod_softreset(struct omap_hwmod *oh) { v = oh->_sysc_cache; v |= (0x1 << oh->class->sysc->sysc_fields->srst_shift); oh->_sysc_cache = v; omap_hwmod_write(v, oh, oh->class->sysc->sysc_offs); } And then call this in omap_i2c_reset. Is this OK ? - Avinash -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html