mirror of
https://github.com/torvalds/linux
synced 2024-09-21 19:47:35 +00:00
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>
This commit is contained in:
parent
3af35fbcd0
commit
6ba5a69ee9
|
@ -118,16 +118,18 @@ obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \
|
||||||
powerdomains44xx_data.o
|
powerdomains44xx_data.o
|
||||||
|
|
||||||
# PRCM clockdomain control
|
# PRCM clockdomain control
|
||||||
obj-$(CONFIG_ARCH_OMAP2) += clockdomain.o \
|
clockdomain-common += clockdomain.o \
|
||||||
|
clockdomains_common_data.o
|
||||||
|
obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) \
|
||||||
clockdomain2xxx_3xxx.o \
|
clockdomain2xxx_3xxx.o \
|
||||||
clockdomains2xxx_3xxx_data.o
|
clockdomains2xxx_3xxx_data.o
|
||||||
obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o
|
obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o
|
||||||
obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o
|
obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o
|
||||||
obj-$(CONFIG_ARCH_OMAP3) += clockdomain.o \
|
obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) \
|
||||||
clockdomain2xxx_3xxx.o \
|
clockdomain2xxx_3xxx.o \
|
||||||
clockdomains2xxx_3xxx_data.o \
|
clockdomains2xxx_3xxx_data.o \
|
||||||
clockdomains3xxx_data.o
|
clockdomains3xxx_data.o
|
||||||
obj-$(CONFIG_ARCH_OMAP4) += clockdomain.o \
|
obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) \
|
||||||
clockdomain44xx.o \
|
clockdomain44xx.o \
|
||||||
clockdomains44xx_data.o
|
clockdomains44xx_data.o
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,9 @@ static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm)
|
||||||
struct clkdm_dep *cd;
|
struct clkdm_dep *cd;
|
||||||
u32 mask = 0;
|
u32 mask = 0;
|
||||||
|
|
||||||
|
if (!clkdm->prcm_partition)
|
||||||
|
return 0;
|
||||||
|
|
||||||
for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) {
|
for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) {
|
||||||
if (!cd->clkdm)
|
if (!cd->clkdm)
|
||||||
continue; /* only happens if data is erroneous */
|
continue; /* only happens if data is erroneous */
|
||||||
|
@ -103,6 +106,9 @@ static int omap4_clkdm_clk_disable(struct clockdomain *clkdm)
|
||||||
{
|
{
|
||||||
bool hwsup = false;
|
bool hwsup = false;
|
||||||
|
|
||||||
|
if (!clkdm->prcm_partition)
|
||||||
|
return 0;
|
||||||
|
|
||||||
hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition,
|
hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition,
|
||||||
clkdm->cm_inst, clkdm->clkdm_offs);
|
clkdm->cm_inst, clkdm->clkdm_offs);
|
||||||
|
|
||||||
|
|
|
@ -89,13 +89,3 @@ struct clockdomain wkup_common_clkdm = {
|
||||||
.pwrdm = { .name = "wkup_pwrdm" },
|
.pwrdm = { .name = "wkup_pwrdm" },
|
||||||
.dep_bit = OMAP_EN_WKUP_SHIFT,
|
.dep_bit = OMAP_EN_WKUP_SHIFT,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clockdomain prm_common_clkdm = {
|
|
||||||
.name = "prm_clkdm",
|
|
||||||
.pwrdm = { .name = "wkup_pwrdm" },
|
|
||||||
};
|
|
||||||
|
|
||||||
struct clockdomain cm_common_clkdm = {
|
|
||||||
.name = "cm_clkdm",
|
|
||||||
.pwrdm = { .name = "core_pwrdm" },
|
|
||||||
};
|
|
||||||
|
|
|
@ -430,6 +430,8 @@ static struct clockdomain *clockdomains_omap44xx[] __initdata = {
|
||||||
&l4_wkup_44xx_clkdm,
|
&l4_wkup_44xx_clkdm,
|
||||||
&emu_sys_44xx_clkdm,
|
&emu_sys_44xx_clkdm,
|
||||||
&l3_dma_44xx_clkdm,
|
&l3_dma_44xx_clkdm,
|
||||||
|
&prm_common_clkdm,
|
||||||
|
&cm_common_clkdm,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
24
arch/arm/mach-omap2/clockdomains_common_data.c
Normal file
24
arch/arm/mach-omap2/clockdomains_common_data.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* OMAP2+-common clockdomain data
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008-2012 Texas Instruments, Inc.
|
||||||
|
* Copyright (C) 2008-2010 Nokia Corporation
|
||||||
|
*
|
||||||
|
* Paul Walmsley, Jouni Högander
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/io.h>
|
||||||
|
|
||||||
|
#include "clockdomain.h"
|
||||||
|
|
||||||
|
/* These are implicit clockdomains - they are never defined as such in TRM */
|
||||||
|
struct clockdomain prm_common_clkdm = {
|
||||||
|
.name = "prm_clkdm",
|
||||||
|
.pwrdm = { .name = "wkup_pwrdm" },
|
||||||
|
};
|
||||||
|
|
||||||
|
struct clockdomain cm_common_clkdm = {
|
||||||
|
.name = "cm_clkdm",
|
||||||
|
.pwrdm = { .name = "core_pwrdm" },
|
||||||
|
};
|
Loading…
Reference in a new issue