From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Cochran Subject: Re: [PATCH 4/6] net: ethernet: ti: cpts: add ptp pps support Date: Wed, 30 Nov 2016 19:45:11 +0100 Message-ID: <20161130184511.GB8209@netboy> References: <20161128230428.6872-1-grygorii.strashko@ti.com> <20161128230428.6872-5-grygorii.strashko@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20161128230428.6872-5-grygorii.strashko@ti.com> Sender: netdev-owner@vger.kernel.org To: Grygorii Strashko Cc: "David S. Miller" , netdev@vger.kernel.org, Mugunthan V N , Sekhar Nori , linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Rob Herring , devicetree@vger.kernel.org, Murali Karicheri , Wingman Kwok List-Id: devicetree@vger.kernel.org On Mon, Nov 28, 2016 at 05:04:26PM -0600, Grygorii Strashko wrote: > +static cycle_t cpts_cc_ns2cyc(struct cpts *cpts, u64 nsecs) > +{ > + cycle_t cyc = (nsecs << cpts->cc.shift) + nsecs; > + > + do_div(cyc, cpts->cc.mult); > + > + return cyc; > +} So you set the comparison value once per second, based on cc.mult. But when the clock is being actively synchronized, user space calls to clock_adjtimex() will change cc.mult. This can happen several times per second, depending on the PTP Sync rate. In order to produce the PPS edge correctly, you would have to adjust the comparison value whenever cc.mult changes, but of course this is unworkable. So I'll have to say NAK for this patch. Thanks, Richard