Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp380312imm; Wed, 17 Oct 2018 01:31:21 -0700 (PDT) X-Google-Smtp-Source: ACcGV6121MGIt22egvMWFArSAKs1zc3PMoJ0u5VLENJnZvACepCJ6E7srGcDFNrWgQv8GIxF4ReO X-Received: by 2002:a62:475c:: with SMTP id u89-v6mr25473176pfa.212.1539765081568; Wed, 17 Oct 2018 01:31:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539765081; cv=none; d=google.com; s=arc-20160816; b=wVEGgKVxh/eNb2npIxUn+/c/dlX7hAbKDc1KtKIAZak3EBxYVVCyD3nF7rat8ODbZj TxXqSp5cgqpIMUFbTFYE5L7DUA+SUt1euLOwlzCOkRTt2ByxeB1By0rggGqXzBU7iRIg rBVlEImYhrJp2xNz0d9slqv7uaDS9cQaEimKGPqELAOHWJazYopCW8TqSgtD/gMX8qTC O7X1Vap1a2AbT/eOBeeIzDkU7M92ByZVAQmKAwuUuN7nRxySPt13IS0UqIspKla+rNp0 eu4jkq37CKG4KW1cSerZYsW5wRBbt5uFwsUX0ALpRFNLobK/oE2U+WWkxLrtc3CBv2Zp BGAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=NOr1UmBB9d8q1n7xYt7gDGs/6Chh1j7/sDGAwIoH7T0=; b=V5Smi40SD8YfQjFcpcenaRnrp1RafmqM5v7Bfgissqk6eBzpJL0kOxjJxj8m1KzfZ2 oZNc2XXpO7/UjTpfMeqfcJj16DKSp0bAOdNS1513jA0Ik4V7DhKPcZnMozM1pPaGbj33 2dNP6TySMvhRIaNTn6Jrcyd7mjeO5j/W9i+3KxZPC+Cl5Jl3DEp7UAatSVAzPl8Jhma9 zQPa10V5lUdxKqGADIiiO+qsEyt0GMKpUc+dsHdORot77+WEJQrKjkCtwfjUcYRtBUwh Azxlhpg3OoK/9Lzg8pQ0DRVG0UHO52P8DtMDAa2LKldrq7sKPQWg57kUBDk6rX3y+6uV OBgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="TcJ/6s/x"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m22-v6si17014415pgj.583.2018.10.17.01.31.04; Wed, 17 Oct 2018 01:31:21 -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; dkim=pass header.i=@chromium.org header.s=google header.b="TcJ/6s/x"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727205AbeJQQXm (ORCPT + 99 others); Wed, 17 Oct 2018 12:23:42 -0400 Received: from mail-yb1-f193.google.com ([209.85.219.193]:36205 "EHLO mail-yb1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727103AbeJQQXm (ORCPT ); Wed, 17 Oct 2018 12:23:42 -0400 Received: by mail-yb1-f193.google.com with SMTP id 5-v6so10027018ybf.3 for ; Wed, 17 Oct 2018 01:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NOr1UmBB9d8q1n7xYt7gDGs/6Chh1j7/sDGAwIoH7T0=; b=TcJ/6s/x+jDu7g2K4mveXfsbUz06MHr1JHj9c3qJ1i00ra+kVylNXHZ71M6ECAUDAi 2l2Jms6U8ob+DSxP+jekl8wu8s2qtPE/3bKy3XgRi9Yb7Lxeilj6LNCbCDSnUvTynQup iNWbv1DBP5y7Eyaya41vZhutJ7GSiUlWtKPVY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NOr1UmBB9d8q1n7xYt7gDGs/6Chh1j7/sDGAwIoH7T0=; b=lEDBkRCq5RDjcUw4Wgli9RO4+floO5qxA1Hy8nJqMu9nP3SPvV9v7OGEgp1trUyol7 4ygTO9YCPSnripf+oveZbQ++QSwzVQBsSaAkBPc5jUQA0g0JeXNi5pvbpIJv8F50tREa EKYY70ZlXNXdQOmV2KskmHuvV8IRbp+eOe2FBLJ6ed7j2m9Ub3eeTp2tQ7GDWTw8OCG1 3K6imfG6mdSRP8mrwSNRF5VZhLgaYSAaCXNH9rhVJpGGqVCO2lPhIMKM+FBBfCmlJHkf /ouc4kmqil5QkZfZcyDGaw/VAZjn53joEQbHKB0J/wdulCjHX9VnaemfP+dWulGTEBhX JeiA== X-Gm-Message-State: ABuFfoh6cunGZh6vFCF4wInev/Cez6RX9hQgyTip1fS0WJW4K0JpK6Pr Qsc9B/5tst9gChVpAw98A+KM+o9lbbM= X-Received: by 2002:a25:ac4d:: with SMTP id r13-v6mr374132ybd.45.1539764946078; Wed, 17 Oct 2018 01:29:06 -0700 (PDT) Received: from mail-yw1-f44.google.com (mail-yw1-f44.google.com. [209.85.161.44]) by smtp.gmail.com with ESMTPSA id 138-v6sm4216840ywj.11.2018.10.17.01.29.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Oct 2018 01:29:04 -0700 (PDT) Received: by mail-yw1-f44.google.com with SMTP id l79-v6so10010470ywc.7 for ; Wed, 17 Oct 2018 01:29:04 -0700 (PDT) X-Received: by 2002:a81:3d8d:: with SMTP id k135-v6mr13943217ywa.415.1539764943845; Wed, 17 Oct 2018 01:29:03 -0700 (PDT) MIME-Version: 1.0 References: <20181017075242.21790-1-henryhsu@chromium.org> <13883852.6N9L7C0n48@avalon> In-Reply-To: <13883852.6N9L7C0n48@avalon> From: Tomasz Figa Date: Wed, 17 Oct 2018 17:28:52 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] media: uvcvideo: Add boottime clock support To: Laurent Pinchart Cc: Heng-Ruey Hsu , Mauro Carvalho Chehab , Linux Media Mailing List , Linux Kernel Mailing List , Ricky Liang Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Laurent, On Wed, Oct 17, 2018 at 5:02 PM Laurent Pinchart wrote: > > Hi Heng-Ruey, > > Thank you for the patch. > > On Wednesday, 17 October 2018 10:52:42 EEST Heng-Ruey Hsu wrote: > > Android requires camera timestamps to be reported with > > CLOCK_BOOTTIME to sync timestamp with other sensor sources. > > What's the rationale behind this, why can't CLOCK_MONOTONIC work ? If the > monotonic clock has shortcomings that make its use impossible for proper > synchronization, then we should consider switching to CLOCK_BOOTTIME globally > in V4L2, not in selected drivers only. > CLOCK_BOOTTIME includes the time spent in suspend, while CLOCK_MONOTONIC doesn't. I can imagine the former being much more useful for anything that cares about the actual, long term, time tracking. Especially important since suspend is a very common event on Android and doesn't stop the time flow there, i.e. applications might wake up the device to perform various tasks at necessary times. Generally, I'd see a V4L2_BUF_FLAG_TIMESTAMP_BOOTTIME flag being added and user space being given choice to select the time stamp base it needs, perhaps by setting the flag in v4l2_buffer struct at QBUF time? Best regards, Tomasz > > Signed-off-by: Heng-Ruey Hsu > > --- > > drivers/media/usb/uvc/uvc_driver.c | 4 ++++ > > drivers/media/usb/uvc/uvc_video.c | 2 ++ > > 2 files changed, 6 insertions(+) > > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c > > b/drivers/media/usb/uvc/uvc_driver.c index d46dc432456c..a9658f38c586 > > 100644 > > --- a/drivers/media/usb/uvc/uvc_driver.c > > +++ b/drivers/media/usb/uvc/uvc_driver.c > > @@ -2287,6 +2287,8 @@ static int uvc_clock_param_get(char *buffer, const > > struct kernel_param *kp) { > > if (uvc_clock_param == CLOCK_MONOTONIC) > > return sprintf(buffer, "CLOCK_MONOTONIC"); > > + else if (uvc_clock_param == CLOCK_BOOTTIME) > > + return sprintf(buffer, "CLOCK_BOOTTIME"); > > else > > return sprintf(buffer, "CLOCK_REALTIME"); > > } > > @@ -2298,6 +2300,8 @@ static int uvc_clock_param_set(const char *val, const > > struct kernel_param *kp) > > > > if (strcasecmp(val, "monotonic") == 0) > > uvc_clock_param = CLOCK_MONOTONIC; > > + else if (strcasecmp(val, "boottime") == 0) > > + uvc_clock_param = CLOCK_BOOTTIME; > > else if (strcasecmp(val, "realtime") == 0) > > uvc_clock_param = CLOCK_REALTIME; > > else > > diff --git a/drivers/media/usb/uvc/uvc_video.c > > b/drivers/media/usb/uvc/uvc_video.c index 86a99f461fd8..d4248d5cd9cd 100644 > > --- a/drivers/media/usb/uvc/uvc_video.c > > +++ b/drivers/media/usb/uvc/uvc_video.c > > @@ -425,6 +425,8 @@ static inline ktime_t uvc_video_get_time(void) > > { > > if (uvc_clock_param == CLOCK_MONOTONIC) > > return ktime_get(); > > + else if (uvc_clock_param == CLOCK_BOOTTIME) > > + return ktime_get_boottime(); > > else > > return ktime_get_real(); > > } > > -- > Regards, > > Laurent Pinchart > > >