]>
Commit | Line | Data |
---|---|---|
0be1621a BC |
1 | /* |
2 | * OMAP4 PRM module functions | |
3 | * | |
eaac329d | 4 | * Copyright (C) 2011 Texas Instruments, Inc. |
0be1621a BC |
5 | * Copyright (C) 2010 Nokia Corporation |
6 | * Benoît Cousson | |
7 | * Paul Walmsley | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or modify | |
10 | * it under the terms of the GNU General Public License version 2 as | |
11 | * published by the Free Software Foundation. | |
12 | */ | |
13 | ||
14 | #include <linux/kernel.h> | |
15 | #include <linux/delay.h> | |
16 | #include <linux/errno.h> | |
17 | #include <linux/err.h> | |
2ace831f | 18 | #include <linux/io.h> |
0be1621a BC |
19 | |
20 | #include <plat/common.h> | |
21 | #include <plat/cpu.h> | |
22 | #include <plat/prcm.h> | |
23 | ||
d198b514 | 24 | #include "prm44xx.h" |
0be1621a BC |
25 | #include "prm-regbits-44xx.h" |
26 | ||
2ace831f PW |
27 | /* PRM low-level functions */ |
28 | ||
29 | /* Read a register in a CM/PRM instance in the PRM module */ | |
30 | u32 omap4_prm_read_inst_reg(s16 inst, u16 reg) | |
31 | { | |
32 | return __raw_readl(OMAP44XX_PRM_REGADDR(inst, reg)); | |
33 | } | |
34 | ||
35 | /* Write into a register in a CM/PRM instance in the PRM module */ | |
36 | void omap4_prm_write_inst_reg(u32 val, s16 inst, u16 reg) | |
37 | { | |
38 | __raw_writel(val, OMAP44XX_PRM_REGADDR(inst, reg)); | |
39 | } | |
40 | ||
41 | /* Read-modify-write a register in a PRM module. Caller must lock */ | |
42 | u32 omap4_prm_rmw_inst_reg_bits(u32 mask, u32 bits, s16 inst, s16 reg) | |
43 | { | |
44 | u32 v; | |
45 | ||
46 | v = omap4_prm_read_inst_reg(inst, reg); | |
47 | v &= ~mask; | |
48 | v |= bits; | |
49 | omap4_prm_write_inst_reg(v, inst, reg); | |
50 | ||
51 | return v; | |
52 | } |