From patchwork Mon Mar 29 15:40:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Annaliese McDermond X-Patchwork-Id: 411120 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=-14.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, PDS_BAD_THREAD_QP_64, SPF_HELO_NONE, SPF_PASS 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 2F095C433DB for ; Mon, 29 Mar 2021 15:41:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E2E5061970 for ; Mon, 29 Mar 2021 15:41:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231465AbhC2PlH (ORCPT ); Mon, 29 Mar 2021 11:41:07 -0400 Received: from a27-85.smtp-out.us-west-2.amazonses.com ([54.240.27.85]:50947 "EHLO a27-85.smtp-out.us-west-2.amazonses.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230167AbhC2Pki (ORCPT ); Mon, 29 Mar 2021 11:40:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=zzmz6pik4loqlrvo6grmnyszsx3fszus; d=nh6z.net; t=1617032436; h=Subject:From:To:Cc:Date:Mime-Version:Content-Type:Content-Transfer-Encoding:References:Message-Id; bh=cJTRSqc4BP2jIQ52BQB6Hzmg9RUU74TP2jKEZ10q4nk=; b=A+NUQafxahAFEwz5mV+E6rS+JcfEEolzziP19MuiBQXe8jkNWyhztQ+EWCaP9zGe C0mZWx0PgZJKzDqElZ21iFLIC4Wrs7jaYckEX0aHvb35SRGyCUXDdAWtZA6AStRtB3E x0JP1XhVTlU+f22emS64u80AEC0xfQXxxAzZMN9o= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=7v7vs6w47njt4pimodk5mmttbegzsi6n; d=amazonses.com; t=1617032436; h=Subject:From:To:Cc:Date:Mime-Version:Content-Type:Content-Transfer-Encoding:References:Message-Id:Feedback-ID; bh=cJTRSqc4BP2jIQ52BQB6Hzmg9RUU74TP2jKEZ10q4nk=; b=fmrix/obMD7642qeiRlM131vaKDaq9lmI59lUQi+jPwlEI8O1Sy66zeAFhKD5Tvn XtpxZ6UvZxs7FDmTlhoQxoLGPmhqYEjEgE1KeSBFJsljnF7WguH/uIcmEyqWV4zTMGb obD/rCj9Fm5w3FPWo4W9kE09NVnDNxlJiSDL9h8o= Subject: [PATCH] sc16is7xx: Defer probe if device read fails From: =?utf-8?q?Annaliese_McDermond?= To: =?utf-8?q?linux-serial=40vger=2Ekernel=2Eorg?= Cc: =?utf-8?q?Annaliese_McDermond?= , =?utf-8?q?team=40nwdigitalradio=2Ecom?= , =?utf-8?q?stable=40vger=2Ekernel=2Eorg?= Date: Mon, 29 Mar 2021 15:40:35 +0000 Mime-Version: 1.0 References: <20210329154013.408967-1-nh6z@nh6z.net> X-Mailer: Amazon WorkMail Thread-Index: AQHXJLHb+f11tj/5RVCWuJdkpEj6bA== Thread-Topic: [PATCH] sc16is7xx: Defer probe if device read fails X-Original-Mailer: git-send-email 2.27.0 X-Wm-Sent-Timestamp: 1617032435 Message-ID: <010101787ea4d8c4-08608e8d-9755-4a88-9908-af95233a4f8e-000000@us-west-2.amazonses.com> X-SES-Outgoing: 2021.03.29-54.240.27.85 Feedback-ID: 1.us-west-2.An468LAV0jCjQDrDLvlZjeAthld7qrhZr+vow8irkvU=:AmazonSES Precedence: bulk List-ID: X-Mailing-List: linux-serial@vger.kernel.org A test was added to the probe function to ensure the device was actually connected and working before successfully completing a probe. If the device was actually there, but the I2C bus was not ready yet for whatever reason, the probe fails permanently. Change the probe so that we defer the probe on a regmap read failure so that we try the probe again when the dependent drivers are potentially loaded. This should not affect the case where the device truly isn't present because the probe will never successfully complete. Fixes: 2aa916e ("sc16is7xx: Read the LSR register for basic device presence check") Cc: stable@vger.kernel.org Signed-off-by: Annaliese McDermond --- drivers/tty/serial/sc16is7xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.27.0 diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index f86ec2d2635b..9adb8362578c 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -1196,7 +1196,7 @@ static int sc16is7xx_probe(struct device *dev, ret = regmap_read(regmap, SC16IS7XX_LSR_REG << SC16IS7XX_REG_SHIFT, &val); if (ret < 0) - return ret; + return -EPROBE_DEFER; /* Alloc port structure */ s = devm_kzalloc(dev, struct_size(s, p, devtype->nr_uart), GFP_KERNEL);