2023-06-23 08:21:53

by Lucas Tanure

[permalink] [raw]
Subject: [PATCH v5 0/4] Add Amlogic A311D2 and Khadas Vim4 Board Support

The Khadas VIM4 uses the Amlogic A311D2 SoC, based on the Amlogic
Meson T7 family. This chip is not the same as A311D used in Vim3
board.

Work based on Khadas 5.4 branch:
https://github.com/khadas/linux/tree/khadas-vims-5.4.y

The current status is Vim4 board booting to emergency shell via uart.

Board Features:
- 8GB LPDDR4X 2016MHz
- 32GB eMMC 5.1 storage
- 32MB SPI flash
- 10/100/1000 Base-T Ethernet
- AP6275S Wireless (802.11 a/b/g/n/ac/ax, BT5.1)
- HDMI 2.1 video
- HDMI Input
- 1x USB 2.0 + 1x USB 3.0 ports
- 1x USB-C (power) with USB 2.0 OTG
- 3x LED's (1x red, 1x blue, 1x white)
- 3x buttons (power, function, reset)
- M2 socket with PCIe, USB, ADC & I2C
- 40pin GPIO Header
- 1x micro SD card slot

Changes Since v4:
- Use S4 instead of G12a for uart fallback
- Add OF_EARLYCON_DECLARE for T7 uart

Changes Since v3:
- Fix issues with "amlogic,meson-t7-uart" documentation

Changes Since v2:
- Add "amlogic,meson-t7-uart" documentation

Changes Since v1:
- Drop the T7 clock driver as it is not needed for serial boot. It will
later use the S4 clock
driver as S4 and T7 seems to be similar chips.
- Use "arm,gic-400" for interrupt controller to fix dtb_check
- Remove CPU node properties not needed for serial boot
- Move UART node to apb4 node
- Drop T7 UART compatible line and use S4 uart
- Use psci V1 instead of 0.2, it works, but I can't verify is correct
as the datasheet I have
doesn't contain that information.
- Remove compatible from meson-t7.dtsi, move it to vim4 board dts
- Add memory node with 8GB. Not sure about this one, works without,
but doesn't detect 8GB
- Use defines for GIC_CPU_MASK_SIMPLE, IRQ_TYPE_LEVEL_LOW,
IRQ_TYPE_LEVEL_HIGH instead of hardcoded values

Lucas Tanure (4):
dt-bindings: arm: amlogic: add Amlogic A311D2 bindings
dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7
tty: serial: meson: Add a earlycon for the T7 SoC
arm64: dts: meson-t7-a311d2-khadas-vim4: add initial device-tree

.../devicetree/bindings/arm/amlogic.yaml | 7 +
.../bindings/serial/amlogic,meson-uart.yaml | 4 +
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../amlogic/meson-t7-a311d2-khadas-vim4.dts | 52 ++++++
arch/arm64/boot/dts/amlogic/meson-t7.dtsi | 158 ++++++++++++++++++
drivers/tty/serial/meson_uart.c | 2 +
6 files changed, 224 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7.dtsi

--
2.41.0



2023-06-23 08:22:46

by Lucas Tanure

[permalink] [raw]
Subject: [PATCH v5 4/4] arm64: dts: meson-t7-a311d2-khadas-vim4: add initial device-tree

The Khadas VIM4 uses the Amlogic A311D2 SoC, based on the Amlogic T7 SoC
family, on a board with the same form factor as the VIM3 models.

- 8GB LPDDR4X 2016MHz
- 32GB eMMC 5.1 storage
- 32MB SPI flash
- 10/100/1000 Base-T Ethernet
- AP6275S Wireless (802.11 a/b/g/n/ac/ax, BT5.1)
- HDMI 2.1 video
- HDMI Input
- 1x USB 2.0 + 1x USB 3.0 ports
- 1x USB-C (power) with USB 2.0 OTG
- 3x LED's (1x red, 1x blue, 1x white)
- 3x buttons (power, function, reset)
- M2 socket with PCIe, USB, ADC & I2C
- 40pin GPIO Header
- 1x micro SD card slot

Signed-off-by: Lucas Tanure <[email protected]>
---
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../amlogic/meson-t7-a311d2-khadas-vim4.dts | 52 ++++++
arch/arm64/boot/dts/amlogic/meson-t7.dtsi | 158 ++++++++++++++++++
3 files changed, 211 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7.dtsi

diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index cd1c5b04890a..1c5846bd1ca0 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -74,3 +74,4 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air-gbit.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-t7-a311d2-khadas-vim4.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts b/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
new file mode 100644
index 000000000000..04cc8b0dfd8c
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2022 Wesion, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "meson-t7.dtsi"
+
+/ {
+ model = "Khadas vim4";
+ compatible = "khadas,vim4", "amlogic,a311d2", "amlogic,t7";
+
+ aliases {
+ serial0 = &uart_A;
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x2 0x0>; /* 8 GB */
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /* 3 MiB reserved for ARM Trusted Firmware (BL31) */
+ secmon_reserved: secmon@5000000 {
+ reg = <0x0 0x05000000 0x0 0x300000>;
+ no-map;
+ };
+
+ /* 32 MiB reserved for ARM Trusted Firmware (BL32) */
+ secmon_reserved_bl32: secmon@5300000 {
+ reg = <0x0 0x05300000 0x0 0x2000000>;
+ no-map;
+ };
+ };
+
+ xtal: xtal-clk {
+ compatible = "fixed-clock";
+ clock-frequency = <24000000>;
+ clock-output-names = "xtal";
+ #clock-cells = <0>;
+ };
+
+};
+
+&uart_A {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/amlogic/meson-t7.dtsi b/arch/arm64/boot/dts/amlogic/meson-t7.dtsi
new file mode 100644
index 000000000000..9b8c33708ecd
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-t7.dtsi
@@ -0,0 +1,158 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ interrupt-parent = <&gic>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ cpus {
+ #address-cells = <0x2>;
+ #size-cells = <0x0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu100>;
+ };
+ core1 {
+ cpu = <&cpu101>;
+ };
+ core2 {
+ cpu = <&cpu102>;
+ };
+ core3 {
+ cpu = <&cpu103>;
+ };
+ };
+
+ cluster1 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+ core1 {
+ cpu = <&cpu1>;
+ };
+ core2 {
+ cpu = <&cpu2>;
+ };
+ core3 {
+ cpu = <&cpu3>;
+ };
+ };
+ };
+
+ cpu100: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0 0x100>;
+ enable-method = "psci";
+ };
+
+ cpu101: cpu@101{
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0 0x101>;
+ enable-method = "psci";
+ };
+
+ cpu102: cpu@102 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0 0x102>;
+ enable-method = "psci";
+ };
+
+ cpu103: cpu@103 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0 0x103>;
+ enable-method = "psci";
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a73";
+ reg = <0x0 0x0>;
+ enable-method = "psci";
+ };
+
+ cpu1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a73";
+ reg = <0x0 0x1>;
+ enable-method = "psci";
+ };
+
+ cpu2: cpu@2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a73";
+ reg = <0x0 0x2>;
+ enable-method = "psci";
+ };
+
+ cpu3: cpu@3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a73";
+ reg = <0x0 0x3>;
+ enable-method = "psci";
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ sm: secure-monitor {
+ compatible = "amlogic,meson-gxbb-sm";
+ };
+
+ soc {
+ compatible = "simple-bus";
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ gic: interrupt-controller@fff01000 {
+ compatible = "arm,gic-400";
+ #interrupt-cells = <3>;
+ #address-cells = <0>;
+ interrupt-controller;
+ reg = <0x0 0xfff01000 0 0x1000>,
+ <0x0 0xfff02000 0 0x0100>;
+ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+ };
+
+ apb4: bus@fe000000 {
+ compatible = "simple-bus";
+ reg = <0x0 0xfe000000 0x0 0x480000>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+
+ uart_A: serial@78000 {
+ compatible = "amlogic,meson-t7-uart",
+ "amlogic,meson-s4-uart";
+ reg = <0x0 0x78000 0x0 0x18>;
+ interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+ clocks = <&xtal>, <&xtal>, <&xtal>;
+ clock-names = "xtal", "pclk", "baud";
+ };
+ };
+
+ };
+};
--
2.41.0


2023-06-23 08:23:59

by Lucas Tanure

[permalink] [raw]
Subject: [PATCH v5 2/4] dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7

Amlogic T7 SoCs uses the same UART controller as S4 SoCs and G12A.
There is no need for an extra compatible line in the driver, but
add T7 compatible line for documentation.

