Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp361860pxb; Wed, 18 Aug 2021 04:17:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOHRQFQmbVrfEfXmIN7AUDRc+nBphd5EhefpHxGOcwY+2EQRUQoULyMuJyemGCunN9UwD6 X-Received: by 2002:a17:906:fc6:: with SMTP id c6mr9013824ejk.65.1629285452431; Wed, 18 Aug 2021 04:17:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629285452; cv=none; d=google.com; s=arc-20160816; b=JrcreBZmSKvKo/u8noMAgjU6rLCoSlKRb9Y7i+7uTLUZXjrPODwJK9/TKikcBCSVsK rvGccUq2pLk/jQsyEPkgGRdcF2PpJc/XYJZBwCczQGRL7pJQ/kRnV2dISxI8edGl4Jub 6AwCgbPstkLHgMbVCvEOTCcq4P1bsnOnBqId6R/sUv/2n9sJZQrllP5srrxNhV4jQ318 Wceu/3b4m4U2Y6pqQxxETz2l/7Clm01eSOeMkDX1c7AxF3UbYb4CCTNmEplkzs3LMPGn NB9soa9W3aIVTADuzE5KXc/1vFxAM8JSdj8ccga+cWtVdZU+DutY8kKfGVY8FEl1m/iA C9Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=44tjO8zHtKJ2deghbxKFFOojKukhKx5y7Sr/ubqtey8=; b=anvhniFrL2+2xFGp/8C4TmXdiHe8kbDh784xzzBqAaOvGpvIso9C5CLzAF82YaP8Ac rcA9LnwtCVTVkeOogxpQx01C6tT/ZVQo24Zr9dMBmW13p8Z0hsK5l7HJ8Gocx9VbFYMb +aVdagzGTXlnJq2Lk5tKf0yXA9mvEKlOmP8zpcLLB21Ae0n6IyDcdK3gpySSRIQCnJDf PfE5jYjoQKrpbkHUoXRse4Xv3pOSD5q0OdOR5Ip4gJqgzSm6Cy+zg6RgbANofErHAtx0 BE4D3Jvkxvk+EiLwgbxEZvxVd0je1maD4dmuQovetU6Ndpfl+M9Nc0Rv7jkq2pmZ6/wY hHHw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s21si5158293edt.17.2021.08.18.04.17.09; Wed, 18 Aug 2021 04:17:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236604AbhHRLOR (ORCPT + 99 others); Wed, 18 Aug 2021 07:14:17 -0400 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:36135 "EHLO relay3-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235539AbhHRLMW (ORCPT ); Wed, 18 Aug 2021 07:12:22 -0400 Received: (Authenticated sender: miquel.raynal@bootlin.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 5E12B6000B; Wed, 18 Aug 2021 11:11:47 +0000 (UTC) From: Miquel Raynal To: Jonathan Cameron , Lars-Peter Clausen Cc: Thomas Petazzoni , linux-iio@vger.kernel.org, , Miquel Raynal Subject: [PATCH 11/16] iio: adc: max1027: Separate the IRQ handler from the read logic Date: Wed, 18 Aug 2021 13:11:34 +0200 Message-Id: <20210818111139.330636-12-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210818111139.330636-1-miquel.raynal@bootlin.com> References: <20210818111139.330636-1-miquel.raynal@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Create a max1027_read_scan() helper which will make clearer the future IRQ handler updates (no functional change). Signed-off-by: Miquel Raynal --- drivers/iio/adc/max1027.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/iio/adc/max1027.c b/drivers/iio/adc/max1027.c index 83526f3d7d3a..afc3ce69f7ea 100644 --- a/drivers/iio/adc/max1027.c +++ b/drivers/iio/adc/max1027.c @@ -427,19 +427,18 @@ static int max1027_set_cnvst_trigger_state(struct iio_trigger *trig, bool state) return 0; } -static irqreturn_t max1027_trigger_handler(int irq, void *private) +static int max1027_read_scan(struct iio_dev *indio_dev) { - struct iio_poll_func *pf = private; - struct iio_dev *indio_dev = pf->indio_dev; struct max1027_state *st = iio_priv(indio_dev); unsigned int scanned_chans = fls(*indio_dev->active_scan_mask); u16 *buf = st->buffer; unsigned int bit; - - pr_debug("%s(irq=%d, private=0x%p)\n", __func__, irq, private); + int ret; /* fill buffer with all channel */ - spi_read(st->spi, st->buffer, scanned_chans * 2); + ret = spi_read(st->spi, st->buffer, scanned_chans * 2); + if (ret < 0) + return ret; /* Only keep the channels selected by the user */ for_each_set_bit(bit, indio_dev->active_scan_mask, @@ -451,6 +450,22 @@ static irqreturn_t max1027_trigger_handler(int irq, void *private) iio_push_to_buffers(indio_dev, st->buffer); + return 0; +} + +static irqreturn_t max1027_trigger_handler(int irq, void *private) +{ + struct iio_poll_func *pf = private; + struct iio_dev *indio_dev = pf->indio_dev; + int ret; + + pr_debug("%s(irq=%d, private=0x%p)\n", __func__, irq, private); + + ret = max1027_read_scan(indio_dev); + if (ret) + dev_err(&indio_dev->dev, + "Cannot read scanned values (%d)\n", ret); + iio_trigger_notify_done(indio_dev->trig); return IRQ_HANDLED; -- 2.27.0