Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ba5a69e authored by Paul Walmsley's avatar Paul Walmsley
Browse files

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: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Rajendra Nayak <rnayak@ti.com>
parent 3af35fbc
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -118,16 +118,18 @@ obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \
					   powerdomains44xx_data.o

# 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 \
					   clockdomains2xxx_3xxx_data.o
obj-$(CONFIG_SOC_OMAP2420)		+= clockdomains2420_data.o
obj-$(CONFIG_SOC_OMAP2430)		+= clockdomains2430_data.o
obj-$(CONFIG_ARCH_OMAP3)		+= clockdomain.o \
obj-$(CONFIG_ARCH_OMAP3)		+= $(clockdomain-common) \
					   clockdomain2xxx_3xxx.o \
					   clockdomains2xxx_3xxx_data.o \
					   clockdomains3xxx_data.o
obj-$(CONFIG_ARCH_OMAP4)		+= clockdomain.o \
obj-$(CONFIG_ARCH_OMAP4)		+= $(clockdomain-common) \
					   clockdomain44xx.o \
					   clockdomains44xx_data.o

+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ static int omap4_clkdm_clear_all_wkup_sleep_deps(struct clockdomain *clkdm)
	struct clkdm_dep *cd;
	u32 mask = 0;

	if (!clkdm->prcm_partition)
		return 0;

	for (cd = clkdm->wkdep_srcs; cd && cd->clkdm_name; cd++) {
		if (!cd->clkdm)
			continue; /* only happens if data is erroneous */
@@ -103,6 +106,9 @@ static int omap4_clkdm_clk_disable(struct clockdomain *clkdm)
{
	bool hwsup = false;

	if (!clkdm->prcm_partition)
		return 0;

	hwsup = omap4_cminst_is_clkdm_in_hwsup(clkdm->prcm_partition,
					clkdm->cm_inst, clkdm->clkdm_offs);

+0 −10
Original line number Diff line number Diff line
@@ -89,13 +89,3 @@ struct clockdomain wkup_common_clkdm = {
	.pwrdm		= { .name = "wkup_pwrdm" },
	.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" },
};
+2 −0
Original line number Diff line number Diff line
@@ -430,6 +430,8 @@ static struct clockdomain *clockdomains_omap44xx[] __initdata = {
	&l4_wkup_44xx_clkdm,
	&emu_sys_44xx_clkdm,
	&l3_dma_44xx_clkdm,
	&prm_common_clkdm,
	&cm_common_clkdm,
	NULL
};

+24 −0
Original line number Diff line number Diff line
/*
 * 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" },
};