Received: by 10.223.185.116 with SMTP id b49csp4182746wrg; Mon, 26 Feb 2018 12:43:30 -0800 (PST) X-Google-Smtp-Source: AH8x226H/RZXS7WVKvHo1YZmHvchSMsV8aca8UWGgYrviviTJ2fgbb4L5YXZXj6HixFjxJp/zOTJ X-Received: by 10.98.253.17 with SMTP id p17mr11802003pfh.105.1519677810014; Mon, 26 Feb 2018 12:43:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519677809; cv=none; d=google.com; s=arc-20160816; b=r3XGqD0QtKadms0LXFKekOFlB6q3KwQE7Kol1RcaO2XHvc54wSH+lSGv/S2B+GTZN9 BipqTgLGP2+1CdzNwuMKW6VyzGBu1QJUPlF9GiU1DkK19Tor6LyOvsVAjt28kedHAy/p qILwi1i1Z2gmmb96nVgprGOMVJrUOyAhEVRLV14jWXQBDKjVFUwbJ+nSO7P/3vZQnnAu vOMziWmPHnbEIDoOFDQvbnwB/WJgnwnkC2dfusjjMf2mjRj0OSNASzCcS16QIpFDIkwy mO/OSQbvTlDSaF+GnlJdY6FECM3CYDD06J17Qu1nu4jBR+9cm54qRnwnrMt4zwIrMlOI P2EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=PU5TZvAhChUsLi3+hZM+BQQbVZiZ/sDo3YBTHqhV7Kg=; b=POc2Gzvp+84CzYWm0Ha2xK+lWvrJq2XBg4SaW1+izDsBw0FQDisaYaI6cWedKYcnVs dg7huhPij39QeQQxgouUDFQ0qaV2n++1GyCG7kvjRnbzGRgLaOQgOyZOJGGIxUVqoOZy JDGN19s36DoNWOnuhAe71UyyTv5Y8fkq4Pl+bFKJ19aUPxEekKyjwoaslEgVCqqN258b qXPgsRDeEHHOO4ngZnaN0SxNMv+JGToLbAzmtbLIrcoWSmDt0BoC7z1x6tmqxu7bYtx2 Ih2cJyYJImoB5RCQRzSu0veg2iOGM8rwc7e9ZiH8aVYyGVDnUdsLVpjVB+zYgRRRDb2F 85Ww== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r62si5980028pgr.77.2018.02.26.12.43.13; Mon, 26 Feb 2018 12:43:29 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753546AbeBZU0w (ORCPT + 99 others); Mon, 26 Feb 2018 15:26:52 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:35892 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753389AbeBZU0t (ORCPT ); Mon, 26 Feb 2018 15:26:49 -0500 Received: from localhost (clnet-b04-243.ikbnet.co.at [83.175.124.243]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 7E1EC1054; Mon, 26 Feb 2018 20:26:48 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fabrice Gasnier , Stable@vger.kernel.org, Jonathan Cameron Subject: [PATCH 4.15 22/64] iio: adc: stm32: fix stm32h7_adc_enable error handling Date: Mon, 26 Feb 2018 21:21:59 +0100 Message-Id: <20180226202154.411957860@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180226202153.453363333@linuxfoundation.org> References: <20180226202153.453363333@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.15-stable review patch. If anyone has any objections, please let me know. ------------------ From: Fabrice Gasnier commit a3b5655ebdb501a98a45c0d3265dca9f2fe0218a upstream. Error handling in stm32h7_adc_enable routine doesn't unwind enable sequence correctly. ADEN can only be cleared by hardware (e.g. by writing one to ADDIS). It's also better to clear ADRDY just after it's been set by hardware. Fixes: 95e339b6e85d ("iio: adc: stm32: add support for STM32H7") Signed-off-by: Fabrice Gasnier Cc: Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/iio/adc/stm32-adc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/iio/adc/stm32-adc.c +++ b/drivers/iio/adc/stm32-adc.c @@ -765,8 +765,6 @@ static int stm32h7_adc_enable(struct stm int ret; u32 val; - /* Clear ADRDY by writing one, then enable ADC */ - stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY); stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN); /* Poll for ADRDY to be set (after adc startup time) */ @@ -774,8 +772,11 @@ static int stm32h7_adc_enable(struct stm val & STM32H7_ADRDY, 100, STM32_ADC_TIMEOUT_US); if (ret) { - stm32_adc_clr_bits(adc, STM32H7_ADC_CR, STM32H7_ADEN); + stm32_adc_set_bits(adc, STM32H7_ADC_CR, STM32H7_ADDIS); dev_err(&indio_dev->dev, "Failed to enable ADC\n"); + } else { + /* Clear ADRDY by writing one */ + stm32_adc_set_bits(adc, STM32H7_ADC_ISR, STM32H7_ADRDY); } return ret;