diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-04-19 15:33:49 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-04-19 15:33:49 -0400 |
commit | 6ba5a69ee92c29c2ffc814dad6ac61c4cd49090c (patch) | |
tree | fac668ac66b82277034aefa5b6f756b4029d68ad | |
parent | 3af35fbcd088e0b675fa423a879c596384894180 (diff) |
ARM: OMAP2+: clockdomains: make {prm,cm}_clkdm common
The PRM and CM implicit clockdomains will soon be used by OMAP44xx.
So, make them common to OMAP2+ and modify the OMAP4 clockdomains code
so use of these clockdomains doesn't crash the system.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Rajendra Nayak <rnayak@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomain44xx.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomains44xx_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clockdomains_common_data.c | 24 |
5 files changed, 37 insertions, 13 deletions
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 49f92bc1c311..d8604a3e490e 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -118,16 +118,18 @@ obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \ | |||
118 | powerdomains44xx_data.o | 118 | powerdomains44xx_data.o |
119 | 119 | ||
120 | # PRCM clockdomain control | 120 | # PRCM clockdomain control |
121 | obj-$(CONFIG_ARCH_OMAP2) += clockdomain.o \ | 121 | clockdomain-common += clockdomain.o \ |
122 | clockdomains_common_data.o | ||
123 | obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) \ | ||
122 | clockdomain2xxx_3xxx.o \ | 124 | clockdomain2xxx_3xxx.o \ |
123 | clockdomains2xxx_3xxx_data.o | 125 | clockdomains2xxx_3xxx_data.o |
124 | obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o | 126 | obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o |
125 | obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o | 127 | obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o |
126 | obj-$(CONFIG_ARCH_OMAP3) += clockdomain.o \ | 128 | obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) \ |
127 | clockdomain2xxx_3xxx.o \ | 129 | clockdomain2xxx_3xxx.o \ |
128 | clockdomains2xxx_3xxx_data.o \ | 130 | clockdomains2xxx_3xxx_data.o \ |
129 | clockdomains3xxx_data.o | 131 | clockdomains3xxx_data.o |
130 | obj-$(CONFIG_ARCH_OMAP4) += clockdomain.o \ | 132 | obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) \ |
131 | clockdomain44xx.o \ | 133 | clockdomain44xx.o \ |
132 | clockdomains44xx_data.o | 134 | clockdomains44xx_data.o |
133 | 135 | ||
diff --git a/arch/arm/mach-omap2/clockdomain44xx.c b/arch/arm/mach-omap2/clockdomain44xx.c index 935c7f03dab9..4f04dd11d655 100644 --- a/arch/arm/mach-omap2/clockdomain44xx.c +++ b/arch/arm/mach-omap2/clockdomain44xx.c | |||
@@ -51,6 +51,9 @@ static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm) | |||
51 | struct clkdm_dep *cd; | 51 | struct clkdm_dep *cd; |
52 | u32 mask = 0; | 52 | u32 mask = 0; |
53 | 53 | ||
54 | if (!clkdm->prcm_partition) | ||
55 | return 0; | ||
56 | |||
54 | for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) { | 57 | for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) { |
55 | if (!cd->clkdm) | 58 | if (!cd->clkdm) |
56 | continue; /* only happens if data is erroneous */ | 59 | continue; /* only happens if data is erroneous */ |
@@ -103,6 +106,9 @@ static int omap4_clkdm_clk_disable(struct clockdomain *clkdm) | |||
103 | { | 106 | { |
104 | bool hwsup = false; | 107 | bool hwsup = false; |
105 | 108 | ||
109 | if (!clkdm->prcm_partition) | ||
110 | return 0; | ||
111 | |||
106 | hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition, | 112 | hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition, |
107 | clkdm->cm_inst, clkdm->clkdm_offs); | 113 | clkdm->cm_inst, clkdm->clkdm_offs); |
108 | 114 | ||
diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c index 0a6a04897d89..839145e1cfbe 100644 --- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c +++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c | |||
@@ -89,13 +89,3 @@ struct clockdomain wkup_common_clkdm = { | |||
89 | .pwrdm = { .name = "wkup_pwrdm" }, | 89 | .pwrdm = { .name = "wkup_pwrdm" }, |
90 | .dep_bit = OMAP_EN_WKUP_SHIFT, | 90 | .dep_bit = OMAP_EN_WKUP_SHIFT, |
91 | }; | 91 | }; |
92 | |||
93 | struct clockdomain prm_common_clkdm = { | ||
94 | .name = "prm_clkdm", | ||
95 | .pwrdm = { .name = "wkup_pwrdm" }, | ||
96 | }; | ||
97 | |||
98 | struct clockdomain cm_common_clkdm = { | ||
99 | .name = "cm_clkdm", | ||
100 | .pwrdm = { .name = "core_pwrdm" }, | ||
101 | }; | ||
diff --git a/arch/arm/mach-omap2/clockdomains44xx_data.c b/arch/arm/mach-omap2/clockdomains44xx_data.c index bd7ed13515cc..c53425847493 100644 --- a/arch/arm/mach-omap2/clockdomains44xx_data.c +++ b/arch/arm/mach-omap2/clockdomains44xx_data.c | |||
@@ -430,6 +430,8 @@ static struct clockdomain *clockdomains_omap44xx[] __initdata = { | |||
430 | &l4_wkup_44xx_clkdm, | 430 | &l4_wkup_44xx_clkdm, |
431 | &emu_sys_44xx_clkdm, | 431 | &emu_sys_44xx_clkdm, |
432 | &l3_dma_44xx_clkdm, | 432 | &l3_dma_44xx_clkdm, |
433 | &prm_common_clkdm, | ||
434 | &cm_common_clkdm, | ||
433 | NULL | 435 | NULL |
434 | }; | 436 | }; |
435 | 437 | ||
diff --git a/arch/arm/mach-omap2/clockdomains_common_data.c b/arch/arm/mach-omap2/clockdomains_common_data.c new file mode 100644 index 000000000000..615b1f04967d --- /dev/null +++ b/arch/arm/mach-omap2/clockdomains_common_data.c | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * OMAP2+-common clockdomain data | ||
3 | * | ||
4 | * Copyright (C) 2008-2012 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2008-2010 Nokia Corporation | ||
6 | * | ||
7 | * Paul Walmsley, Jouni Högander | ||
8 | */ | ||
9 | |||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/io.h> | ||
12 | |||
13 | #include "clockdomain.h" | ||
14 | |||
15 | /* These are implicit clockdomains - they are never defined as such in TRM */ | ||
16 | struct clockdomain prm_common_clkdm = { | ||
17 | .name = "prm_clkdm", | ||
18 | .pwrdm = { .name = "wkup_pwrdm" }, | ||
19 | }; | ||
20 | |||
21 | struct clockdomain cm_common_clkdm = { | ||
22 | .name = "cm_clkdm", | ||
23 | .pwrdm = { .name = "core_pwrdm" }, | ||
24 | }; | ||