Chia-Wei, Wang | 67ef587 | 2020-12-14 13:54:25 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
| 2 | /* |
| 3 | * Copyright (c) 2020 Aspeed Technology Inc. |
| 4 | */ |
| 5 | |
| 6 | #ifndef _ASM_ARCH_WDT_AST2600_H |
| 7 | #define _ASM_ARCH_WDT_AST2600_H |
| 8 | |
| 9 | #define WDT_BASE 0x1e785000 |
| 10 | |
| 11 | /* |
| 12 | * Special value that needs to be written to counter_restart register to |
| 13 | * (re)start the timer |
| 14 | */ |
| 15 | #define WDT_COUNTER_RESTART_VAL 0x4755 |
| 16 | |
| 17 | /* reset mode */ |
| 18 | #define WDT_RESET_MODE_SOC 0 |
| 19 | #define WDT_RESET_MODE_CHIP 1 |
| 20 | #define WDT_RESET_MODE_CPU 2 |
| 21 | |
| 22 | /* bit-fields of WDT control register */ |
| 23 | #define WDT_CTRL_2ND_BOOT BIT(7) |
| 24 | #define WDT_CTRL_RESET_MODE_MASK GENMASK(6, 5) |
| 25 | #define WDT_CTRL_RESET_MODE_SHIFT 5 |
| 26 | #define WDT_CTRL_CLK1MHZ BIT(4) |
| 27 | #define WDT_CTRL_RESET BIT(1) |
| 28 | #define WDT_CTRL_EN BIT(0) |
| 29 | |
| 30 | /* bit-fields of WDT reset mask1 register */ |
| 31 | #define WDT_RESET_MASK1_RVAS BIT(25) |
| 32 | #define WDT_RESET_MASK1_GPIO1 BIT(24) |
| 33 | #define WDT_RESET_MASK1_XDMA2 BIT(23) |
| 34 | #define WDT_RESET_MASK1_XDMA1 BIT(22) |
| 35 | #define WDT_RESET_MASK1_MCTP2 BIT(21) |
| 36 | #define WDT_RESET_MASK1_MCTP1 BIT(20) |
| 37 | #define WDT_RESET_MASK1_JTAG1 BIT(19) |
| 38 | #define WDT_RESET_MASK1_SD_SDIO1 BIT(18) |
| 39 | #define WDT_RESET_MASK1_MAC2 BIT(17) |
| 40 | #define WDT_RESET_MASK1_MAC1 BIT(16) |
| 41 | #define WDT_RESET_MASK1_GPMCU BIT(15) |
| 42 | #define WDT_RESET_MASK1_DPMCU BIT(14) |
| 43 | #define WDT_RESET_MASK1_DP BIT(13) |
| 44 | #define WDT_RESET_MASK1_HAC BIT(12) |
| 45 | #define WDT_RESET_MASK1_VIDEO BIT(11) |
| 46 | #define WDT_RESET_MASK1_CRT BIT(10) |
| 47 | #define WDT_RESET_MASK1_GCRT BIT(9) |
| 48 | #define WDT_RESET_MASK1_USB11_UHCI BIT(8) |
| 49 | #define WDT_RESET_MASK1_USB_PORTA BIT(7) |
| 50 | #define WDT_RESET_MASK1_USB_PORTB BIT(6) |
| 51 | #define WDT_RESET_MASK1_COPROC BIT(5) |
| 52 | #define WDT_RESET_MASK1_SOC BIT(4) |
| 53 | #define WDT_RESET_MASK1_SLI BIT(3) |
| 54 | #define WDT_RESET_MASK1_AHB BIT(2) |
| 55 | #define WDT_RESET_MASK1_SDRAM BIT(1) |
| 56 | #define WDT_RESET_MASK1_ARM BIT(0) |
| 57 | |
| 58 | /* bit-fields of WDT reset mask2 register */ |
| 59 | #define WDT_RESET_MASK2_ESPI BIT(26) |
| 60 | #define WDT_RESET_MASK2_I3C_BUS8 BIT(25) |
| 61 | #define WDT_RESET_MASK2_I3C_BUS7 BIT(24) |
| 62 | #define WDT_RESET_MASK2_I3C_BUS6 BIT(23) |
| 63 | #define WDT_RESET_MASK2_I3C_BUS5 BIT(22) |
| 64 | #define WDT_RESET_MASK2_I3C_BUS4 BIT(21) |
| 65 | #define WDT_RESET_MASK2_I3C_BUS3 BIT(20) |
| 66 | #define WDT_RESET_MASK2_I3C_BUS2 BIT(19) |
| 67 | #define WDT_RESET_MASK2_I3C_BUS1 BIT(18) |
| 68 | #define WDT_RESET_MASK2_I3C_GLOBAL BIT(17) |
| 69 | #define WDT_RESET_MASK2_I2C BIT(16) |
| 70 | #define WDT_RESET_MASK2_FSI BIT(15) |
| 71 | #define WDT_RESET_MASK2_ADC BIT(14) |
| 72 | #define WDT_RESET_MASK2_PWM BIT(13) |
| 73 | #define WDT_RESET_MASK2_PECI BIT(12) |
| 74 | #define WDT_RESET_MASK2_LPC BIT(11) |
| 75 | #define WDT_RESET_MASK2_MDC_MDIO BIT(10) |
| 76 | #define WDT_RESET_MASK2_GPIO2 BIT(9) |
| 77 | #define WDT_RESET_MASK2_JTAG2 BIT(8) |
| 78 | #define WDT_RESET_MASK2_SD_SDIO2 BIT(7) |
| 79 | #define WDT_RESET_MASK2_MAC4 BIT(6) |
| 80 | #define WDT_RESET_MASK2_MAC3 BIT(5) |
| 81 | #define WDT_RESET_MASK2_SOC BIT(4) |
| 82 | #define WDT_RESET_MASK2_SLI2 BIT(3) |
| 83 | #define WDT_RESET_MASK2_AHB2 BIT(2) |
| 84 | #define WDT_RESET_MASK2_SPI1_SPI2 BIT(1) |
| 85 | #define WDT_RESET_MASK2_ARM BIT(0) |
| 86 | |
| 87 | #define WDT_RESET_MASK1_DEFAULT \ |
| 88 | (WDT_RESET_MASK1_RVAS | WDT_RESET_MASK1_GPIO1 | \ |
| 89 | WDT_RESET_MASK1_JTAG1 | WDT_RESET_MASK1_SD_SDIO1 | \ |
| 90 | WDT_RESET_MASK1_MAC2 | WDT_RESET_MASK1_MAC1 | \ |
| 91 | WDT_RESET_MASK1_HAC | WDT_RESET_MASK1_VIDEO | \ |
| 92 | WDT_RESET_MASK1_CRT | WDT_RESET_MASK1_GCRT | \ |
| 93 | WDT_RESET_MASK1_USB11_UHCI | WDT_RESET_MASK1_USB_PORTA | \ |
| 94 | WDT_RESET_MASK1_USB_PORTB | WDT_RESET_MASK1_COPROC | \ |
| 95 | WDT_RESET_MASK1_SOC | WDT_RESET_MASK1_ARM) |
| 96 | |
| 97 | #define WDT_RESET_MASK2_DEFAULT \ |
| 98 | (WDT_RESET_MASK2_I3C_BUS8 | WDT_RESET_MASK2_I3C_BUS7 | \ |
| 99 | WDT_RESET_MASK2_I3C_BUS6 | WDT_RESET_MASK2_I3C_BUS5 | \ |
| 100 | WDT_RESET_MASK2_I3C_BUS4 | WDT_RESET_MASK2_I3C_BUS3 | \ |
| 101 | WDT_RESET_MASK2_I3C_BUS2 | WDT_RESET_MASK2_I3C_BUS1 | \ |
| 102 | WDT_RESET_MASK2_I3C_GLOBAL | WDT_RESET_MASK2_I2C | \ |
| 103 | WDT_RESET_MASK2_FSI | WDT_RESET_MASK2_ADC | \ |
| 104 | WDT_RESET_MASK2_PWM | WDT_RESET_MASK2_PECI | \ |
| 105 | WDT_RESET_MASK2_LPC | WDT_RESET_MASK2_MDC_MDIO | \ |
| 106 | WDT_RESET_MASK2_GPIO2 | WDT_RESET_MASK2_JTAG2 | \ |
| 107 | WDT_RESET_MASK2_SD_SDIO2 | WDT_RESET_MASK2_MAC4 | \ |
| 108 | WDT_RESET_MASK2_MAC3 | WDT_RESET_MASK2_SOC | \ |
| 109 | WDT_RESET_MASK2_ARM) |
| 110 | |
| 111 | #ifndef __ASSEMBLY__ |
| 112 | struct ast2600_wdt { |
| 113 | u32 counter_status; |
| 114 | u32 counter_reload_val; |
| 115 | u32 counter_restart; |
| 116 | u32 ctrl; |
| 117 | u32 timeout_status; |
| 118 | u32 clr_timeout_status; |
| 119 | u32 reset_width; |
| 120 | u32 reset_mask1; |
| 121 | u32 reset_mask2; |
| 122 | u32 sw_reset_ctrl; |
| 123 | u32 sw_reset_mask1; |
| 124 | u32 sw_reset_mask2; |
| 125 | u32 sw_reset_disable; |
| 126 | }; |
| 127 | #endif /* __ASSEMBLY__ */ |
| 128 | |
| 129 | #endif /* _ASM_ARCH_WDT_AST2600_H */ |