xref: /kernel/linux/linux-6.6/drivers/clk/mxs/clk.c
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-6.6/drivers/clk/mxs/
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2012 Freescale Semiconductor, Inc.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <linux/err.h>
762306a36Sopenharmony_ci#include <linux/io.h>
862306a36Sopenharmony_ci#include <linux/jiffies.h>
962306a36Sopenharmony_ci#include <linux/spinlock.h>
1062306a36Sopenharmony_ci#include "clk.h"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciDEFINE_SPINLOCK(mxs_lock);
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciint mxs_clk_wait(void __iomem *reg, u8 shift)
1562306a36Sopenharmony_ci{
1662306a36Sopenharmony_ci	unsigned long timeout = jiffies + msecs_to_jiffies(10);
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	while (readl_relaxed(reg) & (1 << shift))
1962306a36Sopenharmony_ci		if (time_after(jiffies, timeout))
2062306a36Sopenharmony_ci			return -ETIMEDOUT;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	return 0;
2362306a36Sopenharmony_ci}
24

Indexes created Thu Nov 07 10:32:03 CST 2024