Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752229AbbKKJsa (ORCPT ); Wed, 11 Nov 2015 04:48:30 -0500 Received: from smtp.csie.ntu.edu.tw ([140.112.30.61]:59313 "EHLO smtp.csie.ntu.edu.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751508AbbKKJsU (ORCPT ); Wed, 11 Nov 2015 04:48:20 -0500 MIME-Version: 1.0 In-Reply-To: References: From: Chen-Yu Tsai Date: Wed, 11 Nov 2015 17:47:50 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: How to implement common clk in multi function controller? To: Masahiro Yamada Cc: linux-clk , linux-arm-kernel , Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2295 Lines: 83 Hi, On Wed, Nov 11, 2015 at 11:16 AM, 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. sunxi uses a "instance per register" design, that is each register corresponds to one (or more, in rare cases) clock or reset control. Each will get a separate device node in the DT. For registers that have both clocks and resets, they are combined in a single driver if it makes sense (for example serving the same set of peripherals). See drivers/clk/sunxi/clk-usb.c for such a driver. Regards ChenYu > 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>; > }; > }; > > > > 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? > > > 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? > > > > -- > Best Regards > Masahiro Yamada > -- > To unsubscribe from this list: send the line "unsubscribe linux-clk" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- 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/