From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-co1nam03on0053.outbound.protection.outlook.com ([104.47.40.53]:64640 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752842AbeCZRns (ORCPT ); Mon, 26 Mar 2018 13:43:48 -0400 Subject: Re: How to handle missing timestamps? (was Re: [PATCH] iio: imu: inv_mpu6050: improve missing timestamp handling) To: Jean-Baptiste Maneyrol , Jonathan Cameron Cc: "linux-iio@vger.kernel.org" References: <20180324000240.19519-1-mkelly@xevo.com> <20180324123519.0acba88e@archlinux> <7c1718f2fc324eb6b959257a80e136cdCY4PR1201MB0184E4503B2B1EEA7F24C41DC4AD0@CY4PR1201MB0184.namprd12.prod.outlook.com> From: Martin Kelly Message-ID: Date: Mon, 26 Mar 2018 10:43:32 -0700 MIME-Version: 1.0 In-Reply-To: <7c1718f2fc324eb6b959257a80e136cdCY4PR1201MB0184E4503B2B1EEA7F24C41DC4AD0@CY4PR1201MB0184.namprd12.prod.outlook.com> Content-Type: text/plain; charset=utf-8; format=flowed Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On 03/26/2018 07:20 AM, Jean-Baptiste Maneyrol wrote: > Hello, > > we should have 1 interrupt every time a sensor data has been acquired. So in theory this is not something that should happen. But real world is always a different story. > Agreed. > Do you have a case where you saw that happen? > Yes, I'm seeing this on a board I'm working with. I'm also seeing I2C bus lockups at high frequencies, so my best guess (though speculation) is that the interrupts are being generated by the bus is dropping some of the messages. I'm seeing that, when the data ready interrupt fires, there are multiple messages in the FIFO, so all but the first get filled in with 0 timestamps. I plan to investigate why I'm getting bus lockups, but since this is exposed a bug, I wanted to first work on improving the resilience to such conditions. > The best way if this happens would be to create the timestamp based on the sampling rate since we know it (last timestamp + sampling interval). That would be very similar to the real value since the only difference is the clock drift between the chip and the system. > That sounds reasonable. Let me make sure I understand what you're proposing. Let's say we have set the sample rate to 10 Hz. Every time we get an interrupt, we already take a timestamp, which should be the correct timestamp for the most recent sample. Imagine that after an interrupt, we see there are 4 samples in the FIFO instead of just 1. In that case, we mark the samples with timestamps: sample 0 (oldest timestamp): interrupt timestamp - 0.3 seconds sample 1: interrupt timestamp - 0.2 seconds sample 2: interrupt timestamp - 0.1 seconds sample 3 (newest timestamp): interrupt timestamp Does that sound right to you? If so, I will revise my patch to do it.