Signed-off-by: Lucas Tanure <[email protected]>
---
.../devicetree/bindings/serial/amlogic,meson-uart.yaml | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
index 01ec45b3b406..ad970c9ed1c7 100644
--- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
+++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
@@ -50,6 +50,10 @@ properties:
items:
- const: amlogic,meson-g12a-uart
- const: amlogic,meson-gx-uart
+ - description: UART controller on T7 compatible SoCs
+ items:
+ - const: amlogic,meson-t7-uart
+ - const: amlogic,meson-s4-uart

reg:
maxItems: 1
--
2.41.0


2023-06-23 08:24:44

by Lucas Tanure

[permalink] [raw]
Subject: [PATCH v5 3/4] tty: serial: meson: Add a earlycon for the T7 SoC

The new Amlogic Meson T7 SoC does not have a always-on
uart, so add OF_EARLYCON_DECLARE for it.

Signed-off-by: Lucas Tanure <[email protected]>
---
drivers/tty/serial/meson_uart.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c
index 2501db5a7aaf..84d33903038a 100644
--- a/drivers/tty/serial/meson_uart.c
+++ b/drivers/tty/serial/meson_uart.c
@@ -649,6 +649,8 @@ meson_serial_early_console_setup(struct earlycon_device *device, const char *opt

OF_EARLYCON_DECLARE(meson, "amlogic,meson-ao-uart",
meson_serial_early_console_setup);
+OF_EARLYCON_DECLARE(meson, "amlogic,meson-t7-uart",
+ meson_serial_early_console_setup);

#define MESON_SERIAL_CONSOLE (&meson_serial_console)
#else
--
2.41.0


2023-06-23 09:21:07

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v5 2/4] dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7

On 23/06/2023 10:12, Lucas Tanure wrote:
> Amlogic T7 SoCs uses the same UART controller as S4 SoCs and G12A.
> There is no need for an extra compatible line in the driver, but
> add T7 compatible line for documentation.
>
> Signed-off-by: Lucas Tanure <[email protected]>
> ---
> .../devicetree/bindings/serial/amlogic,meson-uart.yaml | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> index 01ec45b3b406..ad970c9ed1c7 100644
> --- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> +++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> @@ -50,6 +50,10 @@ properties:
> items:
> - const: amlogic,meson-g12a-uart
> - const: amlogic,meson-gx-uart
> + - description: UART controller on T7 compatible SoCs

Your description is rather incorrect. This is UART on SoCs compatible
with S4, not with T7. Otherwise what do you expect to grow later when
adding more compatible devices? Just drop the description, it's kind of
obvious when done correctly (but can be misleading if done wrong).

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


Best regards,
Krzysztof


2023-06-23 18:25:21

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v5 2/4] dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7

On 23/06/2023 19:53, Lucas Tanure wrote:
> On Fri, Jun 23, 2023 at 9:51 AM Krzysztof Kozlowski
> <[email protected]> wrote:
>>
>> On 23/06/2023 10:12, Lucas Tanure wrote:
>>> Amlogic T7 SoCs uses the same UART controller as S4 SoCs and G12A.
>>> There is no need for an extra compatible line in the driver, but
>>> add T7 compatible line for documentation.
>>>
>>> Signed-off-by: Lucas Tanure <[email protected]>
>>> ---
>>> .../devicetree/bindings/serial/amlogic,meson-uart.yaml | 4 ++++
>>> 1 file changed, 4 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
>>> index 01ec45b3b406..ad970c9ed1c7 100644
>>> --- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
>>> +++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
>>> @@ -50,6 +50,10 @@ properties:
>>> items:
>>> - const: amlogic,meson-g12a-uart
>>> - const: amlogic,meson-gx-uart
>>> + - description: UART controller on T7 compatible SoCs
>>
>> Your description is rather incorrect. This is UART on SoCs compatible
>> with S4, not with T7. Otherwise what do you expect to grow later when
>> adding more compatible devices? Just drop the description, it's kind of
>> obvious when done correctly (but can be misleading if done wrong).
>>
>> Acked-by: Krzysztof Kozlowski <[email protected]>
>>
> Sorry, but S4 is already added in another way, which accepts just an
> S4 compatible string.
> But for T7 we need a fallback.
> Could you let me know what you're asking here? Redo S4 and add T7? Or
> do T7 in another different way that I didn't get?

I comment only about the description, so why touching anything else? You
did not add here T7 compatible SoCs. You added here S4 compatible SoCs.

> Do you want a v6 patch series? If yes, could you be more clear about
> how you want it?

No need. If you are going to send v6, you can as well drop the description.


