| Shawn Guo | 23b5e15 | 2012-04-29 00:02:34 +0800 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright 2012 Freescale Semiconductor, Inc. | 
|  | 3 | * | 
|  | 4 | * The code contained herein is licensed under the GNU General Public | 
|  | 5 | * License. You may obtain a copy of the GNU General Public License | 
|  | 6 | * Version 2 or later at the following locations: | 
|  | 7 | * | 
|  | 8 | * http://www.opensource.org/licenses/gpl-license.html | 
|  | 9 | * http://www.gnu.org/copyleft/gpl.html | 
|  | 10 | */ | 
|  | 11 |  | 
|  | 12 | #include <linux/err.h> | 
|  | 13 | #include <linux/io.h> | 
|  | 14 | #include <linux/jiffies.h> | 
|  | 15 | #include <linux/spinlock.h> | 
|  | 16 |  | 
|  | 17 | DEFINE_SPINLOCK(mxs_lock); | 
|  | 18 |  | 
|  | 19 | int mxs_clk_wait(void __iomem *reg, u8 shift) | 
|  | 20 | { | 
|  | 21 | unsigned long timeout = jiffies + msecs_to_jiffies(10); | 
|  | 22 |  | 
|  | 23 | while (readl_relaxed(reg) & (1 << shift)) | 
|  | 24 | if (time_after(jiffies, timeout)) | 
|  | 25 | return -ETIMEDOUT; | 
|  | 26 |  | 
|  | 27 | return 0; | 
|  | 28 | } |