Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp493075ybh; Wed, 18 Mar 2020 03:53:19 -0700 (PDT) X-Google-Smtp-Source: ADFU+vudYUph+WZ+o8xpdxYpHjQzrDAYl5cliM0j22O4HA8hxl4yQ8ycDMeMjD1GKfyLJW/pWAom X-Received: by 2002:aca:488a:: with SMTP id v132mr2666177oia.166.1584528799099; Wed, 18 Mar 2020 03:53:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584528799; cv=none; d=google.com; s=arc-20160816; b=QStKtGAgzbjtOUst2dxQlv3BzyTfOq1QnjdXhKrLNN7xj6oOkR7ofEo78QK0vzDi7N KavAPjjLYlt6bPD6gJaIVhekfIdpYy3C6z1kDvya7K9wr79RcUg3uwAIw1XegOAJOBG1 3p5KwRsMcgk5ZVt/FWs5AqW9ZkPltdrq6Cpeb7rYm+xEn5kSDZpcGuTZAP1NVmi6Yk3x eOSjKg0gI6NU76xl7v9wJeUJ+RJbHykapC6VEAOGFT1Oi0i/kx0GLlPMLmDjJPh2BEZd apzvQ1zm31wPyxDR/wiQ9Di0mNGzJUZtJAlQR3HJUvClHgNWBVA5K1r0qalpD5BRRZ3Q d4ng== 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=RFCqkk9G7v0hEiTj+pktV1iDnOwW2a7UQAQlvqLPDVI=; b=j/fd+2DmT1uC5uRT/6qGOF/kkFBvJd7mWOaR+Cdi4ul70hYfo6bKlxn4DYtThL8ERG NKKk3Ip/2YImCti5/z1FKg9wDr7LuzWSQIUAiYNzwWWiwtSdXdN5WcvZcy4ZJMuRp4nY sA8Q7iLo1qjpZRYBReOV7DODu5Hp5zRw6OQEHNiLkN3bd/o744+oXD8sxSqsL+zRudtb fv0P1qw4eMUDGZ/vTCMyZOznwrwyHB8hufBNwdcmoQECrE5ISrZgua2ePB00sV9vFLSi fAmcIOAS5glISnl2BWOHaPbZy3I30ZKPzgrZDNuEYnXreTz+4xW8WutwAVvu8/qQNgrb 8R2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=TafRyY03; 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 k1si3154062oic.245.2020.03.18.03.53.06; Wed, 18 Mar 2020 03:53:19 -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=TafRyY03; 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 S1727745AbgCRKv3 (ORCPT + 99 others); Wed, 18 Mar 2020 06:51:29 -0400 Received: from mail-pj1-f68.google.com ([209.85.216.68]:33285 "EHLO mail-pj1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726586AbgCRKv2 (ORCPT ); Wed, 18 Mar 2020 06:51:28 -0400 Received: by mail-pj1-f68.google.com with SMTP id dw20so1033559pjb.0; Wed, 18 Mar 2020 03:51:26 -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=RFCqkk9G7v0hEiTj+pktV1iDnOwW2a7UQAQlvqLPDVI=; b=TafRyY03ELWWWVZ9m7cQwqtr32Ip9+Mmqtu0CiPWy+Eb1USfP9ehbiONtHEpLsNbuj z0L7wF8g66vIEwSp7GZ/39o/yeY5kUfYQqOjongAVRvcu0aF6UwP8phnWQs+3rJhbVIq ZcdPNN3LcahD/tTdWynfVynrBcrPDY5rJEedxZmOwHBbz1OY67Rf6aRqb99XKbpA4+V0 l9REVIjfPboRdTdcMj5VOErADHk2VE/JlsbV1vyhFUul5Luv36UhZ4idOmb6kYmAYRE4 wTWoqQ8QJfNRNlPxsHiOje1dNoH1vc+OyLItfhUfCsQMKzsKVIYlTqsIjguENpOduwvI B9wg== 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=RFCqkk9G7v0hEiTj+pktV1iDnOwW2a7UQAQlvqLPDVI=; b=QQK8UEUnGMejf5c6gEEb9/vwC0+EhdJ40rT9UMmDH2QQkLpvt3xmvuObEw6wzWJuWa nVEGX6w17+MtAxqgyiH49CwXnE7PoYvf3fK2dXBkAiKZRIvhVwpwEJo0dobTjyGQLtSf aByPo+IWYn+0YmnFsjLui7OqvPCdmsZywA1iOal4NZ6ikwLhwCsNMr30Eap6nfaKs/jZ dICEDZUsa7g8o8rUQ7+7rIOWyPYy7USqYSeQw2VQeZDU3/mMInhJU/QEf7Qqv+XJP6ty UI6X1JuzIUNycmpdgPReRiX0p7/xPu6b2M8N0YBRVCT8i0b5sWW0FTW5QKZUkwo33N4y ReLA== X-Gm-Message-State: ANhLgQ1I73Dv+LZtti/m+wjl3ArxKPgZAJ85+wMhlavi2oOnIsgqa1+H DAvhc+WF2eSUmUlS5nduEITaGe9j X-Received: by 2002:a17:902:8e8b:: with SMTP id bg11mr3280325plb.138.1584528685593; Wed, 18 Mar 2020 03:51:25 -0700 (PDT) Received: from ubt.spreadtrum.com ([117.18.48.82]) by smtp.gmail.com with ESMTPSA id l25sm5799504pgn.47.2020.03.18.03.51.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2020 03:51:24 -0700 (PDT) From: Chunyan Zhang To: Greg Kroah-Hartman , Jiri Slaby Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Orson Zhai , Baolin Wang , Chunyan Zhang , Chunyan Zhang Subject: [PATCH v3 1/2] serial: sprd: getting port index via serial aliases only Date: Wed, 18 Mar 2020 18:50:48 +0800 Message-Id: <20200318105049.19623-2-zhang.lyra@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200318105049.19623-1-zhang.lyra@gmail.com> References: <20200318105049.19623-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 This patch simplifies the process of getting serial port number, with this patch, serial devices must have aliases configured in devicetree. The serial port searched out via sprd_port array maybe wrong if we don't have serial alias defined in devicetree, and specify console with command line, we would get the wrong port number if other serial ports probe failed before console's. So using aliases is mandatory. Signed-off-by: Chunyan Zhang --- drivers/tty/serial/sprd_serial.c | 36 +++++--------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c index 914862844790..e9d148d47bec 100644 --- a/drivers/tty/serial/sprd_serial.c +++ b/drivers/tty/serial/sprd_serial.c @@ -1102,29 +1102,6 @@ static struct uart_driver sprd_uart_driver = { .cons = SPRD_CONSOLE, }; -static int sprd_probe_dt_alias(int index, struct device *dev) -{ - struct device_node *np; - int ret = index; - - if (!IS_ENABLED(CONFIG_OF)) - return ret; - - np = dev->of_node; - if (!np) - return ret; - - ret = of_alias_get_id(np, "serial"); - if (ret < 0) - ret = index; - else if (ret >= ARRAY_SIZE(sprd_port) || sprd_port[ret] != NULL) { - dev_warn(dev, "requested serial port %d not available.\n", ret); - ret = index; - } - - return ret; -} - static int sprd_remove(struct platform_device *dev) { struct sprd_uart_port *sup = platform_get_drvdata(dev); @@ -1204,14 +1181,11 @@ static int sprd_probe(struct platform_device *pdev) int index; int ret; - for (index = 0; index < ARRAY_SIZE(sprd_port); index++) - if (sprd_port[index] == NULL) - break; - - if (index == ARRAY_SIZE(sprd_port)) - return -EBUSY; - - index = sprd_probe_dt_alias(index, &pdev->dev); + index = of_alias_get_id(pdev->dev.of_node, "serial"); + if (index < 0 || index >= ARRAY_SIZE(sprd_port)) { + dev_err(&pdev->dev, "got a wrong serial alias id %d\n", index); + return -EINVAL; + } sprd_port[index] = devm_kzalloc(&pdev->dev, sizeof(*sprd_port[index]), GFP_KERNEL); -- 2.20.1