From patchwork Mon Jan 29 12:57:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 126163 Delivered-To: patch@linaro.org Received: by 10.46.84.92 with SMTP id y28csp2414632ljd; Mon, 29 Jan 2018 04:57:28 -0800 (PST) X-Google-Smtp-Source: AH8x225D/yrdnHyy+Tq6eDloDG3yn8hm53t6niKjh9CxMZRrQZrSqnXwV6Yt4v20KashwQHMy/VZ X-Received: by 10.80.135.8 with SMTP id i8mr45616792edb.233.1517230648491; Mon, 29 Jan 2018 04:57:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517230648; cv=none; d=google.com; s=arc-20160816; b=WR8LDwIg45+J+ozLexGYjmXvAdA0AQMYqngCuP4vNY/bKMn/OP2k+msl2GF60b51Lb 51jrwj7KQ9fRhf0u+3rI+FL8UOfcLrKRwP0bnegTbMoSxEZSRwzd/l/9NaFZU3vIrR1i 7JBKfglSo3+2QssetltXg3JhuKJJ5y+zHZBMYQJYZhsKq3CCpI5/1gPH1n8mFesMDeYw 6nlo1eDOBdZlLhMHRs+VUfpXsoOIjCuHHDM/JS0pdoGEiqMlQvAd2O1R8RcJ6O+SZwDL EOMbnf/4b8iU5U2/eOaerbOmXE4GSgBk8ru2nNukU6/bIdoIT8ZGbeMcsRQ15WvPQah4 2liw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:cc:message-id:date:to:from :arc-authentication-results; bh=eYMeEIfYGdw7i61BiUoraCGcrDYAmDzyChMYhNIFfa8=; b=o80uXcgsBWuV/tGtvS97VHOblD9bzHOncHuJrLZbk6snMOsTMiaGtfWGgUssy8d38E q1X1JL+60JcUA1PapgrObDPrEV9AMAlOQ8KDZq9vtpZ6cLsmc4f/QFWTLbfNTkHdHMF/ 5kwtF4upSSqP3eOpnIm3+ydFjpxFs9uzXhgsUZVf5l39KHkLhth6tcK+o9CgvXTGoJIo dCw72XbeRUUu7ZWQIdv9PaZR5w6VjUUdw0AAxek8jEgIxYxS85iZ5V19J0trakriz5cM 2q16ha3iQirLffpn4yUAF4NoOHkiI8U9zz4gOhtWQchXNDuPQpOw85zEabrFi084xblW zDeA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id o64si772827edb.296.2018.01.29.04.57.28; Mon, 29 Jan 2018 04:57:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) client-ip=81.169.180.215; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by lists.denx.de (Postfix, from userid 105) id F14FEC21F1A; Mon, 29 Jan 2018 12:57:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_DNSWL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C4EC6C21E44; Mon, 29 Jan 2018 12:57:24 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C405BC21E44; Mon, 29 Jan 2018 12:57:23 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id B935CC21C2F for ; Mon, 29 Jan 2018 12:57:22 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C2C9AAAAD; Mon, 29 Jan 2018 12:57:21 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Mon, 29 Jan 2018 13:57:20 +0100 Message-Id: <20180129125720.32470-1-agraf@suse.de> X-Mailer: git-send-email 2.12.3 Cc: Tom Rini Subject: [U-Boot] [PATCH] serial: Make full device search optional X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Commit 608b0c4ad4e5ec0c ("serial: Use next serial device if probing fails") added code to search for more serial devices if the default one was not probed correctly. Unfortunately, that breaks omap3_evm. So while investigating why that is the case, let's disable the full search for everyone but bcm283x where it is needed. Fixes: 608b0c4ad4e5ec0c ("serial: Use next serial device if probing fails") Reported-by: Derald D. Woods Signed-off-by: Alexander Graf Reported-by: Derald D. Woods Signed-off-by: Alexander Graf --- Derald, could you please test this patch and verify it does indeed unbreak omap3_evm? Thanks! --- arch/arm/Kconfig | 1 + drivers/serial/Kconfig | 12 ++++++++++++ drivers/serial/serial-uclass.c | 13 +++++++++++++ 3 files changed, 26 insertions(+) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 30a6f6dc53..a423aa9629 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -550,6 +550,7 @@ config ARCH_BCM283X select DM_GPIO select OF_CONTROL select PL01X_SERIAL + select SERIAL_SEARCH_ALL imply FAT_WRITE config TARGET_VEXPRESS_CA15_TC2 diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 3ffedba525..93e602e0ee 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -79,6 +79,18 @@ config SERIAL_RX_BUFFER_SIZE help The size of the RX buffer (needs to be power of 2) +config SERIAL_SEARCH_ALL + bool "Search for serial devices after default one failed" + depends on DM_SERIAL + help + The serial subsystem only searches for a single serial device + that was instantiated, but does not check whether it was probed + correctly. With this option set, we make successful probing + mandatory and search for fallback serial devices if the default + device does not work. + + If unsure, say N. + config SPL_DM_SERIAL bool "Enable Driver Model for serial drivers in SPL" depends on DM_SERIAL diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 68ca2d09d1..9891c20656 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -74,7 +74,9 @@ static void serial_find_console_or_panic(void) { const void *blob = gd->fdt_blob; struct udevice *dev; +#ifdef CONFIG_SERIAL_SEARCH_ALL int ret; +#endif if (CONFIG_IS_ENABLED(OF_PLATDATA)) { uclass_first_device(UCLASS_SERIAL, &dev); @@ -113,6 +115,8 @@ static void serial_find_console_or_panic(void) #else #define INDEX 0 #endif + +#ifdef CONFIG_SERIAL_SEARCH_ALL if (!uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) || !uclass_get_device(UCLASS_SERIAL, INDEX, &dev)) { if (dev->flags & DM_FLAG_ACTIVATED) { @@ -131,6 +135,15 @@ static void serial_find_console_or_panic(void) return; } } +#else + if (!uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) || + !uclass_get_device(UCLASS_SERIAL, INDEX, &dev) || + (!uclass_first_device(UCLASS_SERIAL, &dev) && dev)) { + gd->cur_serial_dev = dev; + return; + } +#endif + #undef INDEX }