Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2952874imu; Mon, 19 Nov 2018 08:32:51 -0800 (PST) X-Google-Smtp-Source: AJdET5fsj98Woit61hEpWuXtsF8+IZm2fBkF8SWrV/UsQKz7vvmvZNWUZWtYpgL9v6DGUZqbTG3j X-Received: by 2002:a17:902:8648:: with SMTP id y8-v6mr23089776plt.159.1542645171226; Mon, 19 Nov 2018 08:32:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542645171; cv=none; d=google.com; s=arc-20160816; b=P3j76jtaQO6adGWY3LWemim/hzmXWNxl1duerptitdeVOTl/zs85jt4y8EDDohwclB Zqoki/ditimVrnC6T7BQD/ZQEqU26QdTwRsy4KiY0KW4lT9uDp4+m+YSY9n50u0B1LvG gz1HBoQSGBuHmUgPf+M5qbBILVUQokdwe+mONqF830FsiARLrp5Mw6b0KlL8VDr0cNmU gPxxh/uCTLgzU4cBCTpwJo38R9covT7n+ZFr/m5j2GESQ4EptkzoLHVhuaWRBRI+iMEU SLrOk2qGq0RlCYKdknOIo1noYNZK0GZvdBSULDEfMQe6vF/tSeG4AFYKRiV6yOLpGIpQ gdlg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=98QxdzBBwZtAbZlZG6Uec8+QRYaMYYAuPEiKZl8eG0k=; b=Nml2SUdozPWRaPfY42TXQZsg0fluMhYEVYliNhrqm+iCRYpWyUSWrb4Uqq9zvQKhMh MLdiBNRyouaAIDAcAGsysNz01Kgm5KoGMJd6mdyIagbWbOV7e1wObb9toph0sHB5Pbu1 E7axDXXA+dh1/GxWuFF49xKPkXVZZaS7bc1O1a9v8HG3LV3nzbMZyjKKrYG1S0fY0Ves jg67Z7tA4yaA6HSNM6NXjTyhwhVZsT2yhd2gALX0XbU+j2dROwPN/qaw0rceh5UhDNsS iou38YVHVYIBBe/19hMnBNBlPyqB3LtXNQgu1azhdk3FGvzUwLkHxvmu8bEQVvAU0mid FEGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=G+oxwboP; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r71-v6si21238973pfc.253.2018.11.19.08.32.35; Mon, 19 Nov 2018 08:32:51 -0800 (PST) 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=@kernel.org header.s=default header.b=G+oxwboP; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730406AbeKTCzb (ORCPT + 99 others); Mon, 19 Nov 2018 21:55:31 -0500 Received: from mail.kernel.org ([198.145.29.99]:53200 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730385AbeKTCza (ORCPT ); Mon, 19 Nov 2018 21:55:30 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BC77B20870; Mon, 19 Nov 2018 16:31:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542645083; bh=Drhxn7nZtRioL17ea7l2qG6z1FOxamIySG7rrBr+SI4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G+oxwboPZqK+krBElbXQ07mjoJBfrdiwUZ/ty5RzGedPIxQYuDKDXq0TbbvTdPicB QvF9qlTFo1wwPacFg6GZknBRiqICqfE2jNCYWuNgKvHXv9qUx1oBfH3/zWIZmTv+Rf W3jMlCj2a9jIpjkXWygSwH0q1Z7Kad786S4fQHvg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, John Garry , Rob Herring , Alexander Sverdlin , Sasha Levin Subject: [PATCH 4.19 030/205] serial: 8250_of: Fix for lack of interrupt support Date: Mon, 19 Nov 2018 17:25:37 +0100 Message-Id: <20181119162622.955653931@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162616.586062722@linuxfoundation.org> References: <20181119162616.586062722@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: John Garry [ Upstream commit a27d938251ef40c43db81af16fc26b2cec181d4d ] In commit c58caaab3bf8 ("serial: 8250: of: Defer probe on missing IRQ"), a check was added for the UART driver being probed prior to the parent IRQ controller. Unfortunately this breaks certain boards which have no interrupt support, like Huawei D03. Indeed, the 8250 DT bindings state that interrupts should be supported - not must. To fix, switch from irq_of_parse_and_map() to of_irq_get(), which does relay whether the IRQ host controller domain is not ready, i.e. defer probe, instead of assuming it. Fixes: c58caaab3bf8 ("serial: 8250: of: Defer probe on missing IRQ") Signed-off-by: John Garry Reviewed-by: Rob Herring Reviewed-by: Alexander Sverdlin Tested-by: Alexander Sverdlin Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/8250/8250_of.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) --- a/drivers/tty/serial/8250/8250_of.c +++ b/drivers/tty/serial/8250/8250_of.c @@ -58,7 +58,7 @@ static int of_platform_serial_setup(stru struct resource resource; struct device_node *np = ofdev->dev.of_node; u32 clk, spd, prop; - int ret; + int ret, irq; memset(port, 0, sizeof *port); @@ -143,21 +143,27 @@ static int of_platform_serial_setup(stru if (ret >= 0) port->line = ret; - port->irq = irq_of_parse_and_map(np, 0); - if (!port->irq) { - ret = -EPROBE_DEFER; - goto err_unprepare; + irq = of_irq_get(np, 0); + if (irq < 0) { + if (irq == -EPROBE_DEFER) { + ret = -EPROBE_DEFER; + goto err_unprepare; + } + /* IRQ support not mandatory */ + irq = 0; } + port->irq = irq; + info->rst = devm_reset_control_get_optional_shared(&ofdev->dev, NULL); if (IS_ERR(info->rst)) { ret = PTR_ERR(info->rst); - goto err_dispose; + goto err_unprepare; } ret = reset_control_deassert(info->rst); if (ret) - goto err_dispose; + goto err_unprepare; port->type = type; port->uartclk = clk; @@ -184,8 +190,6 @@ static int of_platform_serial_setup(stru port->handle_irq = fsl8250_handle_irq; return 0; -err_dispose: - irq_dispose_mapping(port->irq); err_unprepare: clk_disable_unprepare(info->clk); err_pmruntime: