From patchwork Sun Oct 24 09:16:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andriy Tryshnivskyy X-Patchwork-Id: 12580115 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51FDDC433F5 for ; Sun, 24 Oct 2021 09:16:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2A56160F57 for ; Sun, 24 Oct 2021 09:16:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229638AbhJXJTK (ORCPT ); Sun, 24 Oct 2021 05:19:10 -0400 Received: from mail-eopbgr140127.outbound.protection.outlook.com ([40.107.14.127]:14414 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229463AbhJXJTI (ORCPT ); Sun, 24 Oct 2021 05:19:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fT/tTiTD7YxN934woC9q4XsVhFOB5d3FpBxNmsGHTqN4fyHxsSCVUA08F+pixfAgkbFHSe1AodveYqxVrRc3XN8TVDwbtUKnXTtmGCp8of30MyDkV+MFUTJ45lGwxLoKqnggV5E1SoELli3bFZ/s8qTvy0T/7lMxY75CjVrK/1RprjC16VGcr/K+rgufe6DGw6g4CTCjakk0a3XOm3/Vcz0iFF8hUrqt4uVRllEFhNNpMgy1VcxU3mHhvgNqel4ZyjvowVaUBMudQeVOh6FimqSKBVzmRhCNvPDGvsbegYTHDr8rO3B8j1e6P2beNvp4NNmErco2ZhuFKs1O9xrqYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5uXCVUjsi9lkmHiBfMKGZ6RDlx5elpWV5r6clrOavR8=; b=PC1D64JVb9uqppBcyxGdOx2d8REd8w9F1lCkPmTQIQHmXksLWD85ZwxKSi9DoTOIxocAhiH5+qPVHXJpPcT8Y2svut/eWe9rA+pr2+zsSuJfkxyboYN6eYPNG22sOQTktWfgYOcI9XN6CZKiRlNKHaofyNDc3/x2DB1gln1crssYbkCCI+lrw/tPY7oq14ZiOL5ycE0xF+GyfWtcT0WYg6/jL6/+GATrXQ+MPE/Pfx4b7Vx8tzykUlHevRvkRUE8CWnbsRXK/1/Eoe6m6l8F1AkMtoxakcWTWj94GV7Np76bKB5DA4bBvN0XCIJdqBvDfPOA+zigmynix28Lj47M/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=opensynergy.com; dmarc=pass action=none header.from=opensynergy.com; dkim=pass header.d=opensynergy.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opensynergy.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5uXCVUjsi9lkmHiBfMKGZ6RDlx5elpWV5r6clrOavR8=; b=g1Kzi+eoCedVFbqk2HJ00e/kNnpmWle9E435fW9zDTMaHgpOOieLVLO6E49tBFGMPa5AXiJzVzJu48Fgw9OesBBG+HTQEtgf/o1Mv9GmGww9jYvVwu/waypQ3MS7Td3pqebetU/qyRgUkgcvEE1LV4Fk8J4rG016G8mz4K7FClw= Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=opensynergy.com; From: Andriy Tryshnivskyy To: jbhayana@google.com, jic23@kernel.org Cc: lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasyl.Vavrychuk@opensynergy.com, andy.shevchenko@gmail.com, andriy.tryshnivskyy@opensynergy.com Subject: [PATCH v7 1/2] iio: core: Introduce IIO_VAL_INT_64. Date: Sun, 24 Oct 2021 12:16:26 +0300 Message-Id: <20211024091627.28031-2-andriy.tryshnivskyy@opensynergy.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211024091627.28031-1-andriy.tryshnivskyy@opensynergy.com> References: <20211024091627.28031-1-andriy.tryshnivskyy@opensynergy.com> X-ClientProxiedBy: AS9PR0301CA0035.eurprd03.prod.outlook.com (2603:10a6:20b:469::15) To AM6PR04MB6359.eurprd04.prod.outlook.com (2603:10a6:20b:fc::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7a89df43-7956-412e-b52d-08d996ceffe8 X-MS-TrafficTypeDiagnostic: AM5PR04MB3011: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3173; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VhaOlNKSdyeYe+N0+hDrUraiP44iKFJdrLyliDNIHJdbrGrMQOXCCLTg2WVKmnAoZit/P7UA46ggcRZHMASwOwvysIm2nS0bcVMStlAt9x532UeJr35egfgXig7cSsF+D62q4msMB/EMKcQZEUGO3jk56TDZFsbMdwa5hMvzg3fqlhxi2whEmugOu6BAvA0VwpktDV1TaJdR0bLJTlim1QLBSsicy3AoUucusUGNNp+y1PkM5QsFFb4SM0kClZz+4vJjuHDat+0hx6xca9Reo6va+wRyARs1uw7NXLzQlcGa2Nm4mdu/v6iHYBR1msa6iyL/56QUlaIcDpGr5M93kdhOMIlA9r0x6aoDdX+4mULXD0Go0ulKlWojr5PBhorrhEsRvbVmTUnu1nRGgTLpwSpbkREpsak9r5ibaAOfQjpUNsj2iAp6Hf5yHtRTFXwIpNMaLrkB6RGl4s2O5jiNw9vP/HjjC+BTJchpy3/tY4X9aYMoFX7Ivbdfy5dOAutaSWx6GO5CLwVpUSgq3Yf569IQiq99DEsjgumJPDsJT47687asmcELUtqr4HiXirjDWhwvSBTpMC9bxFkE+UEwuL+DPxa/N7yBq+nF6z0QNoiIRthfDAU+l6LykVFhlA3kvVct5ZsF60bqLpXd49FHwCekDyytv4PXTt+GI8cZ3mmh7ERcCKXyci3PEcJ7ysToGMaQP6lWBO8XUJTpf4Md4A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB6359.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(396003)(366004)(136003)(376002)(39830400003)(38100700002)(26005)(66556008)(5660300002)(2616005)(66476007)(38350700002)(42186006)(66946007)(36756003)(55236004)(86362001)(316002)(44832011)(107886003)(4326008)(508600001)(2906002)(1076003)(186003)(8936002)(8676002)(52116002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2SQGq3BXW5HoPva7vZ9PFTMK/lwH2j9PMv9KvCo0Rx3PGeowh88676GRdPIIQr3fl5poum2tsD6UO3zgaZLyCBgh7C9vZ5Fh3QAU28HqRyPvbvHlxTgsOfoLO/wvn01JmYxwsMSM4iu8ePVWUIGJ8RvOJfxZUZd3P0+HLUvzhjOQhNhXl71HP9a1CUyKM9KRNBRZl7Pt9+7r7DjJVDaCZdLLuQpWdG2M0eUJBsw3Ep6g/e8kY0Mq4RlPR5lvkVVf/4CquZ+uEwAX408T7hhg0AGVN5/PkLxc3/m++A6gEqfP61spzrkpR17vcTV2S2Ho88mj1tTkLbUhOtfidGyULBntNRwzvTIdOwxtUrnYy80YJXPSGqS54bPc3QCX0eoc/JPY3RODcBDI/d17MpuOrQhvoz2Pu6htvZriPaoxsLRxfxN7p0FqTQWqBDGAI1xoYxazyM7GUEiJPYigON4eLW/8goAqQq3PZ3C9my3tSz1LdfYfbnhYWMrww85+VgZqLOkJZBSOdBMz4M4q49wpwqeQORoI3/VCHoXb5/bCTyiCI7gW8EGLW6q854sXdIEj8No8cl1uypZRnweVcUQbHVFEEBLTyH/9TggFrzUFDvuoGOBL01T1pqmb06Ikv6BzLoN+7fHPmJKiyY0/ngpifj5h5zCYfTkJ19zy2gLkJ42hBiOEyzGcB3ffqY6S/bXiB2aLCJAVbnIBFgcTDW1buukDjlylPJvsk1C0Nhm0YN0Lb3Cdg58594jVGlTG+moVzbwHmejUg1YyG7BGpWJXRumzyDu1I7o9kxQf+J/dtwIq1WxURWUS55rcKQ7Kas6xDfS2LUtkzw9anXwYjws/+DeBLmveAs/anYL3gknIUELhRapyQ1UPHsmHEKcT/rlHoIzPk1nR/1WLoNy2XCw/VpywCwguxVFOIELCf3tiHkn+x1D1+GZKWuXiTiz7JPNGGKPfjlmpJMFJK6finynz+LEgt6MeAwQtIuRb1rA1j+kTGrUDdh7kQHoDNioL166wninqdB1SJbcZ60L3UzI1f2jHZmxFkMsKYeM4bu7nSe2XKzjmB5UpMnMvLXgnLxLDGrbV6wDSQEfERatp0QPE8ZEUmG5AiBz4E/BMz1xqGvu8JSQ/9jBXQEw/E4eL93comhiogPsnWccz/dBfSb/mB9JmKZwNp8DGc//7gIF+OYjF7nGDKL7onNXPPnLml2AcqFVoOA+Unz/IAd9qsijD0n2Gsshv5gYRkctw8/mzibkP0E+S53FlGs8Q9EPF3ONyciN9z755fl5/n9TvPQrOnmrE7ozAk6dRtNBIisqZiXhf4Lg1dHzPmB62jUuWt4DH X-OriginatorOrg: opensynergy.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a89df43-7956-412e-b52d-08d996ceffe8 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6359.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2021 09:16:45.2205 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 800fae25-9b1b-4edc-993d-c939c4e84a64 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gOkxzpPpwKep8k/aryAM/+Qzj+RxB8IHbH63xweUUTSgMeryPzjtjB1kFqvuWgld79GantQooH2SuMzu6pBlxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR04MB3011 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Introduce IIO_VAL_INT_64 to read 64-bit value for channel attribute. Val is used as lower 32 bits. Signed-off-by: Andriy Tryshnivskyy Signed-off-by: Andriy Tryshnivskyy --- drivers/iio/industrialio-core.c | 3 +++ include/linux/iio/types.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index 6d2175eb7af2..49e42d04ea16 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -702,6 +702,9 @@ static ssize_t __iio_format_value(char *buf, size_t offset, unsigned int type, } case IIO_VAL_CHAR: return sysfs_emit_at(buf, offset, "%c", (char)vals[0]); + case IIO_VAL_INT_64: + tmp2 = (s64)((((u64)vals[1]) << 32) | (u32)vals[0]); + return sysfs_emit_at(buf, offset, "%lld", tmp2); default: return 0; } diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h index 84b3f8175cc6..bb6578a5ee28 100644 --- a/include/linux/iio/types.h +++ b/include/linux/iio/types.h @@ -24,6 +24,7 @@ enum iio_event_info { #define IIO_VAL_INT_PLUS_NANO 3 #define IIO_VAL_INT_PLUS_MICRO_DB 4 #define IIO_VAL_INT_MULTIPLE 5 +#define IIO_VAL_INT_64 6 /* 64-bit data, val is lower 32 bits) */ #define IIO_VAL_FRACTIONAL 10 #define IIO_VAL_FRACTIONAL_LOG2 11 #define IIO_VAL_CHAR 12 From patchwork Sun Oct 24 09:16:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andriy Tryshnivskyy X-Patchwork-Id: 12580117 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74052C4332F for ; Sun, 24 Oct 2021 09:16:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5DD5460F57 for ; Sun, 24 Oct 2021 09:16:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231511AbhJXJTO (ORCPT ); Sun, 24 Oct 2021 05:19:14 -0400 Received: from mail-eopbgr140127.outbound.protection.outlook.com ([40.107.14.127]:14414 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S231400AbhJXJTK (ORCPT ); Sun, 24 Oct 2021 05:19:10 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c6YPtdFNGzojKEaMd7VvK19z0vFQbOqOFeifnwmi/GZjcyFUsGKVYVWLw+NtrRbJqvuCkgl26Ye7Bv2RPlNa85dxFJvjcS3ZvXAgH/9UVRFbg+MWd4Li7cvSFCBg+c10lx+JW3E40EpAC1KjyrWLrHExX2MuE8YVPRPeuCaCVf49s9E+r+dI/gYCoHDSlXM2Xsib4BQ+YRZbrPIHBTdLEX92xQCya0fFTnsxDj+tJYWbVESjk+mn7vd+vKJhM/AzWWqgPh24DWjkbp3oTCc08WyCBB/ebOKMUIvcmG80a8t6UUX3aesq7B+DBtkgWBQSZW005GewsH6MAHEOVx606g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=N1y8Z+b7v1MGw69LmxuD5UkfLdaW83/HUpUzn8oB59M=; b=NjsH02LQBu8tV9nhAjqZ3IAY46UYdb6ANQTAJfX6jQD8zrAfyFxvy/k7EICjgEnS7GF1vUJMW0UtgSb8pn10lgsQYE3LDsAiqxz0WhXA7xe3KgNMV6uOgZkp0vkG/Y5ffGgtGc1QUHE4KP+fD4KH3vQYqxC3cFosP4sIEgn4cY95aE6jp7eDHjwdPUOUfjLyb95ITLporB5H4CrIca9Ns/nzDu7htGdzKP9tLT+4rihcfmpyS53cB+kOqojbPSVM6QxtqnGvTU2h/y0pVFMP/96ZJIy4fjVseQHioxbEVSYpE9+/aZg8/Ly9lOndZBOg7sl5vhdCzc+k5YG1vIo4sQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=opensynergy.com; dmarc=pass action=none header.from=opensynergy.com; dkim=pass header.d=opensynergy.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opensynergy.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=N1y8Z+b7v1MGw69LmxuD5UkfLdaW83/HUpUzn8oB59M=; b=UM4lpPLErcGRRtuJxRrStEryKodOJb/EzutPv7pcZMZrGY0XTznEeUsV9VhAKlguSFUDk5ZCdkkdcYvc4uoDXKUoYWl6xE0VaJE9H37TpWNLAY6v7p95zPy4AERXgg7KuFHY5FjqTMHpOCiabYaBX7gMjRueVhC9554fUKOmpM0= Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=opensynergy.com; From: Andriy Tryshnivskyy To: jbhayana@google.com, jic23@kernel.org Cc: lars@metafoo.de, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Vasyl.Vavrychuk@opensynergy.com, andy.shevchenko@gmail.com, andriy.tryshnivskyy@opensynergy.com Subject: [PATCH v7 2/2] iio/scmi: Add reading "raw" attribute. Date: Sun, 24 Oct 2021 12:16:27 +0300 Message-Id: <20211024091627.28031-3-andriy.tryshnivskyy@opensynergy.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211024091627.28031-1-andriy.tryshnivskyy@opensynergy.com> References: <20211024091627.28031-1-andriy.tryshnivskyy@opensynergy.com> X-ClientProxiedBy: AS9PR0301CA0035.eurprd03.prod.outlook.com (2603:10a6:20b:469::15) To AM6PR04MB6359.eurprd04.prod.outlook.com (2603:10a6:20b:fc::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 61bbfd94-ce80-4c3f-61e7-08d996cf006d X-MS-TrafficTypeDiagnostic: AM5PR04MB3011: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2399; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: soKIiuDWE1tBNFf27ZzwP/ZCpjOsSmVGqt1ndYsL90FHB64o//YgFXE9BkttKN/udSxVwCrvkmXy9AaRc1qhwm5pm84cNUmm13x/bOtZM71pn2nXemsjbwQ+Un6nGapT59Fr7lMi51jB/1aKwGfZslLVieKvRbL1ybSdPRvhvV5epovuDPwK83auMv62QkxdIpFIsdK5wKAwVVkRFLKINd76LYY0MmgX1Ygtfn5i81a3y6T2kpBZkO2p+wHqZn8eolvjqt4GYP2JmNCwDio+leUS058xBlw0TKATetkmnDAnTI9/xI5LYIQBL1wO2Me8wcvMw+Sr++3dfmKRnHydNR/l07M1sBuEpvd5Sd7f478hXREdBTLRnqbnQQ10QIgx2P0FV3l8aBeKB23ANIjXZMNh4HCNU1/drsRB8ELW2ohLdq5qel0TEeWzW9f/pF+yw7Aoxz9MfgHsqCJzTxhwMZa3F/ysyBeLNdVfYPb2a7GgBso9dYnO5zdB9QqQvghImk41h447WtZZ5jew6+1Zk8NkXaPPmy4+0yfowutxW1nCxtzHQu+QbJMOWdg/AQQIAvPUko0FLgSN4w1d8IyaV3K+G0N0uiLnVUKyyEY0FffXHGOkZtybXtCPjLBepihFgSPQMHjhmJHzRfmosOQuCkXGO6vHno/z816oFlhL0Up/2cCnevWDcK0o1SEcVQX01HpEZoM2heGAIVjZl2py8Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB6359.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(396003)(366004)(136003)(376002)(39830400003)(38100700002)(26005)(66556008)(5660300002)(2616005)(66476007)(38350700002)(42186006)(66946007)(36756003)(55236004)(86362001)(316002)(83380400001)(44832011)(107886003)(4326008)(508600001)(2906002)(1076003)(186003)(8936002)(8676002)(52116002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rQ0r625cE+iM3YBDc6I0/+wqtAowcubg9lXo1iRbCdfgPjktnG4GyvkT9lxWy7t/3I3plTdwTy/oUZu4lxE4DwGgiJ5cP6pDA2RsuRAQ2ntPoyOMwhjvonk0vLEr6ALMy6oOSRDVRA2mDL1a0iLmAaCp62IUFVXEpc19loMRXoSJ/oHDkbW7zt/Zukx4Xzb91XflnLxi8Lv0haDxzTNZsEaegN5iSNyLT9HEhLPScqme0SZf5+t8PEUi0EN+OPzHPHG5ODZ1nzkw/zimyVKXum6maazAhxssGGUlGRoxIqB3rCdC4t4+gqRSKWaC8Gzc1xDp4Ffw432PChaGxpuxnRyeKWBGwtU1p6GLnz70ENw3RF10a6K5oD9jECdgUz9VEkvjyLbgGozkmfBEpf6XS2r1+fSJM1PWi43iKk2LsAXqE24JktHnTC8RHT9ouuNyRRGmV+u3uHIcUpPwCtgGF1FwvzffYhPVcVX0VmkilxGUGn0zsMDBQNOXUejqnY6SwSqX6tEFkAd4qEsH1WzOQp5nHbtKMRGmyviMh8sojx9O+Qnw/i51H8gcZqc0GZguy0CCg+glV5a6RfPKuhfVvCchqK5o5SAx7tIlE99IkIhzOFmM1uhNWIA8ZZSyS2e3xiAtFCoFXfeYe4Rj0ZzadbAHm1UnoxAyUXgAssiIodRltA7ZjY9OTznkMJLLJ9AYmtWmBuJZ7qS8YrbzB3tQTYcB8lsZ7uUhWPoQcps+/h2qAOErO5Z6Es+3aee1mMubFoYq4gbvzd6rbBCYvMbt5xZ/DuOwLBI3J36jMN1x6kspoWePDGsOHAO/jOJurkLGI7y6yck+l6OvtlBHN9z+o7jVFVHcxFkw9WDtFte8KIR1+cdUdOTxrtKxtjetVIGVRC+PVDOO9BFUQRAgKY+AbDt+JQun1IVMHO4pV1fPQV6YcC8X5VGOvumwaDUfk8orItUUUIeKxlFRJ/XDg2ORTzhoK8a2K5qDPlWwcGnBnC8CYw/zjEy3A7l2wakPF9rd4OFroyZPCQ4yG/lQ30OZCKWCflfUIRYRKGqt/DdwYtu8+9iAm0Sze8J3ERdOyrkFoy6qI3HOcwGGP5iYGCEm9TF5Ak8Zj5lp2cnXA7Ab5Csh5lXSnzQWeYnoLbci/b/ug71xO+YN2g1l8MdShwqTvO9qJr8QyNFLTw7RmVK7lBAcpSyi/XIy7MZdkV+nxSPn9P8qBndjuqj43usCnYDrJaAeQlwOv0k66CAMUs9Yd2Cch9xjdwOM4VSBUMqM1c7eP0Y+wzoT6LJJ1H8OnVjGf2jRwVzgLso8UGRnD58oaPAKRcYNKfO2WyAn+CYLYPdk X-OriginatorOrg: opensynergy.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61bbfd94-ce80-4c3f-61e7-08d996cf006d X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6359.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2021 09:16:46.0650 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 800fae25-9b1b-4edc-993d-c939c4e84a64 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gkibR600ULdG0/qxrKjuv04lSDCb9lysIIPbhvL4p9bWF+wf6E3Th1jQnabcOhn1Eg/d6x3Qvpd4xmaxoBW50w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR04MB3011 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Add IIO_CHAN_INFO_RAW to the mask and implement corresponding reading "raw" attribute in scmi_iio_read_raw. Signed-off-by: Andriy Tryshnivskyy Acked-by: Jyoti Bhayana --- Changes comparing v6 -> v7: * split into two patches: one for changes in core functionality, another - for changes in the driver Changes comparing v5 -> v6: * revert v5 changes since with scmi_iio_read_raw() the channel can't be used by in kernel users (iio-hwmon) * returned to v3 with direct mode * introduce new type IIO_VAL_INT_64 to read 64-bit value Changes comparing v4 -> v5: * call iio_device_release_direct_mode() on error * code cleanup, fix typo Changes comparing v3 -> v4: * do not use scmi_iio_get_raw() for reading raw attribute due to 32-bit return value limitation (actually I reverted the previous v3) * introduce scmi_iio_read_raw to scmi_iio_ext_info[] which can return 64-bit value * enabling/disabling and reading raw attribute is done in direct mode Changes comparing v2 -> v3: * adaptation for changes in structure scmi_iio_priv (no member named 'handle') Changes comparing v0 -> v2: * added an error return when the error happened during config_set * removed redundant cast for "readings" * added check if raw value fits 32 bits drivers/iio/common/scmi_sensors/scmi_iio.c | 57 +++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/drivers/iio/common/scmi_sensors/scmi_iio.c b/drivers/iio/common/scmi_sensors/scmi_iio.c index 7cf2bf282cef..d538bf3ab1ef 100644 --- a/drivers/iio/common/scmi_sensors/scmi_iio.c +++ b/drivers/iio/common/scmi_sensors/scmi_iio.c @@ -279,6 +279,52 @@ static int scmi_iio_get_odr_val(struct iio_dev *iio_dev, int *val, int *val2) return 0; } +static int scmi_iio_read_channel_data(struct iio_dev *iio_dev, + struct iio_chan_spec const *ch, int *val, int *val2) +{ + struct scmi_iio_priv *sensor = iio_priv(iio_dev); + u32 sensor_config; + struct scmi_sensor_reading readings[SCMI_IIO_NUM_OF_AXIS]; + int err; + + sensor_config = FIELD_PREP(SCMI_SENS_CFG_SENSOR_ENABLED_MASK, + SCMI_SENS_CFG_SENSOR_ENABLE); + err = sensor->sensor_ops->config_set( + sensor->ph, sensor->sensor_info->id, sensor_config); + if (err) { + dev_err(&iio_dev->dev, + "Error in enabling sensor %s err %d", + sensor->sensor_info->name, err); + return err; + } + + err = sensor->sensor_ops->reading_get_timestamped( + sensor->ph, sensor->sensor_info->id, + sensor->sensor_info->num_axis, readings); + if (err) { + dev_err(&iio_dev->dev, + "Error in reading raw attribute for sensor %s err %d", + sensor->sensor_info->name, err); + return err; + } + + sensor_config = FIELD_PREP(SCMI_SENS_CFG_SENSOR_ENABLED_MASK, + SCMI_SENS_CFG_SENSOR_DISABLE); + err = sensor->sensor_ops->config_set( + sensor->ph, sensor->sensor_info->id, sensor_config); + if (err) { + dev_err(&iio_dev->dev, + "Error in disabling sensor %s err %d", + sensor->sensor_info->name, err); + return err; + } + + *val = lower_32_bits(readings[ch->scan_index].value); + *val2 = upper_32_bits(readings[ch->scan_index].value); + + return IIO_VAL_INT_64; +} + static int scmi_iio_read_raw(struct iio_dev *iio_dev, struct iio_chan_spec const *ch, int *val, int *val2, long mask) @@ -300,6 +346,14 @@ static int scmi_iio_read_raw(struct iio_dev *iio_dev, case IIO_CHAN_INFO_SAMP_FREQ: ret = scmi_iio_get_odr_val(iio_dev, val, val2); return ret ? ret : IIO_VAL_INT_PLUS_MICRO; + case IIO_CHAN_INFO_RAW: + ret = iio_device_claim_direct_mode(iio_dev); + if (ret) + return ret; + + ret = scmi_iio_read_channel_data(iio_dev, ch, val, val2); + iio_device_release_direct_mode(iio_dev); + return ret; default: return -EINVAL; } @@ -381,7 +435,8 @@ static void scmi_iio_set_data_channel(struct iio_chan_spec *iio_chan, iio_chan->type = type; iio_chan->modified = 1; iio_chan->channel2 = mod; - iio_chan->info_mask_separate = BIT(IIO_CHAN_INFO_SCALE); + iio_chan->info_mask_separate = + BIT(IIO_CHAN_INFO_SCALE) | BIT(IIO_CHAN_INFO_RAW); iio_chan->info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SAMP_FREQ); iio_chan->info_mask_shared_by_type_available = BIT(IIO_CHAN_INFO_SAMP_FREQ);