From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F332BC4360C for ; Wed, 16 Oct 2019 10:23:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CD61120650 for ; Wed, 16 Oct 2019 10:23:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392261AbfJPKXm (ORCPT ); Wed, 16 Oct 2019 06:23:42 -0400 Received: from relay10.mail.gandi.net ([217.70.178.230]:35599 "EHLO relay10.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388923AbfJPKXm (ORCPT ); Wed, 16 Oct 2019 06:23:42 -0400 Received: from uno.localdomain (2-224-242-101.ip172.fastwebnet.it [2.224.242.101]) (Authenticated sender: jacopo@jmondi.org) by relay10.mail.gandi.net (Postfix) with ESMTPSA id CAB1124000F; Wed, 16 Oct 2019 10:23:39 +0000 (UTC) From: Jacopo Mondi To: geert+renesas@glider.be Cc: Jacopo Mondi , linux-iio@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] iio: adc: max9611: Defer probe on POR read Date: Wed, 16 Oct 2019 12:25:20 +0200 Message-Id: <20191016102520.124370-1-jacopo+renesas@jmondi.org> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The max9611 driver tests communications with the chip by reading the die temperature during the probe function. If the temperature register POR (power-on reset) value is returned from the test read, defer probe to give the chip a bit more time to properly exit from reset. Reported-by: Geert Uytterhoeven Signed-off-by: Jacopo Mondi --- Geert, I've not been able to reproduce the issue on my boards (M3-N Salvator-XS and M3-W Salvator-X). As you reported the issue you might be able to reproduce it, could you please test this? Also, I opted for deferring probe instead of arbitrary repeat the temperature read. What's your opinion? Thanks j --- drivers/iio/adc/max9611.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/iio/adc/max9611.c b/drivers/iio/adc/max9611.c index da073d72f649..30ae5879252c 100644 --- a/drivers/iio/adc/max9611.c +++ b/drivers/iio/adc/max9611.c @@ -80,6 +80,7 @@ * The complete formula to calculate temperature is: * ((adc_read >> 7) * 1000) / (1 / 480 * 1000) */ +#define MAX9611_TEMP_POR 0x8000 #define MAX9611_TEMP_MAX_POS 0x7f80 #define MAX9611_TEMP_MAX_NEG 0xff80 #define MAX9611_TEMP_MIN_NEG 0xd980 @@ -480,8 +481,10 @@ static int max9611_init(struct max9611_dev *max9611) if (ret) return ret; - regval &= MAX9611_TEMP_MASK; + if (regval == MAX9611_TEMP_POR) + return -EPROBE_DEFER; + regval &= MAX9611_TEMP_MASK; if ((regval > MAX9611_TEMP_MAX_POS && regval < MAX9611_TEMP_MIN_NEG) || regval > MAX9611_TEMP_MAX_NEG) { -- 2.23.0