---

This is an automated instruction, just in case, because many review tags
are being ignored. If you do not know the process, here is a short
explanation:

Please add Acked-by/Reviewed-by/Tested-by tags when posting new
versions, under or above your Signed-off-by tag. Tools like b4 can help
here. 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.

https://elixir.bootlin.com/linux/v5.17/source/Documentation/process/submitting-patches.rst#L540

Best regards,
Krzysztof


2023-06-23 18:34:49

by Lucas Tanure

[permalink] [raw]
Subject: Re: [PATCH v5 2/4] dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7

On Fri, Jun 23, 2023 at 9:51 AM Krzysztof Kozlowski
<[email protected]> wrote:
>
> On 23/06/2023 10:12, Lucas Tanure wrote:
> > Amlogic T7 SoCs uses the same UART controller as S4 SoCs and G12A.
> > There is no need for an extra compatible line in the driver, but
> > add T7 compatible line for documentation.
> >
> > Signed-off-by: Lucas Tanure <[email protected]>
> > ---
> > .../devicetree/bindings/serial/amlogic,meson-uart.yaml | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> > index 01ec45b3b406..ad970c9ed1c7 100644
> > --- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> > +++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> > @@ -50,6 +50,10 @@ properties:
> > items:
> > - const: amlogic,meson-g12a-uart
> > - const: amlogic,meson-gx-uart
> > + - description: UART controller on T7 compatible SoCs
>
> Your description is rather incorrect. This is UART on SoCs compatible
> with S4, not with T7. Otherwise what do you expect to grow later when
> adding more compatible devices? Just drop the description, it's kind of
> obvious when done correctly (but can be misleading if done wrong).
>
> Acked-by: Krzysztof Kozlowski <[email protected]>
>
Sorry, but S4 is already added in another way, which accepts just an
S4 compatible string.
But for T7 we need a fallback.
Could you let me know what you're asking here? Redo S4 and add T7? Or
do T7 in another different way that I didn't get?
Do you want a v6 patch series? If yes, could you be more clear about
how you want it?

>
> Best regards,
> Krzysztof
>

2023-06-26 03:11:43

by Kelvin Zhang

[permalink] [raw]
Subject: Re: [PATCH v5 4/4] arm64: dts: meson-t7-a311d2-khadas-vim4: add initial device-tree

> The Khadas VIM4 uses the Amlogic A311D2 SoC, based on the Amlogic T7 SoC
> family, on a board with the same form factor as the VIM3 models.
>
> - 8GB LPDDR4X 2016MHz
> - 32GB eMMC 5.1 storage
> - 32MB SPI flash
> - 10/100/1000 Base-T Ethernet
> - AP6275S Wireless (802.11 a/b/g/n/ac/ax, BT5.1)
> - HDMI 2.1 video
> - HDMI Input
> - 1x USB 2.0 + 1x USB 3.0 ports
> - 1x USB-C (power) with USB 2.0 OTG
> - 3x LED's (1x red, 1x blue, 1x white)
> - 3x buttons (power, function, reset)
> - M2 socket with PCIe, USB, ADC & I2C
> - 40pin GPIO Header
> - 1x micro SD card slot
>
> Signed-off-by: Lucas Tanure <[email protected]>
> ---
> arch/arm64/boot/dts/amlogic/Makefile | 1 +
> .../amlogic/meson-t7-a311d2-khadas-vim4.dts | 52 ++++++

Please rename "meson-t7-a311d2-khadas-vim4.dts" to
"amlogic-t7-a311d2-khadas-vim4.dts".

> arch/arm64/boot/dts/amlogic/meson-t7.dtsi | 158 ++++++++++++++++++

Please rename "meson-t7.dtsi" to "amlogic-t7.dtsi".

