From patchwork Wed Jan 25 20:23:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Herring X-Patchwork-Id: 92476 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp2384593qgi; Wed, 25 Jan 2017 12:24:13 -0800 (PST) X-Received: by 10.84.215.15 with SMTP id k15mr6225753pli.58.1485375853201; Wed, 25 Jan 2017 12:24:13 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i61si2608601plb.162.2017.01.25.12.24.12; Wed, 25 Jan 2017 12:24:13 -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; 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 S1752216AbdAYUYA (ORCPT + 25 others); Wed, 25 Jan 2017 15:24:00 -0500 Received: from mail-oi0-f65.google.com ([209.85.218.65]:34999 "EHLO mail-oi0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752186AbdAYUX5 (ORCPT ); Wed, 25 Jan 2017 15:23:57 -0500 Received: by mail-oi0-f65.google.com with SMTP id x84so16491291oix.2; Wed, 25 Jan 2017 12:23:57 -0800 (PST) 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; bh=c/vncfW2ZJx8pub+EjztxEzaQWPU6Vq1EdWQbYABJEs=; b=rcvNjODJ3zdmn452qCMTRw4WQYuMvRN4DTqrndsXfFzLvIebPlUvmSSGYkCq4Y08vf 38/rcgqFtbU7j8Gj2i6/kyUhEeWlhZIwqGbcg6F8nKtbaOcMOf1xzKHG7I+6Q5f2dfkw FGly67LgMEPhRbkcLL5EJYD0nt/J5qIzZlT56qtzLEmpFbCbwWE/5RoPZr3lfnZ2h95g Z6jqX/ZdLmaq81blMbQ0FLCZsrBjTQOu3vGhP1oot6r7e1nwH+qcEaGCIqZxMpqR2bSM qckGZ2D0o3vBfnhgiQUYsOSCzCpqGCBMMn79lDdIUfEdDb2lmBxGOVrE81v3E4nDwEPF FOTA== X-Gm-Message-State: AIkVDXLxuPKD+m3IUhsG1jKR5YzWdw3oeJ0EWVZtLyGxd9VEJ9rybyujRQMChUOOC/z8Zw== X-Received: by 10.202.244.19 with SMTP id s19mr21144998oih.24.1485375831731; Wed, 25 Jan 2017 12:23:51 -0800 (PST) Received: from rob-hp-laptop.herring.priv (72-48-98-129.dyn.grandenetworks.net. [72.48.98.129]) by smtp.googlemail.com with ESMTPSA id v31sm680721ota.26.2017.01.25.12.23.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Jan 2017 12:23:51 -0800 (PST) From: Rob Herring To: Greg Kroah-Hartman , Marcel Holtmann , Jiri Slaby , Sebastian Reichel , Arnd Bergmann , "Dr . H . Nikolaus Schaller" , Peter Hurley , Andy Shevchenko , Alan Cox Cc: Loic Poulain , Pavel Machek , NeilBrown , Linus Walleij , linux-bluetooth@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/5] tty_port: register tty ports with serdev bus Date: Wed, 25 Jan 2017 14:23:43 -0600 Message-Id: <20170125202343.30923-6-robh@kernel.org> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20170125202343.30923-1-robh@kernel.org> References: <20170125202343.30923-1-robh@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Register a serdev controller with the serdev bus when a tty_port is registered. This creates the serdev controller and create's serdev devices for any DT child nodes of the tty_port's parent (i.e. the UART device). Signed-off-by: Rob Herring Reviewed-By: Sebastian Reichel --- v3: - no change v2: - Skip creating the tty device file node when serdev_tty_port_register finds slave devices. drivers/tty/tty_port.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.10.1 diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c index 8d9886b06037..5cd3cd932293 100644 --- a/drivers/tty/tty_port.c +++ b/drivers/tty/tty_port.c @@ -16,6 +16,7 @@ #include #include #include +#include static int tty_port_default_receive_buf(struct tty_port *port, const unsigned char *p, @@ -128,7 +129,15 @@ struct device *tty_port_register_device_attr(struct tty_port *port, struct device *device, void *drvdata, const struct attribute_group **attr_grp) { + struct device *dev; + tty_port_link_device(port, driver, index); + + dev = serdev_tty_port_register(port, device, driver, index); + if (PTR_ERR(dev) != -ENODEV) + /* Skip creating cdev if we registered a serdev device */ + return dev; + return tty_register_device_attr(driver, index, device, drvdata, attr_grp); } @@ -180,6 +189,9 @@ static void tty_port_destructor(struct kref *kref) /* check if last port ref was dropped before tty release */ if (WARN_ON(port->itty)) return; + + serdev_tty_port_unregister(port); + if (port->xmit_buf) free_page((unsigned long)port->xmit_buf); tty_port_destroy(port);