2024-01-08 08:53:17

by Rafał Miłecki

[permalink] [raw]
Subject: [PATCH V2 0/3] mt7988: initial DT changes

From: Rafał Miłecki <[email protected]>

This work is based on linux-next content and was successfully verified
using "dtbs_check". It's initial code for MT7988A that will get extended
as we get more bindings available (pinctrl is big blocker right now).

AngeloGioacchino, Matthias: is this something you could queue in
git://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux
for v6.9?

Rafał Miłecki (3):
dt-bindings: arm64: mediatek: Add MT7988A and BPI-R4
arm64: dts: mediatek: Add initial MT7988A and BPI-R4
arm64: dts: mediatek: mt7988: add clock controllers

.../devicetree/bindings/arm/mediatek.yaml | 4 +
arch/arm64/boot/dts/mediatek/Makefile | 1 +
.../dts/mediatek/mt7988a-bananapi-bpi-r4.dts | 11 ++
arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 136 ++++++++++++++++++
4 files changed, 152 insertions(+)
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a.dtsi

--
2.35.3



2024-01-08 08:53:29

by Rafał Miłecki

[permalink] [raw]
Subject: [PATCH V2 1/3] dt-bindings: arm64: mediatek: Add MT7988A and BPI-R4

From: Rafał Miłecki <[email protected]>

MT7988A is another MediaTek's SoC with just 1 device available right
now: Banana Pi BPI-R4.

Signed-off-by: Rafał Miłecki <[email protected]>
---
Documentation/devicetree/bindings/arm/mediatek.yaml | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/mediatek.yaml b/Documentation/devicetree/bindings/arm/mediatek.yaml
index 6f2f64ae76fc..92dbfb862757 100644
--- a/Documentation/devicetree/bindings/arm/mediatek.yaml
+++ b/Documentation/devicetree/bindings/arm/mediatek.yaml
@@ -91,6 +91,10 @@ properties:
- enum:
- mediatek,mt7986b-rfb
- const: mediatek,mt7986b
+ - items:
+ - enum:
+ - bananapi,bpi-r4
+ - const: mediatek,mt7988a
- items:
- enum:
- mediatek,mt8127-moose
--
2.35.3


2024-01-08 08:53:44

by Rafał Miłecki

[permalink] [raw]
Subject: [PATCH V2 2/3] arm64: dts: mediatek: Add initial MT7988A and BPI-R4

From: Rafał Miłecki <[email protected]>

MT7988A (AKA MediaTek Filogic 880) is a quad-core ARM Cortex-A73
platform designed for Wi-Fi 7 devices (there is no wireless on SoC
though). The first public MT7988A device is Banana Pi BPI-R4.

Many SoC parts remain to be added (they need their own bindings or
depend on missing clocks). Those present block however are correct and
having base .dtsi will help testing & working on missing stuff.

Signed-off-by: Rafał Miłecki <[email protected]>
---
V2: Drop thermal zones & reserved memory from .dtsi (those don't belong
there and we also need thermal controller first). Fix compatible.

arch/arm64/boot/dts/mediatek/Makefile | 1 +
.../dts/mediatek/mt7988a-bananapi-bpi-r4.dts | 11 +++
arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 97 +++++++++++++++++++
3 files changed, 109 insertions(+)
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a.dtsi

