From patchwork Tue Jun 28 10:30:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 70989 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp1509245qgy; Tue, 28 Jun 2016 03:33:24 -0700 (PDT) X-Received: by 10.66.78.226 with SMTP id e2mr517555pax.37.1467110000166; Tue, 28 Jun 2016 03:33:20 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p5si6323824pfp.124.2016.06.28.03.33.19; Tue, 28 Jun 2016 03:33:20 -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=@linaro.org; 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 dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932102AbcF1KdG (ORCPT + 30 others); Tue, 28 Jun 2016 06:33:06 -0400 Received: from mail-wm0-f48.google.com ([74.125.82.48]:35505 "EHLO mail-wm0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752691AbcF1KdD (ORCPT ); Tue, 28 Jun 2016 06:33:03 -0400 Received: by mail-wm0-f48.google.com with SMTP id v199so133580500wmv.0 for ; Tue, 28 Jun 2016 03:33:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Y1tOJuR43IFTfAqW2QfUdzQWIEcvkLEXbcPQm7FafFU=; b=Eycjpm90KBgREauj9YsADVMcHrt60IBIYyFpArTcQy+h3HgWtu3mqn1QWQOcNlvfKc vACXoYcV2zZn6qmFTlknHu4IIFS1IsS9ilI+J7ioI3MH/IhseQ2wSI9XdeEkycrBE9ip H/Uig2QKL+Zpc2MFT9N3dEXb4kmHN24DdHIhY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Y1tOJuR43IFTfAqW2QfUdzQWIEcvkLEXbcPQm7FafFU=; b=kZrf0lilscHT3VTd4IR4G33rtg1A3W7dVV9Cpk6PeDD1yJXVzFbh5AKWhJKQ7zX6pR hB6bPWe3LVkqow6TI9EVyZ64JotWSkP7pMFLdqdQoRuu1potCkLyPzROaJPg/xUIkAAQ AB0vgazFhSADG2FT7FZmsYQQaPahBeGg/bTNvHj/XLu424qFxx9mTjb89xEIUrzvQM5U /h9752+hc7zZy1ICX1sIi/9j+dVzexvWAjs+plIZz2Vp3LoNEX7wCjSWBZrmEQChljEr 4Vt9wqHT6BVuEEPn3DwkPXVMPF3mme39t8sGXviZt/otyW6g5ehAFhAnqG1nBKf1Lmtq Rcvw== X-Gm-Message-State: ALyK8tLB2NZEMgkhS9bCqTGZVofy3xoMPjO1yiJPRL1hZuFDZJUwY7fwdsJyWTMlhoUVzDnD X-Received: by 10.28.39.132 with SMTP id n126mr16335246wmn.27.1467109980904; Tue, 28 Jun 2016 03:33:00 -0700 (PDT) Received: from localhost.localdomain (sju31-1-78-210-255-2.fbx.proxad.net. [78.210.255.2]) by smtp.gmail.com with ESMTPSA id a84sm5377403wma.0.2016.06.28.03.32.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 28 Jun 2016 03:33:00 -0700 (PDT) From: Daniel Lezcano To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: linux-kernel@vger.kernel.org, Rob Herring , devicetree@vger.kernel.org Subject: [PATCH 11/92] of: Add a new macro to declare_of for one parameter function returning a value Date: Tue, 28 Jun 2016 12:30:30 +0200 Message-Id: <1467109911-11060-11-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1467109911-11060-1-git-send-email-daniel.lezcano@linaro.org> References: <577251A4.7030508@linaro.org> <1467109911-11060-1-git-send-email-daniel.lezcano@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The macro OF_DECLARE_1 expect a void (*func)(struct device_node *) while the OF_DECLARE_2 expect a int (*func)(struct device_node *, struct device_node *). The second one allows to pass an init function returning a value, which make possible to call the functions in the table and check the return value in order to catch at a higher level the errors and handle them from there instead of doing a panic in each driver (well at least this is the case for the clkevt). Unfortunately the OF_DECLARE_1 does not allow that and that lead to some code duplication and crappyness in the drivers. The OF_DECLARE_1 is used by all the clk drivers and the clocksource/clockevent drivers. It is not possible to do the change in one shot as we have to change all the init functions. The OF_DECLARE_2 specifies an init function prototype with two parameters with the node and its parent. The latter won't be used, ever, in the timer drivers. Introduce a OF_DECLARE_1_RET macro to be used, and hopefully we can smoothly and iteratively change the users of OF_DECLARE_1 to use the new macro instead. Signed-off-by: Daniel Lezcano Acked-by: Rob Herring --- include/linux/of.h | 3 +++ 1 file changed, 3 insertions(+) -- 1.9.1 diff --git a/include/linux/of.h b/include/linux/of.h index c7292e8..552943d 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -1009,10 +1009,13 @@ static inline int of_get_available_child_count(const struct device_node *np) #endif typedef int (*of_init_fn_2)(struct device_node *, struct device_node *); +typedef int (*of_init_fn_1_ret)(struct device_node *); typedef void (*of_init_fn_1)(struct device_node *); #define OF_DECLARE_1(table, name, compat, fn) \ _OF_DECLARE(table, name, compat, fn, of_init_fn_1) +#define OF_DECLARE_1_RET(table, name, compat, fn) \ + _OF_DECLARE(table, name, compat, fn, of_init_fn_1_ret) #define OF_DECLARE_2(table, name, compat, fn) \ _OF_DECLARE(table, name, compat, fn, of_init_fn_2)