From patchwork Sat Apr 21 11:55:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rodrigo Siqueira X-Patchwork-Id: 10354097 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 20C76601E7 for ; Sat, 21 Apr 2018 11:56:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0E70E28737 for ; Sat, 21 Apr 2018 11:56:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0318E2890F; Sat, 21 Apr 2018 11:56:02 +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_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, 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 9921C28737 for ; Sat, 21 Apr 2018 11:56:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752866AbeDUL4A (ORCPT ); Sat, 21 Apr 2018 07:56:00 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:33162 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751850AbeDULz7 (ORCPT ); Sat, 21 Apr 2018 07:55:59 -0400 Received: by mail-qt0-f194.google.com with SMTP id f16-v6so8849137qth.0; Sat, 21 Apr 2018 04:55:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=yHZ6R/Tl/5vCQ8NOm1zEht4/dc31mV/u0QWX9nAtEFU=; b=rW08FixgoNhE67zJai8eAB9MJHiEGT9DLr0H5m+LjXBMeCZs181I+uDhhrLMm9yVur Krzjl4jayP8zwENqSo+Q2ARQqy3iM9I4l9fuMlM14xhnVTUj3tvnrF0Nej4b5z5I9Rnx yN0pbBZyP75j+SD2NKxxPVh+7m4rZ056ga7joZRdPtWQ1tIKsmqfpUwvvSMK6a8AGPUQ 7pKrgTCjIalC5LBPB6n9yIW5a3xCznd63yGCxorD9I483GCteCP0fJx/KVwKmY6B0w+i KlCCbVIPptImGGa6E8AV7dIZ2Re+MiFn6yEhKTjd3sxznF2t+s2UdJD23NOwCdpZiSMZ MXaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=yHZ6R/Tl/5vCQ8NOm1zEht4/dc31mV/u0QWX9nAtEFU=; b=AAxJIIU6Bljuwmpvi3hoZiQA8pxqkBmjeDHeselIrFBzhicuUNYuUdwV3/GRv1f2x/ GQqthbhWYm1hpOayqUN6skKo6SJ5NMcuNOgSntOtUg7Y6aJIlEMJ5gQ/7CtTOO/4Qano nLua9TOAFogxGsPkPi0IYuydB31KgfGREiAZiMKD+pzKSw/e6aAgJPMau9bRnbFiCwQk z4DDQgeIcGQHtrb1QqwxofW9jgRJH0fozifblhVFNrLDdZdMejaJYAZ4VKqx9XhmlZX/ X0A+WJGUiRM0+amh6R1D58veeJttYEV3ASKNqkzWrxCR48XkN/uLNRWDqy7qE9DrVlqh k2nQ== X-Gm-Message-State: ALQs6tAXYYct7t7As5FYr7w+cht7yYnt0bsyKOhECyRe5+SI7IJ6OU7v MCJ6gCWcsfI34l5vpOVt+nD3uQ== X-Google-Smtp-Source: AIpwx4+esC0MMsKYm9wqcrCNqPoPrKD3qSDZkZiw7zRlmkhhctqoP+vsYiT/IRIUcVwgjLZaYDuhiw== X-Received: by 2002:ac8:3488:: with SMTP id w8-v6mr15617567qtb.278.1524311759127; Sat, 21 Apr 2018 04:55:59 -0700 (PDT) Received: from smtp.gmail.com ([201.81.143.32]) by smtp.gmail.com with ESMTPSA id f197sm6938708qka.80.2018.04.21.04.55.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 21 Apr 2018 04:55:58 -0700 (PDT) Date: Sat, 21 Apr 2018 08:55:52 -0300 From: Rodrigo Siqueira To: Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Greg Kroah-Hartman , John Syne Cc: linux-iio@vger.kernel.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] stagging:iio:meter: Add ade7854_read_raw function Message-ID: <9900ff3d492dbca4dc39cdd8ca6490af05a4f09a.1524311298.git.rodrigosiqueiramelo@gmail.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180323 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 This patch adds the ade7854_read_raw() function which is responsible for handling the read operation for registers: AIGAIN, BIGAIN, CIGAIN, NIGAIN, AVGAIN, BVGAIN, and CVGAIN. For the sake of simplicity, this patch only adds basic manipulation for current and voltage channels. Finally, this patch disables the old approach for reading data. Signed-off-by: Rodrigo Siqueira --- drivers/staging/iio/meter/ade7854.c | 41 ++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/drivers/staging/iio/meter/ade7854.c b/drivers/staging/iio/meter/ade7854.c index 2fbb2570ba54..242ecde75900 100644 --- a/drivers/staging/iio/meter/ade7854.c +++ b/drivers/staging/iio/meter/ade7854.c @@ -229,31 +229,31 @@ static int ade7854_reset(struct device *dev) } static IIO_DEV_ATTR_AIGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_AIGAIN); static IIO_DEV_ATTR_BIGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_BIGAIN); static IIO_DEV_ATTR_CIGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_CIGAIN); static IIO_DEV_ATTR_NIGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_NIGAIN); static IIO_DEV_ATTR_AVGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_AVGAIN); static IIO_DEV_ATTR_BVGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_BVGAIN); static IIO_DEV_ATTR_CVGAIN(0644, - ade7854_read_24bit, + NULL, ade7854_write_24bit, ADE7854_CVGAIN); static IIO_DEV_ATTR_APPARENT_POWER_A_GAIN(0644, @@ -471,6 +471,32 @@ static int ade7854_set_irq(struct device *dev, bool enable) return st->write_reg(dev, ADE7854_MASK0, irqen, 32); } +static int ade7854_read_raw(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + int *val, + int *val2, + long mask) +{ + struct ade7854_state *st = iio_priv(indio_dev); + int ret; + + if (mask != IIO_CHAN_INFO_SCALE) + return -EINVAL; + + switch (chan->type) { + case IIO_CURRENT: + case IIO_VOLTAGE: + ret = st->read_reg(&indio_dev->dev, chan->address, val, 24); + if (ret < 0) + return ret; + return IIO_VAL_INT; + default: + break; + } + + return -EINVAL; +} + static int ade7854_initial_setup(struct iio_dev *indio_dev) { int ret; @@ -572,6 +598,7 @@ static const struct attribute_group ade7854_attribute_group = { static const struct iio_info ade7854_info = { .attrs = &ade7854_attribute_group, + .read_raw = &ade7854_read_raw, }; int ade7854_probe(struct iio_dev *indio_dev, struct device *dev)