[PATCH v2 3/3] arm64: dts: amlogic: a9: Add reset controller support
Neil Armstrong
neil.armstrong at linaro.org
Mon Jul 20 02:50:29 PDT 2026
On 7/14/26 04:33, Xianwei Zhao via B4 Relay wrote:
> From: Xianwei Zhao <xianwei.zhao at amlogic.com>
>
> Add reset controller descriptions for the Amlogic A9 SoC and include the
> corresponding reset IDs header.
>
> Signed-off-by: Xianwei Zhao <xianwei.zhao at amlogic.com>
> ---
> arch/arm64/boot/dts/amlogic/amlogic-a9-reset.h | 247 +++++++++++++++++++++++++
> arch/arm64/boot/dts/amlogic/amlogic-a9.dtsi | 14 ++
> 2 files changed, 261 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-a9-reset.h b/arch/arm64/boot/dts/amlogic/amlogic-a9-reset.h
> new file mode 100644
> index 000000000000..55fcaa54cd56
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-a9-reset.h
> @@ -0,0 +1,247 @@
> +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
> +/*
> + * Copyright (c) 2026 Amlogic, Inc. All rights reserved.
> + * Author: Zelong Dong <zelong.dong at amlogic.com>
> + *
> + */
> +
> +#ifndef _DT_BINDINGS_AMLOGIC_MESON_A9_RESET_H
> +#define _DT_BINDINGS_AMLOGIC_MESON_A9_RESET_H
> +
> +/* AO RESET0 */
> +#define AO_RESET_APB 0
> +#define AO_RESET_RTC 1
> +#define AO_RESET_BRG_NIC_RTC 2
> +#define AO_RESET_AO2EE 3
> +#define AO_RESET_BRG_NIC_EE 4
> +#define AO_RESET_WATCHDOG 5
> +#define AO_RESET_I3C 6
> +#define AO_RESET_PWR 7
> +#define AO_RESET_PWM_A 8
> +#define AO_RESET_PWM_B 9
> +#define AO_RESET_PWM_C 10
> +#define AO_RESET_PWM_D 11
> +#define AO_RESET_PWM_E 12
> +#define AO_RESET_PWM_F 13
> +#define AO_RESET_PWM_G 14
> +#define AO_RESET_I2C_M_A 15
> +#define AO_RESET_I2C_M_B 16
> +#define AO_RESET_I2C_M_C 17
> +#define AO_RESET_I2C_M_D 18
> +#define AO_RESET_IR 19
> +#define AO_RESET_UART_B 20
> +#define AO_RESET_UART_C 21
> +#define AO_RESET_UART_D 22
> +#define AO_RESET_SPISG 23
> +#define AO_RESET_SED 24
> +#define AO_RESET_CEC 25
> +#define AO_RESET_AOCPU 26
> +#define AO_RESET_AOCPU_POR 27
> +#define AO_RESET_AOCPU_CORE 28
> +#define AO_RESET_SRAM 29
> +#define AO_RESET_CAPU 30
> +#define AO_RESET_UART_E 31
> +
> +/* RESET0 */
> +#define RESET_ETH_1G 0
> +#define RESET_ISP 1
> +#define RESET_U3DRD_USB3PHY_APB 2
> +#define RESET_U3DRD_USB3PHY 3
> +#define RESET_U3DRD_USB2PHY 4
> +#define RESET_U3DRD 5
> +#define RESET_U3DRD_COMB 6
> +#define RESET_U3DRD_USB2PHY_APB 7
> +#define RESET_DP_PHY_APB 8
> +#define RESET_DP_PHY 9
> +#define RESET_DPTX_1P4 10
> +#define RESET_DPTX_1P4_APB 11
> +#define RESET_EDPTX_1P4 12
> +#define RESET_USB2DRD_PHY_APB 13
> +#define RESET_U2DRD_COMB 14
> +#define RESET_U2DRD 15
> +#define RESET_HDMI20_AES 16
> +#define RESET_HDMITX_CBUS_APB 17
> +#define RESET_BRG_VCBUS_DEC 18
> +#define RESET_VCBUS 19
> +#define RESET_VID_PLL_DIV 20
> +#define RESET_VDI6 21
> +#define RESET_HDMITXPHY 22
> +#define RESET_VID_LOCK 23
> +#define RESET_VENC_2 24
> +#define RESET_VDAC 25
> +#define RESET_VENC_1 26
> +#define RESET_VENC_0 27
> +#define RESET_RDMA 28
> +#define RESET_HDMITX 29
> +#define RESET_VIU 30
> +#define RESET_VENC 31
> +
> +/* RESET1 */
> +#define RESET_AUDIO 32
> +#define RESET_MALI_CBUS_APB 33
> +#define RESET_MALI 34
> +#define RESET_PCIE_B_PHY 35
> +#define RESET_PCIE_B_POR 36
> +#define RESET_DOS_CBUS_APB 37
> +#define RESET_DOS 38
> +#define RESET_MALI_SYS 39
> +#define RESET_CC 40
> +#define RESET_DSP_A_DEBUG 41
> +#define RESET_PCIE_A_PHY_APB 42
> +#define RESET_PCIE_A_PIPE 43
> +#define RESET_PCIE_A_POR 44
> +#define RESET_PCIE_A_PHY 45
> +#define RESET_PCIE_A_MAC_APB 46
> +#define RESET_AMFC_APB 47
> +#define RESET_ETH 48
> +/* 49 */
> +#define RESET_MALI_MBIST 50
> +#define RESET_ETH_1G_AXI 51
> +#define RESET_VICP 52
> +#define RESET_DEWARP 53
> +#define RESET_GE2D 54
> +#define RESET_VGE 55
> +#define RESET_PCIE_A_0 56
> +#define RESET_PCIE_A_1 57
> +#define RESET_PCIE_A_2 58
> +#define RESET_PCIE_A_3 59
> +#define RESET_PCIE_A_4 60
> +#define RESET_PCIE_A_5 61
> +#define RESET_PCIE_A_6 62
> +#define RESET_PCIE_A_7 63
> +
> +/* RESET2 */
> +#define RESET_AM2AXI 64
> +#define RESET_DSP_A 65
> +#define RESET_MIPI_DSI_PHY 66
> +#define RESET_TS_PLL 67
> +#define RESET_TS_A55 68
> +#define RESET_ETH_AXI 69
> +#define RESET_TS_CORE 70
> +#define RESET_MIPI_DSI1_PHY 71
> +#define RESET_SMART_CARD 72
> +#define RESET_SPISG 73
> +#define RESET_TS_DOS 74
> +#define RESET_U2DRD_USB2PHY 75
> +#define RESET_PIO 76
> +#define RESET_U2H_COMB 77
> +#define RESET_U2H 78
> +#define RESET_USB2H_PHY_APB 79
> +#define RESET_MSR_CLK 80
> +/* 81 */
> +#define RESET_AUX_DIG 82
> +/* 83 */
> +#define RESET_U2H_USB2PHY 84
> +#define RESET_U3HSG_PCIE_PIPE 85
> +#define RESET_AMFC 86
> +#define RESET_U3HSG_PCIE_PHY_APB 87
> +#define RESET_U3HSG_PCIE_PHY 88
> +#define RESET_PP_DMA 89
> +#define RESET_I3C 90
> +#define RESET_WATCHDOG 91
> +#define RESET_PP_WRAPPER 92
> +#define RESET_MIPI_DSI_HOST 93
> +#define RESET_DSI_PLL_DIV 94
> +#define RESET_MIPI_DSI_B_HOST 95
> +
> +/* RESET3 */
> +/* 96 */
> +#define RESET_HDMIRX_WRAP_APB 97
> +#define RESET_HDMIRX 98
> +#define RESET_PCIE_B_0 99
> +#define RESET_PCIE_B_1 100
> +#define RESET_PCIE_B_2 101
> +#define RESET_PCIE_B_3 102
> +#define RESET_PCIE_B_4 103
> +#define RESET_PCIE_B_5 104
> +#define RESET_PCIE_B_6 105
> +#define RESET_PCIE_B_7 106
> +#define RESET_PCIE_B_PIPE 107
> +#define RESET_PCIE_B_MAC_APB 108
> +#define RESET_NNA_TO_VGA_PIPE 109
> +#define RESET_CVE 110
> +#define RESET_GLOBAL_TIMER 111
> +#define RESET_COMBO_DPHY_PCLK 112
> +#define RESET_COMBO_DPHY 113
> +/* 114 - 118 */
> +#define RESET_U3PHY30_APB 119
> +#define RESET_U3PHY30 120
> +#define RESET_HSG 121
> +#define RESET_U3HSG_HSG 122
> +#define RESET_U3DRDB 123
> +#define RESET_U3DRDB_APB 124
> +#define RESET_U3PHY20_APB 125
> +#define RESET_U3PHY20 126
> +#define RESET_A55_ACE 127
> +
> +/* RESET4 */
> +#define RESET_CAN_0 128
> +#define RESET_CAN_1 129
> +#define RESET_TAHOE_CORE 130
> +#define RESET_TAHOE 131
> +#define RESET_TAHOE_APB 132
> +#define RESET_TAHOE_SYS 133
> +/* 134 - 135 */
> +#define RESET_PWM_I 136
> +#define RESET_PWM_J 137
> +#define RESET_UART_A 138
> +/* 139 - 143 */
> +#define RESET_MALI_AVBCD 144
> +#define RESET_MALI_AVBCD_APB 145
> +#define RESET_MALI_MCR_TOP 146
> +#define RESET_I2C_M_E 147
> +#define RESET_I2C_M_F 148
> +#define RESET_I2C_M_G 149
> +#define RESET_I2C_M_H 150
> +#define RESET_I2C_M_I 151
> +#define RESET_SD_EMMC_A 152
> +#define RESET_SD_EMMC_B 153
> +#define RESET_SD_EMMC_C 154
> +#define RESET_UART_F 155
> +#define RESET_PWM_N 156
> +#define RESET_PWM_M 157
> +#define RESET_PWM_L 158
> +#define RESET_PWM_K 159
> +
> +/* RESET5 */
> +#define RESET_BRG_ISP_PIPE 160
> +#define RESET_BRG_HEVCF_DMC_PIPE 161
> +#define RESET_BRG_HEVCB_PIPE 162
> +#define RESET_BRG_EMMC_PIPE 163
> +#define RESET_BRG_VGE_PIPE 164
> +#define RESET_BRG_DMC_VPU1_PIPE 165
> +#define RESET_BRG_DMC_VPU0_PIPE 166
> +#define RESET_BRG_NNA_PIPE 167
> +#define RESET_BRG_NNA_SRAM_PIPE 168
> +#define RESET_BRG_U2DRDA_PIPE 169
> +#define RESET_BRG_U3DRDA_PIPE 170
> +/* 171 - 173 */
> +#define RESET_BRG_NIC_AOSYS 174
> +#define RESET_BRG_NIC_AMFC 175
> +#define RESET_BRG_NIC_GIC 176
> +#define RESET_BRG_SRAM_NIC_NNA 177
> +#define RESET_BRG_SRAM_NIC_MAIN 178
> +#define RESET_BRG_SRAM_NIC_ALL 179
> +#define RESET_BRG_NIC_SOC_BRG 180
> +#define RESET_BRG_NIC_GPV 181
> +#define RESET_BRG_NIC_AO 182
> +#define RESET_BRG_NIC_EMMC 183
> +#define RESET_BRG_NIC_DSP_A 184
> +#define RESET_BRG_NIC_SDIO_B 185
> +#define RESET_BRG_NIC_SDIO_A 186
> +#define RESET_BRG_NIC_VAP_B 187
> +#define RESET_BRG_NIC_DSU 188
> +#define RESET_BRG_NIC_CLK81 189
> +#define RESET_BRG_NIC_MAIN 190
> +#define RESET_BRG_NIC_ALL 191
> +
> +/* RESET6 */
> +/* 192 - 216 */
> +#define RESET_BRG_PP_CLK 217
> +#define RESET_BRG_PP_NIC_CLK81 218
> +/* 219 - 220 */
> +#define RESET_BRG_PERIPH_APB_SYNC 221
> +#define RESET_BRG_VPU_APB_SYNC 222
> +#define RESET_BRG_DSP_A_PIPE 223
> +
> +#endif
> diff --git a/arch/arm64/boot/dts/amlogic/amlogic-a9.dtsi b/arch/arm64/boot/dts/amlogic/amlogic-a9.dtsi
> index b0e0fadeed82..fedde52c2e89 100644
> --- a/arch/arm64/boot/dts/amlogic/amlogic-a9.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/amlogic-a9.dtsi
> @@ -7,6 +7,7 @@
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/gpio/gpio.h>
> #include <dt-bindings/pinctrl/amlogic,pinctrl.h>
> +#include "amlogic-a9-reset.h"
>
> / {
> interrupt-parent = <&gic>;
> @@ -105,6 +106,13 @@ apb: bus at fe000000 {
> #size-cells = <2>;
> ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
>
> + reset: reset-controller at 2000 {
> + compatible = "amlogic,a9-reset",
> + "amlogic,t7-reset";
> + reg = <0x0 0x2000 0x0 0x98>;
> + #reset-cells = <1>;
> + };
> +
> periphs_pinctrl: pinctrl at 4000 {
> compatible = "amlogic,pinctrl-a9";
> #address-cells = <2>;
> @@ -204,6 +212,12 @@ aobus: bus at ffa00000 {
> #size-cells = <2>;
> ranges = <0x0 0x0 0x0 0xffa00000 0x0 0x100000>;
>
> + ao_reset: reset-controller at 2000 {
> + compatible = "amlogic,a9-ao-reset";
> + reg = <0x0 0x2000 0x0 0xc>;
> + #reset-cells = <1>;
> + };
> +
> aobus_pinctrl: pinctrl at 4000 {
> compatible = "amlogic,pinctrl-a9";
> #address-cells = <2>;
>
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
Thanks,
Neil
More information about the linux-amlogic
mailing list