Lines Matching +full:dev +full:- +full:ctrl

1 // SPDX-License-Identifier: GPL-2.0+
80 u32 ctrl; member
84 /* On pre-ast2500 SoCs this register is reserved. */
98 static int ast_wdt_start(struct udevice *dev, u64 timeout, ulong flags) in ast_wdt_start() argument
100 struct ast_wdt_priv *priv = dev_get_priv(dev); in ast_wdt_start()
102 writel((u32) timeout, &priv->regs->counter_reload_val); in ast_wdt_start()
104 writel(WDT_COUNTER_RESTART_VAL, &priv->regs->counter_restart); in ast_wdt_start()
106 writel(WDT_CTRL_EN | WDT_CTRL_RESET, &priv->regs->ctrl); in ast_wdt_start()
111 static int ast_wdt_stop(struct udevice *dev) in ast_wdt_stop() argument
113 struct ast_wdt_priv *priv = dev_get_priv(dev); in ast_wdt_stop()
114 ulong driver_data = dev_get_driver_data(dev); in ast_wdt_stop()
116 clrbits_le32(&priv->regs->ctrl, WDT_CTRL_EN); in ast_wdt_stop()
119 writel(0x030f1ff1, &priv->regs->reset_mask1); in ast_wdt_stop()
120 writel(0x3fffff1, &priv->regs->reset_mask2); in ast_wdt_stop()
122 writel(WDT_RESET_DEFAULT, &priv->regs->reset_mask1); in ast_wdt_stop()
127 static int ast_wdt_reset(struct udevice *dev) in ast_wdt_reset() argument
129 struct ast_wdt_priv *priv = dev_get_priv(dev); in ast_wdt_reset()
131 writel(WDT_COUNTER_RESTART_VAL, &priv->regs->counter_restart); in ast_wdt_reset()
136 static int ast_wdt_expire_now(struct udevice *dev, ulong flags) in ast_wdt_expire_now() argument
138 struct ast_wdt_priv *priv = dev_get_priv(dev); in ast_wdt_expire_now()
141 ret = ast_wdt_start(dev, 1, flags); in ast_wdt_expire_now()
145 while (readl(&priv->regs->ctrl) & WDT_CTRL_EN); in ast_wdt_expire_now()
147 return ast_wdt_stop(dev); in ast_wdt_expire_now()
150 static int ast_wdt_ofdata_to_platdata(struct udevice *dev) in ast_wdt_ofdata_to_platdata() argument
152 struct ast_wdt_priv *priv = dev_get_priv(dev); in ast_wdt_ofdata_to_platdata()
154 priv->regs = devfdt_get_addr_ptr(dev); in ast_wdt_ofdata_to_platdata()
155 if (IS_ERR(priv->regs)) in ast_wdt_ofdata_to_platdata()
156 return PTR_ERR(priv->regs); in ast_wdt_ofdata_to_platdata()
168 static int ast_wdt_probe(struct udevice *dev) in ast_wdt_probe() argument
170 debug("%s() wdt%u\n", __func__, dev->seq); in ast_wdt_probe()
171 ast_wdt_stop(dev); in ast_wdt_probe()
178 { .compatible = "aspeed,ast2600-wdt", .data = WDT_AST2600 },
179 { .compatible = "aspeed,ast2500-wdt", .data = WDT_AST2500 },
180 { .compatible = "aspeed,ast2400-wdt", .data = WDT_AST2400 },