From patchwork Sat Mar 24 00:02:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Kelly X-Patchwork-Id: 10305827 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id BB8C160385 for ; Sat, 24 Mar 2018 00:03:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9E9632845E for ; Sat, 24 Mar 2018 00:03:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 92BDD2847D; Sat, 24 Mar 2018 00:03:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BE6782845E for ; Sat, 24 Mar 2018 00:02:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751806AbeCXAC6 (ORCPT ); Fri, 23 Mar 2018 20:02:58 -0400 Received: from mail-bn3nam01on0040.outbound.protection.outlook.com ([104.47.33.40]:55072 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751793AbeCXAC5 (ORCPT ); Fri, 23 Mar 2018 20:02:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uievolution.onmicrosoft.com; s=selector1-xevo-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=lQT6ZZKEbaP7HpsCYpw+oe3YtTwG6FIecrV7329M1iU=; b=zihzq8tcdPfSv/IN12lBrU2UqfHKFgSNbThgVaAxh+Q+gMIMw1u+NTIvUqk6qLhpY7PuPPww4BP8/FFaDYeghzRPK7vUOnEqHX+zX1qnHczkeefrUVrtQJ0/imKZdo6+n2yf8gS2pGEjx2QaNLBPCWerX85VIFVltRezs1eizVM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=mkelly@xevo.com; Received: from columbia.corp.xevo.com (65.122.179.226) by DM5PR0102MB3414.prod.exchangelabs.com (2603:10b6:4:a0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.14; Sat, 24 Mar 2018 00:02:53 +0000 From: Martin Kelly To: linux-iio@vger.kernel.org Cc: Jonathan Cameron , Jean-Baptiste Maneyrol , Martin Kelly Subject: [PATCH] iio: imu: inv_mpu6050: improve missing timestamp handling Date: Fri, 23 Mar 2018 17:02:40 -0700 Message-Id: <20180324000240.19519-1-mkelly@xevo.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 X-Originating-IP: [65.122.179.226] X-ClientProxiedBy: MWHPR1701CA0014.namprd17.prod.outlook.com (2603:10b6:301:14::24) To DM5PR0102MB3414.prod.exchangelabs.com (2603:10b6:4:a0::15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 83dff2d3-7817-40b6-93ba-08d5911a97a9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DM5PR0102MB3414; X-Microsoft-Exchange-Diagnostics: 1; DM5PR0102MB3414; 3:2hb1dOrIXawDyxSBKnHwGPP6k4Gy1sFWaEsvKTL6nL/6YNrU4vgQAukAUjCEjwEF51XT3wqo3ICXu5HW9Cl6FsSOc7iz32qw5QAXYryraa2/3CK+D5UkKiXIHXOw6mykUL03hNP1scH6tIzrbQZwT/uKNWLtI1gVB3B9U0BKT5R04pGFHNwohiXFjjoWj2217/nOmbV0/2FP7/0AKGbyZZewy6Tq+Ty+6HYUGmid1JRrDormSsZRUB5GNKGQQRVK; 25:h64cXHxIq4olPnZoaPqJjuce5BKcctbgkAB9xEhp2XSjKK2S0emeQFL4I+mkcsNE0Y0G7qU4LNAtp34frbl+bPHu5UZCEGaXhYLuB/Ul3z6tRt+K8eLpw8t1L5gMFhb2D+LsLOCHdd4xQMopr5OlhUJlUd4uhKqs/Cd2jlI5hYWIzKKke5rhIj/uQ7xYkg3lDykTD+z5sFBcKkNsRROWfcPVQ4lQ/wejC/pXiERo+/IaC0hC21IMnAZJWYdn4nVtgGLOKZS7e6dvK821IelWLJPlN3FSO1vb/qLrOfdKs9kZZFMcBeSSoie5ht2MHuQS3cxt8MSAnoboPNTuAN9lpg==; 31:1E847vKU9atVIBcggvknK8Z7OxIjv0U2ForLEAi8z2RtIBK/HahHmhkxhiQj0x8LtieSs8xxpIZPIfzYIEXVYTAoW6xC6ZNmKWz2/P6zkRkSg9VN4weiAJnDcFW7289JP5xEgDXQ9EzD415NgSeeMMvHAIoJqPMBQgLKPrdEHx3+Ek0TY4IZysU4CaJ53ittYpxdL+mKgBFU2MUtABZUX6j+SwIE9WLIdE2G3OXgex4= X-MS-TrafficTypeDiagnostic: DM5PR0102MB3414: X-Microsoft-Exchange-Diagnostics: 1; DM5PR0102MB3414; 20:/pkr1htCxR0G0pezklLZ/fTnUmsL4f1dZBwKRJjwNHsbThrt5C7z462D2N3kRVubs92P5kNQaAcQBJPdL2H3TKsAPEF+Xn5HMpz5C5ZfTbceb590YAD7Pz9QCPvkhRyZhVmmcYSJRrnSu8Y1k13RVuUyZAqBOfzPQFO5EwVsxAd4Obju+2m2YHjIm9KtGnyESmqdN0gjqitoPmp8N3ReOW7hTk1KUn5309ss00jSEledGmNkCKVdeCDwPNzsu++7svf2queSsiLEBAy8wocLcR9+i1l7vfwHANY/XukFqR/F84nTrIgj0sAxM49BMa/xcPBwsh2YfDunRmHUwFL3X7UmTIGswj/cD3uDh5nr+hk0RWCaEEh/LD9nGYKaQcsaX2WNEkcoJBg+Ir1tfo6S+gIDyk5Rl/S2Ekhu9tV8c75YPCpuZoGcE07CX5d2umAH6XVX6jSbS/32sg6I5RbbY9QUkDrO0HopdXnlLMMowPSXPkIsIJamawiJxgc/q6kw; 4:wfayqGo5nbkRerjyveivwyEaSQq2+WKwHCcyskCd+90rnoBxKVyzaas1S3L7lrntsSdGWQIMqRn2VoTj4dOdTCI2sKnpmY413MaInTguFssVqXVAaLC476FKCafENt0hJt6+rQfsYhVeF3QFHsbDrlXhumQD/bFtJ72e+zyrCyVrAbUGa5pk1664BeK9t3xIPYGIZ2W7f32ZWL/z1Fx8dWAZMhjFVooO47w1QSLYVDzNj4Brf4f5semMYn+vO1cpWGZJALOa1p6tlJZUBUVrQA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231221)(944501327)(52105095)(93006095)(93001095)(6041310)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DM5PR0102MB3414; BCL:0; PCL:0; RULEID:; SRVR:DM5PR0102MB3414; X-Forefront-PRVS: 0621E7E436 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(396003)(366004)(39840400004)(39380400002)(199004)(189003)(53936002)(8676002)(8936002)(81156014)(6916009)(6666003)(6486002)(4326008)(36756003)(81166006)(2361001)(106356001)(2351001)(956004)(47776003)(66066001)(25786009)(50466002)(48376002)(50226002)(305945005)(105586002)(3846002)(1076002)(6116002)(7736002)(5660300001)(2906002)(16526019)(186003)(97736004)(52116002)(478600001)(86362001)(16586007)(54906003)(26005)(1857600001)(316002)(51416003)(7696005)(59450400001)(107886003)(68736007)(2616005)(386003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR0102MB3414; H:columbia.corp.xevo.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: xevo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR0102MB3414; 23:t/EVRQJzeaCBjxXLxTGulw6XzhsDn+y2Ue1qrJD?= =?us-ascii?Q?cGRMXT0eQtja/5FBCaH7V9UjdTyOQkJ6ZjGObPKiMEEgu80NQjBQV2mRm3Hv?= =?us-ascii?Q?BTvI9p7+GxJ7ZG1thvCKj0F8Wzj/hliycb/hVgfNRKT9CWlRzXWEweVGDEFQ?= =?us-ascii?Q?2HdEtqmT2PSz1AetvwLZ/Aw+6UGEKU/jiU5ca/w53071+dOcy40sNw/AggfF?= =?us-ascii?Q?PJ2/ipMCDD0qIC2M1KpxcOMhdNCsZkWPlwSNhcuELq1tCZjbPhgSyXEkS1OF?= =?us-ascii?Q?uxAgXbg7Ml0+acYp46rDwbh5lih5sK9OMjAa8pGf4CYfDb/mngRpZYlXuPWo?= =?us-ascii?Q?CzHDAu7R6buBa7/jGHS+o6uVZsrGPR3XFJoNiO8MDnXvjmvhM9vocl8Tjdsw?= =?us-ascii?Q?FnbfwwKEKHMnXHdg8jw2LKvp0CSUFb5M9feb6OxX3TQqPn98TSlBDnkgOTa6?= =?us-ascii?Q?b43pxuQJfSEF12eEE5SOkaAIEJ7LiUR2yzT1KNCXhDazIwLWdhRwZsWt1/py?= =?us-ascii?Q?4TJkmGPZZaZJVGKCsdA6jhBGMpdU4gOsMQ1YStZmKu/UVyBdmcFdGp1S3QjL?= =?us-ascii?Q?AGr9OMPDzxJ5eCInpiD1DOQCLBNR3M3VfN00TskxmFSlCzbtkH65BLizwkRA?= =?us-ascii?Q?7JgFbwjNIqwj312+cH4TX5Z6Qwo30z7NH9lAtD56MU44c6rqBj5BQYGZEixR?= =?us-ascii?Q?+GER7W1KEdRA5Q415+VH4YAjyxRvxUBtf0Z0n85ljwyMjJp1XUtLuDN9YfDy?= =?us-ascii?Q?cNovCzOX6QRsZAF66Pyuer6W6V1fdOJtk8l0cdEN65wj63YkiNpLaX8X5QiG?= =?us-ascii?Q?eQ2krke/ZcjpazG/hyeeKT9/ucrzYZjd2kPtVgEuQkNvAXwC+sy11z5NpJHH?= =?us-ascii?Q?qEDV/UnWO3s8ePhj9C8EX4U2n+G8owllSOltxaJdi6IMh4RjajQfARwc/Kf2?= =?us-ascii?Q?388ybMWtzuHDXNEamg6DIuxHm83efp57Z0aJ+PqxDlPFFVeBe4XdblPhF3sD?= =?us-ascii?Q?z+to1FGdiAzHTMVVrnin3b+k+0kaGJeYzABx8yrvhotDmRrAj+zXR7X7JURN?= =?us-ascii?Q?4IpZk8KME9ncc6j48/Z2nz309gQSx4VjZFGgDiCrr1qKHAeajZB/H4Tq8IJW?= =?us-ascii?Q?KG1H33En/sMx9TroGq01ttEJW6Fl8DpLwsDsgKwa06/PLjRodRG5rnBdSNIM?= =?us-ascii?Q?u1CuE2H9R1O42KuppJ5qgdYLBIs2NVbY/oWC1FCID55SqWYcc2+r0JhFZ3A?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Antispam-Message-Info: Qo74QhCcS3OhKyUw1GgTFeu9dOPEqZD2A2fKLoVzX9EUm6Mub/cqEgXtQhYnqoSUpahFsyQcthui3hZrfSjP3mhGNWMaadjitZ5HNSXTf/E+k87ltS/cHssOsj7+b28IEy9KJ+/TtveEaUuQublG7NXlhAwmIb45O4k0+MB1WH5UaHVJH76aJQwTY6J/WUuH X-Microsoft-Exchange-Diagnostics: 1; DM5PR0102MB3414; 6:GMUHusrSToogY0+DufZILb19+75l8AbxQdYvc+LE3CKRSpN7Nvxt/HydhPEmXSYfpIaxe4JmUi37W96oN+2n5mLmYRYfSXt1UstlcJkZBwoN17tZB49cJ9T/+H1K80kcGKTEOTeBDhNd53mDJMwJxaTUJC4E0Fn43HeW37876+kqRzBa/pFs8UAjDAgZgPc+EIPQ8TGHVHwfegeY2/N7jsHsTfd1DWaE+euN43Ifc78+Jkp1RGd0kp0Hoc13MdhHv/Db9rI/ktJdECVP2J2Yq2dTHNusuKKpAUTNpT82TOR6s6Qvv0Fmh5b9ESWN16CTYexzFc0GMeEc5PNAAfeXdKNJdyFz3C2H/fXQ5LSP3Ww=; 5:r0C/QZ2Z1Wt4s1VbJY2nmTKkLy+7/w8l1v3O3xD25r8aAt2QKUNuBS1q5uZrk8uBuDZzfbQx2ZtuDdCqwMiMYy9xeL/se6EfUdGobh2mwwFfgcC6NkCNQkVMNmIJYtatgPzgA8xt8Y/iGX+1ddoEZN5TOmZEqVv26yXl18f7vSI=; 24:0PkfQgceY7tITFHi7YtHXkichSBR02m5X2qavjYH5dAdBKACn6ZmeIHR2TzlAVjKyVEwJIt0KksG4fPF91BSBvLAw6ydQNK1AxBjZFoEMzg=; 7:Jrn0dMZ0oCwpYuQKQtlWOJtzTLey2giBoo3jFVP6ICVXckcBmpNjdOpvbhPDxXv7fTMIXsMe7Se02ySQDMATzcX6rkPjge3ZI2vDDeA8rrzyzSO0p9DkIgOtGzGpDzjKwQgHfL+SUhm/xO+z/C6SfHuRfp04Z5myAsk6vNux/o3YzsO76tqLfCYl2CwRhdMnv7OoHEuqUSer/OsO908BO7z5vNiMvh23v8FFrvvRLa4xntahSHYw7IMOoKqqBTyt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xevo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2018 00:02:53.9943 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 83dff2d3-7817-40b6-93ba-08d5911a97a9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e0a7ca1f-2458-4cd6-a7c7-d733c07495ab X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR0102MB3414 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When interrupts are generated at a slower rate than the FIFO queue fills up, we will have fewer timestamps than samples. Currently, we fill in 0 for any unmatched timestamps. However, this is very confusing for userspace, which does not expect discontinuities in timestamps and must somehow work around the issue. Improve the situation by using the most recent timestamp when a timestamp is missing. Although this guess is not perfectly accurate, it is still close to the correct timestamp and won't result in the confusion caused by using 0. Signed-off-by: Martin Kelly --- drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c index ff81c6aa009d..a982037d5dad 100644 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c @@ -126,6 +126,7 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p) int result; u8 data[INV_MPU6050_OUTPUT_DATA_SIZE]; u16 fifo_count; + s64 last_timestamp; s64 timestamp; mutex_lock(&st->lock); @@ -159,6 +160,7 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p) if (kfifo_len(&st->timestamps) > fifo_count / bytes_per_datum + INV_MPU6050_TIME_STAMP_TOR) goto flush_fifo; + last_timestamp = 0; while (fifo_count >= bytes_per_datum) { result = regmap_bulk_read(st->map, st->reg->fifo_r_w, data, bytes_per_datum); @@ -166,9 +168,11 @@ irqreturn_t inv_mpu6050_read_fifo(int irq, void *p) goto flush_fifo; result = kfifo_out(&st->timestamps, ×tamp, 1); - /* when there is no timestamp, put timestamp as 0 */ + /* when there is no timestamp, just use the last one we saw */ if (result == 0) - timestamp = 0; + timestamp = last_timestamp; + else + last_timestamp = timestamp; result = iio_push_to_buffers_with_timestamp(indio_dev, data, timestamp);