From patchwork Thu Jan 25 11:05:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 125808 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1038166ljf; Thu, 25 Jan 2018 03:13:41 -0800 (PST) X-Google-Smtp-Source: AH8x224tXZUYZSmlfs3Y5TORJ6dvGwVyMD34AvPHsbioJjEz1o5S6ULJZus94N9V2yFTVshAtmpE X-Received: by 10.80.157.73 with SMTP id j9mr28306597edk.200.1516878821107; Thu, 25 Jan 2018 03:13:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516878821; cv=none; d=google.com; s=arc-20160816; b=oEisWxwBJ4JI68WIgPxQjDEnpOqlyHI6ow38dND1t0atuces/DKkgEm1CVBQLAQ5Sq MwRvyBmpUj3qaip+2k/xATi3nxxUG9HS3SY6gAdi57EXqOg0ONA6pI2k5ZVQ4vnhfU0l 8zw0cflwgdZUE9fz7HwLp+wGlBIo+8L4/ejoXRnqyRZeRvL7wiVBF27eBIK23/ZRrPDO yHU4chDR2Pay2wAIkSomasLPIaqhZQG7LL5M0WYAYP6O5NSoBHvVuRe0qasQwRHUbI23 trjBtVyDVFoDU2rx7z98RnUTV00M+wgZsO6ZqKJ38r0jJwGI/zmgXKwoxTekG3Pl3QI9 yf3w== 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:references:in-reply-to:message-id :date:to:from:arc-authentication-results; bh=0mJNr7oArJU/hVndg7HgYMLFes8EYPkMIHDoeGff+dw=; b=j3m4n/8vCQdqCrg8cYlRqmQRMt3hp9ndN0zBME2W1zS8wObmWzE17sIptt0s9r72et q5ce3zV9tR6Doi3gyZeI2zRiKhxd94GFRVpA74+EQh2liIZp/bDXMbgChy5Uhvb57D69 +5/8gBVDbh5bTSNq3sUHdI0rVGAxOe0GUcC8ZlIeseyIH5B/ku2cH9xX7FZQb+5/BVZQ JJgA4SX2CjSt7toNpwDfW1gmL8NJAl8/R5ERL8xdLS+qQjr1cosTlojeosB/EBXXkYes 50Js32GFefMtOex8yddrQW8X0XaKRMICtbYDiym4Tlr96LSjqEtxTbomV2xapE7qUYIX TOHQ== 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 w13si581189edc.97.2018.01.25.03.13.40; Thu, 25 Jan 2018 03:13:41 -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 94E45C2240D; Thu, 25 Jan 2018 11:10:33 +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=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED 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 94D8EC22403; Thu, 25 Jan 2018 11:10:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8861CC223FC; Thu, 25 Jan 2018 11:05:58 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id BCECEC223F9 for ; Thu, 25 Jan 2018 11:05:57 +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 42EC7ACE0; Thu, 25 Jan 2018 11:05:57 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Thu, 25 Jan 2018 12:05:42 +0100 Message-Id: <20180125110556.76352-2-agraf@suse.de> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20180125110556.76352-1-agraf@suse.de> References: <20180125110556.76352-1-agraf@suse.de> Cc: Tom Rini Subject: [U-Boot] [PATCH v3 01/15] serial: Use next serial device if probing fails 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" Currently our serial device search chokes on the fact that the serial probe function could fail. If it does, instead of searching for the next usable serial device, it just quits. This patch changes the fallback logic so that even when a serial device was not probed correctly, we just try the next ones until we find one that works. Signed-off-by: Alexander Graf Reviewed-by: Simon Glass --- v1 -> v2: - Make search logic easier to follow --- drivers/serial/serial-uclass.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 2e5116f7ce..68ca2d09d1 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -74,6 +74,7 @@ static void serial_find_console_or_panic(void) { const void *blob = gd->fdt_blob; struct udevice *dev; + int ret; if (CONFIG_IS_ENABLED(OF_PLATDATA)) { uclass_first_device(UCLASS_SERIAL, &dev); @@ -104,8 +105,8 @@ static void serial_find_console_or_panic(void) * from 1!). * * Failing that, get the device with sequence number 0, or in - * extremis just the first serial device we can find. But we - * insist on having a console (even if it is silent). + * extremis just the first working serial device we can find. + * But we insist on having a console (even if it is silent). */ #ifdef CONFIG_CONS_INDEX #define INDEX (CONFIG_CONS_INDEX - 1) @@ -113,10 +114,22 @@ static void serial_find_console_or_panic(void) #define INDEX 0 #endif 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; + !uclass_get_device(UCLASS_SERIAL, INDEX, &dev)) { + if (dev->flags & DM_FLAG_ACTIVATED) { + gd->cur_serial_dev = dev; + return; + } + } + + /* Search for any working device */ + for (ret = uclass_first_device_check(UCLASS_SERIAL, &dev); + dev; + ret = uclass_next_device_check(&dev)) { + if (!ret) { + /* Device did succeed probing */ + gd->cur_serial_dev = dev; + return; + } } #undef INDEX }