From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032475AbdDTONs (ORCPT ); Thu, 20 Apr 2017 10:13:48 -0400 Received: from mail-eopbgr30123.outbound.protection.outlook.com ([40.107.3.123]:46445 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1032309AbdDTONl (ORCPT ); Thu, 20 Apr 2017 10:13:41 -0400 Authentication-Results: pengutronix.de; dkim=none (message not signed) header.d=none;pengutronix.de; dmarc=none action=none header.from=axentia.se; Subject: Re: [RFC 1/2] dt-bindings: add mmio-based syscon mux controller DT bindings To: Rob Herring , Philipp Zabel References: <20170413154812.19597-1-p.zabel@pengutronix.de> <20170419220900.ndrtt2m7d6tqsddh@rob-hp-laptop> <67388375-4f9e-fd1e-5155-7aeac0ea7b46@axentia.se> CC: Mark Rutland , Sakari Ailus , Steve Longerbeam , , , From: Peter Rosin Organization: Axentia Technologies AB Message-ID: Date: Thu, 20 Apr 2017 16:13:19 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <67388375-4f9e-fd1e-5155-7aeac0ea7b46@axentia.se> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [81.224.171.159] X-ClientProxiedBy: DB6PR0601CA0042.eurprd06.prod.outlook.com (10.169.209.28) To HE1PR0202MB2554.eurprd02.prod.outlook.com (10.168.184.7) X-MS-Office365-Filtering-Correlation-Id: 8c35dab7-1e34-495e-9f85-08d487f768df X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075);SRVR:HE1PR0202MB2554; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2554;3:KaYXrkcOSTBFfSioGu//sFh6q002oKtRKTp3Qh8nIY5RnO1VKXU9hCEykAr1AiR1NVXOw65QjN5GQqM3crITy7H2rTOfJcI/xOQS4JdP/5VvOkvDl1K8N8vDzQCxy0FZH+bgW/WYXKQ23gNIa/N++SXB2s7CBQCoyecl15U4OzBqe6P0LePAXRDr3cpl8Xlh24QmRgC0wNLzR1hl26GP5GLcwp3EmLEPy8R0kvA7AsdM729z6dDF6QTxeQlaA34/+zCNNYGK876rEYjqyJ08KLsfkvEbaper/HQqQS7xALU=;25:S4O61YJs/0mOt5OysZCRtNr4D65gH1afPeOjNll0SzfyJaQq4WYFiNw2JpSm2BW1onc2/J3WT3Lsk3idDe87dNiWet95Z+MA0hWs1rjWgT3P85LCtS/vPocri+hlxDpPONtzM4QPtYAKXNjCPN/K+7iFiMXhVvrMREljFOvTfgGAGEhN4AvnCBmxO/KPAv6lpdbEeLFY4DwcopX1JaofBtSdsXE8usrXtAel4iH4sH3zBVnTnemGT0/W3i7x0MmSz/y96DeLc5BBVD8SGQ+cW/yMnXzSZiTGRRfjrvjxxh6PAq8XOzaJAYqDSUpThUVK/+PwHBIVjRrBgeXj1uO7f198RQySyyH97EhfXJpDRjM8Kgrr6oPWXsb34Nkn1p33zbEk4bBqia34ZwTaA2QwjeBu1YwRbx6PhhZ7LZdPZY29fJmM1XDqIC/CKGF4G4tIKCrLLAay2l9xWLqrlTOSgQ== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2554;31:Ntt2tazkojz1pGMjjkroCvnfqj2kZgpaIqP3tEzKOU8CILwGhmCz3QkoYOpE96DhzzGAim3b9jtGcNCwjv+fcO7bEi4U6OS600Qe89dwNTdOuFJwlj6cVXskRUbh2nxOGb3qf2cFlUmwvvVk/ABea6UIaHkuHTmoQARpDfxYYfp0vm34ZAUyyebK7OQIH4DzNtA9JQZ3vI/ut0Y6/fDsWyvBjDIwJFw+HWIfz1jlIiR5tlHI8ZF85Nw6x//G5omeCHgbE3nOzr01dJJd4LUvObHGH+zmTTiBOW+meMGblS0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123564025)(20161123560025)(2016111802025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(20161123555025)(6072148)(6043046);SRVR:HE1PR0202MB2554;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0202MB2554; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2554;4:AsljSTqe0jfyKN6Cw/tGaRsUqZpjFn+shWxJhj0zuasj1JO6ulQaIVddrxboLOqupjtvuBID/HLgEzD9K3y1pmsl1NwiF5FFZj1U9TP45Cy7FLDLuNqAn9r98yuNFrjk7hIyGwkUyFXX+dlprWznTMxj8LrKBPJEFx1RKxp6HeIS3nnQj4LYtpj7U1nzvVx5hg9lBc4jOGOgr8T1R2as+Vh2xzDrt+tFGZfwp/pV4CSiwmAHFe7whDyv6bS42MtF57T4sawbjkRc+2iQ9P+YRFYEd41f4EneM3k9awJa9ESSH6q0AeEGQetpHkk18cvn/oNB7hRvaJ0zfXBGuerzZrSoKhcyd/EVU5NwDtpG4J6LEuKjU1XjJxONnjNzIc3hxIG6WPmiVPm7WhK91rmvjqbXfJqWxFnPQ+R4tpJ3pH1HUD+mASbP9OP1CSmn/ALfWxd8Y0W8qgaEMw/BKSKSqMo7DTO8P13Btl1QmyFwl58h/nFqJAixxyW74laM7QzN0O0sIyNd+b9K7XSq1klhrT4OciT6zftLWE4qRqpdAEsS5APKygcfE1xipG62rQA5BXW3fpJNdGQRY/VauVxtg7DQWqp/SrepqXCOGmGhzMMZ4yezMMWPVqli3tkZK+EYicS0q/GkQLrOyfPGFRyI9Kb2WWN7yJMXwJMr4AlnyPs6QSnLXxGGT0FaVcMpkLskaBy6DKTUg3IuY43nT8EOvGtk6HVWPiHn6rK0b7xvb7a0AFZPA6OgOUIFA3Z1GK21meNbucG8IYi5uFQEKQO4kw== X-Forefront-PRVS: 02830F0362 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(39830400002)(39450400003)(39400400002)(39410400002)(377424004)(24454002)(189998001)(42186005)(77096006)(83506001)(31686004)(7736002)(305945005)(6486002)(90366009)(81166006)(8676002)(3260700006)(38730400002)(25786009)(2950100002)(6666003)(50466002)(117156002)(4001350100001)(33646002)(53546009)(2906002)(4326008)(230700001)(53936002)(47776003)(23746002)(6246003)(74482002)(36756003)(31696002)(65826007)(86362001)(54356999)(6116002)(50986999)(66066001)(229853002)(3846002)(65806001)(54906002)(5660300001)(76176999)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0202MB2554;H:[192.168.0.125];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;HE1PR0202MB2554;23:stElQPIkaJHriS168ZQqt9sUJhkLnb3uVy6?= =?Windows-1252?Q?92UyZO4N5pHPQyVDqbpmD2w0HPUE1SElb05cUIdUV4yn0A4smRSjBF/P?= =?Windows-1252?Q?vqI9WojGmEtmiP6z90eiz95G5tEe9nM6LLQNWJwNmcTXt/Rp+0vpX0us?= =?Windows-1252?Q?QKRMuwAQAO1qsi1Btphx6nvzOGyoMLtCZiMKwS6+D97BKs371Xu4aPyR?= =?Windows-1252?Q?9rC0dLegGTPbfVOU9weJxfSkwuwrBfSXZBce2GfXitTWZWCbBUdt3oQO?= =?Windows-1252?Q?UbDHV21x1+m8OUdvu5/NGpAFbBmfxRQM93PGgNlDTFgszUanP+OAk9Ns?= =?Windows-1252?Q?HgMJiQ+WrkpUAlxsiknRzx9UC73DsJaEL8A+xWoxwQnKfIXppaF9jStN?= =?Windows-1252?Q?35lejEEpGKcV7mcevrhpNrQWtPpusK6SV8XtTt6q44eNeV/8ehiTmLCY?= =?Windows-1252?Q?3f9VL7QcK1yd64rXtw/XyR15eYyCjjkKQ3PkWgiYA1WcwO9qSb/cNJ/A?= =?Windows-1252?Q?1/vLN1UCh+RfuMoa3toOEK7fnNq+8PLNgCu2xYLwXAUlImdmk6iO56xt?= =?Windows-1252?Q?NTa1HSVO9eiPjMLwH+hqXoQ+9bHzT33yVq1q8v7zAAZujNZw5WlMQ9MY?= =?Windows-1252?Q?Rvp8AqXNrq/YP+dNiuxEKGx+Mzw3dTB2JjgCLqV5ApYCIbMgK/ZplLrx?= =?Windows-1252?Q?YVvow7nJQzJ4TiKCFA8LU3/jLAnBjznC0BSFOSIuLMHzsR+IdaGNRPou?= =?Windows-1252?Q?ZTtf2WXDPw9S8YpMjquSBOWJAC95KB084nwjDuOGx0eOGmKRa3iF/chF?= =?Windows-1252?Q?ytHW4nq3k8vk7SVGYN7VyRHP3mumzw/EH7VoRBrheoZQX1HwN6MP4/9t?= =?Windows-1252?Q?d/wnsYIDkpS8aLeKM7rafJfDeadMBaMOF+LORnu9SYmZD2451sTCwk9f?= =?Windows-1252?Q?hGmDPn54q8cwOw/n6IE57ij5yWKMlWaoWvadBqxfTJd16/VNFy7Fr64D?= =?Windows-1252?Q?Ra3lVJiA6KWMgUQGt2u7qeDcKh+QmI8EavggHgRAfYHKEQ4XczpxVpZW?= =?Windows-1252?Q?V8lixDCyLDNwJjxoNgX0ZTnnCTovkvjgY3U9O6JVZgtCO2ah6Hgxi5mb?= =?Windows-1252?Q?YPE9W4OoSCgxbGob5Esd9foqBxXcBqpx6ZLGtoHJZZghhGjJSKXgc1n9?= =?Windows-1252?Q?onCXatdOqFsqFtkr/2UX7oKtcPoCB3x1Jw6dtT+XD+iBdaVvtlX1QwhG?= =?Windows-1252?Q?ijxn8dqjOJe7aJWuEw/O92lcD57iPmEx9hHHKLGUDuLqhgG2WoUxvqA7?= =?Windows-1252?Q?525pqI6yPVoDec3ew/rB5tvxEwuh5Oo+0oqLtlWfi+B6Eh2ux9KINNoK?= =?Windows-1252?Q?Zs5ytoWvlo4St+l/5gslo0F/kbt0vIkKMA/0pm8CuZHZxUF0UZnuOMgE?= =?Windows-1252?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2554;6:zapmgrxhywdFhbksgbq2yR7HU18UAs0VJEb1JCkgx0Ch8EyrWz98fWVRNhpU5bcmXJfN/MgjypONj7+AT8fzKYwzluRBMzNmqFnboRAB1O4IP0XyBFfmY+TKwSiqkvwRR+UqHSfYQTRL4FCjJebFQKzmU9ChE4IFBFtkUqNbpqmb2sQUz9yjAqBg8rX4B6Vyk6wYyrUkaLPHqeNR7ZacvS6o7/J8ZcfBMkBXutuP8yYXFrzPIknTDYXJR2Gigfh39oGgOC4FoJwTpJkmM2KvnTI2PJ+Nk1VJ8icomnJvnKwU3udEQkX2IpgPTH5aRlmdbDn5w99qD0Q8oBILHMsxjNYrPj0uDh83MObhmBNHIMdNekzYUv3K9Bj+cRCDxydhDrojVyINxnWXJEArTbEJnajO1X/lkS3UhysGx9mII4W7I3/TBBm+FifrP+jHI91QZCVfMgOg5YZUhpOWRsQJuGBV3rzLFUWrurnWbMWVoucJ1+UlaaUaUSegvaTgGTcsSD9SN5nvfYUdjW4mxPjS+g==;5:jLi0wTDPShP7ZnioFef8PrUfaErLXe1pjXdEZ/woSXOFxXmn7bFqQC+5rdawa33sBGeowTFT1i1i8aB/w5pv05aj5dxao1srXjfSS5GFN4DWPTKOWHOn95T73YIs1Y6VoOyTA1xNIezSMueeUfi4wQ==;24:r6wG4IEVJth3Wu+8WfLBv3m3v1YiXOhKfjOKpp6XCibHred+mNYghd+/XkD50lLxGyGUg7bQvqzwjX0n4fB8VeAkpoXmoT6BG6eKJiN6eN4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0202MB2554;7:bZnNmVkVZT8yQJV4dmljIwVPdDDLb4oU5Wnguzq6ctIcKg7vma2prmhYR/tCeKRk9X8/+s/55DFnsZjZMoO+l7SSI9mUP+k7AHx6ukzYIJyddiEMatOJw7cvIpFdHc+MGj7u9khImD0iacPgqr38yVVl6vNhUYl8jWVMPXw/MwgnszLMggGacm8Ql4UBjUhmKt989djkXMJMT90xK2oRklCPBxgkiGj1tHTKhEssi5pvssJw5Q7RbbTDqt3OX5w6konxU1kmQZ0aUw0OL2tTyrcmwguPH0BZcpW5SiFH6cco22eiI/sl3mCSylHk2XIlDLjwK/99GOCYCflL69DDoA== X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2017 14:13:23.8378 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0202MB2554 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017-04-20 15:32, Peter Rosin wrote: > On 2017-04-20 00:09, Rob Herring wrote: >> On Thu, Apr 13, 2017 at 05:48:11PM +0200, Philipp Zabel wrote: >>> This adds device tree binding documentation for mmio-based syscon >>> multiplexers controlled by a single bitfield in a syscon register >>> range. >>> >>> Signed-off-by: Philipp Zabel >>> --- >>> Documentation/devicetree/bindings/mux/mmio-mux.txt | 56 ++++++++++++++++++++++ >>> 1 file changed, 56 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/mux/mmio-mux.txt >>> >>> diff --git a/Documentation/devicetree/bindings/mux/mmio-mux.txt b/Documentation/devicetree/bindings/mux/mmio-mux.txt >>> new file mode 100644 >>> index 0000000000000..11d96f5d98583 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/mux/mmio-mux.txt >>> @@ -0,0 +1,56 @@ >>> +MMIO bitfield-based multiplexer controller bindings >>> + >>> +Define a syscon bitfield to be used to control a multiplexer. The parent >>> +device tree node must be a syscon node to provide register access. >>> + >>> +Required properties: >>> +- compatible : "gpio-mux" >> >> ? >> >>> +- reg : register base of the register containing the control bitfield >>> +- bit-mask : bitmask of the control bitfield in the control register >>> +- bit-shift : bit offset of the control bitfield in the control register >>> +- #mux-control-cells : <0> >>> +* Standard mux-controller bindings as decribed in mux-controller.txt >>> + >>> +Optional properties: >>> +- idle-state : if present, the state the mux will have when idle. The >>> + special state MUX_IDLE_AS_IS is the default. >>> + >>> +The multiplexer state is defined as the value of the bitfield described >>> +by the reg, bit-mask, and bit-shift properties, accessed through the parent >>> +syscon. >>> + >>> +Example: >>> + >>> + syscon { >>> + compatible = "syscon"; >>> + >>> + mux: mux-controller@3 { >>> + compatible = "mmio-mux"; >>> + reg = <0x3>; >>> + bit-mask = <0x1>; >>> + bit-shift = <5>; >> >> This pattern doesn't scale once you have multiple fields @ addr 3. I >> also don't really think a node per register field in DT really scales. >> >> I think the parent should be declared as a mux controller instead. You >> could encode the mux addr and bit position in the mux cells. > > But then you need to create mux controllers on demand. I have not > succeeded in doing that while also following the rules of the driver > model. I had severe problems with life-time issues when I tried. > I would like to see code before embarking on this path, and I'm > apparently not the one writing it... > > So, either you meant that, or that the parent node should somehow > specify the possible mux controllers up front so that they can be > pre-created and ready when the consumers request them. But if you > do that, you can just refer to them by some enumeration from the > mux consumers instead of by some convoluted reg+field notation. Ok, thinking some more about this. Sorry for spamming and replying to self... How about: syscon { compatible = "syscon", "simple-mfd"; mux: mux-controllers { compatible = "mmio-mux"; #mux-control-cells = <1>; /* three mux controllers, one at reg 3 bits 0:2, * one at reg 3 bits 5:6 and one at reg 7 bit 3. */ mux-reg-masks = <0x3 0x07>, <0x3 0x60>, <0x7 0x08>; idle-state = <7>, , <0>; }; video-mux { compatible = "video-mux"; mux-controls = <&mux 1>; /* i.e. reg 3 bits 5:6 */ ports { /* ports 0..5 */ }; }; }; Optionally using some 64-bit safe 3-value encoding of the register fields in the mux-reg-masks binding... Cheers, peda