> 3 files changed, 211 insertions(+)
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-t7.dtsi
>
> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
> index cd1c5b04890a..1c5846bd1ca0 100644
> --- a/arch/arm64/boot/dts/amlogic/Makefile
> +++ b/arch/arm64/boot/dts/amlogic/Makefile
> @@ -74,3 +74,4 @@ dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air-gbit.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air.dtb
> +dtb-$(CONFIG_ARCH_MESON) += meson-t7-a311d2-khadas-vim4.dtb
> diff --git a/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts b/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
> new file mode 100644
> index 000000000000..04cc8b0dfd8c
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-t7-a311d2-khadas-vim4.dts
> @@ -0,0 +1,52 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2022 Wesion, Inc. All rights reserved.
> + */
> +
> +/dts-v1/;
> +
> +#include "meson-t7.dtsi"
> +
> +/ {
> + model = "Khadas vim4";
> + compatible = "khadas,vim4", "amlogic,a311d2", "amlogic,t7";
> +
> + aliases {
> + serial0 = &uart_A;
> + };
> +
> + memory@0 {
> + device_type = "memory";
> + reg = <0x0 0x0 0x2 0x0>; /* 8 GB */
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + /* 3 MiB reserved for ARM Trusted Firmware (BL31) */
> + secmon_reserved: secmon@5000000 {
> + reg = <0x0 0x05000000 0x0 0x300000>;
> + no-map;
> + };
> +
> + /* 32 MiB reserved for ARM Trusted Firmware (BL32) */
> + secmon_reserved_bl32: secmon@5300000 {
> + reg = <0x0 0x05300000 0x0 0x2000000>;
> + no-map;
> + };
> + };
> +
> + xtal: xtal-clk {
> + compatible = "fixed-clock";
> + clock-frequency = <24000000>;
> + clock-output-names = "xtal";
> + #clock-cells = <0>;
> + };
> +
> +};
> +
> +&uart_A {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/amlogic/meson-t7.dtsi b/arch/arm64/boot/dts/amlogic/meson-t7.dtsi
> new file mode 100644
> index 000000000000..9b8c33708ecd
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-t7.dtsi
> @@ -0,0 +1,158 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
> + */
> +
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> + interrupt-parent = <&gic>;
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + cpus {
> + #address-cells = <0x2>;
> + #size-cells = <0x0>;
> +
> + cpu-map {
> + cluster0 {
> + core0 {
> + cpu = <&cpu100>;
> + };
> + core1 {
> + cpu = <&cpu101>;
> + };
> + core2 {
> + cpu = <&cpu102>;
> + };
> + core3 {
> + cpu = <&cpu103>;
> + };
> + };
> +
> + cluster1 {
> + core0 {
> + cpu = <&cpu0>;
> + };
> + core1 {
> + cpu = <&cpu1>;
> + };
> + core2 {
> + cpu = <&cpu2>;
> + };
> + core3 {
> + cpu = <&cpu3>;
> + };
> + };
> + };
> +
> + cpu100: cpu@100 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a53";
> + reg = <0x0 0x100>;
> + enable-method = "psci";
> + };
> +
> + cpu101: cpu@101{
> + device_type = "cpu";
> + compatible = "arm,cortex-a53";
> + reg = <0x0 0x101>;
> + enable-method = "psci";
> + };
> +
> + cpu102: cpu@102 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a53";
> + reg = <0x0 0x102>;
> + enable-method = "psci";
> + };
> +
> + cpu103: cpu@103 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a53";
> + reg = <0x0 0x103>;
> + enable-method = "psci";
> + };
> +
> + cpu0: cpu@0 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a73";
> + reg = <0x0 0x0>;
> + enable-method = "psci";
> + };
> +
> + cpu1: cpu@1 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a73";
> + reg = <0x0 0x1>;
> + enable-method = "psci";
> + };
> +
> + cpu2: cpu@2 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a73";
> + reg = <0x0 0x2>;
> + enable-method = "psci";
> + };
> +
> + cpu3: cpu@3 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a73";
> + reg = <0x0 0x3>;
> + enable-method = "psci";
> + };
> + };
> +
> + timer {
> + compatible = "arm,armv8-timer";
> + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> + };
> +
> + psci {
> + compatible = "arm,psci-1.0";
> + method = "smc";
> + };
> +
> + sm: secure-monitor {
> + compatible = "amlogic,meson-gxbb-sm";
> + };
> +
> + soc {
> + compatible = "simple-bus";
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + gic: interrupt-controller@fff01000 {
> + compatible = "arm,gic-400";
> + #interrupt-cells = <3>;
> + #address-cells = <0>;
> + interrupt-controller;
> + reg = <0x0 0xfff01000 0 0x1000>,
> + <0x0 0xfff02000 0 0x0100>;
> + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
> + };
> +
> + apb4: bus@fe000000 {
> + compatible = "simple-bus";
> + reg = <0x0 0xfe000000 0x0 0x480000>;
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
> +
> + uart_A: serial@78000 {
> + compatible = "amlogic,meson-t7-uart",
> + "amlogic,meson-s4-uart";
> + reg = <0x0 0x78000 0x0 0x18>;
> + interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> + status = "disabled";
> + clocks = <&xtal>, <&xtal>, <&xtal>;
> + clock-names = "xtal", "pclk", "baud";
> + };
> + };
> +
> + };
> +};
> --
> 2.41.0
>
>
> _______________________________________________
> linux-amlogic mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-amlogic

2023-06-27 08:00:07

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v5 3/4] tty: serial: meson: Add a earlycon for the T7 SoC

On 23/06/2023 10:12, Lucas Tanure wrote:
> The new Amlogic Meson T7 SoC does not have a always-on
> uart, so add OF_EARLYCON_DECLARE for it.
>
> Signed-off-by: Lucas Tanure <[email protected]>
> ---
> drivers/tty/serial/meson_uart.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c
> index 2501db5a7aaf..84d33903038a 100644
> --- a/drivers/tty/serial/meson_uart.c
> +++ b/drivers/tty/serial/meson_uart.c
> @@ -649,6 +649,8 @@ meson_serial_early_console_setup(struct earlycon_device *device, const char *opt
>
> OF_EARLYCON_DECLARE(meson, "amlogic,meson-ao-uart",
> meson_serial_early_console_setup);
> +OF_EARLYCON_DECLARE(meson, "amlogic,meson-t7-uart",
> + meson_serial_early_console_setup);
>
> #define MESON_SERIAL_CONSOLE (&meson_serial_console)
> #else

Acked-by: Neil Armstrong <[email protected]>

2023-06-27 09:05:45

by Lucas Tanure

[permalink] [raw]
Subject: Re: [PATCH v5 2/4] dt-bindings: serial: amlogic,meson-uart: Add compatible string for T7

On Fri, Jun 23, 2023 at 6:56 PM Krzysztof Kozlowski
<[email protected]> wrote:
>
> On 23/06/2023 19:53, Lucas Tanure wrote:
> > On Fri, Jun 23, 2023 at 9:51 AM Krzysztof Kozlowski
> > <[email protected]> wrote:
> >>
> >> On 23/06/2023 10:12, Lucas Tanure wrote:
> >>> Amlogic T7 SoCs uses the same UART controller as S4 SoCs and G12A.
> >>> There is no need for an extra compatible line in the driver, but
> >>> add T7 compatible line for documentation.
> >>>
> >>> Signed-off-by: Lucas Tanure <[email protected]>
> >>> ---
> >>> .../devicetree/bindings/serial/amlogic,meson-uart.yaml | 4 ++++
> >>> 1 file changed, 4 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> >>> index 01ec45b3b406..ad970c9ed1c7 100644
> >>> --- a/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> >>> +++ b/Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
> >>> @@ -50,6 +50,10 @@ properties:
> >>> items:
> >>> - const: amlogic,meson-g12a-uart
> >>> - const: amlogic,meson-gx-uart
> >>> + - description: UART controller on T7 compatible SoCs
> >>
> >> Your description is rather incorrect. This is UART on SoCs compatible
> >> with S4, not with T7. Otherwise what do you expect to grow later when
> >> adding more compatible devices? Just drop the description, it's kind of
> >> obvious when done correctly (but can be misleading if done wrong).
> >>
> >> Acked-by: Krzysztof Kozlowski <[email protected]>
> >>
> > Sorry, but S4 is already added in another way, which accepts just an
> > S4 compatible string.
> > But for T7 we need a fallback.
> > Could you let me know what you're asking here? Redo S4 and add T7? Or
> > do T7 in another different way that I didn't get?
>
> I comment only about the description, so why touching anything else? You
> did not add here T7 compatible SoCs. You added here S4 compatible SoCs.
>
> > Do you want a v6 patch series? If yes, could you be more clear about
> > how you want it?
>
> No need. If you are going to send v6, you can as well drop the description.
>
I can't just remove that line, as it doesn't pass the checks.
I will change it to S4.

>
> ---
>
> This is an automated instruction, just in case, because many review tags
> are being ignored. If you do not know the process, here is a short
> explanation:
>
> Please add Acked-by/Reviewed-by/Tested-by tags when posting new
> versions, under or above your Signed-off-by tag. Tools like b4 can help
> here. 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.
>
> https://elixir.bootlin.com/linux/v5.17/source/Documentation/process/submitting-patches.rst#L540
>
> Best regards,
> Krzysztof
>