From nobody Thu Oct 2 15:33:03 2025 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8DD1E1FC0EA; Mon, 15 Sep 2025 09:55:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930103; cv=none; b=RZ1Mi7vZkl+oGar/4g55HEGDUTmu9vjbzM7gvlCBQM25Mbezcdt6kQIPlGeBY0Ougl14s064GK47eMHSRamYng1duk5RNcRqeTTYXiq0XrqWar7rvaWy1/IWswFIBToPuxGtu/umKfDP+xTyMDr6DVpu2Xn7vI+SgUtSmHOgFFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930103; c=relaxed/simple; bh=LFj7bnzkq3WxPO+5k0WLw98/60l6fANFhk/7P1BfH60=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=r/oxuSD5ZCwXcEDyMwgyhjgL4b7xeMf/kfcl7k3BIgaUWiKFUprIG4PpjwF4451Cz3iGpZEeLRh5QiyoDZuPJrZ6jkoIB8zT99ddrvFNPJDAaCVEwdwLKeZUHI+Sj3/Qf2gdS+VLr+yzogFdpDJTPOhmaZbD5EiBrD/rEQMzias= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=PCc++I4Q; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="PCc++I4Q" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id D0F1425D67; Mon, 15 Sep 2025 11:54:58 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id gpN1W4pkx3Hi; Mon, 15 Sep 2025 11:54:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1757930098; bh=LFj7bnzkq3WxPO+5k0WLw98/60l6fANFhk/7P1BfH60=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PCc++I4QorwxPNyBKGqEmE8t5o28618cLPXzvvTUvqTBd4y4feLjGmAU50+vgAvLt gfRptiwz/MBEj0pbhAhNF69mmjNEcj7FmXl0jBn2CNHSsCS7gJpPMAFf3salfoJjLJ BUh/XHb4Sne/NHsciRMD8M4cf1gUw6a5CdlnoY7QioHf1tRliUgsQ3cxx0oqJ90kfY pz/5j8O1D1DwX72eKMUzEYNVEM99y6sw4Umi9spNNFThpttSv8E5PIQuauKOJQrzzR 9HbHALF5vPj9+qk8M5yNgL/aoZBjMndBDstfKHX8O9baIgtb2EF6gg07ZXCGgVNFJS KqI5TAeZgvDdw== From: Yao Zi To: Drew Fustini , Guo Ren , Fu Wei , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Michal Wilczynski Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Han Gao , Han Gao , Yao Zi Subject: [PATCH v2 1/5] dt-bindings: reset: thead,th1520-reset: Remove non-VO-subsystem resets Date: Mon, 15 Sep 2025 09:53:27 +0000 Message-ID: <20250915095331.53350-2-ziyao@disroot.org> In-Reply-To: <20250915095331.53350-1-ziyao@disroot.org> References: <20250915095331.53350-1-ziyao@disroot.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Registers in control of TH1520_RESET_ID_{NPU,WDT0,WDT1} belong to AP reset controller, not the VO one which is documented as "thead,th1520-reset" and is the only reset controller supported for TH1520 for now. Let's remove the IDs, leaving them to be implemented by AP-subsystem reset controller in the future. Fixes: 30e7573babdc ("dt-bindings: reset: Add T-HEAD TH1520 SoC Reset Contr= oller") Signed-off-by: Yao Zi Acked-by: Rob Herring (Arm) --- include/dt-bindings/reset/thead,th1520-reset.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/dt-bindings/reset/thead,th1520-reset.h b/include/dt-bi= ndings/reset/thead,th1520-reset.h index ee799286c175..e51d6314d131 100644 --- a/include/dt-bindings/reset/thead,th1520-reset.h +++ b/include/dt-bindings/reset/thead,th1520-reset.h @@ -9,9 +9,6 @@ =20 #define TH1520_RESET_ID_GPU 0 #define TH1520_RESET_ID_GPU_CLKGEN 1 -#define TH1520_RESET_ID_NPU 2 -#define TH1520_RESET_ID_WDT0 3 -#define TH1520_RESET_ID_WDT1 4 #define TH1520_RESET_ID_DPU_AHB 5 #define TH1520_RESET_ID_DPU_AXI 6 #define TH1520_RESET_ID_DPU_CORE 7 --=20 2.50.1 From nobody Thu Oct 2 15:33:03 2025 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BBA892F60B3; Mon, 15 Sep 2025 09:55:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930110; cv=none; b=chQ4U3qddXnkuioILnIcy2ViGxa/MsQcV9HiB30XBAASZZ3+cbk5IpuLFhXqKmWfNSxkMJHTi7TNc9VSaOPDlUKPu6TqUSwStsoLPLte0Lw0h2s7LIOVnbFLccZddF4etEziaYIhv3gqKgPUn1155qKdIqAKSJwsWgsWC3PFj8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930110; c=relaxed/simple; bh=9OGAHLU8w5jZaSno0SaUs7AhcBhu5j/cfCxvHI2+Pr0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PPxsGgS5DyTTQxE/o6qH3my78OmQ8/R2+QDiojamdMd7uU3LppUIksVqkXT/eEwDveg6uNS/rSkvrd820z4RyNwrZ1jDDSh8BUadqks9lDaRz0QZ1Om5raGfNvgPyuRPFIkeCPzUt3mX21T7wxcoG8+egwEU9Vm7sgF3lABfXe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=ee8mkTL/; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="ee8mkTL/" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 6252525D67; Mon, 15 Sep 2025 11:55:07 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id vN6LY1xZv25f; Mon, 15 Sep 2025 11:55:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1757930106; bh=9OGAHLU8w5jZaSno0SaUs7AhcBhu5j/cfCxvHI2+Pr0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ee8mkTL/Oc0CdumTTTmTok7tA0fktuB0MA+IlCOYjinNKK29sHh/HFkPl0FbedcFF wC0etfIzIZzQOmZ68Dt/WDPja0907JmZ0FCmWeirTkYQWATD/upSzC94xHMcsAyaP5 VhXanGs4LjGH10xrLxjrrmW7fKaQWOQF9gQj/q+aDoJy1556KY/l/FBwDSAKLdve9H ASc3HwkiMymFDn47bKRgn3lvKqncw50SSKr8U1YFNoS6sEzZa4tfwYC87pL1ZBr1h1 9VL1iRt4Jkagze03XUF7KUkyae8BP0sAc3FQcf17fA8KddLR3wTaFtB0rnHxsZqdKl izjL1OUQOm2sw== From: Yao Zi To: Drew Fustini , Guo Ren , Fu Wei , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Michal Wilczynski Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Han Gao , Han Gao , Yao Zi Subject: [PATCH v2 2/5] dt-bindings: reset: thead,th1520-reset: Add controllers for more subsys Date: Mon, 15 Sep 2025 09:53:28 +0000 Message-ID: <20250915095331.53350-3-ziyao@disroot.org> In-Reply-To: <20250915095331.53350-1-ziyao@disroot.org> References: <20250915095331.53350-1-ziyao@disroot.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" TH1520 SoC is divided into several subsystems, most of them have distinct reset controllers. Let's document reset controllers other than the one for VO subsystem and IDs for their reset signals. Signed-off-by: Yao Zi Reviewed-by: Rob Herring (Arm) --- .../bindings/reset/thead,th1520-reset.yaml | 8 +- .../dt-bindings/reset/thead,th1520-reset.h | 216 ++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/reset/thead,th1520-reset.yam= l b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml index f2e91d0add7a..7b5053c177fe 100644 --- a/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml +++ b/Documentation/devicetree/bindings/reset/thead,th1520-reset.yaml @@ -16,7 +16,13 @@ maintainers: properties: compatible: enum: - - thead,th1520-reset + - thead,th1520-reset # Reset controller for VO subsystem + - thead,th1520-reset-ao + - thead,th1520-reset-ap + - thead,th1520-reset-dsp + - thead,th1520-reset-misc + - thead,th1520-reset-vi + - thead,th1520-reset-vp =20 reg: maxItems: 1 diff --git a/include/dt-bindings/reset/thead,th1520-reset.h b/include/dt-bi= ndings/reset/thead,th1520-reset.h index e51d6314d131..68ac52ed69de 100644 --- a/include/dt-bindings/reset/thead,th1520-reset.h +++ b/include/dt-bindings/reset/thead,th1520-reset.h @@ -7,6 +7,200 @@ #ifndef _DT_BINDINGS_TH1520_RESET_H #define _DT_BINDINGS_TH1520_RESET_H =20 +/* AO Subsystem */ +#define TH1520_RESET_ID_SYSTEM 0 +#define TH1520_RESET_ID_RTC_APB 1 +#define TH1520_RESET_ID_RTC_REF 2 +#define TH1520_RESET_ID_AOGPIO_DB 3 +#define TH1520_RESET_ID_AOGPIO_APB 4 +#define TH1520_RESET_ID_AOI2C_APB 5 +#define TH1520_RESET_ID_PVT_APB 6 +#define TH1520_RESET_ID_E902_CORE 7 +#define TH1520_RESET_ID_E902_HAD 8 +#define TH1520_RESET_ID_AOTIMER_APB 9 +#define TH1520_RESET_ID_AOTIMER_CORE 10 +#define TH1520_RESET_ID_AOWDT_APB 11 +#define TH1520_RESET_ID_APSYS 12 +#define TH1520_RESET_ID_NPUSYS 13 +#define TH1520_RESET_ID_DDRSYS 14 +#define TH1520_RESET_ID_AXI_AP2CP 15 +#define TH1520_RESET_ID_AXI_CP2AP 16 +#define TH1520_RESET_ID_AXI_CP2SRAM 17 +#define TH1520_RESET_ID_AUDSYS_CORE 18 +#define TH1520_RESET_ID_AUDSYS_IOPMP 19 +#define TH1520_RESET_ID_AUDSYS 20 +#define TH1520_RESET_ID_DSP0 21 +#define TH1520_RESET_ID_DSP1 22 +#define TH1520_RESET_ID_GPU_MODULE 23 +#define TH1520_RESET_ID_VDEC 24 +#define TH1520_RESET_ID_VENC 25 +#define TH1520_RESET_ID_ADC_APB 26 +#define TH1520_RESET_ID_AUDGPIO_DB 27 +#define TH1520_RESET_ID_AUDGPIO_APB 28 +#define TH1520_RESET_ID_AOUART_IF 29 +#define TH1520_RESET_ID_AOUART_APB 30 +#define TH1520_RESET_ID_SRAM_AXI_P0 31 +#define TH1520_RESET_ID_SRAM_AXI_P1 32 +#define TH1520_RESET_ID_SRAM_AXI_P2 33 +#define TH1520_RESET_ID_SRAM_AXI_P3 34 +#define TH1520_RESET_ID_SRAM_AXI_P4 35 +#define TH1520_RESET_ID_SRAM_AXI_CORE 36 +#define TH1520_RESET_ID_SE 37 + +/* AP Subsystem */ +#define TH1520_RESET_ID_BROM 0 +#define TH1520_RESET_ID_C910_TOP 1 +#define TH1520_RESET_ID_NPU 2 +#define TH1520_RESET_ID_WDT0 3 +#define TH1520_RESET_ID_WDT1 4 +#define TH1520_RESET_ID_C910_C0 5 +#define TH1520_RESET_ID_C910_C1 6 +#define TH1520_RESET_ID_C910_C2 7 +#define TH1520_RESET_ID_C910_C3 8 +#define TH1520_RESET_ID_CHIP_DBG_CORE 9 +#define TH1520_RESET_ID_CHIP_DBG_AXI 10 +#define TH1520_RESET_ID_AXI4_CPUSYS2_AXI 11 +#define TH1520_RESET_ID_AXI4_CPUSYS2_APB 12 +#define TH1520_RESET_ID_X2H_CPUSYS 13 +#define TH1520_RESET_ID_AHB2_CPUSYS 14 +#define TH1520_RESET_ID_APB3_CPUSYS 15 +#define TH1520_RESET_ID_MBOX0_APB 16 +#define TH1520_RESET_ID_MBOX1_APB 17 +#define TH1520_RESET_ID_MBOX2_APB 18 +#define TH1520_RESET_ID_MBOX3_APB 19 +#define TH1520_RESET_ID_TIMER0_APB 20 +#define TH1520_RESET_ID_TIMER0_CORE 21 +#define TH1520_RESET_ID_TIMER1_APB 22 +#define TH1520_RESET_ID_TIMER1_CORE 23 +#define TH1520_RESET_ID_PERISYS_AHB 24 +#define TH1520_RESET_ID_PERISYS_APB1 25 +#define TH1520_RESET_ID_PERISYS_APB2 26 +#define TH1520_RESET_ID_GMAC0_APB 27 +#define TH1520_RESET_ID_GMAC0_AHB 28 +#define TH1520_RESET_ID_GMAC0_CLKGEN 29 +#define TH1520_RESET_ID_GMAC0_AXI 30 +#define TH1520_RESET_ID_UART0_APB 31 +#define TH1520_RESET_ID_UART0_IF 32 +#define TH1520_RESET_ID_UART1_APB 33 +#define TH1520_RESET_ID_UART1_IF 34 +#define TH1520_RESET_ID_UART2_APB 35 +#define TH1520_RESET_ID_UART2_IF 36 +#define TH1520_RESET_ID_UART3_APB 37 +#define TH1520_RESET_ID_UART3_IF 38 +#define TH1520_RESET_ID_UART4_APB 39 +#define TH1520_RESET_ID_UART4_IF 40 +#define TH1520_RESET_ID_UART5_APB 41 +#define TH1520_RESET_ID_UART5_IF 42 +#define TH1520_RESET_ID_QSPI0_IF 43 +#define TH1520_RESET_ID_QSPI0_APB 44 +#define TH1520_RESET_ID_QSPI1_IF 45 +#define TH1520_RESET_ID_QSPI1_APB 46 +#define TH1520_RESET_ID_SPI_IF 47 +#define TH1520_RESET_ID_SPI_APB 48 +#define TH1520_RESET_ID_I2C0_APB 49 +#define TH1520_RESET_ID_I2C0_CORE 50 +#define TH1520_RESET_ID_I2C1_APB 51 +#define TH1520_RESET_ID_I2C1_CORE 52 +#define TH1520_RESET_ID_I2C2_APB 53 +#define TH1520_RESET_ID_I2C2_CORE 54 +#define TH1520_RESET_ID_I2C3_APB 55 +#define TH1520_RESET_ID_I2C3_CORE 56 +#define TH1520_RESET_ID_I2C4_APB 57 +#define TH1520_RESET_ID_I2C4_CORE 58 +#define TH1520_RESET_ID_I2C5_APB 59 +#define TH1520_RESET_ID_I2C5_CORE 60 +#define TH1520_RESET_ID_GPIO0_DB 61 +#define TH1520_RESET_ID_GPIO0_APB 62 +#define TH1520_RESET_ID_GPIO1_DB 63 +#define TH1520_RESET_ID_GPIO1_APB 64 +#define TH1520_RESET_ID_GPIO2_DB 65 +#define TH1520_RESET_ID_GPIO2_APB 66 +#define TH1520_RESET_ID_PWM_COUNTER 67 +#define TH1520_RESET_ID_PWM_APB 68 +#define TH1520_RESET_ID_PADCTRL0_APB 69 +#define TH1520_RESET_ID_CPU2PERI_X2H 70 +#define TH1520_RESET_ID_CPU2AON_X2H 71 +#define TH1520_RESET_ID_AON2CPU_A2X 72 +#define TH1520_RESET_ID_NPUSYS_AXI 73 +#define TH1520_RESET_ID_NPUSYS_AXI_APB 74 +#define TH1520_RESET_ID_CPU2VP_X2P 75 +#define TH1520_RESET_ID_CPU2VI_X2H 76 +#define TH1520_RESET_ID_BMU_AXI 77 +#define TH1520_RESET_ID_BMU_APB 78 +#define TH1520_RESET_ID_DMAC_CPUSYS_AXI 79 +#define TH1520_RESET_ID_DMAC_CPUSYS_AHB 80 +#define TH1520_RESET_ID_SPINLOCK 81 +#define TH1520_RESET_ID_CFG2TEE 82 +#define TH1520_RESET_ID_DSMART 83 +#define TH1520_RESET_ID_GPIO3_DB 84 +#define TH1520_RESET_ID_GPIO3_APB 85 +#define TH1520_RESET_ID_PERI_I2S 86 +#define TH1520_RESET_ID_PERI_APB3 87 +#define TH1520_RESET_ID_PERI2PERI1_APB 88 +#define TH1520_RESET_ID_VPSYS_APB 89 +#define TH1520_RESET_ID_PERISYS_APB4 90 +#define TH1520_RESET_ID_GMAC1_APB 91 +#define TH1520_RESET_ID_GMAC1_AHB 92 +#define TH1520_RESET_ID_GMAC1_CLKGEN 93 +#define TH1520_RESET_ID_GMAC1_AXI 94 +#define TH1520_RESET_ID_GMAC_AXI 95 +#define TH1520_RESET_ID_GMAC_AXI_APB 96 +#define TH1520_RESET_ID_PADCTRL1_APB 97 +#define TH1520_RESET_ID_VOSYS_AXI 98 +#define TH1520_RESET_ID_VOSYS_AXI_APB 99 +#define TH1520_RESET_ID_VOSYS_AXI_X2X 100 +#define TH1520_RESET_ID_MISC2VP_X2X 101 +#define TH1520_RESET_ID_DSPSYS 102 +#define TH1520_RESET_ID_VISYS 103 +#define TH1520_RESET_ID_VOSYS 104 +#define TH1520_RESET_ID_VPSYS 105 + +/* DSP Subsystem */ +#define TH1520_RESET_ID_X2X_DSP1 0 +#define TH1520_RESET_ID_X2X_DSP0 1 +#define TH1520_RESET_ID_X2X_SLAVE_DSP1 2 +#define TH1520_RESET_ID_X2X_SLAVE_DSP0 3 +#define TH1520_RESET_ID_DSP0_CORE 4 +#define TH1520_RESET_ID_DSP0_DEBUG 5 +#define TH1520_RESET_ID_DSP0_APB 6 +#define TH1520_RESET_ID_DSP1_CORE 4 +#define TH1520_RESET_ID_DSP1_DEBUG 5 +#define TH1520_RESET_ID_DSP1_APB 6 +#define TH1520_RESET_ID_DSPSYS_APB 7 +#define TH1520_RESET_ID_AXI4_DSPSYS_SLV 8 +#define TH1520_RESET_ID_AXI4_DSPSYS 9 +#define TH1520_RESET_ID_AXI4_DSP_RS 10 + +/* MISC Subsystem */ +#define TH1520_RESET_ID_EMMC_SDIO_CLKGEN 0 +#define TH1520_RESET_ID_EMMC 1 +#define TH1520_RESET_ID_MISCSYS_AXI 2 +#define TH1520_RESET_ID_MISCSYS_AXI_APB 3 +#define TH1520_RESET_ID_SDIO0 4 +#define TH1520_RESET_ID_SDIO1 5 +#define TH1520_RESET_ID_USB3_APB 6 +#define TH1520_RESET_ID_USB3_PHY 7 +#define TH1520_RESET_ID_USB3_VCC 8 + +/* VI Subsystem */ +#define TH1520_RESET_ID_ISP0 0 +#define TH1520_RESET_ID_ISP1 1 +#define TH1520_RESET_ID_CSI0_APB 2 +#define TH1520_RESET_ID_CSI1_APB 3 +#define TH1520_RESET_ID_CSI2_APB 4 +#define TH1520_RESET_ID_MIPI_FIFO 5 +#define TH1520_RESET_ID_ISP_VENC_APB 6 +#define TH1520_RESET_ID_VIPRE_APB 7 +#define TH1520_RESET_ID_VIPRE_AXI 8 +#define TH1520_RESET_ID_DW200_APB 9 +#define TH1520_RESET_ID_VISYS3_AXI 10 +#define TH1520_RESET_ID_VISYS2_AXI 11 +#define TH1520_RESET_ID_VISYS1_AXI 12 +#define TH1520_RESET_ID_VISYS_AXI 13 +#define TH1520_RESET_ID_VISYS_APB 14 +#define TH1520_RESET_ID_ISP_VENC_AXI 15 + +/* VO Subsystem */ #define TH1520_RESET_ID_GPU 0 #define TH1520_RESET_ID_GPU_CLKGEN 1 #define TH1520_RESET_ID_DPU_AHB 5 @@ -16,5 +210,27 @@ #define TH1520_RESET_ID_DSI1_APB 9 #define TH1520_RESET_ID_HDMI 10 #define TH1520_RESET_ID_HDMI_APB 11 +#define TH1520_RESET_ID_VOAXI 12 +#define TH1520_RESET_ID_VOAXI_APB 13 +#define TH1520_RESET_ID_X2H_DPU_AXI 14 +#define TH1520_RESET_ID_X2H_DPU_AHB 15 +#define TH1520_RESET_ID_X2H_DPU1_AXI 16 +#define TH1520_RESET_ID_X2H_DPU1_AHB 17 + +/* VP Subsystem */ +#define TH1520_RESET_ID_VPSYS_AXI_APB 0 +#define TH1520_RESET_ID_VPSYS_AXI 1 +#define TH1520_RESET_ID_FCE_APB 2 +#define TH1520_RESET_ID_FCE_CORE 3 +#define TH1520_RESET_ID_FCE_X2X_MASTER 4 +#define TH1520_RESET_ID_FCE_X2X_SLAVE 5 +#define TH1520_RESET_ID_G2D_APB 6 +#define TH1520_RESET_ID_G2D_ACLK 7 +#define TH1520_RESET_ID_G2D_CORE 8 +#define TH1520_RESET_ID_VDEC_APB 9 +#define TH1520_RESET_ID_VDEC_ACLK 10 +#define TH1520_RESET_ID_VDEC_CORE 11 +#define TH1520_RESET_ID_VENC_APB 12 +#define TH1520_RESET_ID_VENC_CORE 13 =20 #endif /* _DT_BINDINGS_TH1520_RESET_H */ --=20 2.50.1 From nobody Thu Oct 2 15:33:03 2025 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E73C22F9C29; Mon, 15 Sep 2025 09:55:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930121; cv=none; b=IOrDqEz/yuBVjGu0w9TBLONyA1yOvGS51Sb6V8xt51+wucCQ7UrKKxrh/zAMpqziYdvh79B10A00X7I0kCrRW5a3NT4ibJuTGdh21d3IPQ6tjg6bnLGORanfJLocrUfmR5zWbzDipCJibUqCAdm0CBbEXhT9dsCBAYze5hEb+2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930121; c=relaxed/simple; bh=AyARZ8O9kOKQYCzMN7H8nfyDa+QfPPanHy+EOHRlTZM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h4eIrGrifWB59mSa8DUKrbXeZLhyLVpG95P423nzcC2dYe8qONP/5wvb6WFS+uaHXa3nJB6knWbOyEnWPPgzSDxASnN/ehdwonlfc+9ORUBfqFQ2UXlIsWHdY4zNG3Y6jWUfZLnZAPKSZ1LYjWHUklw3etdzzZaUlRJl8jRMm5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=iCBSPSqS; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="iCBSPSqS" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 8657F25D67; Mon, 15 Sep 2025 11:55:16 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id hgoPlgG5Q7LO; Mon, 15 Sep 2025 11:55:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1757930115; bh=AyARZ8O9kOKQYCzMN7H8nfyDa+QfPPanHy+EOHRlTZM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=iCBSPSqSf/ae2cdGdzoi0nIYnHcl9swtZg5xYgVMHaA+RK+TiTywEm6ndQBr/wYzU W9XUHaRhY1aWw1HH3B0u0+ZF7zat9tAFKGny94W7SHYKCoiEYoNsPxcab1nGWX7kXs UjnJDlDC5Y/MK0I7Dt0NFNeWysLtScQIZpCMMRis7VhTTk/XfQuXr4OUMoz3tgXfv6 JRCNeuTZFUpXmXRKqTRPE65/GaKF0vLIWWqkIhd48jenzvqh+zbnQFSIJrmymlXcRz EwapK/485NYNDeYc7YIyP/U8PGGiLNKCg0R618XoWgwCgxvgJYtj8TxbCFvs5LU8qk LyD9oulumYEJA== From: Yao Zi To: Drew Fustini , Guo Ren , Fu Wei , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Michal Wilczynski Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Han Gao , Han Gao , Yao Zi Subject: [PATCH v2 3/5] reset: th1520: Prepare for supporting multiple controllers Date: Mon, 15 Sep 2025 09:53:29 +0000 Message-ID: <20250915095331.53350-4-ziyao@disroot.org> In-Reply-To: <20250915095331.53350-1-ziyao@disroot.org> References: <20250915095331.53350-1-ziyao@disroot.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" TH1520 SoC is divided into several subsystems, shipping distinct reset controllers with similar control logic. Let's make reset signal mapping a data structure specific to one compatible to prepare for introduction of more reset controllers in the future. Signed-off-by: Yao Zi --- drivers/reset/reset-th1520.c | 42 +++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/reset/reset-th1520.c b/drivers/reset/reset-th1520.c index 14d964a9c6b6..2b65a95ed021 100644 --- a/drivers/reset/reset-th1520.c +++ b/drivers/reset/reset-th1520.c @@ -29,14 +29,20 @@ #define TH1520_HDMI_SW_MAIN_RST BIT(0) #define TH1520_HDMI_SW_PRST BIT(1) =20 +struct th1520_reset_map { + u32 bit; + u32 reg; +}; + struct th1520_reset_priv { struct reset_controller_dev rcdev; struct regmap *map; + const struct th1520_reset_map *resets; }; =20 -struct th1520_reset_map { - u32 bit; - u32 reg; +struct th1520_reset_data { + const struct th1520_reset_map *resets; + size_t num; }; =20 static const struct th1520_reset_map th1520_resets[] =3D { @@ -90,7 +96,7 @@ static int th1520_reset_assert(struct reset_controller_de= v *rcdev, struct th1520_reset_priv *priv =3D to_th1520_reset(rcdev); const struct th1520_reset_map *reset; =20 - reset =3D &th1520_resets[id]; + reset =3D &priv->resets[id]; =20 return regmap_update_bits(priv->map, reset->reg, reset->bit, 0); } @@ -101,7 +107,7 @@ static int th1520_reset_deassert(struct reset_controlle= r_dev *rcdev, struct th1520_reset_priv *priv =3D to_th1520_reset(rcdev); const struct th1520_reset_map *reset; =20 - reset =3D &th1520_resets[id]; + reset =3D &priv->resets[id]; =20 return regmap_update_bits(priv->map, reset->reg, reset->bit, reset->bit); @@ -120,11 +126,14 @@ static const struct regmap_config th1520_reset_regmap= _config =3D { =20 static int th1520_reset_probe(struct platform_device *pdev) { + const struct th1520_reset_data *data; struct device *dev =3D &pdev->dev; struct th1520_reset_priv *priv; void __iomem *base; int ret; =20 + data =3D device_get_match_data(dev); + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; @@ -138,22 +147,31 @@ static int th1520_reset_probe(struct platform_device = *pdev) if (IS_ERR(priv->map)) return PTR_ERR(priv->map); =20 - /* Initialize GPU resets to asserted state */ - ret =3D regmap_update_bits(priv->map, TH1520_GPU_RST_CFG, - TH1520_GPU_RST_CFG_MASK, 0); - if (ret) - return ret; + if (of_device_is_compatible(dev->of_node, "thead,th1520-reset")) { + /* Initialize GPU resets to asserted state */ + ret =3D regmap_update_bits(priv->map, TH1520_GPU_RST_CFG, + TH1520_GPU_RST_CFG_MASK, 0); + if (ret) + return ret; + } =20 priv->rcdev.owner =3D THIS_MODULE; - priv->rcdev.nr_resets =3D ARRAY_SIZE(th1520_resets); + priv->rcdev.nr_resets =3D data->num; priv->rcdev.ops =3D &th1520_reset_ops; priv->rcdev.of_node =3D dev->of_node; =20 + priv->resets =3D data->resets; + return devm_reset_controller_register(dev, &priv->rcdev); } =20 +static const struct th1520_reset_data th1520_reset_data =3D { + .resets =3D th1520_resets, + .num =3D ARRAY_SIZE(th1520_resets), +}; + static const struct of_device_id th1520_reset_match[] =3D { - { .compatible =3D "thead,th1520-reset" }, + { .compatible =3D "thead,th1520-reset", .data =3D &th1520_reset_data }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, th1520_reset_match); --=20 2.50.1 From nobody Thu Oct 2 15:33:03 2025 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CA912F9C29; Mon, 15 Sep 2025 09:55:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930130; cv=none; b=IYxWGATd27ZIgCIDPZYgchWWmY8fz0xATh4VLu2t/XE7LUGKGQid+UX1wm/PibrYt1gwh/QA26Gh8aSsZx1UXB3BTB28vmvsJwj1HuGoGNSPk60SUGSAwfGufIQUYdHrA+oMOAPjh4W3YryzaDLbW9YmdeCsYLtB51bJ7CJ2Yjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930130; c=relaxed/simple; bh=wMfyu2mJ32RXn85J3zGKswXTVynVcyfYpa47hNhoBNw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ga2bSwThtHEOTa8Ur0x3nMiOzhFHeHFJQ/OKLKOWMDua3xSAqDIWm8/PVM/7QjPaVrBrBErc2UUantimil0E82lcA5hiRzZGFRpuw5QyOHIF+cdbPAvu7Dv4jAWs5VUA9wYHp/ahSlp0ULd0JEGfMLBF8lk/q0vGqMIzkreklc4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=PHJodGZS; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="PHJodGZS" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id BABCE25D5F; Mon, 15 Sep 2025 11:55:25 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id d-9t2E7EjzB0; Mon, 15 Sep 2025 11:55:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1757930124; bh=wMfyu2mJ32RXn85J3zGKswXTVynVcyfYpa47hNhoBNw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=PHJodGZSR7wF+K996bbo5huIXJzqZXsXVzBQKh8A48K7gY55+LtKrvRdtWeIdTqUM /DcxiFc8AKFFLS3jjRkNN7U0ZWdRmWYkvok82XumcgyC1oeeH8y2gWwr1SGhnVqj0U G7fQE2hdXnyirtK1Q/P7tAuVSWi/9oma4wXl7TF5f7xQfbCTFXq1Mo//aQsrbVrzBY gTeaCoPzeTPISsN761GE5cddsIKaDP3Eb9RJnyF2uBimCs8uTjOISfqn1N8ZlhxRQx RpLfTz4Og56NfS9ojad5NibO0ZXx4v3HWw7fz029FD5VihERNKupwBjHdzIT59XYo7 JnjltBoKZgL1w== From: Yao Zi To: Drew Fustini , Guo Ren , Fu Wei , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Michal Wilczynski Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Han Gao , Han Gao , Yao Zi Subject: [PATCH v2 4/5] reset: th1520: Support reset controllers in more subsystems Date: Mon, 15 Sep 2025 09:53:30 +0000 Message-ID: <20250915095331.53350-5-ziyao@disroot.org> In-Reply-To: <20250915095331.53350-1-ziyao@disroot.org> References: <20250915095331.53350-1-ziyao@disroot.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Introduce reset controllers for AP, MISC, VI, VP and DSP subsystems and add their reset signal mappings. Signed-off-by: Yao Zi --- drivers/reset/reset-th1520.c | 793 +++++++++++++++++++++++++++++++++++ 1 file changed, 793 insertions(+) diff --git a/drivers/reset/reset-th1520.c b/drivers/reset/reset-th1520.c index 2b65a95ed021..fd32e991c4cb 100644 --- a/drivers/reset/reset-th1520.c +++ b/drivers/reset/reset-th1520.c @@ -11,6 +11,85 @@ =20 #include =20 + /* register offset in RSTGEN_R */ +#define TH1520_BROM_RST_CFG 0x0 +#define TH1520_C910_RST_CFG 0x4 +#define TH1520_CHIP_DBG_RST_CFG 0xc +#define TH1520_AXI4_CPUSYS2_RST_CFG 0x10 +#define TH1520_X2H_CPUSYS_RST_CFG 0x18 +#define TH1520_AHB2_CPUSYS_RST_CFG 0x1c +#define TH1520_APB3_CPUSYS_RST_CFG 0x20 +#define TH1520_MBOX0_RST_CFG 0x24 +#define TH1520_MBOX1_RST_CFG 0x28 +#define TH1520_MBOX2_RST_CFG 0x2c +#define TH1520_MBOX3_RST_CFG 0x30 +#define TH1520_WDT0_RST_CFG 0x34 +#define TH1520_WDT1_RST_CFG 0x38 +#define TH1520_TIMER0_RST_CFG 0x3c +#define TH1520_TIMER1_RST_CFG 0x40 +#define TH1520_PERISYS_AHB_RST_CFG 0x44 +#define TH1520_PERISYS_APB1_RST_CFG 0x48 +#define TH1520_PERISYS_APB2_RST_CFG 0x4c +#define TH1520_GMAC0_RST_CFG 0x68 +#define TH1520_UART0_RST_CFG 0x70 +#define TH1520_UART1_RST_CFG 0x74 +#define TH1520_UART2_RST_CFG 0x78 +#define TH1520_UART3_RST_CFG 0x7c +#define TH1520_UART4_RST_CFG 0x80 +#define TH1520_UART5_RST_CFG 0x84 +#define TH1520_QSPI0_RST_CFG 0x8c +#define TH1520_QSPI1_RST_CFG 0x90 +#define TH1520_SPI_RST_CFG 0x94 +#define TH1520_I2C0_RST_CFG 0x98 +#define TH1520_I2C1_RST_CFG 0x9c +#define TH1520_I2C2_RST_CFG 0xa0 +#define TH1520_I2C3_RST_CFG 0xa4 +#define TH1520_I2C4_RST_CFG 0xa8 +#define TH1520_I2C5_RST_CFG 0xac +#define TH1520_GPIO0_RST_CFG 0xb0 +#define TH1520_GPIO1_RST_CFG 0xb4 +#define TH1520_GPIO2_RST_CFG 0xb8 +#define TH1520_PWM_RST_CFG 0xc0 +#define TH1520_PADCTRL0_APSYS_RST_CFG 0xc4 +#define TH1520_CPU2PERI_X2H_RST_CFG 0xcc +#define TH1520_CPU2AON_X2H_RST_CFG 0xe4 +#define TH1520_AON2CPU_A2X_RST_CFG 0xfc +#define TH1520_NPUSYS_AXI_RST_CFG 0x128 +#define TH1520_CPU2VP_X2P_RST_CFG 0x12c +#define TH1520_CPU2VI_X2H_RST_CFG 0x138 +#define TH1520_BMU_C910_RST_CFG 0x148 +#define TH1520_DMAC_CPUSYS_RST_CFG 0x14c +#define TH1520_SPINLOCK_RST_CFG 0x178 +#define TH1520_CFG2TEE_X2H_RST_CFG 0x188 +#define TH1520_DSMART_RST_CFG 0x18c +#define TH1520_GPIO3_RST_CFG 0x1a8 +#define TH1520_I2S_RST_CFG 0x1ac +#define TH1520_IMG_NNA_RST_CFG 0x1b0 +#define TH1520_PERI_APB3_RST_CFG 0x1dc +#define TH1520_VP_SUBSYS_RST_CFG 0x1ec +#define TH1520_PERISYS_APB4_RST_CFG 0x1f8 +#define TH1520_GMAC1_RST_CFG 0x204 +#define TH1520_GMAC_AXI_RST_CFG 0x208 +#define TH1520_PADCTRL1_APSYS_RST_CFG 0x20c +#define TH1520_VOSYS_AXI_RST_CFG 0x210 +#define TH1520_VOSYS_X2X_RST_CFG 0x214 +#define TH1520_MISC2VP_X2X_RST_CFG 0x218 +#define TH1520_SUBSYS_RST_CFG 0x220 + + /* register offset in DSP_REGMAP */ +#define TH1520_DSPSYS_RST_CFG 0x0 + + /* register offset in MISCSYS_REGMAP */ +#define TH1520_EMMC_RST_CFG 0x0 +#define TH1520_MISCSYS_AXI_RST_CFG 0x8 +#define TH1520_SDIO0_RST_CFG 0xc +#define TH1520_SDIO1_RST_CFG 0x10 +#define TH1520_USB3_DRD_RST_CFG 0x14 + + /* register offset in VISYS_REGMAP */ +#define TH1520_VISYS_RST_CFG 0x0 +#define TH1520_VISYS_2_RST_CFG 0x4 + /* register offset in VOSYS_REGMAP */ #define TH1520_GPU_RST_CFG 0x0 #define TH1520_GPU_RST_CFG_MASK GENMASK(1, 0) @@ -18,6 +97,8 @@ #define TH1520_DSI0_RST_CFG 0x8 #define TH1520_DSI1_RST_CFG 0xc #define TH1520_HDMI_RST_CFG 0x14 +#define TH1520_AXI4_VO_DW_AXI_RST_CFG 0x18 +#define TH1520_X2H_X4_VOSYS_DW_RST_CFG 0x20 =20 /* register values */ #define TH1520_GPU_SW_GPU_RST BIT(0) @@ -29,6 +110,13 @@ #define TH1520_HDMI_SW_MAIN_RST BIT(0) #define TH1520_HDMI_SW_PRST BIT(1) =20 + /* register offset in VPSYS_REGMAP */ +#define TH1520_AXIBUS_RST_CFG 0x0 +#define TH1520_FCE_RST_CFG 0x4 +#define TH1520_G2D_RST_CFG 0x8 +#define TH1520_VDEC_RST_CFG 0xc +#define TH1520_VENC_RST_CFG 0x10 + struct th1520_reset_map { u32 bit; u32 reg; @@ -82,6 +170,681 @@ static const struct th1520_reset_map th1520_resets[] = =3D { .bit =3D TH1520_HDMI_SW_PRST, .reg =3D TH1520_HDMI_RST_CFG, }, + [TH1520_RESET_ID_VOAXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_AXI4_VO_DW_AXI_RST_CFG, + }, + [TH1520_RESET_ID_VOAXI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_AXI4_VO_DW_AXI_RST_CFG, + }, + [TH1520_RESET_ID_X2H_DPU_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_X2H_X4_VOSYS_DW_RST_CFG, + }, + [TH1520_RESET_ID_X2H_DPU_AHB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_X2H_X4_VOSYS_DW_RST_CFG, + }, + [TH1520_RESET_ID_X2H_DPU1_AXI] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_X2H_X4_VOSYS_DW_RST_CFG, + }, + [TH1520_RESET_ID_X2H_DPU1_AHB] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_X2H_X4_VOSYS_DW_RST_CFG, + }, +}; + +static const struct th1520_reset_map th1520_ap_resets[] =3D { + [TH1520_RESET_ID_BROM] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_BROM_RST_CFG, + }, + [TH1520_RESET_ID_C910_TOP] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_C910_RST_CFG, + }, + [TH1520_RESET_ID_NPU] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_IMG_NNA_RST_CFG, + }, + [TH1520_RESET_ID_WDT0] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_WDT0_RST_CFG, + }, + [TH1520_RESET_ID_WDT1] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_WDT1_RST_CFG, + }, + [TH1520_RESET_ID_C910_C0] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_C910_RST_CFG, + }, + [TH1520_RESET_ID_C910_C1] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_C910_RST_CFG, + }, + [TH1520_RESET_ID_C910_C2] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_C910_RST_CFG, + }, + [TH1520_RESET_ID_C910_C3] =3D { + .bit =3D BIT(4), + .reg =3D TH1520_C910_RST_CFG, + }, + [TH1520_RESET_ID_CHIP_DBG_CORE] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_CHIP_DBG_RST_CFG, + }, + [TH1520_RESET_ID_CHIP_DBG_AXI] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_CHIP_DBG_RST_CFG, + }, + [TH1520_RESET_ID_AXI4_CPUSYS2_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_AXI4_CPUSYS2_RST_CFG, + }, + [TH1520_RESET_ID_AXI4_CPUSYS2_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_AXI4_CPUSYS2_RST_CFG, + }, + [TH1520_RESET_ID_X2H_CPUSYS] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_X2H_CPUSYS_RST_CFG, + }, + [TH1520_RESET_ID_AHB2_CPUSYS] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_AHB2_CPUSYS_RST_CFG, + }, + [TH1520_RESET_ID_APB3_CPUSYS] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_APB3_CPUSYS_RST_CFG, + }, + [TH1520_RESET_ID_MBOX0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MBOX0_RST_CFG, + }, + [TH1520_RESET_ID_MBOX1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MBOX1_RST_CFG, + }, + [TH1520_RESET_ID_MBOX2_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MBOX2_RST_CFG, + }, + [TH1520_RESET_ID_MBOX3_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MBOX3_RST_CFG, + }, + [TH1520_RESET_ID_TIMER0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_TIMER0_RST_CFG, + }, + [TH1520_RESET_ID_TIMER0_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_TIMER0_RST_CFG, + }, + [TH1520_RESET_ID_TIMER1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_TIMER1_RST_CFG, + }, + [TH1520_RESET_ID_TIMER1_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_TIMER1_RST_CFG, + }, + [TH1520_RESET_ID_PERISYS_AHB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PERISYS_AHB_RST_CFG, + }, + [TH1520_RESET_ID_PERISYS_APB1] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PERISYS_APB1_RST_CFG, + }, + [TH1520_RESET_ID_PERISYS_APB2] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PERISYS_APB2_RST_CFG, + }, + [TH1520_RESET_ID_GMAC0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GMAC0_RST_CFG, + }, + [TH1520_RESET_ID_GMAC0_AHB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GMAC0_RST_CFG, + }, + [TH1520_RESET_ID_GMAC0_CLKGEN] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_GMAC0_RST_CFG, + }, + [TH1520_RESET_ID_GMAC0_AXI] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_GMAC0_RST_CFG, + }, + [TH1520_RESET_ID_UART0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART0_RST_CFG, + }, + [TH1520_RESET_ID_UART0_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART0_RST_CFG, + }, + [TH1520_RESET_ID_UART1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART1_RST_CFG, + }, + [TH1520_RESET_ID_UART1_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART1_RST_CFG, + }, + [TH1520_RESET_ID_UART2_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART2_RST_CFG, + }, + [TH1520_RESET_ID_UART2_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART2_RST_CFG, + }, + [TH1520_RESET_ID_UART3_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART3_RST_CFG, + }, + [TH1520_RESET_ID_UART3_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART3_RST_CFG, + }, + [TH1520_RESET_ID_UART4_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART4_RST_CFG, + }, + [TH1520_RESET_ID_UART4_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART4_RST_CFG, + }, + [TH1520_RESET_ID_UART5_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_UART5_RST_CFG, + }, + [TH1520_RESET_ID_UART5_IF] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_UART5_RST_CFG, + }, + [TH1520_RESET_ID_QSPI0_IF] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_QSPI0_RST_CFG, + }, + [TH1520_RESET_ID_QSPI0_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_QSPI0_RST_CFG, + }, + [TH1520_RESET_ID_QSPI1_IF] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_QSPI1_RST_CFG, + }, + [TH1520_RESET_ID_QSPI1_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_QSPI1_RST_CFG, + }, + [TH1520_RESET_ID_SPI_IF] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_SPI_RST_CFG, + }, + [TH1520_RESET_ID_SPI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_SPI_RST_CFG, + }, + [TH1520_RESET_ID_I2C0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C0_RST_CFG, + }, + [TH1520_RESET_ID_I2C0_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C0_RST_CFG, + }, + [TH1520_RESET_ID_I2C1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C1_RST_CFG, + }, + [TH1520_RESET_ID_I2C1_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C1_RST_CFG, + }, + [TH1520_RESET_ID_I2C2_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C2_RST_CFG, + }, + [TH1520_RESET_ID_I2C2_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C2_RST_CFG, + }, + [TH1520_RESET_ID_I2C3_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C3_RST_CFG, + }, + [TH1520_RESET_ID_I2C3_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C3_RST_CFG, + }, + [TH1520_RESET_ID_I2C4_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C4_RST_CFG, + }, + [TH1520_RESET_ID_I2C4_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C4_RST_CFG, + }, + [TH1520_RESET_ID_I2C5_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2C5_RST_CFG, + }, + [TH1520_RESET_ID_I2C5_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_I2C5_RST_CFG, + }, + [TH1520_RESET_ID_GPIO0_DB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GPIO0_RST_CFG, + }, + [TH1520_RESET_ID_GPIO0_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GPIO0_RST_CFG, + }, + [TH1520_RESET_ID_GPIO1_DB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GPIO1_RST_CFG, + }, + [TH1520_RESET_ID_GPIO1_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GPIO1_RST_CFG, + }, + [TH1520_RESET_ID_GPIO2_DB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GPIO2_RST_CFG, + }, + [TH1520_RESET_ID_GPIO2_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GPIO2_RST_CFG, + }, + [TH1520_RESET_ID_PWM_COUNTER] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PWM_RST_CFG, + }, + [TH1520_RESET_ID_PWM_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_PWM_RST_CFG, + }, + [TH1520_RESET_ID_PADCTRL0_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PADCTRL0_APSYS_RST_CFG, + }, + [TH1520_RESET_ID_CPU2PERI_X2H] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_CPU2PERI_X2H_RST_CFG, + }, + [TH1520_RESET_ID_CPU2AON_X2H] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_CPU2AON_X2H_RST_CFG, + }, + [TH1520_RESET_ID_AON2CPU_A2X] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_AON2CPU_A2X_RST_CFG, + }, + [TH1520_RESET_ID_NPUSYS_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_NPUSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_NPUSYS_AXI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_NPUSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_CPU2VP_X2P] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_CPU2VP_X2P_RST_CFG, + }, + [TH1520_RESET_ID_CPU2VI_X2H] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_CPU2VI_X2H_RST_CFG, + }, + [TH1520_RESET_ID_BMU_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_BMU_C910_RST_CFG, + }, + [TH1520_RESET_ID_BMU_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_BMU_C910_RST_CFG, + }, + [TH1520_RESET_ID_DMAC_CPUSYS_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_DMAC_CPUSYS_RST_CFG, + }, + [TH1520_RESET_ID_DMAC_CPUSYS_AHB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_DMAC_CPUSYS_RST_CFG, + }, + [TH1520_RESET_ID_SPINLOCK] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_SPINLOCK_RST_CFG, + }, + [TH1520_RESET_ID_CFG2TEE] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_CFG2TEE_X2H_RST_CFG, + }, + [TH1520_RESET_ID_DSMART] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_DSMART_RST_CFG, + }, + [TH1520_RESET_ID_GPIO3_DB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GPIO3_RST_CFG, + }, + [TH1520_RESET_ID_GPIO3_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GPIO3_RST_CFG, + }, + [TH1520_RESET_ID_PERI_I2S] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_I2S_RST_CFG, + }, + [TH1520_RESET_ID_PERI_APB3] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PERI_APB3_RST_CFG, + }, + [TH1520_RESET_ID_PERI2PERI1_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_PERI_APB3_RST_CFG, + }, + [TH1520_RESET_ID_VPSYS_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VP_SUBSYS_RST_CFG, + }, + [TH1520_RESET_ID_PERISYS_APB4] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PERISYS_APB4_RST_CFG, + }, + [TH1520_RESET_ID_GMAC1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GMAC1_RST_CFG, + }, + [TH1520_RESET_ID_GMAC1_AHB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GMAC1_RST_CFG, + }, + [TH1520_RESET_ID_GMAC1_CLKGEN] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_GMAC1_RST_CFG, + }, + [TH1520_RESET_ID_GMAC1_AXI] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_GMAC1_RST_CFG, + }, + [TH1520_RESET_ID_GMAC_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_GMAC_AXI_RST_CFG, + }, + [TH1520_RESET_ID_GMAC_AXI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_GMAC_AXI_RST_CFG, + }, + [TH1520_RESET_ID_PADCTRL1_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_PADCTRL1_APSYS_RST_CFG, + }, + [TH1520_RESET_ID_VOSYS_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VOSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_VOSYS_AXI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_VOSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_VOSYS_AXI_X2X] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VOSYS_X2X_RST_CFG, + }, + [TH1520_RESET_ID_MISC2VP_X2X] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MISC2VP_X2X_RST_CFG, + }, + [TH1520_RESET_ID_DSPSYS] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_SUBSYS_RST_CFG, + }, + [TH1520_RESET_ID_VISYS] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_SUBSYS_RST_CFG, + }, + [TH1520_RESET_ID_VOSYS] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_SUBSYS_RST_CFG, + }, + [TH1520_RESET_ID_VPSYS] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_SUBSYS_RST_CFG, + }, +}; + +static const struct th1520_reset_map th1520_dsp_resets[] =3D { + [TH1520_RESET_ID_X2X_DSP1] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_X2X_DSP0] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_X2X_SLAVE_DSP1] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_X2X_SLAVE_DSP0] =3D { + .bit =3D BIT(3), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP0_CORE] =3D { + .bit =3D BIT(8), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP0_DEBUG] =3D { + .bit =3D BIT(9), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP0_APB] =3D { + .bit =3D BIT(10), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP1_CORE] =3D { + .bit =3D BIT(12), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP1_DEBUG] =3D { + .bit =3D BIT(13), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSP1_APB] =3D { + .bit =3D BIT(14), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_DSPSYS_APB] =3D { + .bit =3D BIT(16), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_AXI4_DSPSYS_SLV] =3D { + .bit =3D BIT(20), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_AXI4_DSPSYS] =3D { + .bit =3D BIT(24), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, + [TH1520_RESET_ID_AXI4_DSP_RS] =3D { + .bit =3D BIT(26), + .reg =3D TH1520_DSPSYS_RST_CFG, + }, +}; + +static const struct th1520_reset_map th1520_misc_resets[] =3D { + [TH1520_RESET_ID_EMMC_SDIO_CLKGEN] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_EMMC_RST_CFG, + }, + [TH1520_RESET_ID_EMMC] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_EMMC_RST_CFG, + }, + [TH1520_RESET_ID_MISCSYS_AXI] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_MISCSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_MISCSYS_AXI_APB] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_MISCSYS_AXI_RST_CFG, + }, + [TH1520_RESET_ID_SDIO0] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_SDIO0_RST_CFG, + }, + [TH1520_RESET_ID_SDIO1] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_SDIO1_RST_CFG, + }, + [TH1520_RESET_ID_USB3_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_USB3_DRD_RST_CFG, + }, + [TH1520_RESET_ID_USB3_PHY] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_USB3_DRD_RST_CFG, + }, + [TH1520_RESET_ID_USB3_VCC] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_USB3_DRD_RST_CFG, + }, +}; + +static const struct th1520_reset_map th1520_vi_resets[] =3D { + [TH1520_RESET_ID_ISP0] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_ISP1] =3D { + .bit =3D BIT(4), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_CSI0_APB] =3D { + .bit =3D BIT(16), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_CSI1_APB] =3D { + .bit =3D BIT(17), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_CSI2_APB] =3D { + .bit =3D BIT(18), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_MIPI_FIFO] =3D { + .bit =3D BIT(20), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_ISP_VENC_APB] =3D { + .bit =3D BIT(24), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_VIPRE_APB] =3D { + .bit =3D BIT(28), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_VIPRE_AXI] =3D { + .bit =3D BIT(29), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_DW200_APB] =3D { + .bit =3D BIT(31), + .reg =3D TH1520_VISYS_RST_CFG, + }, + [TH1520_RESET_ID_VISYS3_AXI] =3D { + .bit =3D BIT(8), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, + [TH1520_RESET_ID_VISYS2_AXI] =3D { + .bit =3D BIT(9), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, + [TH1520_RESET_ID_VISYS1_AXI] =3D { + .bit =3D BIT(10), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, + [TH1520_RESET_ID_VISYS_AXI] =3D { + .bit =3D BIT(12), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, + [TH1520_RESET_ID_VISYS_APB] =3D { + .bit =3D BIT(16), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, + [TH1520_RESET_ID_ISP_VENC_AXI] =3D { + .bit =3D BIT(20), + .reg =3D TH1520_VISYS_2_RST_CFG, + }, +}; + +static const struct th1520_reset_map th1520_vp_resets[] =3D { + [TH1520_RESET_ID_VPSYS_AXI_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_AXIBUS_RST_CFG, + }, + [TH1520_RESET_ID_VPSYS_AXI] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_AXIBUS_RST_CFG, + }, + [TH1520_RESET_ID_FCE_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_FCE_RST_CFG, + }, + [TH1520_RESET_ID_FCE_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_FCE_RST_CFG, + }, + [TH1520_RESET_ID_FCE_X2X_MASTER] =3D { + .bit =3D BIT(4), + .reg =3D TH1520_FCE_RST_CFG, + }, + [TH1520_RESET_ID_FCE_X2X_SLAVE] =3D { + .bit =3D BIT(5), + .reg =3D TH1520_FCE_RST_CFG, + }, + [TH1520_RESET_ID_G2D_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_G2D_RST_CFG, + }, + [TH1520_RESET_ID_G2D_ACLK] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_G2D_RST_CFG, + }, + [TH1520_RESET_ID_G2D_CORE] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_G2D_RST_CFG, + }, + [TH1520_RESET_ID_VDEC_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VDEC_RST_CFG, + }, + [TH1520_RESET_ID_VDEC_ACLK] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_VDEC_RST_CFG, + }, + [TH1520_RESET_ID_VDEC_CORE] =3D { + .bit =3D BIT(2), + .reg =3D TH1520_VDEC_RST_CFG, + }, + [TH1520_RESET_ID_VENC_APB] =3D { + .bit =3D BIT(0), + .reg =3D TH1520_VENC_RST_CFG, + }, + [TH1520_RESET_ID_VENC_CORE] =3D { + .bit =3D BIT(1), + .reg =3D TH1520_VENC_RST_CFG, + }, }; =20 static inline struct th1520_reset_priv * @@ -170,8 +933,38 @@ static const struct th1520_reset_data th1520_reset_dat= a =3D { .num =3D ARRAY_SIZE(th1520_resets), }; =20 +static const struct th1520_reset_data th1520_ap_reset_data =3D { + .resets =3D th1520_ap_resets, + .num =3D ARRAY_SIZE(th1520_ap_resets), +}; + +static const struct th1520_reset_data th1520_dsp_reset_data =3D { + .resets =3D th1520_dsp_resets, + .num =3D ARRAY_SIZE(th1520_dsp_resets), +}; + +static const struct th1520_reset_data th1520_misc_reset_data =3D { + .resets =3D th1520_misc_resets, + .num =3D ARRAY_SIZE(th1520_misc_resets), +}; + +static const struct th1520_reset_data th1520_vi_reset_data =3D { + .resets =3D th1520_vi_resets, + .num =3D ARRAY_SIZE(th1520_vi_resets), +}; + +static const struct th1520_reset_data th1520_vp_reset_data =3D { + .resets =3D th1520_vp_resets, + .num =3D ARRAY_SIZE(th1520_vp_resets), +}; + static const struct of_device_id th1520_reset_match[] =3D { { .compatible =3D "thead,th1520-reset", .data =3D &th1520_reset_data }, + { .compatible =3D "thead,th1520-reset-ap", .data =3D &th1520_ap_reset_dat= a }, + { .compatible =3D "thead,th1520-reset-dsp", .data =3D &th1520_dsp_reset_d= ata }, + { .compatible =3D "thead,th1520-reset-misc", .data =3D &th1520_misc_reset= _data }, + { .compatible =3D "thead,th1520-reset-vi", .data =3D &th1520_vi_reset_dat= a }, + { .compatible =3D "thead,th1520-reset-vp", .data =3D &th1520_vp_reset_dat= a }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, th1520_reset_match); --=20 2.50.1 From nobody Thu Oct 2 15:33:03 2025 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FC0D2FABF0; Mon, 15 Sep 2025 09:57:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930280; cv=none; b=ON6XVOUFQnA6Bk7GHRsJC3owG91Ay+YqGJ9eqwZC78xzTXnRecO/JSjIZtwZFLLiR7eUgBVvZaPXkR73M1uk9hHbn2ji/cKhLfhmtMUqu19UbL1Aswdymb37hcD+MoE6ce9+OPzlovjS1u6wc1rXwcSePUvY7+FYoie0aoq7VtM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757930280; c=relaxed/simple; bh=NkbKzHG706iJdJxu5vSJY3qj2jEFX8Hh23r4tuIRyO0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sHCOWm51FKDC1AtyV+cKyCBXWtNNWL4iokjHbzd6Eq1rwAIKVFbGyvtrlte23T1oxiTKONI0195ECTg2R9rs85+tTHEcTdWrXkhfhNJZ+ywOsQ7MzcL13iWYTX3ixgLz3El+e0PuKdHIxb14pNn8uMYmmD/4kq7pe+OzHvtmLr0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=iLtVAy5h; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="iLtVAy5h" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 1AA3F25EA4; Mon, 15 Sep 2025 11:57:57 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id eWK9oPfQyWsU; Mon, 15 Sep 2025 11:57:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1757930276; bh=NkbKzHG706iJdJxu5vSJY3qj2jEFX8Hh23r4tuIRyO0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=iLtVAy5hx2LIxlxXEcOje0/JIj0/WFQABySWR4w3lXWbavWHKrHJFcmuAaL7uuSeI NzArqKdkClnHnqSq9Mo1NDcgZSwAqpxgOtAzulYUW1rgfORO+AfgJRWQP3xM546PcA WT0ykAv0OOLgltXLXKL/TfgyGxXrGQLXv6myWWdzOqXc2pfkMFE/ct0vtHtGgnzOA8 bKH53mj/7mohFflbz6u9AF0x49aJkly7TnNn+AoCo4NFE3H4Gq5vsjU6hkP+THbHzz /NmbNJEQRxgUa7B+frdJOj1dsehAX2tgmRbrKtMJJoxNB9EPcliemCZE2k2wYCVoT+ YxdoUQbvzlkTg== From: Yao Zi To: Drew Fustini , Guo Ren , Fu Wei , Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Michal Wilczynski Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Han Gao , Han Gao , Yao Zi Subject: [PATCH v2 5/5] riscv: dts: thead: Add reset controllers of more subsystems for TH1520 Date: Mon, 15 Sep 2025 09:57:34 +0000 Message-ID: <20250915095734.53423-1-ziyao@disroot.org> In-Reply-To: <20250915095331.53350-1-ziyao@disroot.org> References: <20250915095331.53350-1-ziyao@disroot.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Describe reset controllers for VI, MISC, AP, DSP and AO subsystems. The one for AO subsystem is marked as reserved, since it may be used by AON firmware. Signed-off-by: Yao Zi --- arch/riscv/boot/dts/thead/th1520.dtsi | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/th= ead/th1520.dtsi index e680d1a7c821..15d64eaea89f 100644 --- a/arch/riscv/boot/dts/thead/th1520.dtsi +++ b/arch/riscv/boot/dts/thead/th1520.dtsi @@ -277,6 +277,12 @@ clint: timer@ffdc000000 { <&cpu3_intc 3>, <&cpu3_intc 7>; }; =20 + rst_vi: reset-controller@ffe4040100 { + compatible =3D "thead,th1520-reset-vi"; + reg =3D <0xff 0xe4040100 0x0 0x8>; + #reset-cells =3D <1>; + }; + spi0: spi@ffe700c000 { compatible =3D "thead,th1520-spi", "snps,dw-apb-ssi"; reg =3D <0xff 0xe700c000 0x0 0x1000>; @@ -502,6 +508,18 @@ uart2: serial@ffec010000 { status =3D "disabled"; }; =20 + rst_misc: reset-controller@ffec02c000 { + compatible =3D "thead,th1520-reset-misc"; + reg =3D <0xff 0xec02c000 0x0 0x18>; + #reset-cells =3D <1>; + }; + + rst_vp: reset-controller@ffecc30000 { + compatible =3D "thead,th1520-reset-vp"; + reg =3D <0xff 0xecc30000 0x0 0x14>; + #reset-cells =3D <1>; + }; + clk: clock-controller@ffef010000 { compatible =3D "thead,th1520-clk-ap"; reg =3D <0xff 0xef010000 0x0 0x1000>; @@ -509,6 +527,18 @@ clk: clock-controller@ffef010000 { #clock-cells =3D <1>; }; =20 + rst_ap: reset-controller@ffef014000 { + compatible =3D "thead,th1520-reset-ap"; + reg =3D <0xff 0xef014000 0x0 0x1000>; + #reset-cells =3D <1>; + }; + + rst_dsp: reset-controller@ffef040028 { + compatible =3D "thead,th1520-reset-dsp"; + reg =3D <0xff 0xef040028 0x0 0x4>; + #reset-cells =3D <1>; + }; + gpu: gpu@ffef400000 { compatible =3D "thead,th1520-gpu", "img,img-bxm-4-64", "img,img-rogue"; @@ -681,6 +711,13 @@ aogpio: gpio-controller@0 { }; }; =20 + rst_ao: reset-controller@fffff44000 { + compatible =3D "thead,th1520-reset-ao"; + reg =3D <0xff 0xfff44000 0x0 0x2000>; + #reset-cells =3D <1>; + status =3D "reserved"; + }; + padctrl_aosys: pinctrl@fffff4a000 { compatible =3D "thead,th1520-pinctrl"; reg =3D <0xff 0xfff4a000 0x0 0x2000>; --=20 2.50.1