Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752084AbbKKJaq (ORCPT ); Wed, 11 Nov 2015 04:30:46 -0500 Received: from mleia.com ([178.79.152.223]:48941 "EHLO mail.mleia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751386AbbKKJan (ORCPT ); Wed, 11 Nov 2015 04:30:43 -0500 Message-ID: <56430AC0.5090707@mleia.com> Date: Wed, 11 Nov 2015 11:30:40 +0200 From: Vladimir Zapolskiy User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Masahiro Yamada , linux-clk@vger.kernel.org CC: linux-arm-kernel , Linux Kernel Mailing List Subject: Re: How to implement common clk in multi function controller? References: In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-49551924 X-CRM114-CacheID: sfid-20151111_093136_563014_54921110 X-CRM114-Status: GOOD ( 24.05 ) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2380 Lines: 82 Hi Masahiro, On 11.11.2015 05:16, Masahiro Yamada wrote: > Hi. > > I am implementing clk and reset drivers for my SoCs. > (drivers/clk/uniphier/* and drivers/reset/uniphier/*) > > > In my SoCs, one hardware block contains various > registers for both clock and reset controlling. > (so, it is like a MFD system controller device). > I think it is a common case. > I met the same problem with LPC32xx clocks, one hardware block contains clock controller, power controller, wakeup controllers and partially pinmux and dma configuration. I've sent a mmio version for review some time ago, but I had to change interface to regmap recently. > I am guessing my device tree would be like follows: > (one syscon device contains clk and rst devices under it) > > syscon { > compatible = "socionext,uniphier-syscon", > "syscon", "simple-mfd"; > reg = <... ...>; > > clk_ctrl { > .compatible = "socionext,uniphier-clkctrl"; > #clock-cells = <1>; > }; > > rst_ctrl { > .compatible = "socionext,uniphier-rstctrl"; > #reset-cells = <1>; > }; > }; > Eventually I implement the same layout, but replace "syscon" and "simple-mfd" with "simple-bus" only. For a single interface syscon_node_to_regmap() I don't see a point to add a dependency on MFD and syscon. > > One problem I noticed was, > we are supposed to use regmap for register access > if we use syscon. > > OTOH, common clk APIs such as clk-gate, clk-divider > expect simple register access via writel()/readl(). > > Is it a good idea to expand such APIs to regmap? It might be a good idea. > > Of course, I could my own uniphier/clk-gate.c > to use regmap as other SoCs do. > > But, I think regmap is general demand, so > I am wondering if it could be supported in common parts. > > Or, any other good solution exists? > I had to copy low-level parts from clk-gate, clk-divider and clk-mux to my driver and reimplement them on regmap API, of course I won't call this as a good solution, but if regmap is unavoidable, that's what remains. -- With best wishes, Vladimir -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/