From patchwork Mon Oct 16 12:28:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georgiana Rodica Chelu X-Patchwork-Id: 10008171 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 08C63601D5 for ; Mon, 16 Oct 2017 12:29:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F2E042845E for ; Mon, 16 Oct 2017 12:28:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E770428535; Mon, 16 Oct 2017 12:28:59 +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=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, 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 902212845E for ; Mon, 16 Oct 2017 12:28:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751817AbdJPM27 (ORCPT ); Mon, 16 Oct 2017 08:28:59 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:52566 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750829AbdJPM26 (ORCPT ); Mon, 16 Oct 2017 08:28:58 -0400 Received: by mail-qt0-f194.google.com with SMTP id 31so5690387qtz.9 for ; Mon, 16 Oct 2017 05:28:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Dg+jOIRO3sAU1cdrxN5WvvGdkTZNayY//R0aFVJ3/nA=; b=FZyMzed51jCYFui+XZpLRPqd2nZxiKxpF6livfvKWVhG3R8kUiGiRyQKhQB/3Ov7fM cq+RvYIhETtt8RYIH7eYD+KzvIBf44eROfxj2gMD1LCoSwNvENMjAI5u76X3JI7XCMdv 3DCu/mxJ4IH1ecorwdPq6cj2wy9erqy51kw6/GwsAEaSMhRk6blRRSNuhMxABmMmND/x +liSxqwMIX6nv/NVtTUG27wvE39bsKpOHITSNFYMVcCyPAOuNMYh8FE1t6lpvdwc0R/Z iwONSkgRl3xbYB/Vu6MLlm6ob7UzZhiGuqyxQO61uZ294MQCOt+YpI3qvy+Q27vjCv7j ZgWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Dg+jOIRO3sAU1cdrxN5WvvGdkTZNayY//R0aFVJ3/nA=; b=XTShZ6WPZjoZKLmWnQ3/uoow7EIQYTUyI4DOq7DAp72Z32Cavhkmg904w2tLz/N4cd jBqAzDKf92OsOf+jdd3iJy2abg/+75dH1R5youOmJryaSueMT2epXqBOWDedYZgXUWLx T1qM3nr0w47zPVio9n7OfSwVBbxcW4JRe7hmXlQ2/amcC7FnmpZ2dilKLoAX06esIkgz bYyGcawBlGq/s7X1/rusSO0RJHYNx0ipve71u7CQvuwGO0GaicR0zLvUp5OcojGy2tJ1 EIkH9eqsyzcQR1eKipRGvPZ6nT70JnIibXqXEluNTi8ZSoqyxrrU6GLZ/CVo5/qe0D7e gavg== X-Gm-Message-State: AMCzsaUt6xfQf0DVg4kUFQ0ORwvfw6PHdmnJAWklrfEYSL9SpV2IXniJ PmWzzMDaiGfbQz373GO/sXiT01peAHGHOyM4VLE= X-Google-Smtp-Source: ABhQp+TLjXjWZDaP12MRlLuwnucMyywsNs/kPZ9Y1o66+/ztZH0yoWWNrOb59XoEC+CodbEVSWUyTVjY1m6m1uioCdo= X-Received: by 10.200.12.11 with SMTP id k11mr2180928qti.105.1508156937811; Mon, 16 Oct 2017 05:28:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.140.20.119 with HTTP; Mon, 16 Oct 2017 05:28:57 -0700 (PDT) In-Reply-To: <20171015181054.15094-1-georgiana.chelu93@gmail.com> References: <20171015181054.15094-1-georgiana.chelu93@gmail.com> From: Georgiana Chelu Date: Mon, 16 Oct 2017 15:28:57 +0300 Message-ID: Subject: Fwd: [PATCH] Staging: iio: meter: Replace mlock with driver private lock To: Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald , linux-iio@vger.kernel.org Cc: Daniel Baluta , Alison Schofield 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 The IIO subsystem is redefining iio_dev->mlock to be used by the IIO core only for protecting device operating mode changes. ie. Changes between INDIO_DIRECT_MODE, INDIO_BUFFER_* modes. In this driver, mlock was being used to protect hardware state changes. Replace it with a lock in the devices global data. Signed-off-by: Georgiana Chelu --- drivers/staging/iio/meter/ade7758.h | 2 ++ drivers/staging/iio/meter/ade7758_core.c | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/staging/iio/meter/ade7758.h b/drivers/staging/iio/meter/ade7758.h index 6ae78d8aa24f..728424a6648b 100644 --- a/drivers/staging/iio/meter/ade7758.h +++ b/drivers/staging/iio/meter/ade7758.h @@ -112,6 +112,7 @@ * @tx: transmit buffer * @rx: receive buffer * @buf_lock: mutex to protect tx and rx + * @lock: mutex to protect raw read and write **/ struct ade7758_state { struct spi_device *us; @@ -119,6 +120,7 @@ struct ade7758_state { u8 *tx; u8 *rx; struct mutex buf_lock; + struct mutex rw_lock; /* protect raw read/write */ struct spi_transfer ring_xfer[4]; struct spi_message ring_msg; /* diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index 7b7ffe5ed186..6b153dd6d40d 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c @@ -523,12 +523,13 @@ static int ade7758_read_raw(struct iio_dev *indio_dev, long mask) { int ret; + struct ade7758_state *st = iio_priv(indio_dev); switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->rw_lock); ret = ade7758_read_samp_freq(&indio_dev->dev, val); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->rw_lock); return ret; default: return -EINVAL; @@ -542,14 +543,15 @@ static int ade7758_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { int ret; + struct ade7758_state *st = iio_priv(indio_dev); switch (mask) { case IIO_CHAN_INFO_SAMP_FREQ: if (val2) return -EINVAL; - mutex_lock(&indio_dev->mlock); + mutex_lock(&st->rw_lock); ret = ade7758_write_samp_freq(&indio_dev->dev, val); - mutex_unlock(&indio_dev->mlock); + mutex_unlock(&st->rw_lock); return ret; default: return -EINVAL; @@ -854,6 +856,7 @@ static int ade7758_probe(struct spi_device *spi) } st->us = spi; mutex_init(&st->buf_lock); + mutex_init(&st->rw_lock); indio_dev->name = spi->dev.driver->name; indio_dev->dev.parent = &spi->dev;