Re: [PATCH v2 07/13] net: ethernet: ti: cpts: rework initialization/deinitialization
From: Grygorii Strashko <hidden>
Date: 2016-11-29 15:50:50
Also in:
linux-devicetree, linux-omap, lkml
Hi Richard, On 11/29/2016 04:07 AM, Richard Cochran wrote:
On Mon, Nov 28, 2016 at 05:03:31PM -0600, Grygorii Strashko wrote:quoted
+int cpts_register(struct cpts *cpts) { int err, i; - cpts->info = cpts_info; - spin_lock_init(&cpts->lock); - - cpts->cc.read = cpts_systim_read; - cpts->cc.mask = CLOCKSOURCE_MASK(32); - cpts->cc_mult = mult; - cpts->cc.mult = mult; - cpts->cc.shift = shift; - INIT_LIST_HEAD(&cpts->events); INIT_LIST_HEAD(&cpts->pool); for (i = 0; i < CPTS_MAX_EVENTS; i++) list_add(&cpts->pool_data[i].list, &cpts->pool); - cpts_clk_init(dev, cpts); + clk_enable(cpts->refclk); + cpts_write32(cpts, CPTS_EN, control); cpts_write32(cpts, TS_PEND_EN, int_enable); + cpts->cc.mult = cpts->cc_mult;It is not clear why you set cc.mult in a different place than cc.shift. That isn't logical, but maybe later patches make it clear...
cc.mult has to be reloaded to original value each time CPTS is registered(restarted) as it can be modified by cpts_ptp_adjfreq(). While cc.shift is static.
quoted
timecounter_init(&cpts->tc, &cpts->cc, ktime_to_ns(ktime_get_real()));
[...]
quoted
} EXPORT_SYMBOL_GPL(cpts_unregister); +struct cpts *cpts_create(struct device *dev, void __iomem *regs, + u32 mult, u32 shift) +{ + struct cpts *cpts; + + if (!regs || !dev) + return ERR_PTR(-EINVAL);There is no need for this test, as the caller will always pass valid pointers. (This isn't a user space library!)
ok -- regards, -grygorii -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html