* [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
@ 2026-02-18 10:20 Ronald Claveau
2026-02-18 10:23 ` Krzysztof Kozlowski
0 siblings, 1 reply; 8+ messages in thread
From: Ronald Claveau @ 2026-02-18 10:20 UTC (permalink / raw)
To: linux-amlogic
Cc: Ronald Claveau, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-kernel, devicetree, linux-kernel
Add fixed clock and EMMC support for Amlogic T7 SoC family dtsi.
Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
---
arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 137 +++++++++++++++++++-
1 file changed, 134 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
index 6510068bcff9..e5932eb3db2b 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
@@ -3,6 +3,8 @@
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
+#include <dt-bindings/clock/amlogic,t7-peripherals-clkc.h>
+#include <dt-bindings/clock/amlogic,t7-pll-clkc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/amlogic,t7-pwrc.h>
#include "amlogic-t7-reset.h"
@@ -208,12 +210,14 @@ soc {
ranges;
gic: interrupt-controller@fff01000 {
- compatible = "arm,gic-400";
+ compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
#interrupt-cells = <3>;
#address-cells = <0>;
interrupt-controller;
reg = <0x0 0xfff01000 0 0x1000>,
- <0x0 0xfff02000 0 0x0100>;
+ <0x0 0xfff02000 0 0x2000>,
+ <0x0 0xfff04000 0 0x2000>,
+ <0x0 0xfff06000 0 0x2000>;
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
};
@@ -224,6 +228,24 @@ apb4: bus@fe000000 {
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+ clkc: clock-controller@0 {
+ compatible = "amlogic,t7-peripherals-clkc";
+ reg = <0x0 0x0 0x0 0x49c>;
+ #clock-cells = <1>;
+ clocks = <&xtal>,
+ <&fpll CLKID_FDIV2>,
+ <&fpll CLKID_FDIV2P5>,
+ <&fpll CLKID_FDIV3>,
+ <&fpll CLKID_FDIV4>,
+ <&fpll CLKID_FDIV5>,
+ <&hifi_pll CLKID_HIFI_PLL>,
+ <&mpll CLKID_MPLL2>,
+ <&mpll CLKID_MPLL3>,
+ <&gp0_pll CLKID_GP0_PLL>;
+ clock-names = "xtal", "fdiv2", "fdiv2p5", "fdiv3", "fdiv4",
+ "fdiv5", "hifi", "mpll2", "mpll3", "gp0";
+ };
+
reset: reset-controller@2000 {
compatible = "amlogic,t7-reset";
reg = <0x0 0x2000 0x0 0x98>;
@@ -250,6 +272,68 @@ gpio: bank@4000 {
#gpio-cells = <2>;
gpio-ranges = <&periphs_pinctrl 0 0 157>;
};
+
+ emmc_ctrl_pins: emmc-ctrl {
+ mux-0 {
+ groups = "emmc_cmd";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+
+ mux-1 {
+ groups = "emmc_clk";
+ function = "emmc";
+ bias-disable;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_data_4b_pins: emmc-data-4b {
+ mux-0 {
+ groups = "emmc_nand_d0",
+ "emmc_nand_d1",
+ "emmc_nand_d2",
+ "emmc_nand_d3";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_data_8b_pins: emmc-data-8b {
+ mux-0 {
+ groups = "emmc_nand_d0",
+ "emmc_nand_d1",
+ "emmc_nand_d2",
+ "emmc_nand_d3",
+ "emmc_nand_d4",
+ "emmc_nand_d5",
+ "emmc_nand_d6",
+ "emmc_nand_d7";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_ds_pins: emmc-ds {
+ mux {
+ groups = "emmc_nand_ds";
+ function = "emmc";
+ bias-pull-down;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_clk_gate_pins: emmc_clk_gate {
+ mux {
+ groups = "GPIOB_8";
+ function = "gpio_periphs";
+ bias-pull-down;
+ drive-strength-microamp = <4000>;
+ };
+ };
};
gpio_intc: interrupt-controller@4080 {
@@ -262,8 +346,40 @@ gpio_intc: interrupt-controller@4080 {
<10 11 12 13 14 15 16 17 18 19 20 21>;
};
+ fpll: clock-controller@8040 {
+ compatible = "amlogic,t7-fpll";
+ reg = <0x0 0x8040 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "xtal";
+ };
+
+ gp0_pll: clock-controller@8080 {
+ compatible = "amlogic,t7-gp0-pll";
+ reg = <0x0 0x8080 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "in0";
+ };
+
+ hifi_pll: clock-controller@8100 {
+ compatible = "amlogic,t7-hifi-pll";
+ reg = <0x0 0x8100 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "in0";
+ };
+
+ mpll: clock-controller@8180 {
+ compatible = "amlogic,t7-mpll";
+ reg = <0x0 0x8180 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&fpll CLKID_FPLL_DCO>;
+ clock-names = "in0";
+ };
+
uart_a: serial@78000 {
- compatible = "amlogic,t7-uart", "amlogic,meson-s4-uart";
+ compatible = "amlogic,meson-s4-uart";
reg = <0x0 0x78000 0x0 0x18>;
interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
@@ -276,6 +392,21 @@ sec_ao: ao-secure@10220 {
reg = <0x0 0x10220 0x0 0x140>;
amlogic,has-chip-id;
};
+
+ sd_emmc_c: mmc@8c000{
+ compatible = "amlogic,meson-axg-mmc";
+ reg = <0x0 0x8c000 0x0 0x800>;
+ interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+ clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
+ <&clkc CLKID_SD_EMMC_C>,
+ <&gp0_pll CLKID_GP0_PLL>;
+ clock-names = "core", "clkin0", "clkin1";
+ assigned-clocks = <&clkc CLKID_SD_EMMC_C_SEL>;
+ assigned-clock-parents = <&xtal>;
+ no-sdio;
+ no-sd;
+ };
};
};
--
2.49.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 10:20 [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
@ 2026-02-18 10:23 ` Krzysztof Kozlowski
2026-02-18 16:36 ` Ronald Claveau
0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-18 10:23 UTC (permalink / raw)
To: Ronald Claveau, linux-amlogic
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On 18/02/2026 11:20, Ronald Claveau wrote:
> Add fixed clock and EMMC support for Amlogic T7 SoC family dtsi.
>
> Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
> ---
> arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 137 +++++++++++++++++++-
> 1 file changed, 134 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> index 6510068bcff9..e5932eb3db2b 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> @@ -3,6 +3,8 @@
> * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
> */
>
> +#include <dt-bindings/clock/amlogic,t7-peripherals-clkc.h>
> +#include <dt-bindings/clock/amlogic,t7-pll-clkc.h>
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/power/amlogic,t7-pwrc.h>
> #include "amlogic-t7-reset.h"
> @@ -208,12 +210,14 @@ soc {
> ranges;
>
> gic: interrupt-controller@fff01000 {
> - compatible = "arm,gic-400";
> + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
I don't get how this is related to "Add fixed clock".
> #interrupt-cells = <3>;
> #address-cells = <0>;
> interrupt-controller;
> reg = <0x0 0xfff01000 0 0x1000>,
> - <0x0 0xfff02000 0 0x0100>;
> + <0x0 0xfff02000 0 0x2000>,
> + <0x0 0xfff04000 0 0x2000>,
> + <0x0 0xfff06000 0 0x2000>;
Neither this really.
...
> +
> + sd_emmc_c: mmc@8c000{
> + compatible = "amlogic,meson-axg-mmc";
Compatible says axg, DTS says T7, so something does not feel right.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 10:23 ` Krzysztof Kozlowski
@ 2026-02-18 16:36 ` Ronald Claveau
2026-02-18 16:39 ` Krzysztof Kozlowski
0 siblings, 1 reply; 8+ messages in thread
From: Ronald Claveau @ 2026-02-18 16:36 UTC (permalink / raw)
To: Krzysztof Kozlowski, Ronald Claveau, linux-amlogic
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On 2/18/26 11:23 AM, Krzysztof Kozlowski wrote:
> On 18/02/2026 11:20, Ronald Claveau wrote:
>> Add fixed clock and EMMC support for Amlogic T7 SoC family dtsi.
>>
>> Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
>> ---
>> arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 137 +++++++++++++++++++-
>> 1 file changed, 134 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
>> index 6510068bcff9..e5932eb3db2b 100644
>> --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
>> +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
>> @@ -3,6 +3,8 @@
>> * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
>> */
>>
>> +#include <dt-bindings/clock/amlogic,t7-peripherals-clkc.h>
>> +#include <dt-bindings/clock/amlogic,t7-pll-clkc.h>
>> #include <dt-bindings/interrupt-controller/arm-gic.h>
>> #include <dt-bindings/power/amlogic,t7-pwrc.h>
>> #include "amlogic-t7-reset.h"
>> @@ -208,12 +210,14 @@ soc {
>> ranges;
>>
>> gic: interrupt-controller@fff01000 {
>> - compatible = "arm,gic-400";
>> + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
>
> I don't get how this is related to "Add fixed clock".
>
>> #interrupt-cells = <3>;
>> #address-cells = <0>;
>> interrupt-controller;
>> reg = <0x0 0xfff01000 0 0x1000>,
>> - <0x0 0xfff02000 0 0x0100>;
>> + <0x0 0xfff02000 0 0x2000>,
>> + <0x0 0xfff04000 0 0x2000>,
>> + <0x0 0xfff06000 0 0x2000>;
>
> Neither this really.
>
> ...
>
You right, I will send a different patch to address that specific issue,
and I will remove it here for v2.
>> +
>> + sd_emmc_c: mmc@8c000{
>> + compatible = "amlogic,meson-axg-mmc";
>
> Compatible says axg, DTS says T7, so something does not feel right.
>
The SOC family is T7, but the emmc is fully compatible with this same
axg code.
I did the same as used in meson-g12-common.dtsi or meson-s4.dtsi, which
use the same compatible.
Best Regards,
Ronald
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 16:36 ` Ronald Claveau
@ 2026-02-18 16:39 ` Krzysztof Kozlowski
2026-02-18 17:00 ` Ronald Claveau
0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-18 16:39 UTC (permalink / raw)
To: Ronald Claveau, Ronald Claveau, linux-amlogic
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On 18/02/2026 17:36, Ronald Claveau wrote:
>>> +
>>> + sd_emmc_c: mmc@8c000{
>>> + compatible = "amlogic,meson-axg-mmc";
>>
>> Compatible says axg, DTS says T7, so something does not feel right.
>>
>
> The SOC family is T7, but the emmc is fully compatible with this same
> axg code.
> I did the same as used in meson-g12-common.dtsi or meson-s4.dtsi, which
> use the same compatible.
You still should have a dedicated front compatible (needs documenting in
the binding) expressing full compatibility.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 16:39 ` Krzysztof Kozlowski
@ 2026-02-18 17:00 ` Ronald Claveau
0 siblings, 0 replies; 8+ messages in thread
From: Ronald Claveau @ 2026-02-18 17:00 UTC (permalink / raw)
To: Krzysztof Kozlowski, linux-amlogic
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On 2/18/26 5:39 PM, Krzysztof Kozlowski wrote:
> On 18/02/2026 17:36, Ronald Claveau wrote:
>>>> +
>>>> + sd_emmc_c: mmc@8c000{
>>>> + compatible = "amlogic,meson-axg-mmc";
>>>
>>> Compatible says axg, DTS says T7, so something does not feel right.
>>>
>>
>> The SOC family is T7, but the emmc is fully compatible with this same
>> axg code.
>> I did the same as used in meson-g12-common.dtsi or meson-s4.dtsi, which
>> use the same compatible.
>
> You still should have a dedicated front compatible (needs documenting in
> the binding) expressing full compatibility.
>
ok, I will use something like that:
compatible = "amlogic,t7-mmc", "amlogic,meson-axg-mmc";
Best regards,
Ronald
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/7] drivers: clk: meson: Add Amlogic T7 fix pll support
@ 2026-02-18 10:17 Ronald Claveau
2026-02-18 11:20 ` [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
0 siblings, 1 reply; 8+ messages in thread
From: Ronald Claveau @ 2026-02-18 10:17 UTC (permalink / raw)
To: linux-amlogic
Cc: Ronald Claveau, Neil Armstrong, Jerome Brunet, Michael Turquette,
Stephen Boyd, Kevin Hilman, Martin Blumenstingl, linux-clk,
linux-arm-kernel, linux-kernel
Add PLL for the clock controller of the Amlogic T7 SoC family.
Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
---
drivers/clk/meson/t7-pll.c | 257 +++++++++++++++++++++++++++++++++++++
1 file changed, 257 insertions(+)
diff --git a/drivers/clk/meson/t7-pll.c b/drivers/clk/meson/t7-pll.c
index 0a622f45fa36..3dd3aca50b7c 100644
--- a/drivers/clk/meson/t7-pll.c
+++ b/drivers/clk/meson/t7-pll.c
@@ -71,6 +71,15 @@
#define MCLK_PLL_CNTL4 0x10
#define MCLK_PLL_STS 0x14
+#define FPLL_CTRL0 0x00
+#define FPLL_CTRL1 0x04
+#define FPLL_CTRL2 0x08
+#define FPLL_CTRL3 0x0c
+#define FPLL_CTRL4 0x10
+#define FPLL_CTRL5 0x14
+#define FPLL_CTRL6 0x18
+#define FPLL_STS 0x1c
+
static const struct pll_mult_range t7_media_pll_mult_range = {
.min = 125,
.max = 250,
@@ -1047,6 +1056,253 @@ static const struct meson_clkc_data t7_mclk_data = {
},
};
+static struct clk_regmap t7_fpll_dco = {
+ .data = &(struct meson_clk_pll_data){
+ .en = {
+ .reg_off = FPLL_CTRL0,
+ .shift = 28,
+ .width = 1,
+ },
+ .m = {
+ .reg_off = FPLL_CTRL0,
+ .shift = 0,
+ .width = 8,
+ },
+ .n = {
+ .reg_off = FPLL_CTRL0,
+ .shift = 10,
+ .width = 5,
+ },
+ .frac = {
+ .reg_off = FPLL_CTRL1,
+ .shift = 0,
+ .width = 17,
+ },
+ .l = {
+ .reg_off = FPLL_CTRL0,
+ .shift = 31,
+ .width = 1,
+ },
+ .rst = {
+ .reg_off = FPLL_CTRL0,
+ .shift = 29,
+ .width = 1,
+ },
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fpll_dco",
+ .ops = &meson_clk_pll_ro_ops,
+ .parent_data = &(const struct clk_parent_data) {
+ .fw_name = "xtal",
+ },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fpll = {
+ .data = &(struct clk_regmap_div_data){
+ .offset = FPLL_CTRL0,
+ .shift = 16,
+ .width = 2,
+ .flags = CLK_DIVIDER_POWER_OF_TWO,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fpll",
+ .ops = &clk_regmap_divider_ro_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fpll_dco.hw
+ },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv2_div = {
+ .mult = 1,
+ .div = 2,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv2_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) { &t7_fpll.hw },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv2 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 24,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv2",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv2_div.hw
+ },
+ .num_parents = 1,
+ .flags = CLK_IS_CRITICAL,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv2p5_div = {
+ .mult = 2,
+ .div = 5,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv2p5_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fpll.hw
+ },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv2p5 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 25,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv2p5",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv2p5_div.hw
+ },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv3_div = {
+ .mult = 1,
+ .div = 3,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv3_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) { &t7_fpll.hw },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv3 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 20,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv3",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv3_div.hw
+ },
+ .num_parents = 1,
+ .flags = CLK_IS_CRITICAL,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv4_div = {
+ .mult = 1,
+ .div = 4,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv4_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) { &t7_fpll.hw },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv4 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 21,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv4",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv4_div.hw
+ },
+ .num_parents = 1,
+ .flags = CLK_IS_CRITICAL,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv5_div = {
+ .mult = 1,
+ .div = 5,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv5_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) { &t7_fpll.hw },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv5 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 22,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv5",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv5_div.hw
+ },
+ .num_parents = 1,
+ .flags = CLK_IS_CRITICAL,
+ },
+};
+
+static struct clk_fixed_factor t7_fdiv7_div = {
+ .mult = 1,
+ .div = 7,
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv7_div",
+ .ops = &clk_fixed_factor_ops,
+ .parent_hws = (const struct clk_hw *[]) { &t7_fpll.hw },
+ .num_parents = 1,
+ },
+};
+
+static struct clk_regmap t7_fdiv7 = {
+ .data = &(struct clk_regmap_gate_data){
+ .offset = FPLL_CTRL1,
+ .bit_idx = 23,
+ },
+ .hw.init = &(struct clk_init_data){
+ .name = "fdiv7",
+ .ops = &clk_regmap_gate_ops,
+ .parent_hws = (const struct clk_hw *[]) {
+ &t7_fdiv7_div.hw
+ },
+ .num_parents = 1,
+ .flags = CLK_IS_CRITICAL,
+ },
+};
+
+static struct clk_hw *t7_fpll_hw_clks[] = {
+ [CLKID_FPLL_DCO] = &t7_fpll_dco.hw,
+ [CLKID_FPLL] = &t7_fpll.hw,
+ [CLKID_FDIV2_DIV] = &t7_fdiv2_div.hw,
+ [CLKID_FDIV2] = &t7_fdiv2.hw,
+ [CLKID_FDIV2P5_DIV] = &t7_fdiv2p5_div.hw,
+ [CLKID_FDIV2P5] = &t7_fdiv2p5.hw,
+ [CLKID_FDIV3_DIV] = &t7_fdiv3_div.hw,
+ [CLKID_FDIV3] = &t7_fdiv3.hw,
+ [CLKID_FDIV4_DIV] = &t7_fdiv4_div.hw,
+ [CLKID_FDIV4] = &t7_fdiv4.hw,
+ [CLKID_FDIV5_DIV] = &t7_fdiv5_div.hw,
+ [CLKID_FDIV5] = &t7_fdiv5.hw,
+ [CLKID_FDIV7_DIV] = &t7_fdiv7_div.hw,
+ [CLKID_FDIV7] = &t7_fdiv7.hw,
+};
+
+static const struct meson_clkc_data t7_fpll_data = {
+ .hw_clks = {
+ .hws = t7_fpll_hw_clks,
+ .num = ARRAY_SIZE(t7_fpll_hw_clks),
+ },
+};
+
static const struct of_device_id t7_pll_clkc_match_table[] = {
{ .compatible = "amlogic,t7-gp0-pll", .data = &t7_gp0_data, },
{ .compatible = "amlogic,t7-gp1-pll", .data = &t7_gp1_data, },
@@ -1055,6 +1311,7 @@ static const struct of_device_id t7_pll_clkc_match_table[] = {
{ .compatible = "amlogic,t7-mpll", .data = &t7_mpll_data, },
{ .compatible = "amlogic,t7-hdmi-pll", .data = &t7_hdmi_data, },
{ .compatible = "amlogic,t7-mclk-pll", .data = &t7_mclk_data, },
+ { .compatible = "amlogic,t7-fpll", .data = &t7_fpll_data, },
{}
};
MODULE_DEVICE_TABLE(of, t7_pll_clkc_match_table);
--
2.49.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 10:17 [PATCH 1/7] drivers: clk: meson: Add Amlogic T7 fix pll support Ronald Claveau
@ 2026-02-18 11:20 ` Ronald Claveau
2026-02-18 18:34 ` Jerome Brunet
2026-02-18 19:18 ` Krzysztof Kozlowski
0 siblings, 2 replies; 8+ messages in thread
From: Ronald Claveau @ 2026-02-18 11:20 UTC (permalink / raw)
To: linux-amlogic
Cc: Ronald Claveau, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-kernel, devicetree, linux-kernel
Add fixed clock and EMMC support for Amlogic T7 SoC family dtsi.
Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
---
arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 129 ++++++++++++++++++++
1 file changed, 129 insertions(+)
diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
index 6510068bcff9..b84281e5cdd8 100644
--- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
+++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
@@ -3,6 +3,8 @@
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
+#include <dt-bindings/clock/amlogic,t7-peripherals-clkc.h>
+#include <dt-bindings/clock/amlogic,t7-pll-clkc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/amlogic,t7-pwrc.h>
#include "amlogic-t7-reset.h"
@@ -224,6 +226,24 @@ apb4: bus@fe000000 {
#size-cells = <2>;
ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+ clkc: clock-controller@0 {
+ compatible = "amlogic,t7-peripherals-clkc";
+ reg = <0x0 0x0 0x0 0x49c>;
+ #clock-cells = <1>;
+ clocks = <&xtal>,
+ <&fpll CLKID_FDIV2>,
+ <&fpll CLKID_FDIV2P5>,
+ <&fpll CLKID_FDIV3>,
+ <&fpll CLKID_FDIV4>,
+ <&fpll CLKID_FDIV5>,
+ <&hifi_pll CLKID_HIFI_PLL>,
+ <&mpll CLKID_MPLL2>,
+ <&mpll CLKID_MPLL3>,
+ <&gp0_pll CLKID_GP0_PLL>;
+ clock-names = "xtal", "fdiv2", "fdiv2p5", "fdiv3", "fdiv4",
+ "fdiv5", "hifi", "mpll2", "mpll3", "gp0";
+ };
+
reset: reset-controller@2000 {
compatible = "amlogic,t7-reset";
reg = <0x0 0x2000 0x0 0x98>;
@@ -250,6 +270,68 @@ gpio: bank@4000 {
#gpio-cells = <2>;
gpio-ranges = <&periphs_pinctrl 0 0 157>;
};
+
+ emmc_ctrl_pins: emmc-ctrl {
+ mux-0 {
+ groups = "emmc_cmd";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+
+ mux-1 {
+ groups = "emmc_clk";
+ function = "emmc";
+ bias-disable;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_data_4b_pins: emmc-data-4b {
+ mux-0 {
+ groups = "emmc_nand_d0",
+ "emmc_nand_d1",
+ "emmc_nand_d2",
+ "emmc_nand_d3";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_data_8b_pins: emmc-data-8b {
+ mux-0 {
+ groups = "emmc_nand_d0",
+ "emmc_nand_d1",
+ "emmc_nand_d2",
+ "emmc_nand_d3",
+ "emmc_nand_d4",
+ "emmc_nand_d5",
+ "emmc_nand_d6",
+ "emmc_nand_d7";
+ function = "emmc";
+ bias-pull-up;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_ds_pins: emmc-ds {
+ mux {
+ groups = "emmc_nand_ds";
+ function = "emmc";
+ bias-pull-down;
+ drive-strength-microamp = <4000>;
+ };
+ };
+
+ emmc_clk_gate_pins: emmc_clk_gate {
+ mux {
+ groups = "GPIOB_8";
+ function = "gpio_periphs";
+ bias-pull-down;
+ drive-strength-microamp = <4000>;
+ };
+ };
};
gpio_intc: interrupt-controller@4080 {
@@ -262,6 +344,38 @@ gpio_intc: interrupt-controller@4080 {
<10 11 12 13 14 15 16 17 18 19 20 21>;
};
+ fpll: clock-controller@8040 {
+ compatible = "amlogic,t7-fpll";
+ reg = <0x0 0x8040 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "xtal";
+ };
+
+ gp0_pll: clock-controller@8080 {
+ compatible = "amlogic,t7-gp0-pll";
+ reg = <0x0 0x8080 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "in0";
+ };
+
+ hifi_pll: clock-controller@8100 {
+ compatible = "amlogic,t7-hifi-pll";
+ reg = <0x0 0x8100 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&xtal>;
+ clock-names = "in0";
+ };
+
+ mpll: clock-controller@8180 {
+ compatible = "amlogic,t7-mpll";
+ reg = <0x0 0x8180 0x0 0x20>;
+ #clock-cells = <1>;
+ clocks = <&fpll CLKID_FPLL_DCO>;
+ clock-names = "in0";
+ };
+
uart_a: serial@78000 {
compatible = "amlogic,t7-uart", "amlogic,meson-s4-uart";
reg = <0x0 0x78000 0x0 0x18>;
@@ -276,6 +390,21 @@ sec_ao: ao-secure@10220 {
reg = <0x0 0x10220 0x0 0x140>;
amlogic,has-chip-id;
};
+
+ sd_emmc_c: mmc@8c000{
+ compatible = "amlogic,meson-axg-mmc";
+ reg = <0x0 0x8c000 0x0 0x800>;
+ interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
+ status = "disabled";
+ clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
+ <&clkc CLKID_SD_EMMC_C>,
+ <&gp0_pll CLKID_GP0_PLL>;
+ clock-names = "core", "clkin0", "clkin1";
+ assigned-clocks = <&clkc CLKID_SD_EMMC_C_SEL>;
+ assigned-clock-parents = <&xtal>;
+ no-sdio;
+ no-sd;
+ };
};
};
--
2.49.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 11:20 ` [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
@ 2026-02-18 18:34 ` Jerome Brunet
2026-02-18 19:18 ` Krzysztof Kozlowski
1 sibling, 0 replies; 8+ messages in thread
From: Jerome Brunet @ 2026-02-18 18:34 UTC (permalink / raw)
To: Ronald Claveau
Cc: linux-amlogic, Neil Armstrong, Kevin Hilman, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On mer. 18 févr. 2026 at 12:20, Ronald Claveau <linux-kernel-dev@aliel.fr> wrote:
> Add fixed clock and EMMC support for Amlogic T7 SoC family dtsi.
One topic per patch please
>
> Signed-off-by: Ronald Claveau <linux-kernel-dev@aliel.fr>
> ---
> arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 129 ++++++++++++++++++++
> 1 file changed, 129 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> index 6510068bcff9..b84281e5cdd8 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi
> @@ -3,6 +3,8 @@
> * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
> */
>
> +#include <dt-bindings/clock/amlogic,t7-peripherals-clkc.h>
> +#include <dt-bindings/clock/amlogic,t7-pll-clkc.h>
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/power/amlogic,t7-pwrc.h>
> #include "amlogic-t7-reset.h"
> @@ -224,6 +226,24 @@ apb4: bus@fe000000 {
> #size-cells = <2>;
> ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
>
> + clkc: clock-controller@0 {
> + compatible = "amlogic,t7-peripherals-clkc";
> + reg = <0x0 0x0 0x0 0x49c>;
> + #clock-cells = <1>;
> + clocks = <&xtal>,
> + <&fpll CLKID_FDIV2>,
> + <&fpll CLKID_FDIV2P5>,
> + <&fpll CLKID_FDIV3>,
> + <&fpll CLKID_FDIV4>,
> + <&fpll CLKID_FDIV5>,
> + <&hifi_pll CLKID_HIFI_PLL>,
> + <&mpll CLKID_MPLL2>,
> + <&mpll CLKID_MPLL3>,
> + <&gp0_pll CLKID_GP0_PLL>;
> + clock-names = "xtal", "fdiv2", "fdiv2p5", "fdiv3", "fdiv4",
> + "fdiv5", "hifi", "mpll2", "mpll3", "gp0";
> + };
> +
> reset: reset-controller@2000 {
> compatible = "amlogic,t7-reset";
> reg = <0x0 0x2000 0x0 0x98>;
> @@ -250,6 +270,68 @@ gpio: bank@4000 {
> #gpio-cells = <2>;
> gpio-ranges = <&periphs_pinctrl 0 0 157>;
> };
> +
> + emmc_ctrl_pins: emmc-ctrl {
> + mux-0 {
> + groups = "emmc_cmd";
> + function = "emmc";
> + bias-pull-up;
> + drive-strength-microamp = <4000>;
> + };
> +
> + mux-1 {
> + groups = "emmc_clk";
> + function = "emmc";
> + bias-disable;
> + drive-strength-microamp = <4000>;
> + };
> + };
> +
> + emmc_data_4b_pins: emmc-data-4b {
> + mux-0 {
> + groups = "emmc_nand_d0",
> + "emmc_nand_d1",
> + "emmc_nand_d2",
> + "emmc_nand_d3";
> + function = "emmc";
> + bias-pull-up;
> + drive-strength-microamp = <4000>;
> + };
> + };
> +
> + emmc_data_8b_pins: emmc-data-8b {
> + mux-0 {
> + groups = "emmc_nand_d0",
> + "emmc_nand_d1",
> + "emmc_nand_d2",
> + "emmc_nand_d3",
> + "emmc_nand_d4",
> + "emmc_nand_d5",
> + "emmc_nand_d6",
> + "emmc_nand_d7";
> + function = "emmc";
> + bias-pull-up;
> + drive-strength-microamp = <4000>;
> + };
> + };
> +
> + emmc_ds_pins: emmc-ds {
> + mux {
> + groups = "emmc_nand_ds";
> + function = "emmc";
> + bias-pull-down;
> + drive-strength-microamp = <4000>;
> + };
> + };
> +
> + emmc_clk_gate_pins: emmc_clk_gate {
> + mux {
> + groups = "GPIOB_8";
> + function = "gpio_periphs";
> + bias-pull-down;
> + drive-strength-microamp = <4000>;
> + };
> + };
> };
>
> gpio_intc: interrupt-controller@4080 {
> @@ -262,6 +344,38 @@ gpio_intc: interrupt-controller@4080 {
> <10 11 12 13 14 15 16 17 18 19 20 21>;
> };
>
> + fpll: clock-controller@8040 {
> + compatible = "amlogic,t7-fpll";
> + reg = <0x0 0x8040 0x0 0x20>;
> + #clock-cells = <1>;
> + clocks = <&xtal>;
> + clock-names = "xtal";
> + };
> +
> + gp0_pll: clock-controller@8080 {
> + compatible = "amlogic,t7-gp0-pll";
> + reg = <0x0 0x8080 0x0 0x20>;
> + #clock-cells = <1>;
> + clocks = <&xtal>;
> + clock-names = "in0";
> + };
> +
> + hifi_pll: clock-controller@8100 {
> + compatible = "amlogic,t7-hifi-pll";
> + reg = <0x0 0x8100 0x0 0x20>;
> + #clock-cells = <1>;
> + clocks = <&xtal>;
> + clock-names = "in0";
> + };
> +
> + mpll: clock-controller@8180 {
> + compatible = "amlogic,t7-mpll";
> + reg = <0x0 0x8180 0x0 0x20>;
> + #clock-cells = <1>;
> + clocks = <&fpll CLKID_FPLL_DCO>;
> + clock-names = "in0";
> + };
> +
> uart_a: serial@78000 {
> compatible = "amlogic,t7-uart", "amlogic,meson-s4-uart";
> reg = <0x0 0x78000 0x0 0x18>;
> @@ -276,6 +390,21 @@ sec_ao: ao-secure@10220 {
> reg = <0x0 0x10220 0x0 0x140>;
> amlogic,has-chip-id;
> };
> +
> + sd_emmc_c: mmc@8c000{
> + compatible = "amlogic,meson-axg-mmc";
> + reg = <0x0 0x8c000 0x0 0x800>;
> + interrupts = <GIC_SPI 178 IRQ_TYPE_EDGE_RISING>;
> + status = "disabled";
> + clocks = <&clkc CLKID_SYS_SD_EMMC_C>,
> + <&clkc CLKID_SD_EMMC_C>,
> + <&gp0_pll CLKID_GP0_PLL>;
> + clock-names = "core", "clkin0", "clkin1";
> + assigned-clocks = <&clkc CLKID_SD_EMMC_C_SEL>;
> + assigned-clock-parents = <&xtal>;
> + no-sdio;
> + no-sd;
> + };
> };
>
> };
--
Jerome
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7
2026-02-18 11:20 ` [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
2026-02-18 18:34 ` Jerome Brunet
@ 2026-02-18 19:18 ` Krzysztof Kozlowski
1 sibling, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-18 19:18 UTC (permalink / raw)
To: Ronald Claveau, linux-amlogic
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel,
devicetree, linux-kernel
On 18/02/2026 12:20, Ronald Claveau wrote:
> +
> uart_a: serial@78000 {
> compatible = "amlogic,t7-uart", "amlogic,meson-s4-uart";
> reg = <0x0 0x78000 0x0 0x18>;
> @@ -276,6 +390,21 @@ sec_ao: ao-secure@10220 {
> reg = <0x0 0x10220 0x0 0x140>;
> amlogic,has-chip-id;
> };
> +
> + sd_emmc_c: mmc@8c000{
> + compatible = "amlogic,meson-axg-mmc";
This was already sent and I already commented here.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-02-18 19:19 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-18 10:20 [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
2026-02-18 10:23 ` Krzysztof Kozlowski
2026-02-18 16:36 ` Ronald Claveau
2026-02-18 16:39 ` Krzysztof Kozlowski
2026-02-18 17:00 ` Ronald Claveau
-- strict thread matches above, loose matches on Subject: below --
2026-02-18 10:17 [PATCH 1/7] drivers: clk: meson: Add Amlogic T7 fix pll support Ronald Claveau
2026-02-18 11:20 ` [PATCH 6/7] arm64: dts: amlogic: Add clock and EMMC for T7 Ronald Claveau
2026-02-18 18:34 ` Jerome Brunet
2026-02-18 19:18 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox