From patchwork Mon May 14 21:05:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Baptiste Maneyrol X-Patchwork-Id: 10399233 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 1C982601F9 for ; Mon, 14 May 2018 21:06:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 98AC628518 for ; Mon, 14 May 2018 21:06:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8D10228521; Mon, 14 May 2018 21:06:30 +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=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, 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 BFA6A2851D for ; Mon, 14 May 2018 21:06:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752432AbeENVGZ (ORCPT ); Mon, 14 May 2018 17:06:25 -0400 Received: from mail-cys01nam02on0077.outbound.protection.outlook.com ([104.47.37.77]:41280 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752138AbeENVGX (ORCPT ); Mon, 14 May 2018 17:06:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=invensense.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=aK5yoaCg2Vu8bLKV5t23MsnB0Wm1nKfmHMz1S+K/qvY=; b=bXh3ARRoUK5B6YJnaznPHnvkw7xvg64Wulhi5NnV1rPcBWI9IPXsgHaUWhojE4w+GYU4wkMw14sJIzQFKxMd+WDWFsDXF6EPSTiFkWaVvtIJ6CK2p6E72GA5Ynl6ERGb3O1hNcfgUExytGJK/Akxlh0yUH36t2eJfkMKf62FiRs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JManeyrol@invensense.com; Received: from frgnb-l-34296kv.invcorp.invensense.com (2a01:e35:87fd:c140:998d:db6c:4387:dfad) by MWHPR1201MB0191.namprd12.prod.outlook.com (2603:10b6:301:56::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Mon, 14 May 2018 21:06:21 +0000 From: Jean-Baptiste Maneyrol To: linux-iio@vger.kernel.org Cc: Jean-Baptiste Maneyrol Subject: [PATCH 2/5] iio: imu: inv_mpu6050: switch to use sample rate divider Date: Mon, 14 May 2018 23:05:52 +0200 Message-Id: <1526331955-11869-2-git-send-email-jmaneyrol@invensense.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526331955-11869-1-git-send-email-jmaneyrol@invensense.com> References: <1526331955-11869-1-git-send-email-jmaneyrol@invensense.com> MIME-Version: 1.0 X-Originating-IP: [2a01:e35:87fd:c140:998d:db6c:4387:dfad] X-ClientProxiedBy: LO2P265CA0024.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::36) To MWHPR1201MB0191.namprd12.prod.outlook.com (2603:10b6:301:56::13) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:MWHPR1201MB0191; X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0191; 3:VcNyi32BgTUizpoglXnqPA43kluRxe7UPH1OGVmNxhVIVw+1HisweN04o/+3HZiROgiiEebW4PEXq0dwObQqYwcnJ52zbBLeGocGCzfRYvbOXJJLB7g7dyjnFjTyBNnTZuXRqcMaatHn+pAjSTSXz6Ud/IAzbP972SaBDNR6gmvwrDgIz0v8hj3MEbcNPuxmtFkmQ/LCHbeGFWQexuxDKE+sSVXuB9Sq8PS7wfPLmSarP2Vk4tMinBBLdYDzBsiR; 25:oCJfLuczarfQDTEoBZterWd8F6uFr8XneKgDEeta9cRBZWTNQgTBOpUgpipiDNka0ZUa0VlDzYjGnhen5TVJToZryOzsblzg5MvVx2AKwqgNSYnqV+uDOvEDTurDbHFj355tRPdV9A0UlE/1UVe5PmVvpdwC1+R+8B5UvrZhOb0/2W4SMZcEYBZHQVNnxr5C491XIElnnJoSqFOQBmoJlmm8dYFSGRiiXm2e8jxNQzc2+aX4AszSE2IUkXiKAMANOyqZiaqd0UQ73EZNpsaDHAER3Yxa0KSDDKQFGSFIQ8pdIJAYdwufE6XLI96L3xjAvgzBsTqL7LvDU6zw9kZYkQ==; 31:QT/H8tpoTQStggIl0Wxp0a/+5dDhs75D0jGFQjuvOcrH3MkmW3J5rmPVzcr/HB2HfgFPP/OK9QZ/3UxBGUqxGIV+v1mcR7wkMgx9g7fakkcl21Yz/NBRooyg0usQojBZQn8a8JbnMgEHVhuD/mKnvRqqZA0jxdUZWvJQ/3aiKBItajuTt0EdXdiQzVw5PFBt/ERTR4KJ31PEJoFki1YFToF9Mxc48n310u4cr+XchWE= X-MS-TrafficTypeDiagnostic: MWHPR1201MB0191: X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0191; 20:v9tKlRHYQD8IaeIgHUcFpDrmprE18CPrv5eQgDvVHV+09jf4B3PBvJk5nswWxYDgb6R4tW/+rUVV9MrrN9RM1lyGHLE5Xdb+KpMzP0wOflxsVvXGlDFoZ8oTSfeEHHkG7UEkonWrOiehrW6JTPl3+T1h2VFM4cCBExG2b2nH+3iOm0JQpHGBtW1+LtKR2CGy+NdYYGFi9cYROpeZJ6mHwX04TcyOb//9cfFaTfIL2e5PXOFubzUvdxEgAu1jLVv5hbXizOPI0v/v5llVt84Eg/OMh30BXkseHytKSz+CW/teM4UBaybHINjjW6OYtA9ACHQjOvf/zmAq1RZNWW/1eevqM9CaKGTGxRRUrbdvMk94PTfVdGvivAIIPkcnuVDYTRS1toHo8aPilVv1ZAbvbXBhsBAAwjH40kJrj0boOrlQ0Pfh6emyOcZXZ5jKaIgrNtvI91lEmBHZpJORn6bdtZUs2gk6bsElii/oENK0NFywYktB/H7kf5EyQc9XDou0; 4:yaJ7SWmEBihtRoS1ntM+2X6irI8zBHlu33byYFQExU0p0f2OvmCc6uqX5fo0kmij/suLpWUC8Vg+7OpA43m59UvX+UHGrmS5ssjRMLZUkwBhPTDbHbglzBwX8eRLIDW+ARPPUdqEpsjoS1G56uonCFeITm2mRJZwjAZLju90s3DFKJa4E8eb5n1O4q/Q8txhgibYnqLnA9Te2xJieMsFW3ny1XO82BwZKDmAJCsK0a3uA2BduTlL7MN4dDtF+Lfby9lUh4lsFWVAtrgA2CNm86bE5Cv1EQevRTx3yBUUFCeyCgm1Ydsfjtz6HbtBZKgE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(257004950022427); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123560045)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:MWHPR1201MB0191; BCL:0; PCL:0; RULEID:; SRVR:MWHPR1201MB0191; X-Forefront-PRVS: 067270ECAF X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(39850400004)(346002)(189003)(199004)(81156014)(186003)(7736002)(59450400001)(6666003)(4326008)(386003)(76176011)(48376002)(52396003)(50466002)(25786009)(80792005)(8936002)(68736007)(47776003)(6916009)(107886003)(8676002)(16526019)(36756003)(2906002)(53936002)(50226002)(6116002)(478600001)(305945005)(86362001)(72206003)(2351001)(46003)(6486002)(5660300001)(316002)(486006)(7696005)(52116002)(81166006)(11346002)(51416003)(97736004)(476003)(105586002)(106356001)(446003)(2361001)(16586007)(2616005); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR1201MB0191; H:frgnb-l-34296kv.invcorp.invensense.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: invensense.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR1201MB0191; 23:HAr7lsPEGIGiosYEGrWUiQoomP+4p271xFI/I/A?= =?us-ascii?Q?PTKrk08l0zIg4Sl80yr3H8nsTDffDl2FuoAlg3TlpjKIsgscy61Y/1bKm74g?= =?us-ascii?Q?t5/1NO7YkAw1XmyRqoeSTqhUoyxrBWRS5saFOi+ZdgI6Ao7yhDWXkbtD9/Hs?= =?us-ascii?Q?BE5Y7h4mLltNBE7mw+wiIq3p7L0zBMEB3QFTj8Yra9fz9M/aP7N+tMso9BmL?= =?us-ascii?Q?8ojeqGR4q3XqJFNFgA3exUfCb3An1EhGL+JUW13bUHEho4md7dcBDeUbgqiv?= =?us-ascii?Q?ppwOh/KSYPTSZfapKNtkyn6ufEXfjICbyLYUzP8qH1D4o290goik+DhkrAGX?= =?us-ascii?Q?fkqA8cj2DKmIRyaABrz/60INnKdFxoLySjbEf9PgXMrAk4zGp+bAVCFqXaX1?= =?us-ascii?Q?E20EP8VWYkorGzTRbe/XlBLlCGCVY/dKXFA3WHxeBuAuxq4+F3224veeJ56d?= =?us-ascii?Q?CYJ+Pl7mnkNGQZysHfGxvd37reTaaRSvNNwdYOyVpCiusbnIIYAa6Hw54ua3?= =?us-ascii?Q?TwdnJrZdfifS46zfvSwQl09d4qnrq/xSeGUsbLrFhw+FPDBcflI2sgvHoqbR?= =?us-ascii?Q?3LWjfrTTAcz0Ze0+7k2KW6l53cyhHqwucQq0rLxh+j0+xyQ6YX5MNpPKWaI6?= =?us-ascii?Q?wXeH6GO7ox1mq21/myTz4iXuvYugpllOwSv/uJkIfsRxcojolPbH0thmRaAn?= =?us-ascii?Q?rSIChdk0KX4R0FMr9S+5W8hy8y9ZJ5QuFmVjCRYyHzE6pUWaPEjwazKOKLPi?= =?us-ascii?Q?MZJ1qGAlsLoeamu0WxFjH3BiLP9793y9roTboRAZSaoNlOfqnq4WEe8uWwrW?= =?us-ascii?Q?ikfYsr79Tgt7oUsXGX+Wj8KcuRkTHwk8114z4gkBqc1FBK93a+8Ifj90LgMe?= =?us-ascii?Q?7pGFBEHgyWO1wbsv8fOLzzqUzUNwH1Ejavks7DQCe/rlPDj2zzP9FMI+/Fjk?= =?us-ascii?Q?1YQV2BbDPE1nMA3OPfhUXViIgYTB3eu0bdqgZ2ZWugH1NBzAeU5AEsMW0Czu?= =?us-ascii?Q?K1/lgwsZNE5s/jods51fW2EQIA5apVMFSnQNwre3zpNVZiZg080RUVRCcivP?= =?us-ascii?Q?ty4O/Aq3NgWQt0EMYZNU+v/Co+KgjPvNmceWzSbxhCB0IkUJy0g0hI09suHe?= =?us-ascii?Q?AB5xnggscjkXZuRNdpzlT0guhe3+kSwzh1XnAdAafP+ZDWZg1W1XH8i7unWp?= =?us-ascii?Q?+XE79rCGLumHWeNkC/cSb+sZZGsG2ffwj0LWIxGz3C75vlTDTbkfveFGZr/F?= =?us-ascii?Q?zUBsyZN1qlmjuDp1Y3Vk=3D?= X-Microsoft-Antispam-Message-Info: 1J2WEaBN3Pr6Ip68Kvm1AlRjaHWVGb09Cv0PCV7SCGkUAin0vH79j4qGqQ6PbklIJIqjvs4Q9PA/75v6fpR8YC5KFoIexuHKxQpf6bVN3Jka7W3YVVcC272ysb1M/sHIWPmI1GunRjqURqr8W/Mh51NYOlFFc3OEoWvd9IXaRvznC2Qlbn7rmSmsZVUQ501s X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0191; 6:T78JDbZFU0YHevz0zFvL78Wig2JJZIrzp9r5q8tzh7u1qiP5BIAywi7c92vEEZ2tsDZHsGeMD9Z9aFj4TgYEDMBpT2iYKa7nf1UPyDACxGZhYszBp9WeTQmWSeEPLrLXp4qYH0SibXB6bCdItccG3Cbp17I2z6omHHjflTQYFRPNBk1PJKx2IcslNWGi51cncPNJzkFE0+/JQPE76sNQAK0W6agIZBVAbELlnN3ZegBbJhyBKI+apuH7sX2krEvkkvSoULvuZBqasvWZq46yqe+1kKp1dPP2mQ5FI+SoNo4eAP0bK14PThqS26h5y7IpMior9GeKMfpjKpkaKh/qKcGUYN/8iOLOsArO50HKvE9eJqU46/J35OqzUDqSaoG/RiiSvoCe28fPgh3Vkeqaf8jIyp2xP+hdgh6EmVOTjvJCtKr0kaqKTLp4yuL8PoZWMVWu4/0NoLsqUc8WLkyqvQ==; 5:lbcfgpJhbXkJ5N2sWd2a44UNcYBZ+ItVfN38Kg6DIszOHVM/2fXAT7NGmfT+NRsiIcUvGgsRWQeUculAukS3Ya6FX/BXWy9HcjI6eD6Q3J9LJkpDmZSsa85Hrvcf1qgQbkAuEn4YwVNCax94dNgFIWyPyw7/iQSU59uY93TXS7I=; 24:ldU5MVx8/M1EA7pKSt+Gk+mOSyXbneNUmuK9Cm/D4o2WdSgKpdWWdRlim7RclKE5BQ7aHuOBDB4MCUgvjb00ZywXiZHL+I+le7TA0wUij2k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; MWHPR1201MB0191; 7:h41C7A7UQ2BgZhHUuaRLu6FOuwN5mQCUlgHeq8U+b+MYAMKdunRCS3mtzcIwvfh3jBM2EXFuDPgYCbWP9/Rkpd2AEXLKC/CcONTESIorwgDotEuF0tZYY9nG3vHbp1AuHM2VUDRy/P/Ozg99mcMiVg8xtAl9XdG3LiHjaEW4srLuLq6VJWU0ypFD3zJ4iFLoc85AVLKRJkH4gPxC1Krj+/TfzmHFHGqhRuvlSTIrS38FKzgN4z6HsavVGKlqh2v6 X-MS-Office365-Filtering-Correlation-Id: 0eac3716-a154-413a-2ed6-08d5b9de8bef X-OriginatorOrg: invensense.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2018 21:06:21.6254 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0eac3716-a154-413a-2ed6-08d5b9de8bef X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 462b3b3b-e42b-47ea-801a-f1581aac892d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1201MB0191 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 Instead of storing fifo rate in Hz, store the chip internal sample rate divider. This will be more useful for timestamping. There are both equivalent. Signed-off-by: Jean-Baptiste Maneyrol --- drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 15 +++++++++------ drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c index 1e7e750..9e5c5e7 100644 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c @@ -82,7 +82,7 @@ static const struct inv_mpu6050_reg_map reg_set_6050 = { static const struct inv_mpu6050_chip_config chip_config_6050 = { .fsr = INV_MPU6050_FSR_2000DPS, .lpf = INV_MPU6050_FILTER_20HZ, - .fifo_rate = INV_MPU6050_INIT_FIFO_RATE, + .divider = (INV_MPU6050_ONE_K_HZ / INV_MPU6050_INIT_FIFO_RATE) - 1, .gyro_fifo_enable = false, .accl_fifo_enable = false, .accl_fs = INV_MPU6050_FS_02G, @@ -628,7 +628,7 @@ static ssize_t inv_mpu6050_fifo_rate_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { - s32 fifo_rate; + int fifo_rate; u8 d; int result; struct iio_dev *indio_dev = dev_to_iio_dev(dev); @@ -644,8 +644,12 @@ inv_mpu6050_fifo_rate_store(struct device *dev, struct device_attribute *attr, if (result) return result; + /* compute freq divider and update fifo rate in case of truncation */ + d = INV_MPU6050_ONE_K_HZ / fifo_rate - 1; + fifo_rate = INV_MPU6050_ONE_K_HZ / (d + 1); + mutex_lock(&st->lock); - if (fifo_rate == st->chip_config.fifo_rate) { + if (d == st->chip_config.divider) { result = 0; goto fifo_rate_fail_unlock; } @@ -653,11 +657,10 @@ inv_mpu6050_fifo_rate_store(struct device *dev, struct device_attribute *attr, if (result) goto fifo_rate_fail_unlock; - d = INV_MPU6050_ONE_K_HZ / fifo_rate - 1; result = regmap_write(st->map, st->reg->sample_rate_div, d); if (result) goto fifo_rate_fail_power_off; - st->chip_config.fifo_rate = fifo_rate; + st->chip_config.divider = d; result = inv_mpu6050_set_lpf(st, fifo_rate); if (result) @@ -685,7 +688,7 @@ inv_fifo_rate_show(struct device *dev, struct device_attribute *attr, unsigned fifo_rate; mutex_lock(&st->lock); - fifo_rate = st->chip_config.fifo_rate; + fifo_rate = INV_MPU6050_ONE_K_HZ / (st->chip_config.divider + 1); mutex_unlock(&st->lock); return scnprintf(buf, PAGE_SIZE, "%u\n", fifo_rate); diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h index a92ddd4..8d9044c 100644 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h @@ -86,7 +86,7 @@ enum inv_devices { * @accl_fs: accel full scale range. * @accl_fifo_enable: enable accel data output * @gyro_fifo_enable: enable gyro data output - * @fifo_rate: FIFO update rate. + * @divider: sample rate divider. */ struct inv_mpu6050_chip_config { unsigned int fsr:2; @@ -94,7 +94,7 @@ struct inv_mpu6050_chip_config { unsigned int accl_fs:2; unsigned int accl_fifo_enable:1; unsigned int gyro_fifo_enable:1; - u16 fifo_rate; + u8 divider; u8 user_ctrl; };