Commit 868c157d authored by Paul Walmsley's avatar Paul Walmsley

ARM: OMAP2+: hwmod: remove prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain

Remove prm_clkdm and cm_clkdm and allow hwmods to have no clockdomain.
Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
parent 485802a6
...@@ -116,7 +116,6 @@ obj-$(CONFIG_ARCH_OMAP4) += powerdomains44xx_data.o ...@@ -116,7 +116,6 @@ obj-$(CONFIG_ARCH_OMAP4) += powerdomains44xx_data.o
# PRCM clockdomain control # PRCM clockdomain control
clockdomain-common += clockdomain.o clockdomain-common += clockdomain.o
clockdomain-common += clockdomains_common_data.o
obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common)
obj-$(CONFIG_ARCH_OMAP2) += clockdomain2xxx_3xxx.o obj-$(CONFIG_ARCH_OMAP2) += clockdomain2xxx_3xxx.o
obj-$(CONFIG_ARCH_OMAP2) += clockdomains2xxx_3xxx_data.o obj-$(CONFIG_ARCH_OMAP2) += clockdomains2xxx_3xxx_data.o
......
...@@ -206,7 +206,5 @@ extern struct clkdm_ops omap4_clkdm_operations; ...@@ -206,7 +206,5 @@ extern struct clkdm_ops omap4_clkdm_operations;
extern struct clkdm_dep gfx_24xx_wkdeps[]; extern struct clkdm_dep gfx_24xx_wkdeps[];
extern struct clkdm_dep dsp_24xx_wkdeps[]; extern struct clkdm_dep dsp_24xx_wkdeps[];
extern struct clockdomain wkup_common_clkdm; extern struct clockdomain wkup_common_clkdm;
extern struct clockdomain prm_common_clkdm;
extern struct clockdomain cm_common_clkdm;
#endif #endif
...@@ -131,8 +131,6 @@ static struct clockdomain dss_2420_clkdm = { ...@@ -131,8 +131,6 @@ static struct clockdomain dss_2420_clkdm = {
static struct clockdomain *clockdomains_omap242x[] __initdata = { static struct clockdomain *clockdomains_omap242x[] __initdata = {
&wkup_common_clkdm, &wkup_common_clkdm,
&cm_common_clkdm,
&prm_common_clkdm,
&mpu_2420_clkdm, &mpu_2420_clkdm,
&iva1_2420_clkdm, &iva1_2420_clkdm,
&dsp_2420_clkdm, &dsp_2420_clkdm,
......
...@@ -157,8 +157,6 @@ static struct clockdomain dss_2430_clkdm = { ...@@ -157,8 +157,6 @@ static struct clockdomain dss_2430_clkdm = {
static struct clockdomain *clockdomains_omap243x[] __initdata = { static struct clockdomain *clockdomains_omap243x[] __initdata = {
&wkup_common_clkdm, &wkup_common_clkdm,
&cm_common_clkdm,
&prm_common_clkdm,
&mpu_2430_clkdm, &mpu_2430_clkdm,
&mdm_clkdm, &mdm_clkdm,
&dsp_2430_clkdm, &dsp_2430_clkdm,
......
...@@ -347,8 +347,6 @@ static struct clkdm_autodep clkdm_autodeps[] = { ...@@ -347,8 +347,6 @@ static struct clkdm_autodep clkdm_autodeps[] = {
static struct clockdomain *clockdomains_omap3430_common[] __initdata = { static struct clockdomain *clockdomains_omap3430_common[] __initdata = {
&wkup_common_clkdm, &wkup_common_clkdm,
&cm_common_clkdm,
&prm_common_clkdm,
&mpu_3xxx_clkdm, &mpu_3xxx_clkdm,
&neon_clkdm, &neon_clkdm,
&iva2_clkdm, &iva2_clkdm,
......
...@@ -430,8 +430,6 @@ static struct clockdomain *clockdomains_omap44xx[] __initdata = { ...@@ -430,8 +430,6 @@ 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
}; };
......
/*
* 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" },
};
...@@ -810,7 +810,7 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh) ...@@ -810,7 +810,7 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)
if (!cpu_is_omap44xx()) if (!cpu_is_omap44xx())
return 0; return 0;
if (!oh) if (!oh || !oh->clkdm)
return -EINVAL; return -EINVAL;
if (oh->_int_flags & _HWMOD_NO_MPU_PORT) if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
...@@ -1285,23 +1285,22 @@ static struct omap_hwmod *_lookup(const char *name) ...@@ -1285,23 +1285,22 @@ static struct omap_hwmod *_lookup(const char *name)
return oh; return oh;
} }
/** /**
* _init_clkdm - look up a clockdomain name, store pointer in omap_hwmod * _init_clkdm - look up a clockdomain name, store pointer in omap_hwmod
* @oh: struct omap_hwmod * * @oh: struct omap_hwmod *
* *
* Convert a clockdomain name stored in a struct omap_hwmod into a * Convert a clockdomain name stored in a struct omap_hwmod into a
* clockdomain pointer, and save it into the struct omap_hwmod. * clockdomain pointer, and save it into the struct omap_hwmod.
* return -EINVAL if clkdm_name does not exist or if the lookup failed. * Return -EINVAL if the clkdm_name lookup failed.
*/ */
static int _init_clkdm(struct omap_hwmod *oh) static int _init_clkdm(struct omap_hwmod *oh)
{ {
if (cpu_is_omap24xx() || cpu_is_omap34xx()) if (cpu_is_omap24xx() || cpu_is_omap34xx())
return 0; return 0;
if (!oh->clkdm_name) { if (!oh->clkdm_name)
pr_warning("omap_hwmod: %s: no clkdm_name\n", oh->name); return 0;
return -EINVAL;
}
oh->clkdm = clkdm_lookup(oh->clkdm_name); oh->clkdm = clkdm_lookup(oh->clkdm_name);
if (!oh->clkdm) { if (!oh->clkdm) {
...@@ -1447,16 +1446,20 @@ static int _assert_hardreset(struct omap_hwmod *oh, const char *name) ...@@ -1447,16 +1446,20 @@ static int _assert_hardreset(struct omap_hwmod *oh, const char *name)
if (IS_ERR_VALUE(ret)) if (IS_ERR_VALUE(ret))
return ret; return ret;
if (cpu_is_omap24xx() || cpu_is_omap34xx()) if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
return omap2_prm_assert_hardreset(oh->prcm.omap2.module_offs, return omap2_prm_assert_hardreset(oh->prcm.omap2.module_offs,
ohri.rst_shift); ohri.rst_shift);
else if (cpu_is_omap44xx()) } else if (cpu_is_omap44xx()) {
if (!oh->clkdm)
return -EINVAL;
return omap4_prminst_assert_hardreset(ohri.rst_shift, return omap4_prminst_assert_hardreset(ohri.rst_shift,
oh->clkdm->pwrdm.ptr->prcm_partition, oh->clkdm->pwrdm.ptr->prcm_partition,
oh->clkdm->pwrdm.ptr->prcm_offs, oh->clkdm->pwrdm.ptr->prcm_offs,
oh->prcm.omap4.rstctrl_offs); oh->prcm.omap4.rstctrl_offs);
else } else {
return -EINVAL; return -EINVAL;
}
} }
/** /**
...@@ -1489,6 +1492,10 @@ static int _deassert_hardreset(struct omap_hwmod *oh, const char *name) ...@@ -1489,6 +1492,10 @@ static int _deassert_hardreset(struct omap_hwmod *oh, const char *name)
if (ohri.st_shift) if (ohri.st_shift)
pr_err("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n", pr_err("omap_hwmod: %s: %s: hwmod data error: OMAP4 does not support st_shift\n",
oh->name, name); oh->name, name);
if (!oh->clkdm)
return -EINVAL;
ret = omap4_prminst_deassert_hardreset(ohri.rst_shift, ret = omap4_prminst_deassert_hardreset(ohri.rst_shift,
oh->clkdm->pwrdm.ptr->prcm_partition, oh->clkdm->pwrdm.ptr->prcm_partition,
oh->clkdm->pwrdm.ptr->prcm_offs, oh->clkdm->pwrdm.ptr->prcm_offs,
...@@ -1527,6 +1534,9 @@ static int _read_hardreset(struct omap_hwmod *oh, const char *name) ...@@ -1527,6 +1534,9 @@ static int _read_hardreset(struct omap_hwmod *oh, const char *name)
return omap2_prm_is_hardreset_asserted(oh->prcm.omap2.module_offs, return omap2_prm_is_hardreset_asserted(oh->prcm.omap2.module_offs,
ohri.st_shift); ohri.st_shift);
} else if (cpu_is_omap44xx()) { } else if (cpu_is_omap44xx()) {
if (!oh->clkdm)
return -EINVAL;
return omap4_prminst_is_hardreset_asserted(ohri.rst_shift, return omap4_prminst_is_hardreset_asserted(ohri.rst_shift,
oh->clkdm->pwrdm.ptr->prcm_partition, oh->clkdm->pwrdm.ptr->prcm_partition,
oh->clkdm->pwrdm.ptr->prcm_offs, oh->clkdm->pwrdm.ptr->prcm_offs,
......
...@@ -2540,14 +2540,12 @@ static struct omap_hwmod omap44xx_prcm_mpu_hwmod = { ...@@ -2540,14 +2540,12 @@ static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
static struct omap_hwmod omap44xx_cm_core_aon_hwmod = { static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
.name = "cm_core_aon", .name = "cm_core_aon",
.class = &omap44xx_prcm_hwmod_class, .class = &omap44xx_prcm_hwmod_class,
.clkdm_name = "cm_clkdm",
}; };
/* cm_core */ /* cm_core */
static struct omap_hwmod omap44xx_cm_core_hwmod = { static struct omap_hwmod omap44xx_cm_core_hwmod = {
.name = "cm_core", .name = "cm_core",
.class = &omap44xx_prcm_hwmod_class, .class = &omap44xx_prcm_hwmod_class,
.clkdm_name = "cm_clkdm",
}; };
/* prm */ /* prm */
...@@ -2564,7 +2562,6 @@ static struct omap_hwmod_rst_info omap44xx_prm_resets[] = { ...@@ -2564,7 +2562,6 @@ static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
static struct omap_hwmod omap44xx_prm_hwmod = { static struct omap_hwmod omap44xx_prm_hwmod = {
.name = "prm", .name = "prm",
.class = &omap44xx_prcm_hwmod_class, .class = &omap44xx_prcm_hwmod_class,
.clkdm_name = "prm_clkdm",
.mpu_irqs = omap44xx_prm_irqs, .mpu_irqs = omap44xx_prm_irqs,
.rst_lines = omap44xx_prm_resets, .rst_lines = omap44xx_prm_resets,
.rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets), .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment