Received: by 2002:a05:6358:e9c4:b0:b2:91dc:71ab with SMTP id hc4csp927723rwb; Thu, 4 Aug 2022 13:42:35 -0700 (PDT) X-Google-Smtp-Source: AA6agR77ekmWaf/plV1eVWM4fIS+JfCjhf2B7/glhqOBQeT3KnmpD4Rcdpsup1+DDsCuTKjhRsH8 X-Received: by 2002:a05:6402:212:b0:43b:5419:f89b with SMTP id t18-20020a056402021200b0043b5419f89bmr3659491edv.9.1659645755491; Thu, 04 Aug 2022 13:42:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659645755; cv=none; d=google.com; s=arc-20160816; b=0ehsY9ohHy+PjvLG3Lhqt60MCNMdITrRthiE/JF46KjSTUFaowPF6lPoOUNJh4EHbs c6mDfg3x0lOl4Ic7CQsLqWO1U4Poft2rLD2aTdB2WXoUrQzPnbcecg6oGVNG8UT94oFw ZDa1gh4cltECH1BF3X7rqLqruX6N3ZjJ2moW1eHQNDUCi6eqg/gRHDzOrQCq+UoST7dz CzSNeBjEmTlgQDuW4VkLgzXS1JPh7ItN+pcRo+3CWFWO9WMogqL8N8Kgzhk6c47a3kJG voM010v10qlzX1nCwYx0FbUFPNtkCz77In30ubwQ5C+9Y1tQjKmjfjjXOH035L8Gfslg RCBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=VCrvf/3BTjJQt0YH832xOkI02Lgn0gW1RupzGTTYZ48=; b=C6svPAAq2sS+XVa8Y1DmdqVXnXuTGUzykdO3xNpn6BdGFn6+63gZzSwPv9+rziEXTi l+s3s0piU7YIlbT0SWCVhdWooiHByM9FrVrldvl3sUM546aAD5oui1zQCmCrFuDKaM3C fMDL57ehUdY92R3c1/GXT/AfSita9Qw3BkStTVOlTGy6iME9mtiDGYNNuln4EBKaL/y2 p/A+6hmSFO1Zo8COyQ7KPAXJVd1jhvOElQwAU3pSuF62E3q2hjBc8+53G2lLk3FvAaCI qblYFqh+W2iBJCgPhKsL7utyit2/koj26CVzwvdansV/s2Axe4h5+2nto/+XKPZKl2DS wfqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qa20-20020a170907869400b0073099d0fe90si2234083ejc.216.2022.08.04.13.42.10; Thu, 04 Aug 2022 13:42:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239674AbiHDUZ2 (ORCPT + 99 others); Thu, 4 Aug 2022 16:25:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43762 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235595AbiHDUZ0 (ORCPT ); Thu, 4 Aug 2022 16:25:26 -0400 Received: from mail-il1-f179.google.com (mail-il1-f179.google.com [209.85.166.179]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7C2B9FC2; Thu, 4 Aug 2022 13:25:24 -0700 (PDT) Received: by mail-il1-f179.google.com with SMTP id p10so483150ile.5; Thu, 04 Aug 2022 13:25:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=VCrvf/3BTjJQt0YH832xOkI02Lgn0gW1RupzGTTYZ48=; b=db6aA/SPKfZxNzJ+rxUH8uBAwnZeGCtV8ovmnMW5aC9CLZW8zxNqYjm8ASk+7dywFw shCQhI4SBC0a4cZtP9Wv4fLBo0AiKvrmgyrKz1ygz5bzIjJC+4uBmfJW2FdAg1IqRLTR aEC2Itflqo0lN+VuFSCrN2mn3SeeF8h9pmte4ZL0aLrUVJJasamj9q18rYZ/GKZzzIRb MzanBy5SUIvZ+8q9g4YwZ8pu6hNPKdxLSP68CDUhWJa2XHJcXDvhaJXQrd8Os3gsBKCB SBmLH/K2h1TK4PHHE51lt8V6Q5Fvyo4YrHpch7UuiFRtYNt883Kz/TMETsgPfP0/WaWo oLhA== X-Gm-Message-State: ACgBeo0ywtrHB/1i4iuvY+FsC11g2Uqp8773fIZ8SwkKdahvC/X1ba5o pU9eFID397r44kf1mAHTsA== X-Received: by 2002:a05:6e02:2188:b0:2dd:f749:512d with SMTP id j8-20020a056e02218800b002ddf749512dmr1587415ila.216.1659644723968; Thu, 04 Aug 2022 13:25:23 -0700 (PDT) Received: from robh.at.kernel.org ([64.188.179.248]) by smtp.gmail.com with ESMTPSA id d18-20020a92c192000000b002dd028f5ef5sm811076ilh.38.2022.08.04.13.25.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Aug 2022 13:25:23 -0700 (PDT) Received: (nullmailer pid 304396 invoked by uid 1000); Thu, 04 Aug 2022 20:25:22 -0000 Date: Thu, 4 Aug 2022 14:25:22 -0600 From: Rob Herring To: Samuel Holland Cc: Liam Girdwood , Mark Brown , Chen-Yu Tsai , Jernej Skrabec , Krzysztof Kozlowski , Maxime Ripard , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v2 3/4] regulator: dt-bindings: Add Allwinner D1 LDOs Message-ID: <20220804202522.GC4145453-robh@kernel.org> References: <20220802053213.3645-1-samuel@sholland.org> <20220802053213.3645-4-samuel@sholland.org> <20220802150452.GA86158-robh@kernel.org> <918a83a7-1b8d-04b1-4f7b-386fc800e653@sholland.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <918a83a7-1b8d-04b1-4f7b-386fc800e653@sholland.org> X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 03, 2022 at 10:03:07PM -0500, Samuel Holland wrote: > Hi Rob, > > Thanks again for your review. > > On 8/2/22 10:04 AM, Rob Herring wrote: > > On Tue, Aug 02, 2022 at 12:32:12AM -0500, Samuel Holland wrote: > >> The Allwinner D1 SoC contains two pairs of in-package LDOs. One pair is > >> for general purpose use. LDOA generally powers the board's 1.8 V rail. > >> LDOB generally powers the in-package DRAM, where applicable. > >> > >> The other pair of LDOs powers the analog power domains inside the SoC, > >> including the audio codec, thermal sensor, and ADCs. These LDOs require > >> a 0.9 V bandgap voltage reference. The calibration value for the voltage > >> reference is stored in an eFuse, accessed via an NVMEM cell. > >> > >> Neither LDO control register is in its own MMIO range; instead, each > >> regulator device relies on a regmap/syscon exported by its parent. > >> > >> Signed-off-by: Samuel Holland > >> --- > >> > >> Changes in v2: > >> - Remove syscon property from bindings > >> - Update binding examples to fix warnings and provide context > >> > >> .../allwinner,sun20i-d1-analog-ldos.yaml | 65 +++++++++++++++++++ > >> .../allwinner,sun20i-d1-system-ldos.yaml | 57 ++++++++++++++++ > >> 2 files changed, 122 insertions(+) > >> create mode 100644 Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-analog-ldos.yaml > >> create mode 100644 Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-system-ldos.yaml > >> > >> diff --git a/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-analog-ldos.yaml b/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-analog-ldos.yaml > >> new file mode 100644 > >> index 000000000000..19c984ef4e53 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-analog-ldos.yaml > >> @@ -0,0 +1,65 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/regulator/allwinner,sun20i-d1-analog-ldos.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Allwinner D1 Analog LDOs > >> + > >> +description: > >> + Allwinner D1 contains a set of LDOs which are designed to supply analog power > >> + inside and outside the SoC. They are controlled by a register within the audio > >> + codec MMIO space, but which is not part of the audio codec clock/reset domain. > >> + > >> +maintainers: > >> + - Samuel Holland > >> + > >> +properties: > >> + compatible: > >> + enum: > >> + - allwinner,sun20i-d1-analog-ldos > >> + > >> + nvmem-cells: > >> + items: > >> + - description: NVMEM cell for the calibrated bandgap reference trim value > >> + > >> + nvmem-cell-names: > >> + items: > >> + - const: bg_trim > >> + > >> +patternProperties: > >> + "^(aldo|hpldo)$": > > > > '^(a|hp)ldo$' > > > >> + type: object > >> + $ref: regulator.yaml# > > > > unevaluatedProperties: false > > > >> + > >> +required: > >> + - compatible > >> + - nvmem-cells > >> + - nvmem-cell-names > >> + > >> +unevaluatedProperties: false > >> + > >> +examples: > >> + - | > >> + audio-codec@2030000 { > >> + compatible = "simple-mfd", "syscon"; > > > > Needs a specific compatible. Obviously there's some other functionality > > here if this is an 'audio-codec'. > > I am not yet ready to submit the binding or driver for the audio codec, as I > still need to work out the details for jack detection (and some other issues). > If I added the specific audio codec compatible now, without the properties > required for the sound driver, that would create backward compatibility issues, > right? Only if something used it. > My intention is to add the specific compatible along with the ASoC support. > > > 'simple-mfd' also means the child nodes have zero dependence on the > > parent node and its resources. > > That is correct. The regulators have zero dependencies on the audio codec > resources (clocks/resets/etc.). The _only_ relationship is the overlapping > address of the MMIO register. Okay. > > >> + reg = <0x2030000 0x1000>; > >> + > >> + regulators { > >> + compatible = "allwinner,sun20i-d1-analog-ldos"; > > > > Is there a defined set of registers for these regulators? If so, put > > them into 'reg'. > > What do you suggest for 'ranges' in the parent device? I ask because the > SRAM/system controller binding requires an empty 'ranges' property. I think you are misreading 'ranges: true'. That just means the property can be present, not that it's type is boolean. > With empty 'ranges', the child has to compute the relative address for use with > the parent's regmap, but maybe that is okay? We should probably have some sort of 'address to regmap offset' helper that works no matter what ranges has. In most cases, while I require 'reg', unless the child nodes use a mixed up set of registers, Linux doesn't currently use 'reg'. You can also just hardcode the offsets in your driver. > >> + nvmem-cells = <&bg_trim>; > >> + nvmem-cell-names = "bg_trim"; > >> + > >> + reg_aldo: aldo { > >> + regulator-min-microvolt = <1800000>; > >> + regulator-max-microvolt = <1800000>; > >> + }; > >> + > >> + reg_hpldo: hpldo { > >> + regulator-min-microvolt = <1800000>; > >> + regulator-max-microvolt = <1800000>; > >> + }; > >> + }; > >> + }; > >> + > >> +... > >> diff --git a/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-system-ldos.yaml b/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-system-ldos.yaml > >> new file mode 100644 > >> index 000000000000..c95030a827d6 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/regulator/allwinner,sun20i-d1-system-ldos.yaml > >> @@ -0,0 +1,57 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/regulator/allwinner,sun20i-d1-system-ldos.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Allwinner D1 System LDOs > >> + > >> +description: > >> + Allwinner D1 contains a pair of general-purpose LDOs which are designed to > >> + supply power inside and outside the SoC. They are controlled by a register > >> + within the system control MMIO space. > >> + > >> +maintainers: > >> + - Samuel Holland > >> + > >> +properties: > >> + compatible: > >> + enum: > >> + - allwinner,sun20i-d1-system-ldos > >> + > >> +patternProperties: > >> + "^(ldoa|ldob)$": > > > > '^ldo[ab]$' > > > > Any reason the naming is not consistent with 'ldo' as the prefix or > > suffix? > > All four names match the pin names from the SoC datasheet. Good enough for me. Rob