diff options
| author | Mark Brown <broonie@kernel.org> | 2026-10-29 11:46:48 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-29 11:46:48 +0000 |
| commit | 2b73edcdecfdf18bfbccdff94499b28f9a8d2f9f (patch) | |
| tree | 5846fb5e228436ea41073f1e8a08aeddd8200128 | |
| parent | 8805b32a2e0152ad9c03e68e50c91c87b10c00d9 (diff) | |
| parent | baa14758afb3e2828de1f76511edc1de50216f39 (diff) | |
| download | linux-next-2b73edcdecfdf18bfbccdff94499b28f9a8d2f9f.tar.gz linux-next-2b73edcdecfdf18bfbccdff94499b28f9a8d2f9f.zip | |
Merge branch 'gpio/for-current' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git
| -rw-r--r-- | drivers/gpio/gpio-brcmstb.c | 1 | ||||
| -rw-r--r-- | drivers/gpio/gpio-rockchip.c | 15 |
2 files changed, 11 insertions, 5 deletions
diff --git a/drivers/gpio/gpio-brcmstb.c b/drivers/gpio/gpio-brcmstb.c index 44ca798cf832..3b1aaea63951 100644 --- a/drivers/gpio/gpio-brcmstb.c +++ b/drivers/gpio/gpio-brcmstb.c @@ -513,6 +513,7 @@ static int brcmstb_gpio_irq_setup(struct platform_device *pdev, out_free_domain: irq_domain_remove(priv->irq_domain); + priv->irq_domain = NULL; return err; } diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c index 77b239a9a601..714604c11d78 100644 --- a/drivers/gpio/gpio-rockchip.c +++ b/drivers/gpio/gpio-rockchip.c @@ -201,20 +201,25 @@ static int rockchip_gpio_set_debounce(struct gpio_chip *gc, { struct rockchip_pin_bank *bank = gpiochip_get_data(gc); const struct rockchip_gpio_regs *reg = bank->gpio_regs; - unsigned long flags, div_reg, freq, max_debounce; + unsigned long flags, div_reg, freq; bool div_debounce_support; unsigned int cur_div_reg; - u64 div; + u64 div, max_debounce; if (bank->gpio_type == GPIO_TYPE_V2 && !IS_ERR(bank->db_clk)) { div_debounce_support = true; freq = clk_get_rate(bank->db_clk); - max_debounce = (GENMASK(23, 0) + 1) * 2 * 1000000 / freq; + if (!freq) + return -EINVAL; + + div = (u64)(GENMASK(23, 0) + 1) * 2 * USEC_PER_SEC; + max_debounce = div64_u64(div, freq); if (debounce > max_debounce) return -EINVAL; - div = debounce * freq; - div_reg = DIV_ROUND_CLOSEST_ULL(div, 2 * USEC_PER_SEC) - 1; + div = (u64)debounce * freq; + div_reg = DIV_ROUND_CLOSEST_ULL(div, 2 * USEC_PER_SEC); + div_reg = div_reg ? div_reg - 1 : 0; } else { div_debounce_support = false; } |
