Lines Matching defs:gwdt

54 #define DRV_NAME		"sbsa-gwdt"
127 static u64 sbsa_gwdt_reg_read(struct sbsa_gwdt *gwdt)
129 if (gwdt->version == 0)
130 return readl(gwdt->control_base + SBSA_GWDT_WOR);
132 return lo_hi_readq(gwdt->control_base + SBSA_GWDT_WOR);
135 static void sbsa_gwdt_reg_write(u64 val, struct sbsa_gwdt *gwdt)
137 if (gwdt->version == 0)
138 writel((u32)val, gwdt->control_base + SBSA_GWDT_WOR);
140 lo_hi_writeq(val, gwdt->control_base + SBSA_GWDT_WOR);
149 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
155 sbsa_gwdt_reg_write((u64)gwdt->clk * timeout, gwdt);
162 sbsa_gwdt_reg_write(((u64)gwdt->clk / 2) * timeout, gwdt);
169 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
178 !(readl(gwdt->control_base + SBSA_GWDT_WCS) & SBSA_GWDT_WCS_WS0))
179 timeleft += sbsa_gwdt_reg_read(gwdt);
181 timeleft += lo_hi_readq(gwdt->control_base + SBSA_GWDT_WCV) -
184 do_div(timeleft, gwdt->clk);
191 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
197 writel(0, gwdt->refresh_base + SBSA_GWDT_WRR);
204 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
207 ver = readl(gwdt->control_base + SBSA_GWDT_W_IIDR);
210 gwdt->version = ver;
215 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
218 writel(SBSA_GWDT_WCS_EN, gwdt->control_base + SBSA_GWDT_WCS);
225 struct sbsa_gwdt *gwdt = watchdog_get_drvdata(wdd);
228 writel(0, gwdt->control_base + SBSA_GWDT_WCS);
262 struct sbsa_gwdt *gwdt;
266 gwdt = devm_kzalloc(dev, sizeof(*gwdt), GFP_KERNEL);
267 if (!gwdt)
269 platform_set_drvdata(pdev, gwdt);
284 gwdt->clk = arch_timer_get_cntfrq();
285 gwdt->refresh_base = rf_base;
286 gwdt->control_base = cf_base;
288 wdd = &gwdt->wdd;
294 watchdog_set_drvdata(wdd, gwdt);
297 if (gwdt->version == 0)
298 wdd->max_hw_heartbeat_ms = U32_MAX / gwdt->clk * 1000;
300 wdd->max_hw_heartbeat_ms = GENMASK_ULL(47, 0) / gwdt->clk * 1000;
322 pdev->name, gwdt)) {
352 wdd->timeout, gwdt->clk, action,
361 struct sbsa_gwdt *gwdt = dev_get_drvdata(dev);
363 if (watchdog_hw_running(&gwdt->wdd))
364 sbsa_gwdt_stop(&gwdt->wdd);
372 struct sbsa_gwdt *gwdt = dev_get_drvdata(dev);
374 if (watchdog_hw_running(&gwdt->wdd))
375 sbsa_gwdt_start(&gwdt->wdd);
385 { .compatible = "arm,sbsa-gwdt", },