| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright (c) 2020 Aspeed Technology Inc. |
| */ |
| |
| #ifndef _ASM_ARCH_WDT_AST2600_H |
| #define _ASM_ARCH_WDT_AST2600_H |
| |
| #define WDT_BASE 0x1e785000 |
| |
| /* |
| * Special value that needs to be written to counter_restart register to |
| * (re)start the timer |
| */ |
| #define WDT_COUNTER_RESTART_VAL 0x4755 |
| |
| /* reset mode */ |
| #define WDT_RESET_MODE_SOC 0 |
| #define WDT_RESET_MODE_CHIP 1 |
| #define WDT_RESET_MODE_CPU 2 |
| |
| /* bit-fields of WDT control register */ |
| #define WDT_CTRL_2ND_BOOT BIT(7) |
| #define WDT_CTRL_RESET_MODE_MASK GENMASK(6, 5) |
| #define WDT_CTRL_RESET_MODE_SHIFT 5 |
| #define WDT_CTRL_CLK1MHZ BIT(4) |
| #define WDT_CTRL_RESET BIT(1) |
| #define WDT_CTRL_EN BIT(0) |
| |
| /* bit-fields of WDT reset mask1 register */ |
| #define WDT_RESET_MASK1_RVAS BIT(25) |
| #define WDT_RESET_MASK1_GPIO1 BIT(24) |
| #define WDT_RESET_MASK1_XDMA2 BIT(23) |
| #define WDT_RESET_MASK1_XDMA1 BIT(22) |
| #define WDT_RESET_MASK1_MCTP2 BIT(21) |
| #define WDT_RESET_MASK1_MCTP1 BIT(20) |
| #define WDT_RESET_MASK1_JTAG1 BIT(19) |
| #define WDT_RESET_MASK1_SD_SDIO1 BIT(18) |
| #define WDT_RESET_MASK1_MAC2 BIT(17) |
| #define WDT_RESET_MASK1_MAC1 BIT(16) |
| #define WDT_RESET_MASK1_GPMCU BIT(15) |
| #define WDT_RESET_MASK1_DPMCU BIT(14) |
| #define WDT_RESET_MASK1_DP BIT(13) |
| #define WDT_RESET_MASK1_HAC BIT(12) |
| #define WDT_RESET_MASK1_VIDEO BIT(11) |
| #define WDT_RESET_MASK1_CRT BIT(10) |
| #define WDT_RESET_MASK1_GCRT BIT(9) |
| #define WDT_RESET_MASK1_USB11_UHCI BIT(8) |
| #define WDT_RESET_MASK1_USB_PORTA BIT(7) |
| #define WDT_RESET_MASK1_USB_PORTB BIT(6) |
| #define WDT_RESET_MASK1_COPROC BIT(5) |
| #define WDT_RESET_MASK1_SOC BIT(4) |
| #define WDT_RESET_MASK1_SLI BIT(3) |
| #define WDT_RESET_MASK1_AHB BIT(2) |
| #define WDT_RESET_MASK1_SDRAM BIT(1) |
| #define WDT_RESET_MASK1_ARM BIT(0) |
| |
| /* bit-fields of WDT reset mask2 register */ |
| #define WDT_RESET_MASK2_ESPI BIT(26) |
| #define WDT_RESET_MASK2_I3C_BUS8 BIT(25) |
| #define WDT_RESET_MASK2_I3C_BUS7 BIT(24) |
| #define WDT_RESET_MASK2_I3C_BUS6 BIT(23) |
| #define WDT_RESET_MASK2_I3C_BUS5 BIT(22) |
| #define WDT_RESET_MASK2_I3C_BUS4 BIT(21) |
| #define WDT_RESET_MASK2_I3C_BUS3 BIT(20) |
| #define WDT_RESET_MASK2_I3C_BUS2 BIT(19) |
| #define WDT_RESET_MASK2_I3C_BUS1 BIT(18) |
| #define WDT_RESET_MASK2_I3C_GLOBAL BIT(17) |
| #define WDT_RESET_MASK2_I2C BIT(16) |
| #define WDT_RESET_MASK2_FSI BIT(15) |
| #define WDT_RESET_MASK2_ADC BIT(14) |
| #define WDT_RESET_MASK2_PWM BIT(13) |
| #define WDT_RESET_MASK2_PECI BIT(12) |
| #define WDT_RESET_MASK2_LPC BIT(11) |
| #define WDT_RESET_MASK2_MDC_MDIO BIT(10) |
| #define WDT_RESET_MASK2_GPIO2 BIT(9) |
| #define WDT_RESET_MASK2_JTAG2 BIT(8) |
| #define WDT_RESET_MASK2_SD_SDIO2 BIT(7) |
| #define WDT_RESET_MASK2_MAC4 BIT(6) |
| #define WDT_RESET_MASK2_MAC3 BIT(5) |
| #define WDT_RESET_MASK2_SOC BIT(4) |
| #define WDT_RESET_MASK2_SLI2 BIT(3) |
| #define WDT_RESET_MASK2_AHB2 BIT(2) |
| #define WDT_RESET_MASK2_SPI1_SPI2 BIT(1) |
| #define WDT_RESET_MASK2_ARM BIT(0) |
| |
| #define WDT_RESET_MASK1_DEFAULT \ |
| (WDT_RESET_MASK1_RVAS | WDT_RESET_MASK1_GPIO1 | \ |
| WDT_RESET_MASK1_JTAG1 | WDT_RESET_MASK1_SD_SDIO1 | \ |
| WDT_RESET_MASK1_MAC2 | WDT_RESET_MASK1_MAC1 | \ |
| WDT_RESET_MASK1_HAC | WDT_RESET_MASK1_VIDEO | \ |
| WDT_RESET_MASK1_CRT | WDT_RESET_MASK1_GCRT | \ |
| WDT_RESET_MASK1_USB11_UHCI | WDT_RESET_MASK1_USB_PORTA | \ |
| WDT_RESET_MASK1_USB_PORTB | WDT_RESET_MASK1_COPROC | \ |
| WDT_RESET_MASK1_SOC | WDT_RESET_MASK1_ARM) |
| |
| #define WDT_RESET_MASK2_DEFAULT \ |
| (WDT_RESET_MASK2_I3C_BUS8 | WDT_RESET_MASK2_I3C_BUS7 | \ |
| WDT_RESET_MASK2_I3C_BUS6 | WDT_RESET_MASK2_I3C_BUS5 | \ |
| WDT_RESET_MASK2_I3C_BUS4 | WDT_RESET_MASK2_I3C_BUS3 | \ |
| WDT_RESET_MASK2_I3C_BUS2 | WDT_RESET_MASK2_I3C_BUS1 | \ |
| WDT_RESET_MASK2_I3C_GLOBAL | WDT_RESET_MASK2_I2C | \ |
| WDT_RESET_MASK2_FSI | WDT_RESET_MASK2_ADC | \ |
| WDT_RESET_MASK2_PWM | WDT_RESET_MASK2_PECI | \ |
| WDT_RESET_MASK2_LPC | WDT_RESET_MASK2_MDC_MDIO | \ |
| WDT_RESET_MASK2_GPIO2 | WDT_RESET_MASK2_JTAG2 | \ |
| WDT_RESET_MASK2_SD_SDIO2 | WDT_RESET_MASK2_MAC4 | \ |
| WDT_RESET_MASK2_MAC3 | WDT_RESET_MASK2_SOC | \ |
| WDT_RESET_MASK2_ARM) |
| |
| #ifndef __ASSEMBLY__ |
| struct ast2600_wdt { |
| u32 counter_status; |
| u32 counter_reload_val; |
| u32 counter_restart; |
| u32 ctrl; |
| u32 timeout_status; |
| u32 clr_timeout_status; |
| u32 reset_width; |
| u32 reset_mask1; |
| u32 reset_mask2; |
| u32 sw_reset_ctrl; |
| u32 sw_reset_mask1; |
| u32 sw_reset_mask2; |
| u32 sw_reset_disable; |
| }; |
| #endif /* __ASSEMBLY__ */ |
| |
| #endif /* _ASM_ARCH_WDT_AST2600_H */ |