From patchwork Mon Jun 25 07:28:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 10485177 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 690D4601D5 for ; Mon, 25 Jun 2018 07:28:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5640E287E9 for ; Mon, 25 Jun 2018 07:28:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4ADBD287F2; Mon, 25 Jun 2018 07:28:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5FD2B287E9 for ; Mon, 25 Jun 2018 07:28:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751793AbeFYH2s (ORCPT ); Mon, 25 Jun 2018 03:28:48 -0400 Received: from mail-bl2nam02on0065.outbound.protection.outlook.com ([104.47.38.65]:57216 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752094AbeFYH2r (ORCPT ); Mon, 25 Jun 2018 03:28:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6THuDeGRa+dDVECu0Q10F7hsrh8o1phwKL8MLxA1i/I=; b=NqRw2ciDohq0pXYIngGa8yVXDH0rJLmYKmu8Agvfgq9qLzpNLpEtM6wbr6E47flh5yRWjtwfi7cAwrpJsreRMiSeunU80/6XAg1T6ejOBoREhEPF7+rm6YwVqAJlkwxmiP/n96NCqpQ4EUWzQF8YpZPPhm/vRK05fG7cllND7fc= Received: from CY4PR03CA0076.namprd03.prod.outlook.com (2603:10b6:910:4d::17) by BL2PR03MB545.namprd03.prod.outlook.com (2a01:111:e400:c23::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.23; Mon, 25 Jun 2018 07:28:44 +0000 Received: from BY2FFO11FD022.protection.gbl (2a01:111:f400:7c0c::113) by CY4PR03CA0076.outlook.office365.com (2603:10b6:910:4d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.884.21 via Frontend Transport; Mon, 25 Jun 2018 07:28:44 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.57) smtp.mailfrom=analog.com; kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=bestguesspass action=none header.from=analog.com; 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=nwd2mta4.analog.com; Received: from nwd2mta4.analog.com (137.71.25.57) by BY2FFO11FD022.mail.protection.outlook.com (10.1.15.211) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.820.5 via Frontend Transport; Mon, 25 Jun 2018 07:28:43 +0000 Received: from NWD2HUBCAS9.ad.analog.com (nwd2hubcas9.ad.analog.com [10.64.69.109]) by nwd2mta4.analog.com (8.13.8/8.13.8) with ESMTP id w5P7SgfF023375 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 25 Jun 2018 00:28:42 -0700 Received: from zeus.spd.analog.com (10.64.82.11) by NWD2HUBCAS9.ad.analog.com (10.64.69.109) with Microsoft SMTP Server id 14.3.210.2; Mon, 25 Jun 2018 03:28:26 -0400 Received: from saturn.analog.com ([10.50.1.244]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id w5P7SLhe007794; Mon, 25 Jun 2018 03:28:23 -0400 From: Alexandru Ardelean To: , , , Subject: [PATCH] iio: ad9523: replace core mlock with local lock Date: Mon, 25 Jun 2018 10:28:08 +0300 Message-ID: <20180625072808.8796-1-alexandru.ardelean@analog.com> X-Mailer: git-send-email 2.17.1 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)(39380400002)(396003)(39860400002)(346002)(2980300002)(438002)(189003)(199004)(478600001)(16586007)(2906002)(476003)(2616005)(51416003)(126002)(44832011)(5660300001)(7696005)(486006)(50466002)(106002)(2201001)(86362001)(47776003)(316002)(36756003)(6666003)(110136005)(50226002)(53416004)(8676002)(186003)(1857600001)(246002)(106466001)(356003)(8936002)(336012)(7636002)(305945005)(77096007)(26005)(59450400001)(1076002)(426003)(48376002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB545; H:nwd2mta4.analog.com; FPR:; SPF:Pass; LANG:en; PTR:nwd2mail11.analog.com; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD022; 1:jRoA2ldt7vZ8+9YWc97r0+E4S9hoAtXt15gWVUlJWy7jWA3EuntWE4vcm0Q/XNxSgMvP6l+vs/YSswEvJpL83ffHETcUQtX/OIQKQuTjmYkTIo201CW6ItsCya0TE4dZ X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aac1e58e-9b2d-444d-1c02-08d5da6d4813 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(4608076)(2017052603328)(7153060); SRVR:BL2PR03MB545; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB545; 3:gadysoNP51tC91C2WmFQ6HfS3rETfcoz2G3F3tYl4xjglxUEIbTsJXPO72g20TtIh5DNFcwvpj6E4nktyoVzggHgQi+lKfKQ3I66Qa7d0TymwU+NuTo/nAg1guD7xNQBRy+FluCQmIOsihrfcPfzsg6yF8LM0QU+BlMjKXvTYwz6SmYKqW2l16OX1W+zZNls6noWWhlJDXyonjaQiro2z6XQEuSVeo1ZH5mo/I/xTBwKj5TLmu39/LBlIe3BK8JGJFYht1aXzTW2KK6sb1yDc0zaUTBtks7GMG0b+/z9DhmQjgwbKxF8c0AIm2z6Elz75cbgG1L4KQrIYAYe7E0Pmcf45VJMKvoUUuEnqIkmyAI=; 25:IRvR23TpNz+MXJhWgT54l8stsD+bZgwo4kY1FGUOlnOgzs1KARxAAam/sOVBr4o7Nx8H6NRKYsuQjdC0vkeTRbwstsG7inxrNR2S7+cOfxgmJE0KJo2ApacTNmv55sQfPPFzYKl35rfOBmI873QT9+gpnRjoY2XcMdEbMJVEkkant5nPguMUn1mKUv2pPSjtF9370uX/3ERjMfkQ2jjA0GyTyJCWPl+hLh+hXqUMv45CdfZccYThq9r9hNvcaeD+EQqE2xnYgbJkr1VdXCzfJdQWFCIfFDY5IrkOqlfCLSaih3yMiq1JUbvTc+AuxRdzmkGEi7oDrR6pOddT0bDsQg== X-MS-TrafficTypeDiagnostic: BL2PR03MB545: X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB545; 31:7kHS5+0GsVv3r8seLhUcKJCkrPMEJ7KAlBVpqxfVc7agb0lkLF7fgupJUOQqL4mSa3QOVPJxCPV6Hv7mbeoFe34acvkcjq8mskI3Ggye9ofse/8bj7JwxSNoZkhu+U6leM+0QUcNI+a5fJA0A/ENQ74K8ypf3Ho9e08jclqUKKOgPCnbGAGug4Q3uNTYmgzgpfwLu0WC1yUUAMoz1EkoKLZuKOm4sitiZL1qYujjRKY=; 20:es/5cJGYoPmP0nRtoe2NLrlewdyEvO+tcpTAbkTo64qsYeVRbk+ePlNUlMKEzICewPc8UCWhPvkbrLYy0jXnKbuQdwYvIjJ3mBUstdji4Y1CtseniPLE4KqJ+jMgmPDcvebgrRR0gdogrqfA7oeGvoWXvxV/hXiadCICEk+mQTFMMxEZOrzSGn69UN+S5k5/q2r+zwNlUGiYm/qtN+MKLcefPynJLe7ylQkY1/law7kkWPkUBTamirwiFhddOpxiZ9f5+k3K4vN35poIVM4ZTrDG6GijOyXY6EFHvWK1oAzx1HJFABFh4+HOxmhFsPqjEIIQidQQMJuQ65Zsixyx4D8QyvFCwfotGgDwVnTu+MTaxxrRD7GSqrfcFB2/JGUg0+loMMROw2oHVlmvqxqavcQDJvaVGOx+Lt1ypol+gWZ1MbFVbnEFNuTAIOown5oHuCICxJ6QgCj/RlpdfUmXpYZG4dSBpMHef7xF6I9eEksbPFONq9K6VPGA1//deug4 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93004095)(10201501046)(3002001)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BL2PR03MB545; BCL:0; PCL:0; RULEID:; SRVR:BL2PR03MB545; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB545; 4:1P7LDcmcNrV5KO/07sMCdFfirfy5+wHihXaxS9ELRayHIOMsQcX9kOKWVva5PY3W3UXcwL2qNlHfoTh0iSNl0iPcVJP+muovNQzL8ysfgsrR1DStBfdTKjN/3q71YKaaCLnj7pRdPcxc2YSGsLHsl/gOVSFW9laxZ8adjia4tK7utfRJJCjCCKpaVI4hvf4JQTcHDpP8QiVq2ePUFMgiMCp46XL/vCTk/88tc4AXjvfET7B8V7djzU6bq014yXvaA0yfPJRhWGJMXYxVlKR1kY0QtuybzlDV6NJ66X7YveG6Uw/UTjxLPVHikoUYMwCm X-Forefront-PRVS: 0714841678 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB545; 23:4HkTbJwTjKFmE+9iFg/su2Qf02ZPA1SyWyDOXTWw3m?= =?us-ascii?Q?dtUunhCMUF7Jc6DEzwVtv9MG7B/tczTp8Y2jUvEefB43lGNzeBKnYuMEaXww?= =?us-ascii?Q?DTFrvuCxnsEMtt8lBwnNAJc3ewGz/7VMXdcervu7FHEnWVxZz2fVfwMObBjZ?= =?us-ascii?Q?HLyXmy3/K735gw26UctgtaXeTiJhbhy24NH0CCqvfecEMDeLQNLkrqQ7eJzH?= =?us-ascii?Q?H9rpkJxbAg3Lpxi/k2JtwFH7IWKbUx98bjD93ckE238OcqNyNbrsUecmTe8V?= =?us-ascii?Q?L6Nw31uCNOdyeqDBn2ecVsK3NstTuNnxZZhUDcb45nMKET94TfBSOT/CMIzj?= =?us-ascii?Q?pESz5egVd7jeuXkvfe3gCmdJt3JB7RuE3ZCpBB4BdYqY77hNjutKetyZSAzo?= =?us-ascii?Q?hgVniLMgsHp4UbAffG2d6nHDeZmLP2Xf76IiReomyx9+A+0cV6p5xIOb7auN?= =?us-ascii?Q?7uWnBxe3Fj5sWzLTW/+GFk3r4uC2MUmz6q1KmYzWoIy8I9MyWNf9tOfUBXx7?= =?us-ascii?Q?FrfxrmXqUyHyFKGo4Sj778v11cOZz9w8bsDeYnU4Qie52k4yst/2/eRnrMZI?= =?us-ascii?Q?VShUeDQOCpH9VzqNe6aUteyaQNL5cQ3iWE3YMh3h6eZax1+ImuoDnemWeyvl?= =?us-ascii?Q?fbvCdz177QG/kxJ/0BaWSgnuXSAfoaDqMT1Y4wQht99kPYwTpn7Nz36Af+Hh?= =?us-ascii?Q?B6entru8Wf4gxMmn4fikosJhdCpOzsSElDd9hebq/sM7P0lhmi9dG0g6+uy+?= =?us-ascii?Q?gAVAgpnLTRxOTMVtxK45wH0A3f3udgy5NLc4Ig7wjWL/AlA7wJWndBk96OFa?= =?us-ascii?Q?b97kMzKbGy2+F7ENY7ErkxQicOoqwkicZ7D7DwwPFctFJUSWknQ6+3M2unEQ?= =?us-ascii?Q?Hm9P97bCYztEoWKpOYs6khEV4CoucW+0/3/PqNtd0ngJyEAC4J53fFxuYnlY?= =?us-ascii?Q?exx/q57QhEefbOx9/0QVQizzhMMG5LKzixlk8KZ5umMsQjRo05cXPzbOkUl2?= =?us-ascii?Q?tkktiKWcp1vyqAlwIUMr1+/VDMlq25fsclIFZTuP/W1I7HqOc/0mYE1rRv/N?= =?us-ascii?Q?K+yqrYpgXmJg59JouyNn1SI2x8?= X-Microsoft-Antispam-Message-Info: PpRji9hXNpjV4OwTnpPDFflVTDAMW6bdBvkovWG10HP4Xv9V7XU06cTiH05nKJSGCLcXjh/aWzsXk2b9iffBj0wq90r2f2jLcfHcIVgYopMsm3XI4qm/lZ3KijfT4fqMAT6W741lnO+79Lu4tXIxp7ukbkTM7mJKAJ/gwLS7gQgIM98khWF7RBTR6DXNzCim3EqnYAN5Unn7uO1hGWTPKjQQtQ1jiIIDiwVm4NufleWDRwCq9DD589otBeWJaoK8qQn25xTXyeLLFjOzm8Eqr8HCELpBNTFmBCTsv2zoa2Gn3UQhs6O9awZ+gPSr9G2R+1n+7MsSy3C1m4soHk/VbOfSwvBLDhIOcxDtzsUanSw= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB545; 6:DPXRSRfV2DvC7XzgdgnpHn2eAHO4cXx9ij338+I4/ZcvR9zSRqF2/kDCm+GslE0LJrHjVT54HvgEGkCdxTe6+6Jaj2mWb9oXlb8CmVVffMWB0UNUkL9vC4gxqwuA/Tw1pD7c3u10Ci3+nlBV2qhueacAfVv43x9yhLoVsxU3RRDVJmhVg8ggr5s9qOMmI4iNvr5/WS+/PtNjrplgAGWvQvKhP0ROM3M4k0qnA5Nhlq4jZe4mwOJyMSOatG4yGAppgq5uE7NB+49qrCUJVAp9/PI30LRVoFcoat2dURBaV4Wwd+YMds0JLDGJitOSQho5xF5onqeRvztLj8O0Nl5XnXQA4JclhdTq/GMD/1/oDfnEDkjKBnRIzmbu4QC1b2fiPOC+dk3Ofa9+JrCbw5TdLmijPlWaQlBfsHrAOKfoNtL2tdMkGZJLJX0vMmXrRUPstj2OdOeJ7Kk+/e5lIc9akA==; 5:fAQzZojUYqB14qA5NR8Ujtkqc7g+VBZAFSW5kdKcwlVFzwvyiOudd74dxNM706aGN2xmp29o7MeMahDs85AqNjgPDMuR/1e3fAVQtwfl7QplFtQnYGhKhT8LqSerC6EBKFzCQdDKVRnQIl9xlb7ZR0eEByzwt0PkQ6AErNoVJNM=; 24:w3itRejx2wNDgzm9XPUfG66UP63k4FeOwDw8xRMJFNjA2ecNhOEA8aRazrBlZt/Zq1fkmeSRSQnsRIX7to7j2BxZh5ksF7fmNS+wOwnou98= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB545; 7:X8JdFJXP0FOZUTZkqjDIFf7ANim5f96IFywZ8UHNNHM7atHdHI6sMcruEFWAMbgbg4hpaDz0qmUtpGUPgcUgVokzbSlXIx/SW1mYf/g7f5NS4vHnUNw/v0OL6Kl9bkBeipQecuer833unubI5ZOgvOKOt1B9CnKTNPRZCyFOrZ8QX5gns/SXnumKQ+A9EGubwNh7QbxhqO3V2vlwCqoV364SREvo29TS1J78VBG3UEUd+QtiHd3OaKitmt8d+8+7 X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jun 2018 07:28:43.5331 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aac1e58e-9b2d-444d-1c02-08d5da6d4813 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=[nwd2mta4.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB545 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Lars-Peter Clausen This is part of a long term effort to make the use of mlock opaque and single purpose. Signed-off-by: Lars-Peter Clausen --- drivers/iio/frequency/ad9523.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/iio/frequency/ad9523.c b/drivers/iio/frequency/ad9523.c index ddb6a334ae68..1b70e8a13338 100644 --- a/drivers/iio/frequency/ad9523.c +++ b/drivers/iio/frequency/ad9523.c @@ -274,6 +274,8 @@ struct ad9523_state { unsigned long vco_out_freq[AD9523_NUM_CLK_SRC]; unsigned char vco_out_map[AD9523_NUM_CHAN_ALT_CLK_SRC]; + struct mutex lock; + /* * DMA (thus cache coherency maintenance) requires the * transfer buffers to live in their own cache lines. @@ -500,6 +502,7 @@ static ssize_t ad9523_store(struct device *dev, { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); + struct ad9523_state *st = iio_priv(indio_dev); bool state; int ret; @@ -510,7 +513,7 @@ static ssize_t ad9523_store(struct device *dev, if (!state) return 0; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->lock); switch ((u32)this_attr->address) { case AD9523_SYNC: ret = ad9523_sync(indio_dev); @@ -521,7 +524,7 @@ static ssize_t ad9523_store(struct device *dev, default: ret = -ENODEV; } - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->lock); return ret ? ret : len; } @@ -532,15 +535,16 @@ static ssize_t ad9523_show(struct device *dev, { struct iio_dev *indio_dev = dev_to_iio_dev(dev); struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); + struct ad9523_state *st = iio_priv(indio_dev); int ret; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->lock); ret = ad9523_read(indio_dev, AD9523_READBACK_0); if (ret >= 0) { ret = sprintf(buf, "%d\n", !!(ret & (1 << (u32)this_attr->address))); } - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->lock); return ret; } @@ -623,9 +627,9 @@ static int ad9523_read_raw(struct iio_dev *indio_dev, unsigned int code; int ret; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->lock); ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel)); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->lock); if (ret < 0) return ret; @@ -659,7 +663,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev, unsigned int reg; int ret, tmp, code; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->lock); ret = ad9523_read(indio_dev, AD9523_CHANNEL_CLOCK_DIST(chan->channel)); if (ret < 0) goto out; @@ -705,7 +709,7 @@ static int ad9523_write_raw(struct iio_dev *indio_dev, ad9523_io_update(indio_dev); out: - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->lock); return ret; } @@ -713,9 +717,10 @@ static int ad9523_reg_access(struct iio_dev *indio_dev, unsigned int reg, unsigned int writeval, unsigned int *readval) { + struct ad9523_state *st = iio_priv(indio_dev); int ret; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->lock); if (readval == NULL) { ret = ad9523_write(indio_dev, reg | AD9523_R1B, writeval); ad9523_io_update(indio_dev); @@ -728,7 +733,7 @@ static int ad9523_reg_access(struct iio_dev *indio_dev, } out_unlock: - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->lock); return ret; } @@ -967,6 +972,8 @@ static int ad9523_probe(struct spi_device *spi) st = iio_priv(indio_dev); + mutex_init(&st->lock); + st->reg = devm_regulator_get(&spi->dev, "vcc"); if (!IS_ERR(st->reg)) { ret = regulator_enable(st->reg);