Message ID | 20240416153805.431118-1-angelogioacchino.delregno@collabora.com |
---|---|
Headers | show |
Series | MediaTek DVFSRC Bus Bandwidth and Regulator knobs | expand |
On Tue, 16 Apr 2024 17:38:02 +0200, AngeloGioacchino Del Regno wrote: > The Dynamic Voltage and Frequency Scaling Resource Collector Regulators > are controlled with votes to the DVFSRC hardware. > > This adds support for the regulators found in MT6873, MT8183, MT8192 > and MT8195 SoCs. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > --- > .../mediatek,mt6873-dvfsrc-regulator.yaml | 71 +++++++++++++++++++ > 1 file changed, 71 insertions(+) > create mode 100644 Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: ./Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml:5:10: [error] string value is redundantly quoted with any quotes (quoted-strings) dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml: $id: Cannot determine base path from $id, relative path/filename doesn't match actual path or filename $id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt6873-dvfsrc-regulator.yaml file: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.example.dtb: dvfsrc@10012000: '#address-cells', '#size-cells' do not match any of the regexes: '@[0-9a-f]+$', 'pinctrl-[0-9]+' from schema $id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt8183-dvfsrc.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.example.dtb: regulators@0: dvfsrc-vcore: False schema does not allow {'regulator-name': ['dvfsrc-vcore'], 'regulator-min-microvolt': [[550000]], 'regulator-max-microvolt': [[750000]], 'regulator-always-on': True} from schema $id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt6873-dvfsrc-regulator.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.example.dtb: regulators@0: dvfsrc-vscp: False schema does not allow {'regulator-name': ['dvfsrc-vscp'], 'regulator-min-microvolt': [[550000]], 'regulator-max-microvolt': [[750000]], 'regulator-always-on': True} from schema $id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt6873-dvfsrc-regulator.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240416153805.431118-4-angelogioacchino.delregno@collabora.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Tue, Apr 16, 2024 at 05:38:00PM +0200, AngeloGioacchino Del Regno wrote: > Add bindings for the MediaTek Dynamic Voltage and Frequency Scaling > Resource Collector (DVFSRC), a hardware module used to collect all the > requests from both software and the various remote processors embedded > into the SoC and decide about a minimum operating voltage and a minimum > DRAM frequency to fulfill those requests in an effort to provide the > best achievable performance per watt. > > This hardware IP is capable of transparently performing direct register > R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > --- > .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml | 57 +++++++++++++++++++ > 1 file changed, 57 insertions(+) > create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > diff --git a/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > new file mode 100644 > index 000000000000..12bcc3fdfd07 > --- /dev/null > +++ b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > @@ -0,0 +1,57 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt8183-dvfsrc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: MediaTek Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) > + > +description: > + The Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) is a > + Hardware module used to collect all the requests from both software and the > + various remote processors embedded into the SoC and decide about a minimum > + operating voltage and a minimum DRAM frequency to fulfill those requests in > + an effort to provide the best achievable performance per watt. > + This hardware IP is capable of transparently performing direct register R/W > + on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > + > +maintainers: > + - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > + - Henry Chen <henryc.chen@mediatek.com> > + > +properties: > + compatible: > + oneOf: > + - items: This items should not be needed with the enum, right? > + - enum: > + - mediatek,mt8183-dvfsrc > + - mediatek,mt8195-dvfsrc > + - items: > + - const: mediatek,mt8192-dvfsrc > + - const: mediatek,mt8195-dvfsrc > + > + reg: > + maxItems: 1 > + description: DVFSRC common register address and length. > + > +patternProperties: > + "@[0-9a-f]+$": > + type: object Why is there no enforcement of what a child could be here? > +required: > + - compatible > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + soc { > + #address-cells = <2>; > + #size-cells = <2>; > + > + dvfsrc@10012000 { "dvfsrc" looks like something my (imaginary given allergies) cat would produce from sitting on my keyboard. Could you use full words for the node name and make it something that attempts to be generic please? > + compatible = "mediatek,mt8195-dvfsrc"; > + reg = <0 0x10012000 0 0x1000>; > + }; > + }; > -- > 2.44.0 >
On Tue, Apr 16, 2024 at 06:28:58PM +0100, Conor Dooley wrote: > On Tue, Apr 16, 2024 at 05:38:00PM +0200, AngeloGioacchino Del Regno wrote: > > Add bindings for the MediaTek Dynamic Voltage and Frequency Scaling > > Resource Collector (DVFSRC), a hardware module used to collect all the > > requests from both software and the various remote processors embedded > > into the SoC and decide about a minimum operating voltage and a minimum > > DRAM frequency to fulfill those requests in an effort to provide the > > best achievable performance per watt. > > > > This hardware IP is capable of transparently performing direct register > > R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > > > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > > --- > > .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml | 57 +++++++++++++++++++ > > 1 file changed, 57 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > > > diff --git a/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > new file mode 100644 > > index 000000000000..12bcc3fdfd07 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > @@ -0,0 +1,57 @@ > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt8183-dvfsrc.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: MediaTek Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) > > + > > +description: > > + The Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) is a > > + Hardware module used to collect all the requests from both software and the > > + various remote processors embedded into the SoC and decide about a minimum > > + operating voltage and a minimum DRAM frequency to fulfill those requests in > > + an effort to provide the best achievable performance per watt. > > + This hardware IP is capable of transparently performing direct register R/W > > + on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > > + > > +maintainers: > > + - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > > + - Henry Chen <henryc.chen@mediatek.com> > > + > > +properties: > > + compatible: > > + oneOf: > > + - items: > > This items should not be needed with the enum, right? > > > + - enum: > > + - mediatek,mt8183-dvfsrc > > + - mediatek,mt8195-dvfsrc > > + - items: > > + - const: mediatek,mt8192-dvfsrc > > + - const: mediatek,mt8195-dvfsrc > > + > > + reg: > > + maxItems: 1 > > + description: DVFSRC common register address and length. > > + > > +patternProperties: > > + "@[0-9a-f]+$": > > + type: object > > Why is there no enforcement of what a child could be here? Seems like you know exactly what the children are: regulators and an interconnect? What am I missing? > > > +required: > > + - compatible > > + - reg > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + soc { > > + #address-cells = <2>; > > + #size-cells = <2>; > > + > > + dvfsrc@10012000 { > > "dvfsrc" looks like something my (imaginary given allergies) cat would > produce from sitting on my keyboard. Could you use full words for the > node name and make it something that attempts to be generic please? > > > + compatible = "mediatek,mt8195-dvfsrc"; > > + reg = <0 0x10012000 0 0x1000>; > > + }; > > + }; > > -- > > 2.44.0 > >
Il 17/04/24 02:52, Mark Brown ha scritto: > On Tue, Apr 16, 2024 at 05:38:04PM +0200, AngeloGioacchino Del Regno wrote: >> This driver never worked, and never got even compiled, because it was >> missing the DVFSRC driver entirely, including headers it relies on! >> >> Perform a full (or nearly full) refactoring of the MediaTek DVFSRC >> controlled Regulators driver: this retains support for the MT6873, >> MT8183 and MT8192 SoCs, and adds MT8195. >> >> As part of the refactoring, this driver is now probed using its own >> devicetree compatible, as this is a child of the main DVFSRC driver >> and gets probed as a subnode of that. > > Given what you're doing this would probably be easier to review as > two commits, one removing the existing driver and another adding the new > code. Yeah, definitely.... I'll do that for v2. Cheers, Angelo
On Wed, Apr 17, 2024 at 10:26:06AM +0200, AngeloGioacchino Del Regno wrote: > Il 16/04/24 19:30, Conor Dooley ha scritto: > > On Tue, Apr 16, 2024 at 06:28:58PM +0100, Conor Dooley wrote: > > > On Tue, Apr 16, 2024 at 05:38:00PM +0200, AngeloGioacchino Del Regno wrote: > > > > Add bindings for the MediaTek Dynamic Voltage and Frequency Scaling > > > > Resource Collector (DVFSRC), a hardware module used to collect all the > > > > requests from both software and the various remote processors embedded > > > > into the SoC and decide about a minimum operating voltage and a minimum > > > > DRAM frequency to fulfill those requests in an effort to provide the > > > > best achievable performance per watt. > > > > > > > > This hardware IP is capable of transparently performing direct register > > > > R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > > > > > > > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > > > > --- > > > > .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml | 57 +++++++++++++++++++ > > > > 1 file changed, 57 insertions(+) > > > > create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > > > > > > > diff --git a/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > > > new file mode 100644 > > > > index 000000000000..12bcc3fdfd07 > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml > > > > @@ -0,0 +1,57 @@ > > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/soc/mediatek/mediatek,mt8183-dvfsrc.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: MediaTek Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) > > > > + > > > > +description: > > > > + The Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) is a > > > > + Hardware module used to collect all the requests from both software and the > > > > + various remote processors embedded into the SoC and decide about a minimum > > > > + operating voltage and a minimum DRAM frequency to fulfill those requests in > > > > + an effort to provide the best achievable performance per watt. > > > > + This hardware IP is capable of transparently performing direct register R/W > > > > + on all of the DVFSRC-controlled regulators and SoC bandwidth knobs. > > > > + > > > > +maintainers: > > > > + - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> > > > > + - Henry Chen <henryc.chen@mediatek.com> > > > > + > > > > +properties: > > > > + compatible: > > > > + oneOf: > > > > + - items: > > > > > > This items should not be needed with the enum, right? > > > > > Whoops. Yep items is not needed. > > > > > + - enum: > > > > + - mediatek,mt8183-dvfsrc > > > > + - mediatek,mt8195-dvfsrc > > > > + - items: > > > > + - const: mediatek,mt8192-dvfsrc > > > > + - const: mediatek,mt8195-dvfsrc > > > > + > > > > + reg: > > > > + maxItems: 1 > > > > + description: DVFSRC common register address and length. > > > > + > > > > +patternProperties: > > > > + "@[0-9a-f]+$": > > > > + type: object > > > > > > Why is there no enforcement of what a child could be here? > > > > Seems like you know exactly what the children are: regulators and an > > interconnect? What am I missing? > > > > I wasn't sure whether that would've been a good idea, given that there will > be more possible children in the future - as in - more drivers that need the > DVFSRC communication. If there's no additional hardware, just additional drivers wanting to use this, there's no need to modify the dt, you just call platform_device_register() to spin up the new drivers. > But anyway yes, for now, it's just the regulator and interconnect drivers. We can always free it up whenever new requirements appear. > > > > +required: > > > > + - compatible > > > > + - reg > > > > + > > > > +additionalProperties: false > > > > + > > > > +examples: > > > > + - | > > > > + soc { > > > > + #address-cells = <2>; > > > > + #size-cells = <2>; > > > > + > > > > + dvfsrc@10012000 { > > > > > > "dvfsrc" looks like something my (imaginary given allergies) cat would > > (allergies: ugh, same here - feel you) > > > > produce from sitting on my keyboard. Could you use full words for the > > > node name and make it something that attempts to be generic please? > > > > > I'm not entirely sure that I can find a generic name for this... I wonder if > "remoteproc" could work - as this is a remote processor (a MCU, actually). > > To give you context, this doesn't need firmware to be loaded, and does not have > any remoteproc driver. I dunno, I don't think having to load firmware to something or interact with a remoteproc driver in linux changes what the hardware actually is. > > Because then, I don't think that "performance-controller" would be correct, > even though I have this N.2 choice... ideas? My lot call this type of thing a "system controller" in our specs. Any of firmware, remote-processor, performance-controller all seem valid to me. > Cheers, Cheers, Conor.