diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-12-27 09:44:11 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-12-27 09:44:11 -0500 |
commit | a44dca1717ce2c2381339e21c07d1731a63a7888 (patch) | |
tree | 3d0b3bd26492f9fa1f1f1c1ad838315b266da7c1 /arch/arm/mach-omap2/cm2xxx_3xxx.h | |
parent | 30ebc5e44d057a1619ad63fe32c8c1670c37c4b8 (diff) | |
parent | a49f0d1ea3ec94fc7cf33a7c36a16343b74bd565 (diff) |
Merge tag 'v3.8-rc1' into staging/for_v3.9
Linux 3.8-rc1
* tag 'v3.8-rc1': (10696 commits)
Linux 3.8-rc1
Revert "nfsd: warn on odd reply state in nfsd_vfs_read"
ARM: dts: fix duplicated build target and alphabetical sort out for exynos
dm stripe: add WRITE SAME support
dm: remove map_info
dm snapshot: do not use map_context
dm thin: dont use map_context
dm raid1: dont use map_context
dm flakey: dont use map_context
dm raid1: rename read_record to bio_record
dm: move target request nr to dm_target_io
dm snapshot: use per_bio_data
dm verity: use per_bio_data
dm raid1: use per_bio_data
dm: introduce per_bio_data
dm kcopyd: add WRITE SAME support to dm_kcopyd_zero
dm linear: add WRITE SAME support
dm: add WRITE SAME support
dm: prepare to support WRITE SAME
dm ioctl: use kmalloc if possible
...
Conflicts:
MAINTAINERS
Diffstat (limited to 'arch/arm/mach-omap2/cm2xxx_3xxx.h')
-rw-r--r-- | arch/arm/mach-omap2/cm2xxx_3xxx.h | 126 |
1 files changed, 45 insertions, 81 deletions
diff --git a/arch/arm/mach-omap2/cm2xxx_3xxx.h b/arch/arm/mach-omap2/cm2xxx_3xxx.h index 57b2f3c2fbf3..bfbd16fe9151 100644 --- a/arch/arm/mach-omap2/cm2xxx_3xxx.h +++ b/arch/arm/mach-omap2/cm2xxx_3xxx.h | |||
@@ -16,28 +16,7 @@ | |||
16 | #ifndef __ARCH_ASM_MACH_OMAP2_CM2XXX_3XXX_H | 16 | #ifndef __ARCH_ASM_MACH_OMAP2_CM2XXX_3XXX_H |
17 | #define __ARCH_ASM_MACH_OMAP2_CM2XXX_3XXX_H | 17 | #define __ARCH_ASM_MACH_OMAP2_CM2XXX_3XXX_H |
18 | 18 | ||
19 | #include "prcm-common.h" | 19 | #include "cm.h" |
20 | |||
21 | #define OMAP2420_CM_REGADDR(module, reg) \ | ||
22 | OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE + (module) + (reg)) | ||
23 | #define OMAP2430_CM_REGADDR(module, reg) \ | ||
24 | OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE + (module) + (reg)) | ||
25 | #define OMAP34XX_CM_REGADDR(module, reg) \ | ||
26 | OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE + (module) + (reg)) | ||
27 | |||
28 | |||
29 | /* | ||
30 | * OMAP3-specific global CM registers | ||
31 | * Use cm_{read,write}_reg() with these registers. | ||
32 | * These registers appear once per CM module. | ||
33 | */ | ||
34 | |||
35 | #define OMAP3430_CM_REVISION OMAP34XX_CM_REGADDR(OCP_MOD, 0x0000) | ||
36 | #define OMAP3430_CM_SYSCONFIG OMAP34XX_CM_REGADDR(OCP_MOD, 0x0010) | ||
37 | #define OMAP3430_CM_POLCTRL OMAP34XX_CM_REGADDR(OCP_MOD, 0x009c) | ||
38 | |||
39 | #define OMAP3_CM_CLKOUT_CTRL_OFFSET 0x0070 | ||
40 | #define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070) | ||
41 | 20 | ||
42 | /* | 21 | /* |
43 | * Module specific CM register offsets from CM_BASE + domain offset | 22 | * Module specific CM register offsets from CM_BASE + domain offset |
@@ -57,6 +36,7 @@ | |||
57 | #define CM_IDLEST 0x0020 | 36 | #define CM_IDLEST 0x0020 |
58 | #define CM_IDLEST1 CM_IDLEST | 37 | #define CM_IDLEST1 CM_IDLEST |
59 | #define CM_IDLEST2 0x0024 | 38 | #define CM_IDLEST2 0x0024 |
39 | #define OMAP2430_CM_IDLEST3 0x0028 | ||
60 | #define CM_AUTOIDLE 0x0030 | 40 | #define CM_AUTOIDLE 0x0030 |
61 | #define CM_AUTOIDLE1 CM_AUTOIDLE | 41 | #define CM_AUTOIDLE1 CM_AUTOIDLE |
62 | #define CM_AUTOIDLE2 0x0034 | 42 | #define CM_AUTOIDLE2 0x0034 |
@@ -66,70 +46,60 @@ | |||
66 | #define CM_CLKSEL2 0x0044 | 46 | #define CM_CLKSEL2 0x0044 |
67 | #define OMAP2_CM_CLKSTCTRL 0x0048 | 47 | #define OMAP2_CM_CLKSTCTRL 0x0048 |
68 | 48 | ||
69 | /* OMAP2-specific register offsets */ | 49 | #ifndef __ASSEMBLER__ |
70 | |||
71 | #define OMAP24XX_CM_FCLKEN2 0x0004 | ||
72 | #define OMAP24XX_CM_ICLKEN4 0x001c | ||
73 | #define OMAP24XX_CM_AUTOIDLE4 0x003c | ||
74 | #define OMAP24XX_CM_IDLEST4 0x002c | ||
75 | |||
76 | #define OMAP2430_CM_IDLEST3 0x0028 | ||
77 | |||
78 | /* OMAP3-specific register offsets */ | ||
79 | |||
80 | #define OMAP3430_CM_CLKEN_PLL 0x0004 | ||
81 | #define OMAP3430ES2_CM_CLKEN2 0x0004 | ||
82 | #define OMAP3430ES2_CM_FCLKEN3 0x0008 | ||
83 | #define OMAP3430_CM_IDLEST_PLL CM_IDLEST2 | ||
84 | #define OMAP3430_CM_AUTOIDLE_PLL CM_AUTOIDLE2 | ||
85 | #define OMAP3430ES2_CM_AUTOIDLE2_PLL CM_AUTOIDLE2 | ||
86 | #define OMAP3430_CM_CLKSEL1 CM_CLKSEL | ||
87 | #define OMAP3430_CM_CLKSEL1_PLL CM_CLKSEL | ||
88 | #define OMAP3430_CM_CLKSEL2_PLL CM_CLKSEL2 | ||
89 | #define OMAP3430_CM_SLEEPDEP CM_CLKSEL2 | ||
90 | #define OMAP3430_CM_CLKSEL3 OMAP2_CM_CLKSTCTRL | ||
91 | #define OMAP3430_CM_CLKSTST 0x004c | ||
92 | #define OMAP3430ES2_CM_CLKSEL4 0x004c | ||
93 | #define OMAP3430ES2_CM_CLKSEL5 0x0050 | ||
94 | #define OMAP3430_CM_CLKSEL2_EMU 0x0050 | ||
95 | #define OMAP3430_CM_CLKSEL3_EMU 0x0054 | ||
96 | 50 | ||
51 | #include <linux/io.h> | ||
97 | 52 | ||
98 | /* CM_IDLEST bit field values to indicate deasserted IdleReq */ | 53 | static inline u32 omap2_cm_read_mod_reg(s16 module, u16 idx) |
54 | { | ||
55 | return __raw_readl(cm_base + module + idx); | ||
56 | } | ||
99 | 57 | ||
100 | #define OMAP24XX_CM_IDLEST_VAL 0 | 58 | static inline void omap2_cm_write_mod_reg(u32 val, s16 module, u16 idx) |
101 | #define OMAP34XX_CM_IDLEST_VAL 1 | 59 | { |
60 | __raw_writel(val, cm_base + module + idx); | ||
61 | } | ||
102 | 62 | ||
63 | /* Read-modify-write a register in a CM module. Caller must lock */ | ||
64 | static inline u32 omap2_cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, | ||
65 | s16 idx) | ||
66 | { | ||
67 | u32 v; | ||
103 | 68 | ||
104 | /* Clock management domain register get/set */ | 69 | v = omap2_cm_read_mod_reg(module, idx); |
70 | v &= ~mask; | ||
71 | v |= bits; | ||
72 | omap2_cm_write_mod_reg(v, module, idx); | ||
105 | 73 | ||
106 | #ifndef __ASSEMBLER__ | 74 | return v; |
75 | } | ||
107 | 76 | ||
108 | extern u32 omap2_cm_read_mod_reg(s16 module, u16 idx); | 77 | /* Read a CM register, AND it, and shift the result down to bit 0 */ |
109 | extern void omap2_cm_write_mod_reg(u32 val, s16 module, u16 idx); | 78 | static inline u32 omap2_cm_read_mod_bits_shift(s16 domain, s16 idx, u32 mask) |
110 | extern u32 omap2_cm_rmw_mod_reg_bits(u32 mask, u32 bits, s16 module, s16 idx); | 79 | { |
80 | u32 v; | ||
111 | 81 | ||
112 | extern int omap2_cm_wait_module_ready(s16 prcm_mod, u8 idlest_id, | 82 | v = omap2_cm_read_mod_reg(domain, idx); |
113 | u8 idlest_shift); | 83 | v &= mask; |
114 | extern u32 omap2_cm_set_mod_reg_bits(u32 bits, s16 module, s16 idx); | 84 | v >>= __ffs(mask); |
115 | extern u32 omap2_cm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx); | ||
116 | 85 | ||
117 | extern bool omap2_cm_is_clkdm_in_hwsup(s16 module, u32 mask); | 86 | return v; |
118 | extern void omap2xxx_cm_clkdm_enable_hwsup(s16 module, u32 mask); | 87 | } |
119 | extern void omap2xxx_cm_clkdm_disable_hwsup(s16 module, u32 mask); | ||
120 | 88 | ||
121 | extern void omap3xxx_cm_clkdm_enable_hwsup(s16 module, u32 mask); | 89 | static inline u32 omap2_cm_set_mod_reg_bits(u32 bits, s16 module, s16 idx) |
122 | extern void omap3xxx_cm_clkdm_disable_hwsup(s16 module, u32 mask); | 90 | { |
123 | extern void omap3xxx_cm_clkdm_force_sleep(s16 module, u32 mask); | 91 | return omap2_cm_rmw_mod_reg_bits(bits, bits, module, idx); |
124 | extern void omap3xxx_cm_clkdm_force_wakeup(s16 module, u32 mask); | 92 | } |
125 | 93 | ||
126 | extern void omap2xxx_cm_set_dpll_disable_autoidle(void); | 94 | static inline u32 omap2_cm_clear_mod_reg_bits(u32 bits, s16 module, s16 idx) |
127 | extern void omap2xxx_cm_set_dpll_auto_low_power_stop(void); | 95 | { |
96 | return omap2_cm_rmw_mod_reg_bits(bits, 0x0, module, idx); | ||
97 | } | ||
128 | 98 | ||
129 | extern void omap2xxx_cm_set_apll54_disable_autoidle(void); | 99 | extern int omap2xxx_cm_apll54_enable(void); |
130 | extern void omap2xxx_cm_set_apll54_auto_low_power_stop(void); | 100 | extern void omap2xxx_cm_apll54_disable(void); |
131 | extern void omap2xxx_cm_set_apll96_disable_autoidle(void); | 101 | extern int omap2xxx_cm_apll96_enable(void); |
132 | extern void omap2xxx_cm_set_apll96_auto_low_power_stop(void); | 102 | extern void omap2xxx_cm_apll96_disable(void); |
133 | 103 | ||
134 | #endif | 104 | #endif |
135 | 105 | ||
@@ -138,6 +108,7 @@ extern void omap2xxx_cm_set_apll96_auto_low_power_stop(void); | |||
138 | /* CM_CLKSEL_GFX */ | 108 | /* CM_CLKSEL_GFX */ |
139 | #define OMAP_CLKSEL_GFX_SHIFT 0 | 109 | #define OMAP_CLKSEL_GFX_SHIFT 0 |
140 | #define OMAP_CLKSEL_GFX_MASK (0x7 << 0) | 110 | #define OMAP_CLKSEL_GFX_MASK (0x7 << 0) |
111 | #define OMAP_CLKSEL_GFX_WIDTH 3 | ||
141 | 112 | ||
142 | /* CM_ICLKEN_GFX */ | 113 | /* CM_ICLKEN_GFX */ |
143 | #define OMAP_EN_GFX_SHIFT 0 | 114 | #define OMAP_EN_GFX_SHIFT 0 |
@@ -146,11 +117,4 @@ extern void omap2xxx_cm_set_apll96_auto_low_power_stop(void); | |||
146 | /* CM_IDLEST_GFX */ | 117 | /* CM_IDLEST_GFX */ |
147 | #define OMAP_ST_GFX_MASK (1 << 0) | 118 | #define OMAP_ST_GFX_MASK (1 << 0) |
148 | 119 | ||
149 | |||
150 | /* Function prototypes */ | ||
151 | # ifndef __ASSEMBLER__ | ||
152 | extern void omap3_cm_save_context(void); | ||
153 | extern void omap3_cm_restore_context(void); | ||
154 | # endif | ||
155 | |||
156 | #endif | 120 | #endif |