From: Nicolas Boichat <hidden> Date: 2021-01-26 01:32:53
Hi!
Follow-up on the v5 [1], things have gotten significantly
better in the last 9 months, thanks to the efforts on Bifrost
support by the Collabora team (and probably others I'm not
aware of).
I've been testing this series on a MT8183/kukui device, with a
chromeos-5.10 kernel [2], and got basic Chromium OS UI up with
mesa 20.3.2 (lots of artifacts though).
devfreq is currently not supported, as we'll need:
- Clock core support for switching the GPU core clock (see 2/4).
- Platform-specific handling of the 2-regulator (see 3/4).
Since the latter is easy to detect, patch 3/4 just disables
devfreq if the more than one regulator is specified in the
compatible matching table.
[1] https://patchwork.kernel.org/project/linux-mediatek/cover/20200306041345.259332-1-drinkcat@chromium.org/
[2] https://crrev.com/c/2608070
Changes in v11:
- binding: power-domain-names not power-domainS-names
- mt8183*.dts: remove incorrect supply-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9:
- Explain why devfreq needs to be disabled for GPUs with >1
regulators.
Changes in v8:
- Use DRM_DEV_INFO instead of ERROR
Changes in v7:
- Fix GPU ID in commit message
- Fix GPU ID in commit message
Changes in v6:
- Rebased, actually tested with recent mesa driver.
- Add gpu regulators to kukui dtsi as well.
- Power domains are now attached to spm, not scpsys
- Drop R-B.
- devfreq: New change
- Context conflicts, reflow the code.
- Use ARRAY_SIZE for power domains too.
Changes in v5:
- Rename "2d" power domain to "core2"
- Rename "2d" power domain to "core2" (keep R-B again).
- Change power domain name from 2d to core2.
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
- Add power-domain-names to describe the 3 domains.
(kept Alyssa's reviewed-by as the change is minor)
- Add power domain names.
Changes in v3:
- Match mt8183-mali instead of bifrost, as we require special
handling for the 2 regulators and 3 power domains.
Changes in v2:
- Use sram instead of mali_sram as SRAM supply name.
- Rename mali@ to gpu@.
Nicolas Boichat (4):
dt-bindings: gpu: mali-bifrost: Add Mediatek MT8183
arm64: dts: mt8183: Add node for the Mali GPU
drm/panfrost: devfreq: Disable devfreq when num_supplies > 1
drm/panfrost: Add mt8183-mali compatible string
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++
arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 5 +
.../arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 +
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 105 ++++++++++++++++++
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 9 ++
drivers/gpu/drm/panfrost/panfrost_drv.c | 10 ++
6 files changed, 162 insertions(+)
--
2.30.0.280.ga3ce27912f-goog
From: Nicolas Boichat <hidden> Date: 2021-01-26 10:28:27
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
@@ -87,6 +90,31 @@ allOf:then:required:-resets+-if:+properties:+compatible:+contains:+const:mediatek,mt8183-mali+then:+properties:+power-domains:+description:+List of phandle and PM domain specifier as documented in+Documentation/devicetree/bindings/power/power_domain.txt+minItems:3+maxItems:3+power-domain-names:+items:+-const:core0+-const:core1+-const:core2+required:+-sram-supply+-power-domains+-power-domain-names+else:+properties:+sram-supply:falseexamples:-|
From: Nicolas Boichat <hidden> Date: 2021-01-26 10:29:46
Add a basic GPU node for mt8183.
Signed-off-by: Nicolas Boichat <redacted>
---
The binding we use with out-of-tree Mali drivers includes more
clocks, this is used for devfreq: the out-of-tree driver switches
clk_mux to clk_sub_parent (26Mhz), adjusts clk_main_parent, then
switches clk_mux back to clk_main_parent:
(see https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.19/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c#423)
clocks =
<&topckgen CLK_TOP_MFGPLL_CK>,
<&topckgen CLK_TOP_MUX_MFG>,
<&clk26m>,
<&mfgcfg CLK_MFG_BG3D>;
clock-names =
"clk_main_parent",
"clk_mux",
"clk_sub_parent",
"subsys_mfg_cg";
(based on discussions, this probably belongs in the clock core)
This only matters for devfreq, that is disabled anyway as we don't
have platform-specific code to handle >1 supplies.
Changes in v11:
- mt8183*.dts: remove incorrect supply-names
Changes in v10: None
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add gpu regulators to kukui dtsi as well.
- Power domains are now attached to spm, not scpsys
- Drop R-B.
Changes in v5:
- Rename "2d" power domain to "core2" (keep R-B again).
Changes in v4:
- Add power-domain-names to describe the 3 domains.
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2:
- Use sram instead of mali_sram as SRAM supply name.
- Rename mali@ to gpu@.
arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 5 +
.../arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 +
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 105 ++++++++++++++++++
3 files changed, 115 insertions(+)
From: Rob Herring <robh@kernel.org> Date: 2021-02-05 17:59:59
On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.
If a tag was not added on purpose, please state why and what changed.
From: Nicolas Boichat <hidden> Date: 2021-02-06 04:01:54
On Sat, Feb 6, 2021 at 1:55 AM Rob Herring [off-list ref] wrote:
On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:
quoted
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.
If a tag was not added on purpose, please state why and what changed.
There were changes in v11, I thought you'd want to review again?
Anyway, I can resend a v12 with all the Rb/Ab if that works better for you.
From: Rob Herring <robh@kernel.org> Date: 2021-04-20 12:58:32
On Fri, Feb 5, 2021 at 9:02 PM Nicolas Boichat [off-list ref] wrote:
On Sat, Feb 6, 2021 at 1:55 AM Rob Herring [off-list ref] wrote:
quoted
On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:
quoted
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.
If a tag was not added on purpose, please state why and what changed.
There were changes in v11, I thought you'd want to review again?
Looked like a minor change from the changelog, so it would have been
appropriate to keep. However, I see another issue.
Rob
From: Rob Herring <robh@kernel.org> Date: 2021-04-20 13:01:32
On Mon, Jan 25, 2021 at 7:18 PM Nicolas Boichat [off-list ref] wrote:
quoted hunk
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
@@ -87,6 +90,31 @@ allOf:then:required:-resets+-if:+properties:+compatible:+contains:+const:mediatek,mt8183-mali+then:+properties:+power-domains:+description:+List of phandle and PM domain specifier as documented in+Documentation/devicetree/bindings/power/power_domain.txt+minItems:3+maxItems:3
This won't work because the top level schema restricts this to 1. The
top level needs to say:
power-domains:
minItems: 1
maxItems: 3
And you need just 'minItems: 3' here and 'maxItems: 1' in the else clause.
And drop the description. That's every 'power-domains' property.
From: Neil Armstrong <hidden> Date: 2021-04-20 15:34:00
On 26/01/2021 02:17, Nicolas Boichat wrote:
Add a basic GPU node for mt8183.
Signed-off-by: Nicolas Boichat <redacted>
---
The binding we use with out-of-tree Mali drivers includes more
clocks, this is used for devfreq: the out-of-tree driver switches
clk_mux to clk_sub_parent (26Mhz), adjusts clk_main_parent, then
switches clk_mux back to clk_main_parent:
(see https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.19/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c#423)
clocks =
<&topckgen CLK_TOP_MFGPLL_CK>,
<&topckgen CLK_TOP_MUX_MFG>,
<&clk26m>,
<&mfgcfg CLK_MFG_BG3D>;
clock-names =
"clk_main_parent",
"clk_mux",
"clk_sub_parent",
"subsys_mfg_cg";
(based on discussions, this probably belongs in the clock core)
This only matters for devfreq, that is disabled anyway as we don't
have platform-specific code to handle >1 supplies.
Changes in v11:
- mt8183*.dts: remove incorrect supply-names
Changes in v10: None
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add gpu regulators to kukui dtsi as well.
- Power domains are now attached to spm, not scpsys
- Drop R-B.
Changes in v5:
- Rename "2d" power domain to "core2" (keep R-B again).
Changes in v4:
- Add power-domain-names to describe the 3 domains.
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2:
- Use sram instead of mali_sram as SRAM supply name.
- Rename mali@ to gpu@.
arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 5 +
.../arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 +
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 105 ++++++++++++++++++
3 files changed, 115 insertions(+)
If you re-spin, you can also add the same changes to mt8183-pumpkin.dts :
From: Nicolas Boichat <hidden> Date: 2021-04-21 00:03:32
On Tue, Apr 20, 2021 at 11:33 PM Neil Armstrong [off-list ref] wrote:
On 26/01/2021 02:17, Nicolas Boichat wrote:
quoted
Add a basic GPU node for mt8183.
Signed-off-by: Nicolas Boichat <redacted>
---
The binding we use with out-of-tree Mali drivers includes more
clocks, this is used for devfreq: the out-of-tree driver switches
clk_mux to clk_sub_parent (26Mhz), adjusts clk_main_parent, then
switches clk_mux back to clk_main_parent:
(see https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.19/drivers/gpu/arm/midgard/platform/mediatek/mali_kbase_runtime_pm.c#423)
clocks =
<&topckgen CLK_TOP_MFGPLL_CK>,
<&topckgen CLK_TOP_MUX_MFG>,
<&clk26m>,
<&mfgcfg CLK_MFG_BG3D>;
clock-names =
"clk_main_parent",
"clk_mux",
"clk_sub_parent",
"subsys_mfg_cg";
(based on discussions, this probably belongs in the clock core)
This only matters for devfreq, that is disabled anyway as we don't
have platform-specific code to handle >1 supplies.
Changes in v11:
- mt8183*.dts: remove incorrect supply-names
Changes in v10: None
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Add gpu regulators to kukui dtsi as well.
- Power domains are now attached to spm, not scpsys
- Drop R-B.
Changes in v5:
- Rename "2d" power domain to "core2" (keep R-B again).
Changes in v4:
- Add power-domain-names to describe the 3 domains.
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2:
- Use sram instead of mali_sram as SRAM supply name.
- Rename mali@ to gpu@.
arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 5 +
.../arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 +
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 105 ++++++++++++++++++
3 files changed, 115 insertions(+)
If you re-spin, you can also add the same changes to mt8183-pumpkin.dts :
From: Nicolas Boichat <hidden> Date: 2021-04-21 00:11:39
On Tue, Apr 20, 2021 at 9:01 PM Rob Herring [off-list ref] wrote:
On Mon, Jan 25, 2021 at 7:18 PM Nicolas Boichat [off-list ref] wrote:
quoted
Define a compatible string for the Mali Bifrost GPU found in
Mediatek's MT8183 SoCs.
Signed-off-by: Nicolas Boichat <redacted>
---
Changes in v11:
- binding: power-domain-names not power-domainS-names
Changes in v10:
- Fix the binding to make sure sram-supply property can be provided.
Changes in v9: None
Changes in v8: None
Changes in v7: None
Changes in v6:
- Rebased, actually tested with recent mesa driver.
Changes in v5:
- Rename "2d" power domain to "core2"
Changes in v4:
- Add power-domain-names description
(kept Alyssa's reviewed-by as the change is minor)
Changes in v3: None
Changes in v2: None
.../bindings/gpu/arm,mali-bifrost.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
@@ -87,6 +90,31 @@ allOf:then:required:-resets+-if:+properties:+compatible:+contains:+const:mediatek,mt8183-mali+then:+properties:+power-domains:+description:+List of phandle and PM domain specifier as documented in+Documentation/devicetree/bindings/power/power_domain.txt+minItems:3+maxItems:3
This won't work because the top level schema restricts this to 1. The
top level needs to say:
power-domains:
minItems: 1
maxItems: 3
And you need just 'minItems: 3' here and 'maxItems: 1' in the else clause.
And drop the description. That's every 'power-domains' property.