Lines Matching +full:stm32 +full:- +full:hwspinlock
1 // SPDX-License-Identifier: GPL-2.0
9 #include <linux/hwspinlock.h>
28 static int stm32_hwspinlock_trylock(struct hwspinlock *lock) in stm32_hwspinlock_trylock()
30 void __iomem *lock_addr = lock->priv; in stm32_hwspinlock_trylock()
39 static void stm32_hwspinlock_unlock(struct hwspinlock *lock) in stm32_hwspinlock_unlock()
41 void __iomem *lock_addr = lock->priv; in stm32_hwspinlock_unlock()
46 static void stm32_hwspinlock_relax(struct hwspinlock *lock) in stm32_hwspinlock_relax()
61 struct device *dev = &pdev->dev; in stm32_hwspinlock_disable_clk()
68 clk_disable_unprepare(hw->clk); in stm32_hwspinlock_disable_clk()
73 struct device *dev = &pdev->dev; in stm32_hwspinlock_probe()
84 return -ENOMEM; in stm32_hwspinlock_probe()
86 hw->clk = devm_clk_get(dev, "hsem"); in stm32_hwspinlock_probe()
87 if (IS_ERR(hw->clk)) in stm32_hwspinlock_probe()
88 return PTR_ERR(hw->clk); in stm32_hwspinlock_probe()
90 ret = clk_prepare_enable(hw->clk); in stm32_hwspinlock_probe()
110 hw->bank.lock[i].priv = io_base + i * sizeof(u32); in stm32_hwspinlock_probe()
112 ret = devm_hwspin_lock_register(dev, &hw->bank, &stm32_hwspinlock_ops, in stm32_hwspinlock_probe()
116 dev_err(dev, "Failed to register hwspinlock\n"); in stm32_hwspinlock_probe()
125 clk_disable_unprepare(hw->clk); in stm32_hwspinlock_runtime_suspend()
134 clk_prepare_enable(hw->clk); in stm32_hwspinlock_runtime_resume()
146 { .compatible = "st,stm32-hwspinlock", },
174 MODULE_DESCRIPTION("Hardware spinlock driver for STM32 SoCs");