diff --git a/arch/arm64/boot/dts/mediatek/Makefile b/arch/arm64/boot/dts/mediatek/Makefile
index 1e6f91731e92..0a189d5d8006 100644
--- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/arch/arm64/boot/dts/mediatek/Makefile
@@ -15,6 +15,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-nor.dtbo
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3-sd.dtbo
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-rfb.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986b-rfb.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt7988a-bananapi-bpi-r4.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-pumpkin.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-elm.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-elm-hana.dtb
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
new file mode 100644
index 000000000000..efc4ad0b08b8
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+/dts-v1/;
+
+#include "mt7988a.dtsi"
+
+/ {
+ compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
+ model = "Banana Pi BPI-R4";
+ chassis-type = "embedded";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
new file mode 100644
index 000000000000..5a778188ac21
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "mediatek,mt7988a";
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ compatible = "arm,cortex-a73";
+ reg = <0x0>;
+ device_type = "cpu";
+ enable-method = "psci";
+ };
+
+ cpu@1 {
+ compatible = "arm,cortex-a73";
+ reg = <0x1>;
+ device_type = "cpu";
+ enable-method = "psci";
+ };
+
+ cpu@2 {
+ compatible = "arm,cortex-a73";
+ reg = <0x2>;
+ device_type = "cpu";
+ enable-method = "psci";
+ };
+
+ cpu@3 {
+ compatible = "arm,cortex-a73";
+ reg = <0x3>;
+ device_type = "cpu";
+ enable-method = "psci";
+ };
+ };
+
+ oscillator-40m {
+ compatible = "fixed-clock";
+ clock-frequency = <40000000>;
+ #clock-cells = <0>;
+ clock-output-names = "clkxtal";
+ };
+
+ pmu {
+ compatible = "arm,cortex-a73-pmu";
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+ };
+
+ psci {
+ compatible = "arm,psci-0.2";
+ method = "smc";
+ };
+
+ soc {
+ compatible = "simple-bus";
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ gic: interrupt-controller@c000000 {
+ compatible = "arm,gic-v3";
+ reg = <0 0x0c000000 0 0x40000>, /* GICD */
+ <0 0x0c080000 0 0x200000>, /* GICR */
+ <0 0x0c400000 0 0x2000>, /* GICC */
+ <0 0x0c410000 0 0x1000>, /* GICH */
+ <0 0x0c420000 0 0x2000>; /* GICV */
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-controller;
+ #interrupt-cells = <3>;
+ };
+
+ watchdog@1001c000 {
+ compatible = "mediatek,mt7988-wdt";
+ reg = <0 0x1001c000 0 0x1000>;
+ interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+ #reset-cells = <1>;
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+ <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
--
2.35.3


2024-01-08 08:54:11

by Rafał Miłecki

[permalink] [raw]
Subject: [PATCH V2 3/3] arm64: dts: mediatek: mt7988: add clock controllers

From: Rafał Miłecki <[email protected]>

Add bindings of on-SoC clocks.

Signed-off-by: Rafał Miłecki <[email protected]>
---
V2: New PATCH in the series thanks to Daniel's bindings work

arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 41 ++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
index 5a778188ac21..bba97de4fb44 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
@@ -78,12 +78,51 @@ gic: interrupt-controller@c000000 {
#interrupt-cells = <3>;
};

- watchdog@1001c000 {
+ clock-controller@10001000 {
+ compatible = "mediatek,mt7988-infracfg", "syscon";
+ reg = <0 0x10001000 0 0x1000>;
+ #clock-cells = <1>;
+ };
+
+ clock-controller@1001b000 {
+ compatible = "mediatek,mt7988-topckgen", "syscon";
+ reg = <0 0x1001b000 0 0x1000>;
+ #clock-cells = <1>;
+ };
+
+ watchdog: watchdog@1001c000 {
compatible = "mediatek,mt7988-wdt";
reg = <0 0x1001c000 0 0x1000>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
#reset-cells = <1>;
};
+
+ clock-controller@1001e000 {
+ compatible = "mediatek,mt7988-apmixedsys";
+ reg = <0 0x1001e000 0 0x1000>;
+ #clock-cells = <1>;
+ };
+
+ clock-controller@11f40000 {
+ compatible = "mediatek,mt7988-xfi-pll";
+ reg = <0 0x11f40000 0 0x1000>;
+ resets = <&watchdog 16>;
+ #clock-cells = <1>;
+ };
+
+ clock-controller@15000000 {
+ compatible = "mediatek,mt7988-ethsys", "syscon";
+ reg = <0 0x15000000 0 0x1000>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
+
+ clock-controller@15031000 {
+ compatible = "mediatek,mt7988-ethwarp";
+ reg = <0 0x15031000 0 0x1000>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
};

timer {
--
2.35.3


2024-01-08 09:35:09

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH V2 1/3] dt-bindings: arm64: mediatek: Add MT7988A and BPI-R4

On 08/01/2024 09:52, Rafał Miłecki wrote:
> From: Rafał Miłecki <[email protected]>
>
> MT7988A is another MediaTek's SoC with just 1 device available right
> now: Banana Pi BPI-R4.
>
> Signed-off-by: Rafał Miłecki <[email protected]>

Acked-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof


2024-01-08 12:21:55

by Daniel Golle

[permalink] [raw]
Subject: Re: [PATCH V2 3/3] arm64: dts: mediatek: mt7988: add clock controllers

On Mon, Jan 08, 2024 at 09:52:28AM +0100, Rafał Miłecki wrote:
> From: Rafał Miłecki <[email protected]>
>
> Add bindings of on-SoC clocks.
>
> Signed-off-by: Rafał Miłecki <[email protected]>

Reviewed-by: Daniel Golle <[email protected]>

> ---
> V2: New PATCH in the series thanks to Daniel's bindings work
>
> arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 41 ++++++++++++++++++++++-
> 1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
> index 5a778188ac21..bba97de4fb44 100644
> --- a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi
> @@ -78,12 +78,51 @@ gic: interrupt-controller@c000000 {
> #interrupt-cells = <3>;
> };
>
> - watchdog@1001c000 {
> + clock-controller@10001000 {
> + compatible = "mediatek,mt7988-infracfg", "syscon";
> + reg = <0 0x10001000 0 0x1000>;
> + #clock-cells = <1>;
> + };
> +
> + clock-controller@1001b000 {
> + compatible = "mediatek,mt7988-topckgen", "syscon";
> + reg = <0 0x1001b000 0 0x1000>;
> + #clock-cells = <1>;
> + };
> +
> + watchdog: watchdog@1001c000 {
> compatible = "mediatek,mt7988-wdt";
> reg = <0 0x1001c000 0 0x1000>;
> interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
> #reset-cells = <1>;
> };
> +
> + clock-controller@1001e000 {
> + compatible = "mediatek,mt7988-apmixedsys";
> + reg = <0 0x1001e000 0 0x1000>;
> + #clock-cells = <1>;
> + };
> +
> + clock-controller@11f40000 {
> + compatible = "mediatek,mt7988-xfi-pll";
> + reg = <0 0x11f40000 0 0x1000>;
> + resets = <&watchdog 16>;
> + #clock-cells = <1>;
> + };
> +
> + clock-controller@15000000 {
> + compatible = "mediatek,mt7988-ethsys", "syscon";
> + reg = <0 0x15000000 0 0x1000>;
> + #clock-cells = <1>;
> + #reset-cells = <1>;
> + };
> +
> + clock-controller@15031000 {
> + compatible = "mediatek,mt7988-ethwarp";
> + reg = <0 0x15031000 0 0x1000>;
> + #clock-cells = <1>;
> + #reset-cells = <1>;
> + };
> };
>
> timer {
> --
> 2.35.3
>

2024-01-22 09:11:35

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH V2 0/3] mt7988: initial DT changes



On 08/01/2024 09:52, Rafał Miłecki wrote:
> From: Rafał Miłecki <[email protected]>
>
> This work is based on linux-next content and was successfully verified
> using "dtbs_check". It's initial code for MT7988A that will get extended
> as we get more bindings available (pinctrl is big blocker right now).
>
> AngeloGioacchino, Matthias: is this something you could queue in
> git://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux
> for v6.9?
>

Series applied, thanks!

> Rafał Miłecki (3):
> dt-bindings: arm64: mediatek: Add MT7988A and BPI-R4
> arm64: dts: mediatek: Add initial MT7988A and BPI-R4
> arm64: dts: mediatek: mt7988: add clock controllers
>
> .../devicetree/bindings/arm/mediatek.yaml | 4 +
> arch/arm64/boot/dts/mediatek/Makefile | 1 +
> .../dts/mediatek/mt7988a-bananapi-bpi-r4.dts | 11 ++
> arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 136 ++++++++++++++++++
> 4 files changed, 152 insertions(+)
> create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
> create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a.dtsi
>