From patchwork Thu Jun 12 17:06:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philipp Zabel X-Patchwork-Id: 4343941 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 537D59F440 for ; Thu, 12 Jun 2014 17:07:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6EDA720340 for ; Thu, 12 Jun 2014 17:07:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E773F2035C for ; Thu, 12 Jun 2014 17:07:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933463AbaFLRHl (ORCPT ); Thu, 12 Jun 2014 13:07:41 -0400 Received: from metis.ext.pengutronix.de ([92.198.50.35]:33046 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756242AbaFLRGq (ORCPT ); Thu, 12 Jun 2014 13:06:46 -0400 Received: from dude.hi.pengutronix.de ([10.1.0.7] helo=dude.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1Wv8Sa-0000jm-Ng; Thu, 12 Jun 2014 19:06:44 +0200 From: Philipp Zabel To: linux-media@vger.kernel.org Cc: Steve Longerbeam , Philipp Zabel Subject: [RFC PATCH 23/26] mfd: syscon: add child device support Date: Thu, 12 Jun 2014 19:06:37 +0200 Message-Id: <1402592800-2925-24-git-send-email-p.zabel@pengutronix.de> X-Mailer: git-send-email 2.0.0.rc2 In-Reply-To: <1402592800-2925-1-git-send-email-p.zabel@pengutronix.de> References: <1402592800-2925-1-git-send-email-p.zabel@pengutronix.de> X-SA-Exim-Connect-IP: 10.1.0.7 X-SA-Exim-Mail-From: p.zabel@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-media@vger.kernel.org Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP For devices which have a complete register for themselves, it is possible to place them next to the syscon device with overlapping reg ranges. The same is not possible for devices which only occupy bitfields in registers shared with other users. For devices that are completely controlled by bitfields in the syscon address range, such as multiplexers or voltage regulators, allow to put child devices into the syscon device node. Signed-off-by: Philipp Zabel --- Documentation/devicetree/bindings/mfd/syscon.txt | 11 +++++++++++ drivers/mfd/syscon.c | 3 +++ 2 files changed, 14 insertions(+) diff --git a/Documentation/devicetree/bindings/mfd/syscon.txt b/Documentation/devicetree/bindings/mfd/syscon.txt index fe8150b..a7e11d5 100644 --- a/Documentation/devicetree/bindings/mfd/syscon.txt +++ b/Documentation/devicetree/bindings/mfd/syscon.txt @@ -9,10 +9,21 @@ using a specific compatible value), interrogate the node (or associated OS driver) to determine the location of the registers, and access the registers directly. +Optionally, devices that are only controlled through single syscon +registers or bitfields can also be added as child nodes to the syscon +device node. These devices can implicitly assume their parent node +as syscon provider without referencing it explicitly via phandle. +In this case, the syscon node should have #address-cells = <1> and +#size-cells = <0> and no ranges property. + Required properties: - compatible: Should contain "syscon". - reg: the register region can be accessed from syscon +Optional properties: +- #address-cells: Should be 1. +- #size-cells: Should be 0. + Examples: gpr: iomuxc-gpr@020e0000 { compatible = "fsl,imx6q-iomuxc-gpr", "syscon"; diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index dbea55d..4b5d237 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -147,6 +147,9 @@ static int syscon_probe(struct platform_device *pdev) dev_dbg(dev, "regmap %pR registered\n", res); + if (!of_device_is_compatible(pdev->dev.of_node, "simple-bus")) + of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); + return 0; }