From patchwork Fri Nov 22 13:24:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258013 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8A3C7109A for ; Fri, 22 Nov 2019 13:30:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 604D020730 for ; Fri, 22 Nov 2019 13:30:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="6M2eK6S1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727194AbfKVNaA (ORCPT ); Fri, 22 Nov 2019 08:30:00 -0500 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:52390 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727173AbfKVN37 (ORCPT ); Fri, 22 Nov 2019 08:29:59 -0500 Received: from pps.filterd (m0167091.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN46u011404; Fri, 22 Nov 2019 08:29:54 -0500 Received: from nam04-bn3-obe.outbound.protection.outlook.com (mail-bn3nam04lp2055.outbound.protection.outlook.com [104.47.46.55]) by mx0b-00128a01.pphosted.com with ESMTP id 2wbg0jtqxv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:29:54 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QTVXQ06FbcOl/lfuyRwzLouymIo3Z906dNUgZCYqyMd8EF4rmRK/AwQjoFlpqAGVXmnKvGSTzTgpMJ3clkFYIGx7uMo5qn3JYTULc8rCnZ8FQQTaox2V2w219eSnl7nnCFVvBjPn7w10oedxq8D/PSZGCDvly8RyOFbi/A9u8TrpMDaj821SskGLkYU5fzY8+k6grYfqBvCxpu2Z3g0b9WN2RA+dpNu1F12LUXBkeN6NGQB/ySGA4BFspbHoVBVyeLSBNyel/kPQeSJYWHlZ3aSWUiKqXmOMVzYTEjYca85m7zAqAej8pgIvyBqVuslNKry5PJkqcpxUEsCGnZ1+Pw== 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-SenderADCheck; bh=lCZPoMm18WIkEKVL5/ZcqMMR4sUhamwlg16Joyqjezs=; b=G0MnahXr8SYCE54VtalAbAHXBKuewophJ4jaIZb6meMbEEb4ERI26ZF1sWek0t51Glfy77uGRJxuJqv3x2Y5YRONnJdg6WsuQIQbAHumD+iBR7Xdl7WiRjMoRzzyBjS6+uc7uxARz1/cfdTuWdNMayDJSA7r7gqX5PRAxTX9QAH0js6pRki0JEYC0Ygpg0bY7CR5K+N0Q1nSwBPCYv2nSEwkT8rQk3W1mkAJj51v4ONNpDINY+NdY32Q70D+RqX48KQ3z/0lbXfptDm/NpioTL+ajnuMoeqq9GClSlGo9VKRTEhSSro2y9Ko91aI9Wf7A0Sz/IN66gGSpqcnDyXbUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lCZPoMm18WIkEKVL5/ZcqMMR4sUhamwlg16Joyqjezs=; b=6M2eK6S1WLoYg69FsbRMDpzJWbyCzcEMJEhD2M8aCq/H6fAPcM167aeaYCyzeOxxFd2KK/vHV1mDVTN/rMeD0DZ7cfHtaHVUQNOP8b4T6gGbe4Olf7j1Y6J3N2uOHnSTZ/CFeuBco4ZSHHFRkK6kch2owDTmQhZERd+VXpgf3/8= Received: from BN3PR03CA0110.namprd03.prod.outlook.com (2603:10b6:400:4::28) by SN6PR03MB4253.namprd03.prod.outlook.com (2603:10b6:805:bc::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.29; Fri, 22 Nov 2019 13:29:53 +0000 Received: from BL2NAM02FT029.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::206) by BN3PR03CA0110.outlook.office365.com (2603:10b6:400:4::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:29:52 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT029.mail.protection.outlook.com (10.152.77.100) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:52 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDThkq015750 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:43 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:29:52 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 01/11] iio: imu: adis: rename txrx_lock -> state_lock Date: Fri, 22 Nov 2019 15:24:11 +0200 Message-ID: <20191122132421.5500-2-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(396003)(376002)(346002)(136003)(39860400002)(199004)(189003)(44832011)(36756003)(70586007)(5660300002)(50466002)(2906002)(2870700001)(48376002)(107886003)(4326008)(70206006)(316002)(478600001)(106002)(26005)(186003)(110136005)(356004)(246002)(6666004)(7696005)(76176011)(51416003)(8936002)(47776003)(446003)(50226002)(7636002)(14444005)(8676002)(54906003)(426003)(2616005)(305945005)(1076003)(86362001)(336012)(11346002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB4253;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 020d83df-a138-41fc-216f-08d76f500e83 X-MS-TrafficTypeDiagnostic: SN6PR03MB4253: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +SE2wT3d88ZtoT44fctTwvndlsZe7Xzzc6psnoQjXEy4shYHL8wQkaZB8lAh0f1as+VSGaAwP+s9YnZ0hcWt8Nv5kcm2sSjRb36ncqyRNTBxAmCGwjyxCyxk8ii0ZKj3iguaOnFRtdn52CgEDmLB1nNblgtJAoq4K4AlyN++JyjbM+IPMOtCVaSziKKA3hBAm5kCFImwnI5X0FrRE0Pm+HKu05UQAcs29guFE80RmC6QTv85LkfHK8N5POqcbEe3RzfJ2FOLifTHWUw7w1tjP1YMToINixyvmEhExqFdYxHxt3m8mqsrjgjzEBYRznePfSCzq5YjQaDpa6a2Wpky1U4dbdeq5LlUSCXbljMgTCn0iIIEebq06D+Z3zhJ1w84dgUqcSXTEq7DTTxPaVU5ezye6+88Nodv8XvkRCAQtj8uhKz7Xt1rt1pOU7+E9mz3 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:29:52.7335 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 020d83df-a138-41fc-216f-08d76f500e83 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4253 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 malwarescore=0 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The lock can be extended a bit to protect other elements that are not particular to just TX/RX. Another idea would have been to just add a new `state_lock`, but that would mean 2 locks which would be redundant, and probably cause more potential for dead-locks. What will be done in the next patches, will be to add some unlocked versions for read/write_reg functions. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 10 +++++----- drivers/iio/imu/adis_buffer.c | 4 ++-- include/linux/iio/imu/adis.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index 85de565a4e80..db562fec79b2 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -70,7 +70,7 @@ int adis_write_reg(struct adis *adis, unsigned int reg, }, }; - mutex_lock(&adis->txrx_lock); + mutex_lock(&adis->state_lock); spi_message_init(&msg); @@ -114,7 +114,7 @@ int adis_write_reg(struct adis *adis, unsigned int reg, } out_unlock: - mutex_unlock(&adis->txrx_lock); + mutex_unlock(&adis->state_lock); return ret; } @@ -166,7 +166,7 @@ int adis_read_reg(struct adis *adis, unsigned int reg, }, }; - mutex_lock(&adis->txrx_lock); + mutex_lock(&adis->state_lock); spi_message_init(&msg); if (adis->current_page != page) { @@ -211,7 +211,7 @@ int adis_read_reg(struct adis *adis, unsigned int reg, } out_unlock: - mutex_unlock(&adis->txrx_lock); + mutex_unlock(&adis->state_lock); return ret; } @@ -438,7 +438,7 @@ EXPORT_SYMBOL_GPL(adis_single_conversion); int adis_init(struct adis *adis, struct iio_dev *indio_dev, struct spi_device *spi, const struct adis_data *data) { - mutex_init(&adis->txrx_lock); + mutex_init(&adis->state_lock); adis->spi = spi; adis->data = data; iio_device_set_drvdata(indio_dev, adis); diff --git a/drivers/iio/imu/adis_buffer.c b/drivers/iio/imu/adis_buffer.c index 4998a89d083d..3f4dd5c00b03 100644 --- a/drivers/iio/imu/adis_buffer.c +++ b/drivers/iio/imu/adis_buffer.c @@ -129,7 +129,7 @@ static irqreturn_t adis_trigger_handler(int irq, void *p) return -ENOMEM; if (adis->data->has_paging) { - mutex_lock(&adis->txrx_lock); + mutex_lock(&adis->state_lock); if (adis->current_page != 0) { adis->tx[0] = ADIS_WRITE_REG(ADIS_REG_PAGE_ID); adis->tx[1] = 0; @@ -144,7 +144,7 @@ static irqreturn_t adis_trigger_handler(int irq, void *p) if (adis->data->has_paging) { adis->current_page = 0; - mutex_unlock(&adis->txrx_lock); + mutex_unlock(&adis->state_lock); } iio_push_to_buffers_with_timestamp(indio_dev, adis->buffer, diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h index 92aae14593bf..100b5d1cebf1 100644 --- a/include/linux/iio/imu/adis.h +++ b/include/linux/iio/imu/adis.h @@ -61,7 +61,7 @@ struct adis { const struct adis_data *data; struct adis_burst *burst; - struct mutex txrx_lock; + struct mutex state_lock; struct spi_message msg; struct spi_transfer *xfer; unsigned int current_page; From patchwork Fri Nov 22 13:24:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258011 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D26D8109A for ; Fri, 22 Nov 2019 13:30:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A04932073F for ; Fri, 22 Nov 2019 13:30:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="4EKW0VQ3" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727173AbfKVNaD (ORCPT ); Fri, 22 Nov 2019 08:30:03 -0500 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:54482 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727261AbfKVNaC (ORCPT ); Fri, 22 Nov 2019 08:30:02 -0500 Received: from pps.filterd (m0167091.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN46w011404; Fri, 22 Nov 2019 08:29:57 -0500 Received: from nam05-co1-obe.outbound.protection.outlook.com (mail-co1nam05lp2058.outbound.protection.outlook.com [104.47.48.58]) by mx0b-00128a01.pphosted.com with ESMTP id 2wbg0jtqxx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:29:56 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UCw9cy4VK1utpCimHJol08uXGlPS+Ewek+3RVD1938ke7bJI7+9aqvpXnNMxAkA0P3v0j+vj9llgwrTSSbSNp9n3XXBcO02lB8udrKo2I0jkOFaPlD8ivFSRQu+lCvrJwvb7BjX7G/EKStSssqBIZ69l+iEpJSgro+uv95HovP0vdcJkguH0NntDCP9oY3beRmSoGmGtRbNT3dlh8LB2zh6Tp3VApRmrpVmwC/1bxTKv/qu9DIzwGwVLvVuIvyGUmAE1ZioVzwndiCNA8sS572teD6Ji2fFE87bccITHakBEGSk3xes6CgLYpXQuMkqC46dlZKcedzM6ypPjeRFZeg== 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-SenderADCheck; bh=zuDtxP97Yf1STuzzivkjZpSASW2OlCseq0JxV7qkWCI=; b=QC5ufB0w+XsxfJ+EhyeVb71OE4zivCUfqTMYMUEXyqoa6acjUQrjF8FgckDbUZRLS2S/tvUoK2n64WQxYCc1F0XRLSAmZITQBn/AJh9LcjQCh+WWu8zbsPGodiGw05AT+Ux3jkMFV6eeu/YQo7EoDQmdaneHwourScOhss/9nio6hm2+S6MYVRJ8jucIVyiO1Yc0TNHPzQFK/Hm/o/9smQzww2bTthQ4bePjepKhvw40+33uOKFBqTHlsyjxgSiFgv2ISDom+qL/AqCNL3vcB4C6UFWVyiDtqpQqV1KDnXkVOcBU72/GCvrny6+cORHAm9NCC7xoxPkn1Qild9jkMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zuDtxP97Yf1STuzzivkjZpSASW2OlCseq0JxV7qkWCI=; b=4EKW0VQ3sVrT3d4JUU1VR2a1LFQjiZIDvz77CPyin53YkprIiXgoabOqdmSj3W7FdQSI90nq6JJFwG3zsX7m0fk5yAkhV4O+S0V/wiRguWDjjI9fgmAwqWll3S6ayFbDnuV8Fez2N700Y/J/i+O1b0MqZJqnOxc/7NsJ1QJkb30= Received: from BN6PR03CA0111.namprd03.prod.outlook.com (2603:10b6:404:10::25) by SN6PR03MB3936.namprd03.prod.outlook.com (2603:10b6:805:72::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.19; Fri, 22 Nov 2019 13:29:54 +0000 Received: from BL2NAM02FT040.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::209) by BN6PR03CA0111.outlook.office365.com (2603:10b6:404:10::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:54 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT040.mail.protection.outlook.com (10.152.77.193) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:54 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTjjW015757 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:45 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:29:53 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 02/11] iio: imu: adis: add unlocked read/write function versions Date: Fri, 22 Nov 2019 15:24:12 +0200 Message-ID: <20191122132421.5500-3-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(136003)(396003)(346002)(376002)(39860400002)(189003)(199004)(51416003)(305945005)(106002)(4326008)(336012)(426003)(26005)(47776003)(7636002)(5660300002)(2906002)(44832011)(54906003)(50466002)(70586007)(14444005)(7696005)(76176011)(110136005)(446003)(1076003)(186003)(11346002)(86362001)(107886003)(2616005)(2870700001)(70206006)(48376002)(316002)(50226002)(8936002)(8676002)(478600001)(246002)(36756003)(356004)(6666004);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB3936;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b4f13529-58b1-4c3e-4f7f-08d76f500f6e X-MS-TrafficTypeDiagnostic: SN6PR03MB3936: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: P8QqVvQnY3LiZRT0ImKnuFUZYXOyMnAK536YltLNh/aZXaJQlu9iGri86/0FpL10Me6Y9LLu+qEOETNdGj3KjyudpaSVKMUF/lpHFf1uprIuDiv69FKeFqUvssSClY8SfZoI4j/1CP9slumGIPcA+b7CY0QHsxboykFzXAoLSQ0gjeJvqJxGdkZWK7ZGezfiah+ehk394Nc5QyNyqNXtZzA1Yx8uQKBZ+gRNfPFZ8tfaW4K3y4myrhnBnAmccGoh38o2/mx0s1Bx3Wh8T1F081jwKuWrE60Xg/9xB29d+DZ8dYBEu2DhsoWvjSpnKTH8JLlZVhhGKOWDAkBTKRc4QXTA9EBdBTkabIba1hiJppUTIrfe8lNTCxpuD8tpLQXA0Ut+b0PkfEzoON4G9jeIftKib07JAcsXkvOsMeUz2AAubN7MJD8Ne70/H9StDT+K X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:29:54.2728 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b4f13529-58b1-4c3e-4f7f-08d76f500f6e X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB3936 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 malwarescore=0 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org This will allow more flexible control to group reads & writes into a single lock (particularly the state_lock). The end-goal is to remove the indio_dev->mlock usage, and the simplest fix would have been to just add another lock, which would not be a good idea on the long-run. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 35 +++++------ include/linux/iio/imu/adis.h | 116 ++++++++++++++++++++++++++++++++++- 2 files changed, 130 insertions(+), 21 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index db562fec79b2..2f518e6c727d 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -26,7 +26,14 @@ #define ADIS_MSC_CTRL_DATA_RDY_DIO2 BIT(0) #define ADIS_GLOB_CMD_SW_RESET BIT(7) -int adis_write_reg(struct adis *adis, unsigned int reg, +/** + * __adis_write_reg() - write N bytes to register (unlocked version) + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @value: The value to write to device (up to 4 bytes) + * @size: The size of the @value (in bytes) + */ +int __adis_write_reg(struct adis *adis, unsigned int reg, unsigned int value, unsigned int size) { unsigned int page = reg / ADIS_PAGE_SIZE; @@ -70,8 +77,6 @@ int adis_write_reg(struct adis *adis, unsigned int reg, }, }; - mutex_lock(&adis->state_lock); - spi_message_init(&msg); if (adis->current_page != page) { @@ -96,8 +101,7 @@ int adis_write_reg(struct adis *adis, unsigned int reg, adis->tx[3] = value & 0xff; break; default: - ret = -EINVAL; - goto out_unlock; + return -EINVAL; } xfers[size].cs_change = 0; @@ -113,20 +117,18 @@ int adis_write_reg(struct adis *adis, unsigned int reg, adis->current_page = page; } -out_unlock: - mutex_unlock(&adis->state_lock); - return ret; } -EXPORT_SYMBOL_GPL(adis_write_reg); +EXPORT_SYMBOL_GPL(__adis_write_reg); /** - * adis_read_reg() - read 2 bytes from a 16-bit register + * __adis_read_reg() - read N bytes from register (unlocked version) * @adis: The adis device * @reg: The address of the lower of the two registers * @val: The value read back from the device + * @size: The size of the @val buffer */ -int adis_read_reg(struct adis *adis, unsigned int reg, +int __adis_read_reg(struct adis *adis, unsigned int reg, unsigned int *val, unsigned int size) { unsigned int page = reg / ADIS_PAGE_SIZE; @@ -166,7 +168,6 @@ int adis_read_reg(struct adis *adis, unsigned int reg, }, }; - mutex_lock(&adis->state_lock); spi_message_init(&msg); if (adis->current_page != page) { @@ -188,15 +189,14 @@ int adis_read_reg(struct adis *adis, unsigned int reg, spi_message_add_tail(&xfers[3], &msg); break; default: - ret = -EINVAL; - goto out_unlock; + return -EINVAL; } ret = spi_sync(adis->spi, &msg); if (ret) { dev_err(&adis->spi->dev, "Failed to read register 0x%02X: %d\n", reg, ret); - goto out_unlock; + return ret; } else { adis->current_page = page; } @@ -210,12 +210,9 @@ int adis_read_reg(struct adis *adis, unsigned int reg, break; } -out_unlock: - mutex_unlock(&adis->state_lock); - return ret; } -EXPORT_SYMBOL_GPL(adis_read_reg); +EXPORT_SYMBOL_GPL(__adis_read_reg); #ifdef CONFIG_DEBUG_FS diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h index 100b5d1cebf1..38ebe41092e1 100644 --- a/include/linux/iio/imu/adis.h +++ b/include/linux/iio/imu/adis.h @@ -75,11 +75,123 @@ int adis_init(struct adis *adis, struct iio_dev *indio_dev, struct spi_device *spi, const struct adis_data *data); int adis_reset(struct adis *adis); -int adis_write_reg(struct adis *adis, unsigned int reg, +int __adis_write_reg(struct adis *adis, unsigned int reg, unsigned int val, unsigned int size); -int adis_read_reg(struct adis *adis, unsigned int reg, +int __adis_read_reg(struct adis *adis, unsigned int reg, unsigned int *val, unsigned int size); +/** + * __adis_write_reg_8() - Write single byte to a register (unlocked) + * @adis: The adis device + * @reg: The address of the register to be written + * @value: The value to write + */ +static inline int __adis_write_reg_8(struct adis *adis, unsigned int reg, + uint8_t val) +{ + return __adis_write_reg(adis, reg, val, 1); +} + +/** + * __adis_write_reg_16() - Write 2 bytes to a pair of registers (unlocked) + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @value: Value to be written + */ +static inline int __adis_write_reg_16(struct adis *adis, unsigned int reg, + uint16_t val) +{ + return __adis_write_reg(adis, reg, val, 2); +} + +/** + * __adis_write_reg_32() - write 4 bytes to four registers (unlocked) + * @adis: The adis device + * @reg: The address of the lower of the four register + * @value: Value to be written + */ +static inline int __adis_write_reg_32(struct adis *adis, unsigned int reg, + uint32_t val) +{ + return __adis_write_reg(adis, reg, val, 4); +} + +/** + * __adis_read_reg_16() - read 2 bytes from a 16-bit register (unlocked) + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @val: The value read back from the device + */ +static inline int __adis_read_reg_16(struct adis *adis, unsigned int reg, + uint16_t *val) +{ + unsigned int tmp; + int ret; + + ret = __adis_read_reg(adis, reg, &tmp, 2); + if (ret == 0) + *val = tmp; + + return ret; +} + +/** + * __adis_read_reg_32() - read 4 bytes from a 32-bit register (unlocked) + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @val: The value read back from the device + */ +static inline int __adis_read_reg_32(struct adis *adis, unsigned int reg, + uint32_t *val) +{ + unsigned int tmp; + int ret; + + ret = __adis_read_reg(adis, reg, &tmp, 4); + if (ret == 0) + *val = tmp; + + return ret; +} + +/** + * adis_write_reg() - write N bytes to register + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @value: The value to write to device (up to 4 bytes) + * @size: The size of the @value (in bytes) + */ +static inline int adis_write_reg(struct adis *adis, unsigned int reg, + unsigned int val, unsigned int size) +{ + int ret; + + mutex_lock(&adis->state_lock); + ret = __adis_write_reg(adis, reg, val, size); + mutex_unlock(&adis->state_lock); + + return ret; +} + +/** + * adis_read_reg() - read N bytes from register + * @adis: The adis device + * @reg: The address of the lower of the two registers + * @val: The value read back from the device + * @size: The size of the @val buffer + */ +static int adis_read_reg(struct adis *adis, unsigned int reg, + unsigned int *val, unsigned int size) +{ + int ret; + + mutex_lock(&adis->state_lock); + ret = __adis_read_reg(adis, reg, val, size); + mutex_unlock(&adis->state_lock); + + return ret; +} + /** * adis_write_reg_8() - Write single byte to a register * @adis: The adis device From patchwork Fri Nov 22 13:24:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11257993 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A441A109A for ; Fri, 22 Nov 2019 13:30:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 799862084D for ; Fri, 22 Nov 2019 13:30:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="567VBQ5c" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726759AbfKVNaG (ORCPT ); Fri, 22 Nov 2019 08:30:06 -0500 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:57802 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727545AbfKVNaF (ORCPT ); Fri, 22 Nov 2019 08:30:05 -0500 Received: from pps.filterd (m0167091.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN8Os011422; Fri, 22 Nov 2019 08:30:00 -0500 Received: from nam04-sn1-obe.outbound.protection.outlook.com (mail-sn1nam04lp2055.outbound.protection.outlook.com [104.47.44.55]) by mx0b-00128a01.pphosted.com with ESMTP id 2wbg0jtqy3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:00 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GgoDqz/ykGFLRu2RMJmvc8X03TAX+WVpERhDFqzkJBsOEemWJDYb34OgjH1OZ7c0ay6+tfjtCOsBNnOpoknYPOIxoTevB1Ce+rAsuxgG7nIJVXoWzdvEI9dpq6kre6wu8JYo094S/vbIpgHxThxynAbZs/qr4zlhBwS/l3u6kRD2aBYAIs7NUQb9GzRgAJx4j7cmITblKJSj+PUJaObz6M6DvIum3d6hfTOuAZq25bIcCPMDzs/ghHF5D4GOVuCTlnqOTlnK0woi65Z5KHcwlUbz2C0jnnnzd8IN/r1HE5Z358xinA4/yR5NMVqWUjZnjnpRo+2BK6qEn88grm+UeA== 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-SenderADCheck; bh=R/QPqvuTd3HtlORKfK6M523QuiYQzniF5kSVn1qcg08=; b=UoXVVfQQhOwYfxt/hi9xHjDyaLOk+WtR1bOG3zmsTs/oOG1SKIJvlomRQAzJIrWTBhKTnS7ZiCdGwNW07f6j1ZCcpu+NbQXr4iVALW2MnTbvIEK6tnLRzSqfBIWAcxk6TrDH0H/A+Q6/amJxe62gLDFbwadSXHvPuIdsCmJzPoWuUbwgBXhmwFITxSFQ5jhF4WsH6fj8bL9oR9eJOw8l36Qh7wfoEZQyV+ybxt4oC3W7hS/ZyI2GOT0uXSP8Wqimk7+1ObGCOC8aH/bek6SQ+OYheDsLkVvvEyODmzusa7Io6MW3OACnYIl3d+FL+Hb9rj4fCSv+Nw9f0EGbH5Hh4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R/QPqvuTd3HtlORKfK6M523QuiYQzniF5kSVn1qcg08=; b=567VBQ5cpAVEDFoZYArpeUYtW9T8Gm+2hTcHkkPJgl4OaQ5UAlaBY8ulZ5MqBxrrCWRoSmZyVZCMCN5PqAKO1e5Qm+Xk7Ue7rObYwakl2qTo3Q1MXTBPrbuI3t2k/PV7r+X0IzlUMbgoh1cuJ4LfBYHFQNT+LwEMVpYkEJMXUTw= Received: from DM3PR03CA0017.namprd03.prod.outlook.com (2603:10b6:0:50::27) by BY5PR03MB5219.namprd03.prod.outlook.com (2603:10b6:a03:221::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.18; Fri, 22 Nov 2019 13:29:59 +0000 Received: from BL2NAM02FT055.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::208) by DM3PR03CA0017.outlook.office365.com (2603:10b6:0:50::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:29:58 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT055.mail.protection.outlook.com (10.152.77.126) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:58 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTkKq015766 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:47 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:29:55 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 03/11] iio: imu: adis[16480]: group RW into a single lock in adis_enable_irq() Date: Fri, 22 Nov 2019 15:24:13 +0200 Message-ID: <20191122132421.5500-4-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(376002)(39860400002)(396003)(136003)(346002)(189003)(199004)(305945005)(70206006)(478600001)(2616005)(8936002)(2870700001)(2906002)(47776003)(50226002)(70586007)(246002)(86362001)(8676002)(26005)(7636002)(5660300002)(186003)(1076003)(50466002)(48376002)(11346002)(446003)(76176011)(356004)(51416003)(7696005)(336012)(36756003)(54906003)(106002)(44832011)(316002)(4326008)(107886003)(14444005)(426003)(110136005)(6666004);DIR:OUT;SFP:1101;SCL:1;SRVR:BY5PR03MB5219;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ffc3214-28f9-48b2-a825-08d76f5011ea X-MS-TrafficTypeDiagnostic: BY5PR03MB5219: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nF/U/eNlFTTRmyUuTlItKTQ7/sCdCbjk2GtbVjKEFllaya22P10OylVxzG4qP6K7vXLVQLHj7l7kD7IoHf9qPnm4K+sOAmRyA52/cf3izM/hMwjEGupdo2f+Er/GenpbMuXOOfWLlQvW5F+VpDgpsIPMtMdbJ0D+t6p/vIpC8nveu2EKdA7QnMrnQMoP2g5BQJhDWBgZMQDAczCPwZWgfAmEPzeRHhefuvmF3k7laGYv49CeNDbiY7EFwhHsBXzojuQ2zalveD2rYvBfSA2MsB6ldZVD7ZR5ygUZ58hLxGtDeZ/Y9AWs0HGvKWRoqX8gZuoWuMMGZctKbQlaPoXYz94k7hBAU0s8PcdcsariqsYnLeCcccjD6iCZt7UT+cOx1fCL1wK32U0EYkuWVJL1FINEC5exisO/W7SqIxGaFLSXChEY4n3EtwxsjhywsODJ X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:29:58.4432 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3ffc3214-28f9-48b2-a825-08d76f5011ea X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5219 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=672 priorityscore=1501 lowpriorityscore=0 malwarescore=0 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The adis_enable_irq() does a read & a write. This change keeps a lock for the duration of both operations vs for each op. The change is also needed in adis16480, since that has it's own implementation for adis_enable_irq(). Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 17 +++++++++++------ drivers/iio/imu/adis16480.c | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index 2f518e6c727d..5cf7a15be6ee 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -250,12 +250,16 @@ int adis_enable_irq(struct adis *adis, bool enable) int ret = 0; uint16_t msc; - if (adis->data->enable_irq) - return adis->data->enable_irq(adis, enable); + mutex_lock(&adis->state_lock); - ret = adis_read_reg_16(adis, adis->data->msc_ctrl_reg, &msc); + if (adis->data->enable_irq) { + ret = adis->data->enable_irq(adis, enable); + goto out_unlock; + } + + ret = __adis_read_reg_16(adis, adis->data->msc_ctrl_reg, &msc); if (ret) - goto error_ret; + goto out_unlock; msc |= ADIS_MSC_CTRL_DATA_RDY_POL_HIGH; msc &= ~ADIS_MSC_CTRL_DATA_RDY_DIO2; @@ -264,9 +268,10 @@ int adis_enable_irq(struct adis *adis, bool enable) else msc &= ~ADIS_MSC_CTRL_DATA_RDY_EN; - ret = adis_write_reg_16(adis, adis->data->msc_ctrl_reg, msc); + ret = __adis_write_reg_16(adis, adis->data->msc_ctrl_reg, msc); -error_ret: +out_unlock: + mutex_unlock(&adis->state_lock); return ret; } EXPORT_SYMBOL(adis_enable_irq); diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c index 748f8bbf184d..e943039c3f98 100644 --- a/drivers/iio/imu/adis16480.c +++ b/drivers/iio/imu/adis16480.c @@ -947,14 +947,14 @@ static int adis16480_enable_irq(struct adis *adis, bool enable) uint16_t val; int ret; - ret = adis_read_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL, &val); + ret = __adis_read_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL, &val); if (ret) return ret; val &= ~ADIS16480_DRDY_EN_MSK; val |= ADIS16480_DRDY_EN(enable); - return adis_write_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL, val); + return __adis_write_reg_16(adis, ADIS16480_REG_FNCTIO_CTRL, val); } static int adis16480_initial_setup(struct iio_dev *indio_dev) From patchwork Fri Nov 22 13:24:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258007 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7AC0C109A for ; Fri, 22 Nov 2019 13:30:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5291320706 for ; Fri, 22 Nov 2019 13:30:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="VxutJUUo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727996AbfKVNad (ORCPT ); Fri, 22 Nov 2019 08:30:33 -0500 Received: from mx0b-00128a01.pphosted.com ([148.163.139.77]:62814 "EHLO mx0b-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727545AbfKVNaJ (ORCPT ); Fri, 22 Nov 2019 08:30:09 -0500 Received: from pps.filterd (m0167091.ppops.net [127.0.0.1]) by mx0b-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN8Ou011422; Fri, 22 Nov 2019 08:30:05 -0500 Received: from nam01-bn3-obe.outbound.protection.outlook.com (mail-bn3nam01lp2057.outbound.protection.outlook.com [104.47.33.57]) by mx0b-00128a01.pphosted.com with ESMTP id 2wbg0jtqya-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:05 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LGQpsaByIeLXPddc4endnvKi/EDsnWfIECAv8dKHprG/2RqQFIlLwYNZlVwqPeY4dz0AS3cQznwTbalMrMKAUZIa6DcksRfJDAZ1y77D9p81jfL92n4cfTzztqn/1SaQ7KCWOk/52TMh3WmSagiPnsbNUUGrCELctXsO3iZZt7OVOn42OnzUrfAA2Mu9+PSK3O38/MzGAzNGHZQkVW5NJxT36mVKovCTZ9wUTgBDLIO0S+M3o8hI6Ddo3Jv+Nf0nd3FkdL2vv5p/XkNwqUJmW1KjTdOjjH6if6iZyWHBRC3/jZIZA0bs44URdeqMa091IxXg6h/YAExBfruzkREnvQ== 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-SenderADCheck; bh=OQjqjPR4d0w8LHNi0M5yY78MFQNo5hgrkH1PvSNU1cs=; b=D7nQXwhhP7X6Vy9uyzDcsxvJbf3uptZhLSg0tNpwDu9fnOxJDyRwyUpxq0UCXH9zVvzo4TJri+o8mbVChRskmvI2J0Ofh3WavWEJRhV8FPVJjOHDa70V+eGGBumcLDQkGtIIaoWnz62sZLEiZadrwzwSqnQ5SzZaDi/zfyA7D6NqaPyW3KedTTKMxhq8tKdixrbuQmplOIMwzNMNrF7pgenuX03Qhz562YQZajJ2rcmtdynloxCiVszd3kmPZoxvHBf/9akWS7UQ/8IdxX+H9FZnaUQ6piajoCHOfVpD0dKRq6cZy1e6b7EiuVnDkR1EjygVcVPFZWrFv7z7fLmhDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OQjqjPR4d0w8LHNi0M5yY78MFQNo5hgrkH1PvSNU1cs=; b=VxutJUUoIohvcVKhI4oG9G8bOfbKZ0p4IAuv29uqv7qewfp2SWF5ckWN9sb5iyPW6itzD1GCnRPOnb1jtRiartMXdMNqWRyFNEjjI1SRF/MK/xOZQYHPUmG910G4Z8qQjoLHlMr4P5geWekVgxoy7ymT9AveL1pu8IbFj3gJqyw= Received: from DM6PR03CA0033.namprd03.prod.outlook.com (2603:10b6:5:40::46) by DM5PR03MB3307.namprd03.prod.outlook.com (2603:10b6:4:43::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.30; Fri, 22 Nov 2019 13:30:03 +0000 Received: from BL2NAM02FT060.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::206) by DM6PR03CA0033.outlook.office365.com (2603:10b6:5:40::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:57 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT060.mail.protection.outlook.com (10.152.76.124) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:57 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTmIo015781 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:48 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:29:56 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 04/11] iio: imu: adis: create an unlocked version of adis_check_status() Date: Fri, 22 Nov 2019 15:24:14 +0200 Message-ID: <20191122132421.5500-5-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(346002)(376002)(396003)(136003)(39860400002)(199004)(189003)(51416003)(86362001)(54906003)(110136005)(47776003)(8936002)(1076003)(5660300002)(14444005)(356004)(6666004)(50226002)(70206006)(76176011)(107886003)(316002)(186003)(2870700001)(426003)(48376002)(8676002)(446003)(7636002)(11346002)(4326008)(336012)(26005)(106002)(50466002)(478600001)(36756003)(305945005)(246002)(70586007)(2616005)(7696005)(2906002)(44832011);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR03MB3307;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0c5837a0-81dd-4c92-0c0d-08d76f501175 X-MS-TrafficTypeDiagnostic: DM5PR03MB3307: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tSJSUKnDIjzpWEA8abKpj1Zsn/9gcqpoIFupeUYpXYzzvOieI2VZUdIa1om09G11g51ODG9gLivGm5b/0ayXKD1guAUDTGmMef1cmXi3WUzHmJ6+qUXOfkobZ7hJWIrOaGj29B4eEUnLlXbuH6AmfLn5X5bpcNcTp0iw/BDK2/80CxY7Hmr8NTy1Yd3ERc4Dia/avNVL6SItKER2Bh1Zt4H/295/2+TcD8CFm82WSjfSKSvL+m+St0d7+62cXiffJ9btgKk5X7CXDXocNGoItjk2BhUNSbA/sUvx5cxKDfwZpevMapS16iUME/kCNAjwW/atzIZguD9tN+mPiviUWjwotOWjuHz0ZAG7sSkL0TQnQG5ritisb2V2HXuxZgYLpYi33zDe53fOgNEPW5Cu/MTNmG2WRr5x3695xtuOXbBLB33IkNBV/DPto5u86win X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:29:57.6754 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0c5837a0-81dd-4c92-0c0d-08d76f501175 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB3307 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 malwarescore=0 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org This one also gets re-used in certain operations, so it makes sense to have an unlocked version of this to group it with other reads/writes/operations to have a single lock for the whole state change. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 8 ++++---- include/linux/iio/imu/adis.h | 13 ++++++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index 5cf7a15be6ee..b63d6e6f5415 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -277,18 +277,18 @@ int adis_enable_irq(struct adis *adis, bool enable) EXPORT_SYMBOL(adis_enable_irq); /** - * adis_check_status() - Check the device for error conditions + * __adis_check_status() - Check the device for error conditions (unlocked) * @adis: The adis device * * Returns 0 on success, a negative error code otherwise */ -int adis_check_status(struct adis *adis) +int __adis_check_status(struct adis *adis) { uint16_t status; int ret; int i; - ret = adis_read_reg_16(adis, adis->data->diag_stat_reg, &status); + ret = __adis_read_reg_16(adis, adis->data->diag_stat_reg, &status); if (ret) return ret; @@ -306,7 +306,7 @@ int adis_check_status(struct adis *adis) return -EIO; } -EXPORT_SYMBOL_GPL(adis_check_status); +EXPORT_SYMBOL_GPL(__adis_check_status); /** * adis_reset() - Reset the device diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h index 38ebe41092e1..db759957e1c1 100644 --- a/include/linux/iio/imu/adis.h +++ b/include/linux/iio/imu/adis.h @@ -267,7 +267,18 @@ static inline int adis_read_reg_32(struct adis *adis, unsigned int reg, } int adis_enable_irq(struct adis *adis, bool enable); -int adis_check_status(struct adis *adis); +int __adis_check_status(struct adis *adis); + +static inline int adis_check_status(struct adis *adis) +{ + int ret; + + mutex_lock(&adis->state_lock); + ret = __adis_check_status(adis); + mutex_unlock(&adis->state_lock); + + return ret; +} int adis_initial_startup(struct adis *adis); From patchwork Fri Nov 22 13:24:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11257995 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 19A15109A for ; Fri, 22 Nov 2019 13:30:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E19C12073F for ; Fri, 22 Nov 2019 13:30:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="bmJgFU22" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727930AbfKVNaJ (ORCPT ); Fri, 22 Nov 2019 08:30:09 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:21028 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727876AbfKVNaI (ORCPT ); Fri, 22 Nov 2019 08:30:08 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDNBxt026861; Fri, 22 Nov 2019 08:30:04 -0500 Received: from nam04-bn3-obe.outbound.protection.outlook.com (mail-bn3nam04lp2050.outbound.protection.outlook.com [104.47.46.50]) by mx0a-00128a01.pphosted.com with ESMTP id 2waew7wbpk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:04 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LEpVvTyK5QofMlwPZQrbv5aJqc2n4Z1vaIJa4JIu9ycnz62oEjGFUcgjdDpB9DWpr+G9cWISFkABCU5mtR/Km5N9SUjNMnn/JmDK381+qA44iu91lEFBqps+RfSN5Y9JwvpFa30ykdqbWEzbRz7VFhFkY3NLlvrGm54nzQR6hMeMFhNGg8fBT+6G345BFn76xAdaQ2LrjKnwR81MeGNttOrxnQeZTEaUsfYlj2HF84J1f4YIhfpVWdOJawHjWT/ZfrO0qaYbneHa2fdc+4WEMAHdcEivkAnGUquYyW5oLwGGL+Ja9TFLgoGuIwHz0TIy5gqY9L2Z728csgUN1PyoHg== 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-SenderADCheck; bh=Hy+DtZ02z1c+BX70vxhhzMzrnmeUFVoRtgxaK6XGgcs=; b=T8l6+xfWPhD9MT1IFEIxXJYmVYoFB+BrAZdZsYbAmr+tXpJPfB7bXGDWXB2Y1jjvT1AykqSAIOLugscQa8riTESbiTu9RqAPx4RmlDrwtU9/75uTuXof9h6hilxx/0d2U8nPcM4idldQRj3bjp346l92+EVxR8nR7B1psAEIII5QwLx365ZfJtlvEV3FpyHxLKX9La1UkIIqs9LN47iq8zV2dv62Ojm99l/R3rcDpSN6q0B0Rtcpz6SVyZfNr93KtmifpVKSD2oTpWCK7fQeuLajatj+dCldHaJqMsr4VU1hnsm/Fv5U6LM2yQAB6ejp7xsLFtEGMbdAIm6smwHrtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hy+DtZ02z1c+BX70vxhhzMzrnmeUFVoRtgxaK6XGgcs=; b=bmJgFU220Z2Z3Kn/rHzS5EouTi33tyNDVSel1FrvaVCwnaoZ+6PFx4ZLgJk0WXOrbO9jLfmVLmJwhpkFQKw7zUCc/f1yzWcEy2LaRUxGTkknUDad9FtKcgbSBG6v4TwoR9kmFDOXTd923WpdU6RhWWybL75Bf3gol2C6dKZj0KM= Received: from DM3PR03CA0020.namprd03.prod.outlook.com (2603:10b6:0:50::30) by MN2PR03MB4768.namprd03.prod.outlook.com (2603:10b6:208:ae::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.19; Fri, 22 Nov 2019 13:29:59 +0000 Received: from BL2NAM02FT041.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::203) by DM3PR03CA0020.outlook.office365.com (2603:10b6:0:50::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:59 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT041.mail.protection.outlook.com (10.152.77.122) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:29:59 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDToRu015787 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:50 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:29:58 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 05/11] iio: imu: adis: create an unlocked version of adis_reset() Date: Fri, 22 Nov 2019 15:24:15 +0200 Message-ID: <20191122132421.5500-6-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(376002)(346002)(136003)(396003)(189003)(199004)(44832011)(50226002)(356004)(1076003)(50466002)(48376002)(51416003)(4326008)(478600001)(6666004)(5660300002)(54906003)(7696005)(316002)(336012)(186003)(110136005)(7636002)(86362001)(106002)(76176011)(2870700001)(26005)(446003)(8676002)(8936002)(36756003)(246002)(70586007)(14444005)(11346002)(70206006)(426003)(305945005)(47776003)(2616005)(107886003)(2906002);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR03MB4768;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5e3fcced-e9a6-4bb7-1eb3-08d76f501272 X-MS-TrafficTypeDiagnostic: MN2PR03MB4768: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M0nElPUTnBvLYch2Tp+pNZeC5hRxdT3PchSBuFTW6pzRJ6Prjs6eyvtTeb5DUbkMCaIem5YuX5h07hYbpV43drmjVs1kVAwfykH2wfBaVzsv8NuD1gYGNpj66kXx+IX9fJpDyPvRSxXUhhWiEmZdXTIiSGsTJiy2KKYXZ0aTwF40jf2vv/7DBzc6ofjRvIWMS3OsxtPeJTGnym7Xo4itdOFM7VUWByTYjPsAxVo1OE6JWnJqVK3wB6v6M+gXN0TLA66b6OGl0y6totJ5RGyC0fszhQdojxDUKY8pb9RmHFDcEeK+jqaliVzVuOsf1UAquPmcw9WBIHDpGLcRPSKpAt1q8a7RZ/8WWfYltYB1LEglB9aOWW3anZI4HHIud0uNm6ZO8DkdB/qx+fj7h0KjRWP90Hy6u2PGs9tdRJN+Cv+UFzPa6faOMXqR5TKMLPl/ X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:29:59.3339 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e3fcced-e9a6-4bb7-1eb3-08d76f501272 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB4768 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 priorityscore=1501 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The reset routine may also be important to be protected by the state-lock and grouped with other operations, so create an unlocked version, so that this can be done. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 8 ++++---- include/linux/iio/imu/adis.h | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index b63d6e6f5415..615f174f0e6e 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -309,23 +309,23 @@ int __adis_check_status(struct adis *adis) EXPORT_SYMBOL_GPL(__adis_check_status); /** - * adis_reset() - Reset the device + * __adis_reset() - Reset the device (unlocked version) * @adis: The adis device * * Returns 0 on success, a negative error code otherwise */ -int adis_reset(struct adis *adis) +int __adis_reset(struct adis *adis) { int ret; - ret = adis_write_reg_8(adis, adis->data->glob_cmd_reg, + ret = __adis_write_reg_8(adis, adis->data->glob_cmd_reg, ADIS_GLOB_CMD_SW_RESET); if (ret) dev_err(&adis->spi->dev, "Failed to reset device: %d\n", ret); return ret; } -EXPORT_SYMBOL_GPL(adis_reset); +EXPORT_SYMBOL_GPL(__adis_reset); static int adis_self_test(struct adis *adis) { diff --git a/include/linux/iio/imu/adis.h b/include/linux/iio/imu/adis.h index db759957e1c1..4b5bc0e06e69 100644 --- a/include/linux/iio/imu/adis.h +++ b/include/linux/iio/imu/adis.h @@ -73,7 +73,24 @@ struct adis { int adis_init(struct adis *adis, struct iio_dev *indio_dev, struct spi_device *spi, const struct adis_data *data); -int adis_reset(struct adis *adis); +int __adis_reset(struct adis *adis); + +/** + * adis_reset() - Reset the device + * @adis: The adis device + * + * Returns 0 on success, a negative error code otherwise + */ +static inline int adis_reset(struct adis *adis) +{ + int ret; + + mutex_lock(&adis->state_lock); + ret = __adis_reset(adis); + mutex_unlock(&adis->state_lock); + + return ret; +} int __adis_write_reg(struct adis *adis, unsigned int reg, unsigned int val, unsigned int size); From patchwork Fri Nov 22 13:24:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11257997 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 44744930 for ; Fri, 22 Nov 2019 13:30:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 24B172073F for ; Fri, 22 Nov 2019 13:30:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="0ecMlG22" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727958AbfKVNaK (ORCPT ); Fri, 22 Nov 2019 08:30:10 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:21230 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727923AbfKVNaI (ORCPT ); Fri, 22 Nov 2019 08:30:08 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN7Hl006075; Fri, 22 Nov 2019 08:30:03 -0500 Received: from nam02-bl2-obe.outbound.protection.outlook.com (mail-bl2nam02lp2057.outbound.protection.outlook.com [104.47.38.57]) by mx0a-00128a01.pphosted.com with ESMTP id 2wabu7myus-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:03 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=at9Su0sX3/Cj+Md9l9J/u9ePWd7jaudTzoCUHXPgpKP2IBRRTfAtb5A396vG5nSFcdQseeXaVJS4YEsDEHUA3W4lY6cO+yoOTfD4UWWC6WmE8T+WkoMysWAAIBCQum2JJwVbyVf6c5kH5xoOeBbIYWoX2p3srIu5hFuX5NFqf1BJgYuM3/0yUBq3T6XMUJLpBfMxLJYm+xM0bzkPl/0781ehAuzFPGdN96FRZPTH3GXrbCwbzjRajgEQZShhELlSqH19TqByt80T0G1Q+dJq2ywnB0rh7cvqy5DurjMn0qwhfPCb7To9wZcn0eL8JBrI99uLtQfFSTW9gtyM5EMEag== 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-SenderADCheck; bh=sCigMqdzLvelihWxd/GXOmnpQ9Vuu4vaJn3a7PqBLTw=; b=FtCY3Y82Wa1E0e1mKenf69DMvGEMdjgSI6P+I15NrOyMgsY3RILdyyJK7mPWEsOw+zB0w/tFIb6mWBBYEb1VdY2M5BURVd2M42GyNULCPqNgckx/RpKiep5S2RgyjGePb46dR1FJr2f2lGeiBHuPzwDBzi9u3w4qLXjwMCVt5t8fRfyjjevt3zC5PXvbgtw6XJmHiDaAS1tGhHhlOdgHtABzRbnEuP7WcuuuiHbc3FVTqmwEJqg9j+7oc80rHY8Xns0GjILT0fynqycyvoL6DwFMKWCw1KGChb8czlsv+JkT8qk2lpPwwkiC9j30e9dINu0PQAnm84nAbuouweBfLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sCigMqdzLvelihWxd/GXOmnpQ9Vuu4vaJn3a7PqBLTw=; b=0ecMlG22G3GmAQSuA7EhCUt3z1lXTYoEJjT8xIQdrtENrt/9mbIbSZ850ap2KnoneExOM++MNAqd2wNdXNMTtfesQ9Q7rIOsyO0D698Llth6HuQ+67SDK8vAMIN1SbYeYqh6YwMxfYwAv0hilFgfTXL2mJCEESXbco9VvQin8Ds= Received: from CH2PR03CA0007.namprd03.prod.outlook.com (2603:10b6:610:59::17) by DM5PR03MB2554.namprd03.prod.outlook.com (2603:10b6:3:44::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17; Fri, 22 Nov 2019 13:30:01 +0000 Received: from BL2NAM02FT029.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::206) by CH2PR03CA0007.outlook.office365.com (2603:10b6:610:59::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:30:01 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT029.mail.protection.outlook.com (10.152.77.100) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:00 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTpCe015795 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:51 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:00 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 06/11] iio: imu: adis: protect initial startup routine with state lock Date: Fri, 22 Nov 2019 15:24:16 +0200 Message-ID: <20191122132421.5500-7-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(346002)(396003)(376002)(136003)(39860400002)(199004)(189003)(51416003)(446003)(2870700001)(7636002)(305945005)(70206006)(1076003)(246002)(4326008)(11346002)(426003)(70586007)(44832011)(2616005)(2906002)(8936002)(14444005)(48376002)(50466002)(47776003)(8676002)(36756003)(336012)(50226002)(106002)(107886003)(478600001)(186003)(86362001)(26005)(5660300002)(76176011)(54906003)(7696005)(110136005)(6666004)(356004)(316002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR03MB2554;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 58929f6e-4486-4926-fcd1-08d76f50135f X-MS-TrafficTypeDiagnostic: DM5PR03MB2554: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SJg74/FCFiezYZF8tHCitjNhY2i6PV5a1KPeWkxM1bo9VfulB7qq2lXL5gEeXRK8y8gmhu5AOjqSwPIGPYaxUBr6zFBtcrh7pdrjHKGu0nAJsaaYL5CK6NLulHdMQXAIJ8Lhxyji35hxL0/Kh6cpHgi9pTKWxshuy7hc3pit2Np1d9+N/AuZgCgQlDDRMH9gSilv2NtGT0NkLJOIBALwNIkjMFD5dfZODRoh9n0tH5ULhtIMv4pK4prtY6sOW9a7tiO3Fx45ptQgpii4gUeCKQgWmWh1pFcP7mYWDrDvYgrTdcXteBdGh6kIjc7LvRMpt6X3SMUShDEVT01cCiUN4q/bseiNPnsLrVnrOAZDjIsCj0feXPZIwnQLL7o93MZFX5Da9S5rs0kABOG93eLG+2qu1Gsb9wCfS7LZXUgiWZ1oY/h0Cv4P+0uA7lXE8zLA X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:00.8918 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 58929f6e-4486-4926-fcd1-08d76f50135f X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2554 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 spamscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The initial startup routine is called by some ADIS drivers during probe, and before registering with IIO. Normally, userspace should not be able to do any access to the device (as there shouldn't be any available). This change extends the state lock to the entire initial-startup routine. Behaviourally nothing should change, but this should make the library function a bit more robust. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index 615f174f0e6e..10b8922fd51b 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -331,7 +331,7 @@ static int adis_self_test(struct adis *adis) { int ret; - ret = adis_write_reg_16(adis, adis->data->msc_ctrl_reg, + ret = __adis_write_reg_16(adis, adis->data->msc_ctrl_reg, adis->data->self_test_mask); if (ret) { dev_err(&adis->spi->dev, "Failed to initiate self test: %d\n", @@ -341,10 +341,10 @@ static int adis_self_test(struct adis *adis) msleep(adis->data->startup_delay); - ret = adis_check_status(adis); + ret = __adis_check_status(adis); if (adis->data->self_test_no_autoclear) - adis_write_reg_16(adis, adis->data->msc_ctrl_reg, 0x00); + __adis_write_reg_16(adis, adis->data->msc_ctrl_reg, 0x00); return ret; } @@ -362,19 +362,23 @@ int adis_initial_startup(struct adis *adis) { int ret; + mutex_lock(&adis->state_lock); + ret = adis_self_test(adis); if (ret) { dev_err(&adis->spi->dev, "Self-test failed, trying reset.\n"); - adis_reset(adis); + __adis_reset(adis); msleep(adis->data->startup_delay); ret = adis_self_test(adis); if (ret) { dev_err(&adis->spi->dev, "Second self-test failed, giving up.\n"); - return ret; + goto out_unlock; } } - return 0; +out_unlock: + mutex_unlock(&adis->state_lock); + return ret; } EXPORT_SYMBOL_GPL(adis_initial_startup); From patchwork Fri Nov 22 13:24:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258005 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6213B14ED for ; Fri, 22 Nov 2019 13:30:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 39A2F20706 for ; Fri, 22 Nov 2019 13:30:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="6OqBkMyl" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727967AbfKVNaL (ORCPT ); Fri, 22 Nov 2019 08:30:11 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:24100 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727959AbfKVNaK (ORCPT ); Fri, 22 Nov 2019 08:30:10 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDN8Vf006098; Fri, 22 Nov 2019 08:30:07 -0500 Received: from nam04-bn3-obe.outbound.protection.outlook.com (mail-bn3nam04lp2052.outbound.protection.outlook.com [104.47.46.52]) by mx0a-00128a01.pphosted.com with ESMTP id 2wabu7myuv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:06 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=js/jrLQ4YCXZbFjhXXjBuSDd/Ii5h/f/g8cqpMTQNgx6YuJGYCFpPtTWMibWnZK6RJSC2AmbsVyhWUcVEO0CuX+2qYyvp2gYxQuUTREx2OE+x0AUnZMxnxHZKFXsZzIPp8VyQ9QlPUhf/x7Krvwd7X+LzvArzkU0c/F4SvHjmNpoXuB9hleZmGyDD4+rlDQ2DUIAVn2BMw1yde34iaE4GmT18Fuos9PfCOdG4L/IbpkNEYRwv6J0YnYLoy8IRwZlqXeg0S5iw58wQPVthj63aDKGOJQ782qGHUhbAGYrdDqT/oIPTbGeDPtG2VeI3yNyETEzOaXz4/kkJyOdxc80NQ== 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-SenderADCheck; bh=1yOwAaQjdU112y4txRQ75SDbU1oDb3E940kZ7t80gEo=; b=ArK5LZ4wtAqfS8F3PkO6eBSy8MNkP82aNnzJciLvXyosrySC0iuSPlW2lp1W4RRQFypVfEFypn2FG3bGirR4fpHTQPxVe53bTsaCVB2Em8ArInq4PnQ316ub4Jv4fvN+L214NFrW5nXNivnkMDOCiyceZKJeDgRVXs1rL580Jww+HaokBeJcSihxjREm1h9QHgduBMXgQaEB35Olee9HH2Mpt0oT/2WxFUgmEPqcfYNzxnXsSMYUNMyWllwKF/ePuoj/4Cp8QhCno+bUlOEVfI5X8mN0C6K3cGwHsczo+9Ug+hlSUAW4ccvg+O98Q0PKq7uJtsAwy4eoINnrHPe57w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1yOwAaQjdU112y4txRQ75SDbU1oDb3E940kZ7t80gEo=; b=6OqBkMyljXzJLQKvcyCkOL/iQlDWDdP7glP5njfIXyrorLp5EiedmRrSgiPB7g2nBkigeXs8TM0gLNeq6QbSPbbX7xFr6gxAma/ZaVu1dqDIdWbgl+ij8IsSBNUwcFsedgxjE0V1QTmZTEezFO913/jBhF4ZX1dGQJqN8KI9goA= Received: from BN6PR03CA0115.namprd03.prod.outlook.com (2603:10b6:404:10::29) by SN6PR03MB4590.namprd03.prod.outlook.com (2603:10b6:805:fe::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16; Fri, 22 Nov 2019 13:30:02 +0000 Received: from BL2NAM02FT014.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::206) by BN6PR03CA0115.outlook.office365.com (2603:10b6:404:10::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:30:02 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by BL2NAM02FT014.mail.protection.outlook.com (10.152.76.154) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:02 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTrug015814 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:53 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:01 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 07/11] iio: imu: adis: group single conversion under a single state lock Date: Fri, 22 Nov 2019 15:24:17 +0200 Message-ID: <20191122132421.5500-8-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(346002)(39860400002)(136003)(376002)(396003)(199004)(189003)(7696005)(8676002)(51416003)(8936002)(2906002)(26005)(305945005)(86362001)(246002)(76176011)(47776003)(70206006)(6666004)(356004)(14444005)(107886003)(186003)(50226002)(1076003)(70586007)(2870700001)(336012)(2616005)(48376002)(478600001)(11346002)(446003)(106002)(426003)(4326008)(7636002)(5660300002)(316002)(54906003)(44832011)(36756003)(110136005)(50466002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN6PR03MB4590;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b05cefba-75cb-42e3-fa30-08d76f501475 X-MS-TrafficTypeDiagnostic: SN6PR03MB4590: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aC6zPktTZzbFqlXj2cXcPqp6um9O/OQU8uh/Mr9zrFx8NFITaQj4WpA7sMAg2WoqbKTQUOFzoBxlJRCIOrqEPySt+SLE49Hpl10b8/yGOUlDq0qXB6kxiZGennjqBZ5IhSMaoXtrKbeEt+Z5Y1WzM83VS1nSTVhdaSvcZ5dXpYbuVlo1+oIQz1PiFgimT8LC1eYGWORJ7rWPZpbxNkUE/HharXujXH9lou8cPtDB8gpLpT+TKg9EDQDVupN0vbjo5uekwurN6AGBWg/I3/7faP9TzmUrfeRhu6y+93HK8xVgl4kAUwZDCnFF1JGktBo61dnGmN+FGoXRhX+crFQio90sFS4gjXyyYWx0eqlLLY+dnRSMbXwhU2z2i56GGoxqZFJJFCETH7iiFuh/DMbL3SIj5zvxFEY3WfjDrCYuqzusV648H+0rU47rDV7UwPa5o075VIpNM9xEaPzwhxneQTM89CT+fD03gjJNa2winhiR3YFepAKWdU1LK48RANrjOGp3IhUPstwcom/mvF/1nlQnvmH2ZqFb6sW8euUgMfXkoMvAV3CAx0spy4qg37+k1NLc7PqohsnuFXv5PbyOg0tAihoeDlxkXRAV9RxFto4PAr3gDVhOiiVItDBu1u0uOfo/oolrpBdyQgZB33AaXGHQkwTUd24in3DXBHuyZdSsXyQVSyIG1hnChDmZRw40L4wNaFdivmf0nQknIax+B44JLdw2MzK1YRx3EzG1LPsx0jP2jB7L9okAYuNRS7GX1577GSPyPRK75UveJvLVOkq8qXXEINNkEJMtjHeLDTwYft0W1Nl5SDY3pvw7QgQQ4LNAr3fYBIZZ/jkCynGBfTLmGGoplZrgOF2B15+KSIWfg2qHotqfYaNwpkAmdiSstNHhk/X8eLJ0gZYE6Qw38YQG1dTFmnefIdAmUu89BnB4QbJ4bor9q1i5mKaNFQZkm+duz1mxHvN0xi17MyWhvZbJb/sXuLQ9Xu4YxUTEIVI3woo5kZBw6Wlr3YoUvwhkBxkzBOmDh7UWgbQprRDFGJZ2fnXGgPDlzBCwv28nTCK9vfCSLcQaL2A71ALmx9rS5Esihj8Wad87joEaGnf6+PqCPtkBqv7yda53AKb/pzgKgKld2pLuJlqr/7wvL07ThrcCKNzhD6vFbRs1sPoye3IsSh02ztcGhd813ZEe8+L34zJxcp9Zku3qgEd5BJ5tJwtSM2G1/TyIB4wzL/mOLtX8XEMeRwbsh2jqxO2xW6aNo/Wsp84wRxNAr88ReKxXSxUG7s1uaKZkFlzW66d9ioqesuJGB8cu9Q/fMBDIcprVK58wsF/8AtBgjMALTFylIIXiddcLFc9QmA3dVtnAPCqfwKqvQ8+OYCT9dgJfHj9yQDcArByjJSvg9UR1eSwzF7Yhz4mfRYcFL3N61o8izEj/Jnd3x1UY8OrGMqo0biS5vD7jwEZqg7SRzoXJart2 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:02.7147 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b05cefba-75cb-42e3-fa30-08d76f501475 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR03MB4590 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 spamscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The single conversion function does a series of reads + writes. This change extends the use of the state_lock for the entire set of operations. Previously, indio_dev's mlock was used. This change also removes the use of this lock. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/iio/imu/adis.c b/drivers/iio/imu/adis.c index 10b8922fd51b..c53f3ed3cb97 100644 --- a/drivers/iio/imu/adis.c +++ b/drivers/iio/imu/adis.c @@ -404,15 +404,15 @@ int adis_single_conversion(struct iio_dev *indio_dev, unsigned int uval; int ret; - mutex_lock(&indio_dev->mlock); + mutex_lock(&adis->state_lock); - ret = adis_read_reg(adis, chan->address, &uval, + ret = __adis_read_reg(adis, chan->address, &uval, chan->scan_type.storagebits / 8); if (ret) goto err_unlock; if (uval & error_mask) { - ret = adis_check_status(adis); + ret = __adis_check_status(adis); if (ret) goto err_unlock; } @@ -424,7 +424,7 @@ int adis_single_conversion(struct iio_dev *indio_dev, ret = IIO_VAL_INT; err_unlock: - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&adis->state_lock); return ret; } EXPORT_SYMBOL_GPL(adis_single_conversion); From patchwork Fri Nov 22 13:24:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258009 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 91BCD930 for ; Fri, 22 Nov 2019 13:30:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5F8F92073F for ; Fri, 22 Nov 2019 13:30:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="gOFFOLXB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728071AbfKVNae (ORCPT ); Fri, 22 Nov 2019 08:30:34 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:23224 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727935AbfKVNaJ (ORCPT ); Fri, 22 Nov 2019 08:30:09 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDNBk4026854; Fri, 22 Nov 2019 08:30:07 -0500 Received: from nam05-co1-obe.outbound.protection.outlook.com (mail-co1nam05lp2059.outbound.protection.outlook.com [104.47.48.59]) by mx0a-00128a01.pphosted.com with ESMTP id 2waew7wbpq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:06 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fxMZbPkefpGbOGbwRS43SQJ0ZMjU+TpQFGFYGAaQqPFYdqZWctx7InNui5VpLynrYsvy/9t+gJOMh4eW9QidXHiN+aPwfBSAxgtyUN/mPekE6J17QRHhdEl3v37icLgfeviOhWUdE5zOiHy1FSu5bmy+VukLWEqh0O69hb0O+cA32W5w6WbbUvmm/ZzhuvfjUNL4MRrmAPPuVZ6fSnAebVxku+qrDd2Ct8yylR4xkdzSMM1v1Zutxni1Qw/wlIkiIzLvokwj0z5QlXei5EKs6gf7O15bYiUp4KZOVHKJaMYWemlKW/uj2a0E2Y55ZHg0HJH6HbRaAlnOmQj137ps/A== 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-SenderADCheck; bh=xV3ckVyL26em++YG1RVNvdQ9xqdh7wLi1JEopRzYCO8=; b=gEcqGUUlUSJZCVVqPpquuu4hKAfr2LNlT+OH3xZ/MOVIPy52WFt0VPXqbVqbXi/R9LL8UsS17X2DGDQu9sLLqydm+sbnTF8EH2VwtYvgtWaHNnGkw8hxj4+i2t4iUAInFAhFzEKgrfEhaq+kuSSzOKz88WD0kn2VAM+0Xnvo+T8ee/Lv76I1TAAlULzwhnI0I1WB70K8/Cr/5wCa4/XJNBuI3ctf+r/2rx7S93xLXyAYhikqC+5hUHCfomGtNTFNBs2htryijHBpmVpQ449P91clWBI/g/lXazMB/t7jfGDtXxGzqth59B2bNKisQMLTrayLI+IP9AMIngFzXW79YA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xV3ckVyL26em++YG1RVNvdQ9xqdh7wLi1JEopRzYCO8=; b=gOFFOLXBL5E4r6ROzmNr5jekeOUpRKQfpMwyV55QyQpx7HyUSzUSm1YKMUuNJ6TbSiHO+SqR6aR04x0uBHr/UEL8ZIOj8LMxTaSXJKR7x/ZaBergir3scUfGJrJohmlxhT8kymZYyXkW+8EN0Ia0wEIifn3S4Rp1o+X5pSgqN5U= Received: from CY1PR03CA0008.namprd03.prod.outlook.com (2603:10b6:600::18) by MN2PR03MB4781.namprd03.prod.outlook.com (2603:10b6:208:ae::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Fri, 22 Nov 2019 13:30:05 +0000 Received: from SN1NAM02FT038.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::200) by CY1PR03CA0008.outlook.office365.com (2603:10b6:600::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:30:05 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by SN1NAM02FT038.mail.protection.outlook.com (10.152.72.69) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:04 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTt38015836 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:55 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:03 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 08/11] iio: imu: adis16400: rework locks using ADIS library's state lock Date: Fri, 22 Nov 2019 15:24:18 +0200 Message-ID: <20191122132421.5500-9-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(39860400002)(376002)(396003)(136003)(346002)(199004)(189003)(336012)(70206006)(44832011)(478600001)(186003)(70586007)(426003)(76176011)(26005)(2616005)(51416003)(305945005)(11346002)(7696005)(446003)(1076003)(5660300002)(7636002)(36756003)(106002)(48376002)(316002)(50466002)(14444005)(107886003)(8676002)(110136005)(54906003)(2906002)(2870700001)(50226002)(8936002)(47776003)(246002)(86362001)(4326008)(356004)(6666004);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR03MB4781;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 261d0b66-39cb-476f-c755-08d76f50159e X-MS-TrafficTypeDiagnostic: MN2PR03MB4781: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A8nbMp8753aLiJ9e+TEqNaKz7EOi78q94cZ6EgrLTxvsOFKJkZ25Q445fmVNZRstVIk4djD22u8ZbUJEkAJY+IyW6IYEhMm+wYNqpVTLooslLlpgVpY/9MFXl2R7e6n1Cq3YmqAU+DSllq6n8IObmo3Z39GbOQQ+1BM3afz8gV3D20JB6JplOGbrKz7fvqhhLnPknPUuntwOXDpzqbS5UsV62UTAcKl0gseCdr1iRlJCahQLOxKxBQdlNHTljPkXRm/MT+4fl22Scrv4daQi8NNZzqvhvE5lcJPXoyauWO5dbooC1JEQ9ELk8V0NSQqf49XJ/CmCNnfYKeMzCRHgEPOIJ4evPlooMWepwIPPbUNlO9xdV6K7Cf7b8axya4o96mgksD4BmL4WsTCRifTJqxBAYHWyLmeoKKUOmmNtBJBMcNsKzOaxDBDvd+Z9Juef X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:04.5867 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 261d0b66-39cb-476f-c755-08d76f50159e X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB4781 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 priorityscore=1501 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org This change removes the use of indio_dev's mlock in favor using the state lock from the ADIS library. The set_freq() & get_freq() hooks are unlocked, so they require specific locking. That is because in some cases the get_freq() hook is used in combination with adis16400_set_filter(). In cases where only one read/write is done, the functions that hold the state lock are used. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis16400.c | 51 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c index 44e46dc96e00..662cb5367c11 100644 --- a/drivers/iio/imu/adis16400.c +++ b/drivers/iio/imu/adis16400.c @@ -162,6 +162,7 @@ struct adis16400_chip_info { unsigned int accel_scale_micro; int temp_scale_nano; int temp_offset; + /* set_freq() & get_freq() need to avoid using ADIS lib's state lock */ int (*set_freq)(struct adis16400_state *st, unsigned int freq); int (*get_freq)(struct adis16400_state *st); }; @@ -326,7 +327,7 @@ static int adis16334_get_freq(struct adis16400_state *st) int ret; uint16_t t; - ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); + ret = __adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); if (ret) return ret; @@ -350,7 +351,7 @@ static int adis16334_set_freq(struct adis16400_state *st, unsigned int freq) t <<= ADIS16334_RATE_DIV_SHIFT; t |= ADIS16334_RATE_INT_CLK; - return adis_write_reg_16(&st->adis, ADIS16400_SMPL_PRD, t); + return __adis_write_reg_16(&st->adis, ADIS16400_SMPL_PRD, t); } static int adis16400_get_freq(struct adis16400_state *st) @@ -358,7 +359,7 @@ static int adis16400_get_freq(struct adis16400_state *st) int sps, ret; uint16_t t; - ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); + ret = __adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); if (ret) return ret; @@ -390,7 +391,7 @@ static int adis16400_set_freq(struct adis16400_state *st, unsigned int freq) else st->adis.spi->max_speed_hz = ADIS16400_SPI_FAST; - return adis_write_reg_8(&st->adis, ADIS16400_SMPL_PRD, val); + return __adis_write_reg_8(&st->adis, ADIS16400_SMPL_PRD, val); } static const unsigned int adis16400_3db_divisors[] = { @@ -404,7 +405,7 @@ static const unsigned int adis16400_3db_divisors[] = { [7] = 200, /* Not a valid setting */ }; -static int adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) +static int __adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) { struct adis16400_state *st = iio_priv(indio_dev); uint16_t val16; @@ -415,11 +416,11 @@ static int adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) break; } - ret = adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); + ret = __adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); if (ret) return ret; - ret = adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG, + ret = __adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG, (val16 & ~0x07) | i); return ret; } @@ -507,32 +508,31 @@ static int adis16400_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int val, int val2, long info) { struct adis16400_state *st = iio_priv(indio_dev); + struct mutex *slock = &st->adis.state_lock; int ret, sps; switch (info) { case IIO_CHAN_INFO_CALIBBIAS: - mutex_lock(&indio_dev->mlock); ret = adis_write_reg_16(&st->adis, adis16400_addresses[chan->scan_index], val); - mutex_unlock(&indio_dev->mlock); return ret; case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: /* * Need to cache values so we can update if the frequency * changes. */ - mutex_lock(&indio_dev->mlock); + mutex_lock(slock); st->filt_int = val; /* Work out update to current value */ sps = st->variant->get_freq(st); if (sps < 0) { - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); return sps; } - ret = adis16400_set_filter(indio_dev, sps, + ret = __adis16400_set_filter(indio_dev, sps, val * 1000 + val2 / 1000); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); return ret; case IIO_CHAN_INFO_SAMP_FREQ: sps = val * 1000 + val2 / 1000; @@ -540,9 +540,9 @@ static int adis16400_write_raw(struct iio_dev *indio_dev, if (sps <= 0) return -EINVAL; - mutex_lock(&indio_dev->mlock); + mutex_lock(slock); ret = st->variant->set_freq(st, sps); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); return ret; default: return -EINVAL; @@ -553,6 +553,7 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, struct iio_chan_spec const *chan, int *val, int *val2, long info) { struct adis16400_state *st = iio_priv(indio_dev); + struct mutex *slock = &st->adis.state_lock; int16_t val16; int ret; @@ -596,10 +597,8 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, return -EINVAL; } case IIO_CHAN_INFO_CALIBBIAS: - mutex_lock(&indio_dev->mlock); ret = adis_read_reg_16(&st->adis, adis16400_addresses[chan->scan_index], &val16); - mutex_unlock(&indio_dev->mlock); if (ret) return ret; val16 = sign_extend32(val16, 11); @@ -610,27 +609,27 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, *val = st->variant->temp_offset; return IIO_VAL_INT; case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: - mutex_lock(&indio_dev->mlock); + mutex_lock(slock); /* Need both the number of taps and the sampling frequency */ - ret = adis_read_reg_16(&st->adis, + ret = __adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); if (ret) { - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); return ret; } ret = st->variant->get_freq(st); - if (ret >= 0) { - ret /= adis16400_3db_divisors[val16 & 0x07]; - *val = ret / 1000; - *val2 = (ret % 1000) * 1000; - } - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); if (ret) return ret; + ret /= adis16400_3db_divisors[val16 & 0x07]; + *val = ret / 1000; + *val2 = (ret % 1000) * 1000; return IIO_VAL_INT_PLUS_MICRO; case IIO_CHAN_INFO_SAMP_FREQ: + mutex_lock(slock); ret = st->variant->get_freq(st); + mutex_unlock(slock); if (ret) return ret; *val = ret / 1000; From patchwork Fri Nov 22 13:24:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11257999 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6EC41109A for ; Fri, 22 Nov 2019 13:30:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 45B8A207FC for ; Fri, 22 Nov 2019 13:30:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="JVOehvqS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727923AbfKVNaO (ORCPT ); Fri, 22 Nov 2019 08:30:14 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:27514 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727980AbfKVNaO (ORCPT ); Fri, 22 Nov 2019 08:30:14 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDNAA9026851; Fri, 22 Nov 2019 08:30:10 -0500 Received: from nam01-bn3-obe.outbound.protection.outlook.com (mail-bn3nam01lp2059.outbound.protection.outlook.com [104.47.33.59]) by mx0a-00128a01.pphosted.com with ESMTP id 2waew7wbps-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:10 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7Oa3umH+FakYJT+y5XmxzxkRuH97ZjVHTTc32BRBZQeOgablreX/fgOkzckvA8trkFOoteu3QAF13+C6NXXDjMNLOYcIvHE91HF2Dd4gNdj8NqyOdC0XNWOn/+1WLSisgISJTvDaF/VvG09gitOPxsoXFQ+0r1wbfs73jP1HPJzUSr50Jys0QP/Jo5NGeqZFAJO8cRAOJhb+JDKNmL/Ev1Tox8TL2tDS6hXqsey7kdMTa04ZpYtHsbC2qhJTUtpJP+AbJmlLNxSxBiEX/69jJ64hTgOFnYuobonoRoHbrumPgdkRtF+665VXEkqspSrcLmotiW83bdRuaHF9XiwTw== 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-SenderADCheck; bh=5iISF2zY8qZJahRqz+WmeheV6a3qMJ4vqTO0rYHYf8g=; b=HMl3CiIOHf/oo4yMomT6wYUcOcYOZi2EtEgPOeg6YoA87fdthZsKzWXIJFo9fJJTOaWaZ0FFu7nLabfFaYjrrY34fNFSTNsDlFhXDonvQeJVJKhHtxW9Aili09LCjtWyaHd09i7BMaZFY1YxNJMm8WHTZ6Jn01KsgeBwv6dCAoDEQApKc7oL3qbMySFvMkllMW0nhdQqKdKApNQtbHwnLtGFgGiY/bQTv3EnFvwoAkq4EnkbYFMoIWfD+Xe1sBY69UFioRU2o3FgfXBtN0XZ4nyhWp66jZca9teQdZfqtY+aZdinNfipfWo0eJpsXwcAMWarSTQ0NBniDHjts8DXPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5iISF2zY8qZJahRqz+WmeheV6a3qMJ4vqTO0rYHYf8g=; b=JVOehvqSJ2IeyjmfA4Yq7xI0MplSeRWnU0LviJAHcKywjUGlKdIkuK30H7WBeOZVRHwJdDESi+jSiN6EIqbiTGWWdUBtNKBbD3iWIzzPB+JAkiVWwLWSDMBGdS+vztMMLxvavGzCKjHaMUppN5/i7dRDXjoDp/LEsK1X8GiQGVs= Received: from DM6PR03CA0009.namprd03.prod.outlook.com (2603:10b6:5:40::22) by BY5PR03MB5062.namprd03.prod.outlook.com (2603:10b6:a03:1eb::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17; Fri, 22 Nov 2019 13:30:07 +0000 Received: from SN1NAM02FT023.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::208) by DM6PR03CA0009.outlook.office365.com (2603:10b6:5:40::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.16 via Frontend Transport; Fri, 22 Nov 2019 13:30:06 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by SN1NAM02FT023.mail.protection.outlook.com (10.152.72.156) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:06 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTuii015855 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:57 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:05 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 09/11] iio: gyro: adis16136: rework locks using ADIS library's state lock Date: Fri, 22 Nov 2019 15:24:19 +0200 Message-ID: <20191122132421.5500-10-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(346002)(136003)(396003)(39860400002)(376002)(199004)(189003)(86362001)(48376002)(5660300002)(50466002)(14444005)(356004)(246002)(70206006)(50226002)(8936002)(36756003)(47776003)(70586007)(8676002)(2906002)(426003)(186003)(107886003)(1076003)(4326008)(336012)(6666004)(2870700001)(446003)(11346002)(2616005)(54906003)(316002)(106002)(7696005)(51416003)(76176011)(26005)(44832011)(110136005)(7636002)(305945005)(478600001);DIR:OUT;SFP:1101;SCL:1;SRVR:BY5PR03MB5062;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;A:1;MX:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bdc291ac-349f-4d65-da21-08d76f50169b X-MS-TrafficTypeDiagnostic: BY5PR03MB5062: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ltv8P9KE1Hv/X85nYMncOErgfIz5wkQrCk1sic4VLr2wMaOmaTPnnLEZG4stqw/yo3yJOrVzpEohgsEBdQdzBa5dwgjgvMvgkZfJoBBwCzwd9twuVR5eHqCWVHL15QUJKbN86M+d2q8v9hcziiwqZOEUwHS1RT+gv2HdYUTSjcB/FQdDjSmW4+4raM8zOy/G4m8oQyo8a9iRaSYMbchYuU1+diuX43Yo9QFYQ8odhJf2slb7pLR9MTxh3GWmc1y+xQU5XwfAloBuk2qXIdDkVmkYUMb/dTWRXMKWuCjLNZcecEX9uSXd5Cl9kHEvUjCWHPxa7ABkL5thlpoFmqzCEiO3lGQF6dutRByHSfmgwPxfYgUk2sz0I3cSi1d8jTFkPOdVYHyr8HLOTZ8heML0xWrCbPawXl4VaMg8XPTVNy6kqhysQSJ7XtmthjGY8bhH X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:06.2513 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bdc291ac-349f-4d65-da21-08d76f50169b X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5062 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 priorityscore=1501 mlxscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org This replaces indio_dev's mlock with the state lock/mutex from the ADIS library. The __adis16136_get_freq() function has been prefixed to mark it as unlocked. The adis16136_{set,get}_filter() functions now hold the state lock for all the ops that they do. Signed-off-by: Alexandru Ardelean --- drivers/iio/gyro/adis16136.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/drivers/iio/gyro/adis16136.c b/drivers/iio/gyro/adis16136.c index d637d52d051a..f10c4f173898 100644 --- a/drivers/iio/gyro/adis16136.c +++ b/drivers/iio/gyro/adis16136.c @@ -185,12 +185,12 @@ static int adis16136_set_freq(struct adis16136 *adis16136, unsigned int freq) return adis_write_reg_16(&adis16136->adis, ADIS16136_REG_SMPL_PRD, t); } -static int adis16136_get_freq(struct adis16136 *adis16136, unsigned int *freq) +static int __adis16136_get_freq(struct adis16136 *adis16136, unsigned int *freq) { uint16_t t; int ret; - ret = adis_read_reg_16(&adis16136->adis, ADIS16136_REG_SMPL_PRD, &t); + ret = __adis_read_reg_16(&adis16136->adis, ADIS16136_REG_SMPL_PRD, &t); if (ret) return ret; @@ -224,10 +224,13 @@ static ssize_t adis16136_read_frequency(struct device *dev, { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct adis16136 *adis16136 = iio_priv(indio_dev); + struct mutex *slock = &adis16136->adis.state_lock; unsigned int freq; int ret; - ret = adis16136_get_freq(adis16136, &freq); + mutex_lock(slock); + ret = __adis16136_get_freq(adis16136, &freq); + mutex_unlock(slock); if (ret) return ret; @@ -252,42 +255,50 @@ static const unsigned adis16136_3db_divisors[] = { static int adis16136_set_filter(struct iio_dev *indio_dev, int val) { struct adis16136 *adis16136 = iio_priv(indio_dev); + struct mutex *slock = &adis16136->adis.state_lock; unsigned int freq; int i, ret; - ret = adis16136_get_freq(adis16136, &freq); + mutex_lock(slock); + ret = __adis16136_get_freq(adis16136, &freq); if (ret) - return ret; + goto out_unlock; for (i = ARRAY_SIZE(adis16136_3db_divisors) - 1; i >= 1; i--) { if (freq / adis16136_3db_divisors[i] >= val) break; } - return adis_write_reg_16(&adis16136->adis, ADIS16136_REG_AVG_CNT, i); + ret = __adis_write_reg_16(&adis16136->adis, ADIS16136_REG_AVG_CNT, i); +out_unlock: + mutex_unlock(slock); + + return ret; } static int adis16136_get_filter(struct iio_dev *indio_dev, int *val) { struct adis16136 *adis16136 = iio_priv(indio_dev); + struct mutex *slock = &adis16136->adis.state_lock; unsigned int freq; uint16_t val16; int ret; - mutex_lock(&indio_dev->mlock); + mutex_lock(slock); - ret = adis_read_reg_16(&adis16136->adis, ADIS16136_REG_AVG_CNT, &val16); + ret = __adis_read_reg_16(&adis16136->adis, ADIS16136_REG_AVG_CNT, + &val16); if (ret) goto err_unlock; - ret = adis16136_get_freq(adis16136, &freq); + ret = __adis16136_get_freq(adis16136, &freq); if (ret) goto err_unlock; *val = freq / adis16136_3db_divisors[val16 & 0x07]; err_unlock: - mutex_unlock(&indio_dev->mlock); + mutex_unlock(slock); return ret ? ret : IIO_VAL_INT; } From patchwork Fri Nov 22 13:24:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258003 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E764F930 for ; Fri, 22 Nov 2019 13:30:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BE6EB2073F for ; Fri, 22 Nov 2019 13:30:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="jVKky8/x" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727989AbfKVNaO (ORCPT ); Fri, 22 Nov 2019 08:30:14 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:27354 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727979AbfKVNaN (ORCPT ); Fri, 22 Nov 2019 08:30:13 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDNNBq006193; Fri, 22 Nov 2019 08:30:10 -0500 Received: from nam01-bn3-obe.outbound.protection.outlook.com (mail-bn3nam01lp2051.outbound.protection.outlook.com [104.47.33.51]) by mx0a-00128a01.pphosted.com with ESMTP id 2wabu7myuw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:10 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jDWgMwB+oGSZY7IPytx9PF6tkTHvL/WP6325CeLY6Qf/g8fIg2rBtwwyge3r7xaTRvQBlsZlbV0t4CJJQzVH87cUIOH8L6vMxnD4nQwAmyZxmiz0pfyPmCKQr/VxINUgQyoqfWm2tP6B9h+R71RF8LMZxi/1su7njzEUur5XUOinERwWBJjoDY+YZMWYTWkgWLWawXPYmTH8scz1J1HYhiRhj/M57CbnBsg93LW9jE2v+xHe3z+oJxyY4b7E0WpRlEUPjz+zzm7J7FiV9cqCmuvl/TZjnxiK7bxWvXtlTU6ABavXDn5XiitMRG5AmrzgCPyTzXxIChq/VEWHg2Rrvw== 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-SenderADCheck; bh=8P0+RjkKlMW9BfDD6Q2eeTDJBPzvDvKaWOYU9WijBYY=; b=Vs7aU9JiGvRegWJF+Ep2ZFwSS6u+TXRrsD+qnuiUFODTVxVZ9DMmi7/tt7UNp5jK1llbMHJTYnI40/0mVld69A6pvjLxQ6Rdv5wSC4m7IYZKI2/z3EApGjBjzjFKaEwFQtmmPYi9f0xBtKjp3TlaqixTbjRNKKAaBy1xg+Eu7sUOAhZiR0eBMfKgQIiqFOTzXI9uqyhPOAtzgrvBT1yvaSwinc6FsuODjPBH9X4ybXaVYy7Vi6/05UsPJH6XnZNtGiQHd6w98yGzCs7D+rd+StcjcKcuXjWEnHpAdEY2hUvSA/NIWBWT28r54reEdBr1je+rI1diIbaAb7i/R57BYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8P0+RjkKlMW9BfDD6Q2eeTDJBPzvDvKaWOYU9WijBYY=; b=jVKky8/xD7g9ec+yDE8tXLsF8M5tC+2CgG+koQ7MFiGf9nJplTrVa62A/CYL5UkdFDmEYlzASSzPTKsSMeXZXt4we271x1TMhy66ge0yPemH+A8qoOgKFC4NdSNLh6QGs7fPr4d9Go9oZ9jKsZg40W/ltx8LyNhm4a5KSqsLZE4= Received: from BN8PR03CA0004.namprd03.prod.outlook.com (2603:10b6:408:94::17) by MN2PR03MB5086.namprd03.prod.outlook.com (2603:10b6:208:1a5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17; Fri, 22 Nov 2019 13:30:08 +0000 Received: from SN1NAM02FT050.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::204) by BN8PR03CA0004.outlook.office365.com (2603:10b6:408:94::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.18 via Frontend Transport; Fri, 22 Nov 2019 13:30:08 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by SN1NAM02FT050.mail.protection.outlook.com (10.152.72.128) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:08 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDTwo2015881 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:29:58 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:07 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 10/11] iio: imu: adis16480: use state lock for filter freq set Date: Fri, 22 Nov 2019 15:24:20 +0200 Message-ID: <20191122132421.5500-11-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(376002)(396003)(136003)(346002)(39860400002)(189003)(199004)(76176011)(50226002)(70206006)(14444005)(336012)(6666004)(356004)(8676002)(8936002)(426003)(54906003)(110136005)(305945005)(7636002)(246002)(86362001)(7696005)(48376002)(51416003)(316002)(47776003)(186003)(36756003)(106002)(478600001)(50466002)(2616005)(1076003)(2870700001)(2906002)(5660300002)(107886003)(4326008)(11346002)(446003)(44832011)(70586007)(26005);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR03MB5086;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8d028f9a-c58e-4dc6-3c85-08d76f5017ac X-MS-TrafficTypeDiagnostic: MN2PR03MB5086: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1284; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bQkk30QY8OXtMhKMZ7SunzeOiR+A/68mpXBI3Is6T+9D+e8qe3YOE9f6IbK5n0SCw0BUfZbMxNAPW2z2svMMI1q8SRcjzZda9saAWIxNEBps1zU8rljOiHD+LXVc9Op8jshFFYQuE40Sk7nlwhtcJgxFGKClUgbtFxJhiih+wIpDwP0B55BVuHNS5KvoO42S4kMq1OKt/E1UzUYNxOhatXyqqw3z+hQj2I70wZbHEd0RjTNjcPdCd5X7fM26NuAS674qw0K3ZQkpfLodqbhTfgdwsVFHhVL3jWmTUO5Z8ghMmbjxBbhnBS8Df7bQsAIoiGfdzoDuRfybYmMNowZYo2rRbscHet5EknYo5U92APokYrSuHiTCO3eYMRN/0fFStRHjQxIlDCAjuldUEpSvZI4kQAKk+djE98Nm3UWdiO1VOkhz+oGuU3HK0CjqOmcp X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:08.0364 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8d028f9a-c58e-4dc6-3c85-08d76f5017ac X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB5086 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 spamscore=0 adultscore=0 clxscore=1015 mlxlogscore=999 bulkscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org It's the only operation that does 2 operations (a read & a write), so the unlocked functions can be used under a single state lock. Signed-off-by: Alexandru Ardelean --- drivers/iio/imu/adis16480.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c index e943039c3f98..f73094e8d35d 100644 --- a/drivers/iio/imu/adis16480.c +++ b/drivers/iio/imu/adis16480.c @@ -555,6 +555,7 @@ static int adis16480_set_filter_freq(struct iio_dev *indio_dev, const struct iio_chan_spec *chan, unsigned int freq) { struct adis16480 *st = iio_priv(indio_dev); + struct mutex *slock = &st->adis.state_lock; unsigned int enable_mask, offset, reg; unsigned int diff, best_diff; unsigned int i, best_freq; @@ -565,9 +566,11 @@ static int adis16480_set_filter_freq(struct iio_dev *indio_dev, offset = ad16480_filter_data[chan->scan_index][1]; enable_mask = BIT(offset + 2); - ret = adis_read_reg_16(&st->adis, reg, &val); + mutex_lock(slock); + + ret = __adis_read_reg_16(&st->adis, reg, &val); if (ret) - return ret; + goto out_unlock; if (freq == 0) { val &= ~enable_mask; @@ -589,7 +592,11 @@ static int adis16480_set_filter_freq(struct iio_dev *indio_dev, val |= enable_mask; } - return adis_write_reg_16(&st->adis, reg, val); + ret = __adis_write_reg_16(&st->adis, reg, val); +out_unlock: + mutex_unlock(slock); + + return ret; } static int adis16480_read_raw(struct iio_dev *indio_dev, From patchwork Fri Nov 22 13:24:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 11258001 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 55D43109A for ; Fri, 22 Nov 2019 13:30:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2D38C20706 for ; Fri, 22 Nov 2019 13:30:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=analog.onmicrosoft.com header.i=@analog.onmicrosoft.com header.b="KOdEIXFT" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728045AbfKVNaY (ORCPT ); Fri, 22 Nov 2019 08:30:24 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:29444 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727996AbfKVNaP (ORCPT ); Fri, 22 Nov 2019 08:30:15 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMDNNBr006193; Fri, 22 Nov 2019 08:30:12 -0500 Received: from nam03-co1-obe.outbound.protection.outlook.com (mail-co1nam03lp2050.outbound.protection.outlook.com [104.47.40.50]) by mx0a-00128a01.pphosted.com with ESMTP id 2wabu7myv1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 08:30:11 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=feV3gNnBcWnwiVDLlWyMDdMm9QfPeuFNLMQRsnx516APWwGhZOa0HrDhxN0TFMjUa/Gm3coPmqxCPLZ3p1UREaAVMm7t6Cg5xjbhcfGMmfGFz95yysI+4g1W8FAwXPWQLocU/Buw/yMxwhrNcOldfv2lsfE4YdiN3KEQv+oaNVrC7EFVZ6TPO/BuJHvX4TTLuSIRRl1SIQpvD0ZLjDRMnRpC0nIULCTH9Js2qBomKZ14nvpOG3R7oA52bKjgn9B8iN0OYIrMadwTRmpqisc98CQIyBtk+OzOuSyXPL2o3kFCL7K0JacWT5A+agzGy/EbIHDb1hmcJXp/RYwWax837Q== 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-SenderADCheck; bh=0PCqNvzzTcjNYlMXXQWsEp3LXprfpuS5/yf3qlm7B7Q=; b=azcC4r/KwnXEKNvO6o7813CkZ/avvVGMwNRynh84ommRxmsLP8UX108Mci2Q6hsFrx/wXbH1rMH57vdZIMp1hQa71GuwzY31TwAmagFUUf26hf8N0lJi3Y0PCFcyB6kDp+f6+dIKF8pU3wOpglpHW+mEPjSgI6d6qjmaC3NcGBm6RVIxhjlO3joz9O0IhsClN+udIVPOqXWQ8o/6cY+zlPzkTUqKI/SLaqEZbTB55/4L3hgu+pOlfNd4GdNlF5UZD0vGtFvBWX+h/JFXluyq/2tRopexRwsf/AzjRkgv2Fp+KxO/g8gjRyRYFr1PfdJeRG0RUymt5rTdbuXRgPbDmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 137.71.25.57) smtp.rcpttodomain=kernel.org smtp.mailfrom=analog.com; dmarc=bestguesspass action=none header.from=analog.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector2-analog-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0PCqNvzzTcjNYlMXXQWsEp3LXprfpuS5/yf3qlm7B7Q=; b=KOdEIXFTSTgdkDZI9wsvHPpAy2Mn+CbMv1ELCIfoomFlkG7DlrSgIiuxS55F++XYg04byFUb9asNQlEs8V1cQonpDJYqmOj9874uaNLXY8di0DmoAebKnJwoOX4QZwUHh2QATFGRN8cmOFXDjknTcgPiW0HNCRPBU5ugCg51QHo= Received: from DM3PR03CA0023.namprd03.prod.outlook.com (2603:10b6:0:50::33) by BN7PR03MB3745.namprd03.prod.outlook.com (2603:10b6:408:23::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17; Fri, 22 Nov 2019 13:30:10 +0000 Received: from SN1NAM02FT044.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::207) by DM3PR03CA0023.outlook.office365.com (2603:10b6:0:50::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:10 +0000 Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.57 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.57; helo=nwd2mta2.analog.com; Received: from nwd2mta2.analog.com (137.71.25.57) by SN1NAM02FT044.mail.protection.outlook.com (10.152.72.173) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.2474.17 via Frontend Transport; Fri, 22 Nov 2019 13:30:09 +0000 Received: from NWD2HUBCAS7.ad.analog.com (nwd2hubcas7.ad.analog.com [10.64.69.107]) by nwd2mta2.analog.com (8.13.8/8.13.8) with ESMTP id xAMDU0Bv015887 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=OK); Fri, 22 Nov 2019 05:30:00 -0800 Received: from saturn.ad.analog.com (10.48.65.119) by NWD2HUBCAS7.ad.analog.com (10.64.69.107) with Microsoft SMTP Server id 14.3.408.0; Fri, 22 Nov 2019 08:30:08 -0500 From: Alexandru Ardelean To: , CC: , , , Alexandru Ardelean Subject: [PATCH v2 11/11] iio: gyro: adis16260: replace mlock with ADIS lib's state_lock Date: Fri, 22 Nov 2019 15:24:21 +0200 Message-ID: <20191122132421.5500-12-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122132421.5500-1-alexandru.ardelean@analog.com> References: <20191122132421.5500-1-alexandru.ardelean@analog.com> MIME-Version: 1.0 X-ADIRoutedOnPrem: True X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.57;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(396003)(39860400002)(346002)(136003)(376002)(189003)(199004)(5660300002)(36756003)(4326008)(107886003)(478600001)(1076003)(76176011)(51416003)(7696005)(14444005)(6666004)(356004)(48376002)(50466002)(47776003)(8676002)(70586007)(54906003)(70206006)(2906002)(316002)(86362001)(106002)(110136005)(426003)(50226002)(44832011)(8936002)(336012)(26005)(2616005)(186003)(446003)(11346002)(246002)(305945005)(7636002)(2870700001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN7PR03MB3745;H:nwd2mta2.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail11.analog.com;MX:1;A:1; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 03af1020-a9ed-4a43-6e14-08d76f5018b8 X-MS-TrafficTypeDiagnostic: BN7PR03MB3745: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-Forefront-PRVS: 02296943FF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6JpYkjbvpE5nIRm/pDnxNMgnre/hY9HCweDRXhX4IovzrVkUul+BPmFhAYgetTpXcSzAs3GC98kbNQfLnS+v3/0heHTBwGqwMFzAzV+vUdSdrUwCX+fqCsNnHB8vlLCFIz9K6A+figUy0DlYqkHdgLJUyn7bJoJ4PEZuyd3ehQwFLE3vM0ltX97uHzEQzVosk0Mh9tcE6CWEwACTUf95biptU1+lM5UqNjYC/Xzc7mI3P/gxFJR3J93Xnl4gxeazg+iRDGSIyimCqs2ArIkdENvVGIjyoXMS2CO4edVuqTDD4rAWyc0TPs165ky2JudqwF6oYoP8sO4iOK13nIsAd8DeQpNXwR6Rdu5FzSr8OSuJk2fdJf4YZB0HBxgb/ZiB1Rk/5bUcCqr3bTsSX2cWlsWoEHRSj/CgvV6glHId7NLy9ZRjI772F1Z0rifM7Yij X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Nov 2019 13:30:09.7930 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03af1020-a9ed-4a43-6e14-08d76f5018b8 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.57];Helo=[nwd2mta2.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR03MB3745 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 spamscore=0 adultscore=0 clxscore=1015 mlxlogscore=993 bulkscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220119 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org This change uses the ADIS library's state_lock to protect the state of the `max_speed_hz` change that is done during the set of the sampling frequency. Signed-off-by: Alexandru Ardelean --- drivers/iio/gyro/adis16260.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/iio/gyro/adis16260.c b/drivers/iio/gyro/adis16260.c index 207a0ce13439..726a0aa321a8 100644 --- a/drivers/iio/gyro/adis16260.c +++ b/drivers/iio/gyro/adis16260.c @@ -293,7 +293,7 @@ static int adis16260_write_raw(struct iio_dev *indio_dev, addr = adis16260_addresses[chan->scan_index][1]; return adis_write_reg_16(adis, addr, val); case IIO_CHAN_INFO_SAMP_FREQ: - mutex_lock(&indio_dev->mlock); + mutex_lock(&adis->state_lock); if (spi_get_device_id(adis->spi)->driver_data) t = 256 / val; else @@ -308,9 +308,9 @@ static int adis16260_write_raw(struct iio_dev *indio_dev, adis->spi->max_speed_hz = ADIS16260_SPI_SLOW; else adis->spi->max_speed_hz = ADIS16260_SPI_FAST; - ret = adis_write_reg_8(adis, ADIS16260_SMPL_PRD, t); + ret = __adis_write_reg_8(adis, ADIS16260_SMPL_PRD, t); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&adis->state_lock); return ret; } return -EINVAL;