Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1767404ybn; Thu, 26 Sep 2019 01:47:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqy3ZGy86hfti+bhqfbt8qZkioSZ+dws8e6gDkJuoensPtzrcgQ/3hyQZ3taX2Xf5WALae5P X-Received: by 2002:a05:6402:3066:: with SMTP id bs6mr2264942edb.127.1569487664663; Thu, 26 Sep 2019 01:47:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569487664; cv=none; d=google.com; s=arc-20160816; b=EHSzfApsVC1RtyIGMyQ7et3XM/guseXAkKqK5y1F6Gpifc4kdYhy1gue4d6LtOizfv jMZEG8y+AIGnNgCZ2DyoOxkdDU351J8UsaBpu03MFFRZL+CXTtTWMQtx+/wjYoaMZYQd L6YRUkdsZi8BTWMxQq1O5Z6AtYHeHlcv9/NkSXWM/pS6nkbVl2Svy2oBp7SzDRfIdydQ 5RonpTu/BpZYtQ+UXmB5wA/TliUYHGbBaP0MlPVC8Aq63cn84n7PqHYRmMflQ9cJLB4i opBXQzLV7lupVvOBabFKWgSSFMfGJbQ63wig7xq9cZP24aWz/JKERo/3QFxe8R2eAZ70 UnYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=JCbaVDcJ+d3hpzLjBu3fh9lV+fsaCdxoN5dazaPqK0Y=; b=wmxy4RtuI+s4RYAOQUUJI5N6CCxZ94Gqk6urvyrRIx25MhJHO47mFJDEj7atj6uzys rNmCosCMg/KsiK4E3/xuWa7zV1FNHksacdmpqP/kvyEZkfu07H2l5dMyHQckyROjfamY DvyjriBTbLZiPofRIbiX+5TUmBkXeuQn815LK5ak1T/WW7ERBH3XEQ5O2P1KeHStTzHU GfQQDejPnScbi7QCHPtLURRU3vKULaU35jv36umlcK3aIIjp8+eIUYPLuviqAYNkXy7S yWkuVK3RQi45xy7TjSth7Imer0BxBnee22lQYQrot2tn964snd465N4QL5q4PWv+qFQZ kKug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a15si876547eda.222.2019.09.26.01.47.21; Thu, 26 Sep 2019 01:47:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406641AbfIXUXc convert rfc822-to-8bit (ORCPT + 99 others); Tue, 24 Sep 2019 16:23:32 -0400 Received: from mga01.intel.com ([192.55.52.88]:48717 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727264AbfIXUXc (ORCPT ); Tue, 24 Sep 2019 16:23:32 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Sep 2019 13:23:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,545,1559545200"; d="scan'208";a="201020453" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga002.jf.intel.com with ESMTP; 24 Sep 2019 13:23:31 -0700 Received: from orsmsx161.amr.corp.intel.com (10.22.240.84) by ORSMSX103.amr.corp.intel.com (10.22.225.130) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 24 Sep 2019 13:23:31 -0700 Received: from orsmsx109.amr.corp.intel.com ([169.254.11.122]) by ORSMSX161.amr.corp.intel.com ([169.254.4.111]) with mapi id 14.03.0439.000; Tue, 24 Sep 2019 13:23:31 -0700 From: "Hall, Christopher S" To: "Keller, Jacob E" , Felipe Balbi , Richard Cochran CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v4 2/2] PTP: add support for one-shot output Thread-Topic: [PATCH v4 2/2] PTP: add support for one-shot output Thread-Index: AQHVaGh/aGiLTWXDV0O998th8wsGNac7v5sA//+O24A= Date: Tue, 24 Sep 2019 20:23:30 +0000 Message-ID: References: <20190911061622.774006-1-felipe.balbi@linux.intel.com> <20190911061622.774006-2-felipe.balbi@linux.intel.com> <02874ECE860811409154E81DA85FBB58968D24E2@ORSMSX121.amr.corp.intel.com> In-Reply-To: <02874ECE860811409154E81DA85FBB58968D24E2@ORSMSX121.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.138] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > -----Original Message----- > From: Keller, Jacob E > Sent: Tuesday, September 24, 2019 12:23 PM > To: Felipe Balbi ; Richard Cochran > > Cc: Hall, Christopher S ; > netdev@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: RE: [PATCH v4 2/2] PTP: add support for one-shot output > > > > > -----Original Message----- > > From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] > On > > Behalf Of Felipe Balbi > > Sent: Tuesday, September 10, 2019 11:16 PM > > To: Richard Cochran > > Cc: Hall, Christopher S ; > netdev@vger.kernel.org; > > linux-kernel@vger.kernel.org; Felipe Balbi > > > Subject: [PATCH v4 2/2] PTP: add support for one-shot output > > > > Some controllers allow for a one-shot output pulse, in contrast to > > periodic output. Now that we have extensible versions of our IOCTLs, we > > can finally make use of the 'flags' field to pass a bit telling driver > > that if we want one-shot pulse output. > > > > Signed-off-by: Felipe Balbi > > --- > > > > Changes since v3: > > - Remove bogus bitwise negation > > > > Changes since v2: > > - Add _PEROUT_ to bit macro > > > > Changes since v1: > > - remove comment from .flags field > > > > include/uapi/linux/ptp_clock.h | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/include/uapi/linux/ptp_clock.h > b/include/uapi/linux/ptp_clock.h > > index 9a0af3511b68..f16301015949 100644 > > --- a/include/uapi/linux/ptp_clock.h > > +++ b/include/uapi/linux/ptp_clock.h > > @@ -38,8 +38,8 @@ > > /* > > * Bits of the ptp_perout_request.flags field: > > */ > > -#define PTP_PEROUT_VALID_FLAGS (0) > > - > > +#define PTP_PEROUT_ONE_SHOT (1<<0) > > +#define PTP_PEROUT_VALID_FLAGS (PTP_PEROUT_ONE_SHOT) > > /* > > * struct ptp_clock_time - represents a time value > > * > > @@ -77,7 +77,7 @@ struct ptp_perout_request { > > struct ptp_clock_time start; /* Absolute start time. */ > > struct ptp_clock_time period; /* Desired period, zero means disable. > */ > > unsigned int index; /* Which channel to configure. */ > > - unsigned int flags; /* Reserved for future use. */ > > + unsigned int flags; > > unsigned int rsv[4]; /* Reserved for future use. */ > > }; > > > > -- > > 2.23.0 > > Hi Felipe, > > Do you have any examples for how you envision using this? I don't see any > drivers or other code on the list for doing so. > > Additionally, it seems weird because we do not have support for specifying > the pulse width. I guess you leave that up to driver choice? > > Thanks, > Jake Jake, Good catch on the terminology. This is an API that produces edges not pulses. This flag causes the PEROUT ioctl to ignore the period argument and produce a single edge. Currently, the igb driver implements the same function, but uses a "magic" invalid period specification to signal that the period argument should be ignored (use_freq == 0): if (on && ((ns <= 70000000LL) || (ns == 125000000LL) || (ns == 250000000LL) || (ns == 500000000LL))) { if (ns < 8LL) return -EINVAL; use_freq = 1; } The proposal is to support this function without magic period specifications using an explicit flag instead. An example use case is pulse-per-second output. While PPS is periodic, time-aware GPIO is driven by (an unadjustable) Always Running Timer (ART). It's necessary to schedule each edge in software to produce PPS synced with system time. Chris