Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3935748ybl; Mon, 3 Feb 2020 09:18:26 -0800 (PST) X-Google-Smtp-Source: APXvYqwKPryWmdTYMVTR5GITMz72+RRe/nYVZM1QSzhCIxwzxQzGl61wbgaK+4keFEBCKW7vz9ht X-Received: by 2002:a9d:7e8a:: with SMTP id m10mr17283633otp.27.1580750306160; Mon, 03 Feb 2020 09:18:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580750306; cv=none; d=google.com; s=arc-20160816; b=zkh4sV+7B01uycyk0aIJAketydymGAir9qC1jwPQb6YATgpj/BA5lO/ZiXejbNO9ct kRZMMBRWjz2lPNp6UWWtROGP8nwcQIawydSCvce10/gq4BeZamvayMzR7ExxKujmhG4Y GesIaL9N11FxhLZ1gwQDIACNrMV6XDqkcQzSNHRS0FgIy4+AkcdvGZX3VNN32nDVTdhu XerKL9iekSZq8bciANF8vZQ9Ue1iDx58XXeMO5VHdxYmGxwfgpWvfo4KsFUg+DfZ0/OW NV5ALYbObkwHAS13Te7Q79GNsg7FF6CArSZf/u1Qqjj65aSqvewtaOzwje7++mbfS3ak WAhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=8wMP5wCjYYTB14TwbN9d/gWV+lGZpDpWTB0TujEWtDw=; b=Ml1rz76ONvyS7ymz6scVGkB4Wb2JISC/NfaFfIfQPJtRmnK+ACYtAgvP/86MCQ1u3C cBg0F4IS7wfc5/xr1fO8YfyfWKybGdxZortsqSG7undg2pMo8OmftwlSzBJV2dSg1pk6 VpJYjSaRSjnSYFbhxOtBiMicfAWhbl5CMyyaLgsjCnC385xDXXv+K2Lzp47SzbfXUGAT IAJbhRQf+QSmBWJiLQX4pwi2qrDWDVZWEVIE0dBUnFVDTXIP3bQRInHSFxJ6bHsdpURx 8gpjoO7rBrmZkJl46bhKXy/DcJiWVbIjKNqiZnSiBLkCH4MPhVeTjSvsVVODnrnoDCKo prZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13si10191875otq.201.2020.02.03.09.18.13; Mon, 03 Feb 2020 09:18:26 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728702AbgBCPK3 (ORCPT + 99 others); Mon, 3 Feb 2020 10:10:29 -0500 Received: from 212.199.177.27.static.012.net.il ([212.199.177.27]:36316 "EHLO herzl.nuvoton.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727988AbgBCPK1 (ORCPT ); Mon, 3 Feb 2020 10:10:27 -0500 Received: from taln60.nuvoton.co.il (ntil-fw [212.199.177.25]) by herzl.nuvoton.co.il (8.13.8/8.13.8) with ESMTP id 013F9JW7001610; Mon, 3 Feb 2020 17:09:19 +0200 Received: by taln60.nuvoton.co.il (Postfix, from userid 10070) id BB3D46032F; Mon, 3 Feb 2020 17:09:19 +0200 (IST) From: Tomer Maimon To: jic23@kernel.org, knaack.h@gmx.de, lars@metafoo.de, pmeerw@pmeerw.net, robh+dt@kernel.org, mark.rutland@arm.com, avifishman70@gmail.com, tali.perry1@gmail.com, venture@google.com, yuenn@google.com, benjaminfair@google.com, joel@jms.id.au Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, openbmc@lists.ozlabs.org, Tomer Maimon Subject: [PATCH v2 2/2] iio: adc: modify NPCM reset support Date: Mon, 3 Feb 2020 17:09:17 +0200 Message-Id: <20200203150917.176391-2-tmaimon77@gmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20200203150917.176391-1-tmaimon77@gmail.com> References: <20200203150917.176391-1-tmaimon77@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Modify NPCM ADC reset support from direct register access to reset controller support. please make sure to modify NPCM adc device tree parameters as described at nuvoton,npcm-adc.txt document for using this change. Signed-off-by: Tomer Maimon --- drivers/iio/adc/npcm_adc.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/drivers/iio/adc/npcm_adc.c b/drivers/iio/adc/npcm_adc.c index a6170a37ebe8..83bad2d5575d 100644 --- a/drivers/iio/adc/npcm_adc.c +++ b/drivers/iio/adc/npcm_adc.c @@ -14,6 +14,7 @@ #include #include #include +#include struct npcm_adc { bool int_status; @@ -23,13 +24,9 @@ struct npcm_adc { struct clk *adc_clk; wait_queue_head_t wq; struct regulator *vref; - struct regmap *rst_regmap; + struct reset_control *reset; }; -/* NPCM7xx reset module */ -#define NPCM7XX_IPSRST1_OFFSET 0x020 -#define NPCM7XX_IPSRST1_ADC_RST BIT(27) - /* ADC registers */ #define NPCM_ADCCON 0x00 #define NPCM_ADCDATA 0x04 @@ -106,13 +103,11 @@ static int npcm_adc_read(struct npcm_adc *info, int *val, u8 channel) msecs_to_jiffies(10)); if (ret == 0) { regtemp = ioread32(info->regs + NPCM_ADCCON); - if ((regtemp & NPCM_ADCCON_ADC_CONV) && info->rst_regmap) { + if (regtemp & NPCM_ADCCON_ADC_CONV) { /* if conversion failed - reset ADC module */ - regmap_write(info->rst_regmap, NPCM7XX_IPSRST1_OFFSET, - NPCM7XX_IPSRST1_ADC_RST); + reset_control_assert(info->reset); msleep(100); - regmap_write(info->rst_regmap, NPCM7XX_IPSRST1_OFFSET, - 0x0); + reset_control_deassert(info->reset); msleep(100); /* Enable ADC and start conversion module */ @@ -186,7 +181,6 @@ static int npcm_adc_probe(struct platform_device *pdev) struct npcm_adc *info; struct iio_dev *indio_dev; struct device *dev = &pdev->dev; - struct device_node *np = pdev->dev.of_node; indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*info)); if (!indio_dev) @@ -199,6 +193,10 @@ static int npcm_adc_probe(struct platform_device *pdev) if (IS_ERR(info->regs)) return PTR_ERR(info->regs); + info->reset = devm_reset_control_get(&pdev->dev, NULL); + if (IS_ERR(info->reset)) + return PTR_ERR(info->reset); + info->adc_clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(info->adc_clk)) { dev_warn(&pdev->dev, "ADC clock failed: can't read clk\n"); @@ -211,16 +209,6 @@ static int npcm_adc_probe(struct platform_device *pdev) div = div >> NPCM_ADCCON_DIV_SHIFT; info->adc_sample_hz = clk_get_rate(info->adc_clk) / ((div + 1) * 2); - if (of_device_is_compatible(np, "nuvoton,npcm750-adc")) { - info->rst_regmap = syscon_regmap_lookup_by_compatible - ("nuvoton,npcm750-rst"); - if (IS_ERR(info->rst_regmap)) { - dev_err(&pdev->dev, "Failed to find nuvoton,npcm750-rst\n"); - ret = PTR_ERR(info->rst_regmap); - goto err_disable_clk; - } - } - irq = platform_get_irq(pdev, 0); if (irq <= 0) { ret = -EINVAL; -- 2.22.0