12345678910111213141516171819202122232425262728293031323334 |
- #include <sunxi_hal_common.h>
- #include <hal_hwspinlock.h>
- #include <hal_clk.h>
- #include "hwspinlock.h"
- void hal_hwspinlock_init(void)
- {
- /*
- * the clk and gate should init in kernel
- */
- /* hal_clock_enable(HAL_CLK_PERIPH_SPINLOCK); */
- }
- int hal_hwspinlock_check_taken(int num)
- {
- return !!(readl(SPINLOCK_STATUS_REG) & (1 << num));
- }
- void hal_hwspinlock_get(int num)
- {
- unsigned long addr = SPINLOCK_LOCK_REG(num);
- while (readl(addr) != 0);
- }
- void hal_hwspinlock_put(int num)
- {
- unsigned long addr = SPINLOCK_LOCK_REG(num);
- writel(0, addr);
- }
|