Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3809950ybl; Mon, 26 Aug 2019 00:31:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqwzF35zxZZgCZCSt340yX1gevsLvbGRaQRT3s4HR/71YjImmY9J2r1bX/EbJx/nH8EoAe3C X-Received: by 2002:a17:902:834c:: with SMTP id z12mr17597419pln.8.1566804694067; Mon, 26 Aug 2019 00:31:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566804694; cv=none; d=google.com; s=arc-20160816; b=nCPaHoVV4lQr2NwMwkuOVaxrUYIxK0Ugpxu/I/BELE290ZOc8EDcQfMxzsLKkaMyCa /RvEU7gUf6rNDtQfTzZqoTWk3kwX4gEiUNGU6nNButiHnI21T4S18uWs10rHBpCTGBh1 el6wmTzS69S5xvWyM/Kcl/onEDGoLq4NSffic5InGSIObE8Gslm85ND62ErKYye9clu6 /vS4gGth5AYOAy+x+9BVwav4zYHiEqCMDBsH9PSZfSDah+VyU5478jOJ+6N+z7OteP01 pxEiogZ/h+nXXsHwrVVSxJWo6QVJTk8OlthSyUF+V3Vv2c2eYv4VsHomUkfM4kuLzX/l lRjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kiqMdthucN5qlDDkHZdYC3nWxz2rbgAlylxLZ3Dr+rY=; b=fBsj3zsIQe3+/+S2hODydqw04HJWpBeVskXUBcxvMyZGzrwacGWRdnbs7zx5HQuYWR J18IuOGuBIBNOjVavdR6P9Z5Nkrsvg2GmbeEkzg2GG4QhmIc6n/b7wHxsjF+gGgnvBb7 io3VZHgFqTKeaBNeiUPIw5HSch1CFNqfhw1u28gLkmX/HR/87W4KHEgeBT3SEemtaTVA LEaIDvrfq0zRlZ2vpUgSsLgbYqVsXGcwgtEZb7NFRwYZo1zlXYRC2y03AezOuvcnr9/X mIBxci0lL0RFFP0UOH/nQyUgPzn106G7sPZ37moGryW3aHJScWDFufgngynGMRfW76TX NVvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="aNxvj/kS"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r139si9576651pfc.276.2019.08.26.00.31.18; Mon, 26 Aug 2019 00:31:34 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b="aNxvj/kS"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730147AbfHZH3x (ORCPT + 99 others); Mon, 26 Aug 2019 03:29:53 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:33866 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730134AbfHZH3x (ORCPT ); Mon, 26 Aug 2019 03:29:53 -0400 Received: by mail-pg1-f193.google.com with SMTP id n9so10077390pgc.1; Mon, 26 Aug 2019 00:29:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kiqMdthucN5qlDDkHZdYC3nWxz2rbgAlylxLZ3Dr+rY=; b=aNxvj/kSIiyExBL7CtlLVJRWgoo7J/Qfzip24Dk2Z3Pwdl/chitwuAmnVuqezO1CRK aJnamMjJtAscSP8h1qCzqP8NxNF6/Z3q57QSeU/w4yjY8IrQ+OQ+nfCNxbPbQlhVs8zK 9QnIV36qOB4NDj1LVHc91QbvE3lAcfWHJvkfEbWRXsAenrF4lWu3+S8AWpuaDYQ0BkMt itr86HuqdgC9HhyBMbRUZEHCo90Cn6fyPDHqPq7cK0nE/oyBguj9VBfmDFO44G7DUQf7 MvPV76WUMxm95Fx+xIySlBa2KUGXyfqeNwGf1YtYmJzli+AESaA1LGhtawhpacr7uMU5 aOVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kiqMdthucN5qlDDkHZdYC3nWxz2rbgAlylxLZ3Dr+rY=; b=c52Zb8PcG2KNW2V1eb4oJ1mhDJDgxxpd3yjUnwxNmPcLvT9yKy8eYuFeOuv+Oz9jvX pBeotnRhtLXB5R8Cp9lF84bPYxsw9bDEMclxiS/0WjERRDfum2L0wYCHw1PL7/pikY2b V4mNqwT2FJQABXOMTgvkT4nJWhdJkKBvmAO5B1vQsRzPkwenMgsVr2ma4+w29wyQUC9l hHfRZvMvT1RKGzvRo/Cl/J/4PFbAdYb/1yTIUItEmliw3o38SGJufXh97U15gputwKv2 KDy2LwiBmQBxCMcKEfPA7pOR+HgDjgT4puETtwpFp23Kqd+zdTYznBUMfiO4ZQ1npPZx CnMQ== X-Gm-Message-State: APjAAAXV6iwGPnBAPPXp3S3t55D//Z+D7cTYkzOocHF6/XGiHzZ9VZgu VexuLhqLlHNyrE0e1rfAw4U= X-Received: by 2002:aa7:851a:: with SMTP id v26mr18339469pfn.238.1566804592041; Mon, 26 Aug 2019 00:29:52 -0700 (PDT) Received: from ubt.spreadtrum.com ([117.18.48.82]) by smtp.gmail.com with ESMTPSA id p90sm11195670pjp.7.2019.08.26.00.29.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Aug 2019 00:29:51 -0700 (PDT) From: Chunyan Zhang To: Greg Kroah-Hartman , Jiri Slaby , Orson Zhai , Baolin Wang Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Chunyan Zhang Subject: [PATCH 3/3] serial: sprd: keep console alive even if missing the 'enable' clock Date: Mon, 26 Aug 2019 15:29:29 +0800 Message-Id: <20190826072929.7696-4-zhang.lyra@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190826072929.7696-1-zhang.lyra@gmail.com> References: <20190826072929.7696-1-zhang.lyra@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chunyan Zhang The sprd serial console can work with only 26M fixed clock, but the probe() is returning fail if the clock "enable" is not configured in device tree. This patch will fix the problem to let the uart device which is used for console can be initialized even missing "enable" clock configured in devicetree. We should make sure the debug function as available as we can. Signed-off-by: Chunyan Zhang Signed-off-by: Chunyan Zhang --- drivers/tty/serial/sprd_serial.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c index aead823c650b..c4d8c77c1261 100644 --- a/drivers/tty/serial/sprd_serial.c +++ b/drivers/tty/serial/sprd_serial.c @@ -1103,6 +1103,16 @@ static int sprd_remove(struct platform_device *dev) return 0; } +static bool sprd_uart_is_console(struct uart_port *uport) +{ + struct console *cons = sprd_uart_driver.cons; + + if (cons && cons->index >= 0 && cons->index == uport->line) + return true; + + return false; +} + static int sprd_clk_init(struct uart_port *uport) { struct clk *clk_uart, *clk_parent; @@ -1129,10 +1139,17 @@ static int sprd_clk_init(struct uart_port *uport) u->clk = devm_clk_get(uport->dev, "enable"); if (IS_ERR(u->clk)) { - if (PTR_ERR(u->clk) != -EPROBE_DEFER) - dev_err(uport->dev, "uart%d can't get enable clock\n", - uport->line); - return PTR_ERR(u->clk); + if (PTR_ERR(u->clk) == -EPROBE_DEFER) + return -EPROBE_DEFER; + + dev_warn(uport->dev, "uart%d can't get enable clock\n", + uport->line); + + /* To keep console alive even if the error occurred */ + if (!sprd_uart_is_console(uport)) + return PTR_ERR(u->clk); + + u->clk = NULL; } return 0; -- 2.20.1