Received: by 10.223.185.116 with SMTP id b49csp28700wrg; Tue, 20 Feb 2018 15:12:42 -0800 (PST) X-Google-Smtp-Source: AH8x226d6Qsl/2VJ8x3RZnWJrIzJsALsYotdygWr5KcPPWaNFRcpnFDZp0KqVcZFr4CmOXC3G2ne X-Received: by 2002:a17:902:684a:: with SMTP id f10-v6mr1166547pln.129.1519168362034; Tue, 20 Feb 2018 15:12:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519168361; cv=none; d=google.com; s=arc-20160816; b=tKKc99i8oXBVKj4zQAQ/6VQQYC0Cnm/wCoSZmJ+7FUZR1mLN+005I0DLYeEmKbgCiS 1CPFjk7E+em5QzC7sCNMl0mD0/7v4Zv/pVkQVhONtdJxf2sUNw0XeOPdeJwmJSXucQ8t Dtl3kubX+4g2nOPvg8vWPGIWxBEy3MfX5D+V8DcOUEO6WthWar7C43YJOLtWhmqEhTnP 8Kkguc/2HUvM9fcoP6KgXi1TnYDt4bBMI1oG0r303RRnXfFSFG7z66+iLNIRFd5xPC4k gM49+UNmetyTsVWEzPGDAmlbW6Kbv9QMf9f1MNYhohr3Z2k5SiTqkUc3evrOXwrHuvEK bAig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=0qVA6IQtMj8UHVbv2hlohu+ayro4n9t3Db2u7jHBSZk=; b=fh2zlH1kgNYohMW7C5h1vACg9oj1WPsJIqR9T+2UUPAvvGwXtBfj3rV9dexRFX3GD5 rMpOiB1vCSK0A7mjanM0CCFlaz0vaLYuKSjNRi+H0T2Il5KpF4lnWEsPshqFNN+sC9T9 Sb9nF1uH7hbOC9hq9T46gF3rHpE7hpoBTk0mEDBf02KFK9cgRYMqV+JAk2nJPuU9bXZ+ HXFdCDduMIULUjLE42APpJxAxuvVlktyTsmKS2a1GRLZ9hIw9Qt2l/Ohd/oxOPvw6eqO d4MdXLQ5FLtZ1a7IKw1hRsv/DWx2Fu5+sNnN2lklrCNLn896EMZSxKJa+koiuxEZj78r m61w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=L0vzHDiV; 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 i70si7317827pgc.264.2018.02.20.15.12.27; Tue, 20 Feb 2018 15:12:41 -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 (test mode) header.i=@ideasonboard.com header.s=mail header.b=L0vzHDiV; 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 S1751949AbeBTXLb (ORCPT + 99 others); Tue, 20 Feb 2018 18:11:31 -0500 Received: from galahad.ideasonboard.com ([185.26.127.97]:38076 "EHLO galahad.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751635AbeBTXKN (ORCPT ); Tue, 20 Feb 2018 18:10:13 -0500 Received: from avalon.bb.dnainternet.fi (dfj612ybrt5fhg77mgycy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:2e86:4862:ef6a:2804]) by galahad.ideasonboard.com (Postfix) with ESMTPSA id 611F7203A0; Wed, 21 Feb 2018 00:08:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1519168109; bh=M3kqK50mBV8c/qErOpsICASdEj6yXMeCm+8RzPVBYc8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L0vzHDiV0M0HNxAtyneXD8D9LRi125Rj0ZJtHbqFMC2KWjElbPVAvo85FHcdAj5uR pjkCsC/mhF+VhHuYlfDr9hche1V6aaViNr+IfSNGHYnJPiVubnwgVGyFjn6zlNT7VB LAGFkqhIDsrHYDd7hxltnsMIG2S25PTSsz4WmALM= From: Laurent Pinchart To: dri-devel@lists.freedesktop.org Cc: linux-renesas-soc@vger.kernel.org, Pantelis Antoniou , Rob Herring , Frank Rowand , Matt Porter , Koen Kooi , Guenter Roeck , Marek Vasut , Wolfram Sang , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org Subject: [PATCH v4 03/16] of: dynamic: Add __of_node_dupv() Date: Wed, 21 Feb 2018 01:10:33 +0200 Message-Id: <20180220231046.32638-4-laurent.pinchart+renesas@ideasonboard.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180220231046.32638-1-laurent.pinchart+renesas@ideasonboard.com> References: <20180220231046.32638-1-laurent.pinchart+renesas@ideasonboard.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pantelis Antoniou Add an __of_node_dupv() private method and make __of_node_dup() use it. This is required for the subsequent changeset accessors which will make use of it. Signed-off-by: Pantelis Antoniou Signed-off-by: Laurent Pinchart --- drivers/of/dynamic.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c index 7bb33d22b4e2..4ffd04925fdf 100644 --- a/drivers/of/dynamic.c +++ b/drivers/of/dynamic.c @@ -382,8 +382,9 @@ struct property *__of_prop_dup(const struct property *prop, gfp_t allocflags) } /** - * __of_node_dup() - Duplicate or create an empty device node dynamically. - * @fmt: Format string (plus vargs) for new full name of the device node + * __of_node_dupv() - Duplicate or create an empty device node dynamically. + * @fmt: Format string for new full name of the device node + * @vargs: va_list containing the arugments for the node full name * * Create an device tree node, either by duplicating an empty node or by allocating * an empty one suitable for further modification. The node data are @@ -391,17 +392,15 @@ struct property *__of_prop_dup(const struct property *prop, gfp_t allocflags) * OF_DETACHED bits set. Returns the newly allocated node or NULL on out of * memory error. */ -struct device_node *__of_node_dup(const struct device_node *np, const char *fmt, ...) +struct device_node *__of_node_dupv(const struct device_node *np, + const char *fmt, va_list vargs) { - va_list vargs; struct device_node *node; node = kzalloc(sizeof(*node), GFP_KERNEL); if (!node) return NULL; - va_start(vargs, fmt); node->full_name = kvasprintf(GFP_KERNEL, fmt, vargs); - va_end(vargs); if (!node->full_name) { kfree(node); return NULL; @@ -433,6 +432,24 @@ struct device_node *__of_node_dup(const struct device_node *np, const char *fmt, return NULL; } +/** + * __of_node_dup() - Duplicate or create an empty device node dynamically. + * @fmt: Format string (plus vargs) for new full name of the device node + * + * See: __of_node_dupv() + */ +struct device_node *__of_node_dup(const struct device_node *np, + const char *fmt, ...) +{ + va_list vargs; + struct device_node *node; + + va_start(vargs, fmt); + node = __of_node_dupv(np, fmt, vargs); + va_end(vargs); + return node; +} + static void __of_changeset_entry_destroy(struct of_changeset_entry *ce) { of_node_put(ce->np); -- Regards, Laurent Pinchart