* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX @ 2014-06-09 20:59 Dave Gerlach 2014-06-13 19:40 ` Paul Walmsley 2014-06-16 4:43 ` Paul Walmsley 0 siblings, 2 replies; 6+ messages in thread From: Dave Gerlach @ 2014-06-09 20:59 UTC (permalink / raw) To: linux-arm-kernel am43xx reset register layout is more similar to am33xx than omap4 so use the am33xx functions for hwmod hardreset soc_ops rather than the currently used omap4 functions. Without this, assert_hardreset and deassert_hardreset will not work on am43xx. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> --- arch/arm/mach-omap2/omap_hwmod.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 66c60fe..1c0885b 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -4251,9 +4251,9 @@ void __init omap_hwmod_init(void) soc_ops.enable_module = _omap4_enable_module; soc_ops.disable_module = _omap4_disable_module; soc_ops.wait_target_ready = _omap4_wait_target_ready; - soc_ops.assert_hardreset = _omap4_assert_hardreset; - soc_ops.deassert_hardreset = _omap4_deassert_hardreset; - soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; + soc_ops.assert_hardreset = _am33xx_assert_hardreset; + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; soc_ops.init_clkdm = _init_clkdm; } else if (soc_is_am33xx()) { soc_ops.enable_module = _am33xx_enable_module; -- 1.9.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX 2014-06-09 20:59 [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX Dave Gerlach @ 2014-06-13 19:40 ` Paul Walmsley 2014-06-16 1:56 ` Paul Walmsley 2014-06-16 4:43 ` Paul Walmsley 1 sibling, 1 reply; 6+ messages in thread From: Paul Walmsley @ 2014-06-13 19:40 UTC (permalink / raw) To: linux-arm-kernel On Mon, 9 Jun 2014, Dave Gerlach wrote: > am43xx reset register layout is more similar to am33xx than omap4 so > use the am33xx functions for hwmod hardreset soc_ops rather than the > currently used omap4 functions. Without this, assert_hardreset and > deassert_hardreset will not work on am43xx. > > Signed-off-by: Dave Gerlach <d-gerlach@ti.com> Makes sense to me; queued for v3.16-rc. - Paul ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX 2014-06-13 19:40 ` Paul Walmsley @ 2014-06-16 1:56 ` Paul Walmsley 2014-06-16 20:11 ` Dave Gerlach 0 siblings, 1 reply; 6+ messages in thread From: Paul Walmsley @ 2014-06-16 1:56 UTC (permalink / raw) To: linux-arm-kernel On Fri, 13 Jun 2014, Paul Walmsley wrote: > On Mon, 9 Jun 2014, Dave Gerlach wrote: > > > am43xx reset register layout is more similar to am33xx than omap4 so > > use the am33xx functions for hwmod hardreset soc_ops rather than the > > currently used omap4 functions. Without this, assert_hardreset and > > deassert_hardreset will not work on am43xx. > > > > Signed-off-by: Dave Gerlach <d-gerlach@ti.com> > > Makes sense to me; queued for v3.16-rc. The patch failed a build test for an AM43xx-only config: ---- arch/arm/mach-omap2/built-in.o: In function `_am33xx_is_hardreset_asserted': arch/arm/mach-omap2/omap_hwmod.c:3223: undefined reference to `am33xx_prm_is_hardreset_asserted' arch/arm/mach-omap2/built-in.o: In function `_am33xx_deassert_hardreset': arch/arm/mach-omap2/omap_hwmod.c:3201: undefined reference to `am33xx_prm_deassert_hardreset' arch/arm/mach-omap2/built-in.o: In function `_am33xx_assert_hardreset': arch/arm/mach-omap2/omap_hwmod.c:3181: undefined reference to `am33xx_prm_assert_hardreset' make: *** [vmlinux] Error 1 ---- I went ahead and modified the patch to build (updated patch below), but it would be helpful if you could also build-test your AM43xx-specific patches with an AM43xx-specific .config (along with the usual omap2plus_defconfig). - Paul From: Dave Gerlach <d-gerlach@ti.com> Date: Sun, 15 Jun 2014 16:02:17 -0600 Subject: [PATCH 1/2] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX am43xx reset register layout is more similar to am33xx than omap4 so use the am33xx functions for hwmod hardreset soc_ops rather than the currently used omap4 functions. Without this, assert_hardreset and deassert_hardreset will not work on am43xx. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> [paul at pwsan.com: fixed build errors for an AM43xx-only Kconfig] Signed-off-by: Paul Walmsley <paul@pwsan.com> --- arch/arm/mach-omap2/Makefile | 6 ++++-- arch/arm/mach-omap2/cm33xx.h | 2 +- arch/arm/mach-omap2/omap_hwmod.c | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 8421f38cf445..7a695362aee7 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -110,14 +110,16 @@ obj-y += prm_common.o cm_common.o obj-$(CONFIG_ARCH_OMAP2) += prm2xxx_3xxx.o prm2xxx.o cm2xxx.o obj-$(CONFIG_ARCH_OMAP3) += prm2xxx_3xxx.o prm3xxx.o cm3xxx.o obj-$(CONFIG_ARCH_OMAP3) += vc3xxx_data.o vp3xxx_data.o -obj-$(CONFIG_SOC_AM33XX) += prm33xx.o cm33xx.o omap-prcm-4-5-common = cminst44xx.o cm44xx.o prm44xx.o \ prcm_mpu44xx.o prminst44xx.o \ vc44xx_data.o vp44xx_data.o obj-$(CONFIG_ARCH_OMAP4) += $(omap-prcm-4-5-common) obj-$(CONFIG_SOC_OMAP5) += $(omap-prcm-4-5-common) obj-$(CONFIG_SOC_DRA7XX) += $(omap-prcm-4-5-common) -obj-$(CONFIG_SOC_AM43XX) += $(omap-prcm-4-5-common) +am33xx-43xx-prcm-common += prm33xx.o +obj-$(CONFIG_SOC_AM33XX) += $(am33xx-43xx-prcm-common) cm33xx.o +obj-$(CONFIG_SOC_AM43XX) += $(omap-prcm-4-5-common) \ + $(am33xx-43xx-prcm-common) # OMAP voltage domains voltagedomain-common := voltage.o vc.o vp.o diff --git a/arch/arm/mach-omap2/cm33xx.h b/arch/arm/mach-omap2/cm33xx.h index 15a778ce7707..bd2441790779 100644 --- a/arch/arm/mach-omap2/cm33xx.h +++ b/arch/arm/mach-omap2/cm33xx.h @@ -380,7 +380,7 @@ void am33xx_cm_clkdm_disable_hwsup(u16 inst, u16 cdoffs); void am33xx_cm_clkdm_force_sleep(u16 inst, u16 cdoffs); void am33xx_cm_clkdm_force_wakeup(u16 inst, u16 cdoffs); -#ifdef CONFIG_SOC_AM33XX +#if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX) extern int am33xx_cm_wait_module_idle(u16 inst, s16 cdoffs, u16 clkctrl_offs); extern void am33xx_cm_module_enable(u8 mode, u16 inst, s16 cdoffs, diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index f7bb435bb543..6c074f37cdd2 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -4251,9 +4251,9 @@ void __init omap_hwmod_init(void) soc_ops.enable_module = _omap4_enable_module; soc_ops.disable_module = _omap4_disable_module; soc_ops.wait_target_ready = _omap4_wait_target_ready; - soc_ops.assert_hardreset = _omap4_assert_hardreset; - soc_ops.deassert_hardreset = _omap4_deassert_hardreset; - soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; + soc_ops.assert_hardreset = _am33xx_assert_hardreset; + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; soc_ops.init_clkdm = _init_clkdm; } else if (soc_is_am33xx()) { soc_ops.enable_module = _am33xx_enable_module; -- 2.0.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX 2014-06-16 1:56 ` Paul Walmsley @ 2014-06-16 20:11 ` Dave Gerlach 0 siblings, 0 replies; 6+ messages in thread From: Dave Gerlach @ 2014-06-16 20:11 UTC (permalink / raw) To: linux-arm-kernel On 06/15/2014 08:56 PM, Paul Walmsley wrote: > On Fri, 13 Jun 2014, Paul Walmsley wrote: > >> On Mon, 9 Jun 2014, Dave Gerlach wrote: >> >>> am43xx reset register layout is more similar to am33xx than omap4 so >>> use the am33xx functions for hwmod hardreset soc_ops rather than the >>> currently used omap4 functions. Without this, assert_hardreset and >>> deassert_hardreset will not work on am43xx. >>> >>> Signed-off-by: Dave Gerlach <d-gerlach@ti.com> >> >> Makes sense to me; queued for v3.16-rc. > > The patch failed a build test for an AM43xx-only config: > > ---- > arch/arm/mach-omap2/built-in.o: In function `_am33xx_is_hardreset_asserted': > arch/arm/mach-omap2/omap_hwmod.c:3223: undefined reference to `am33xx_prm_is_hardreset_asserted' > arch/arm/mach-omap2/built-in.o: In function `_am33xx_deassert_hardreset': > arch/arm/mach-omap2/omap_hwmod.c:3201: undefined reference to `am33xx_prm_deassert_hardreset' > arch/arm/mach-omap2/built-in.o: In function `_am33xx_assert_hardreset': > arch/arm/mach-omap2/omap_hwmod.c:3181: > undefined reference to `am33xx_prm_assert_hardreset' > make: *** [vmlinux] Error 1 > ---- > > I went ahead and modified the patch to build (updated patch below), but it > would be helpful if you could also build-test your AM43xx-specific patches > with an AM43xx-specific .config (along with the usual > omap2plus_defconfig). > Sorry about that, I definitely should have tried that, thanks for the fixup! Regards, Dave > > - Paul > > From: Dave Gerlach <d-gerlach@ti.com> > Date: Sun, 15 Jun 2014 16:02:17 -0600 > Subject: [PATCH 1/2] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX > > am43xx reset register layout is more similar to am33xx than omap4 so > use the am33xx functions for hwmod hardreset soc_ops rather than the > currently used omap4 functions. Without this, assert_hardreset and > deassert_hardreset will not work on am43xx. > > Signed-off-by: Dave Gerlach <d-gerlach@ti.com> > [paul at pwsan.com: fixed build errors for an AM43xx-only Kconfig] > Signed-off-by: Paul Walmsley <paul@pwsan.com> > --- > arch/arm/mach-omap2/Makefile | 6 ++++-- > arch/arm/mach-omap2/cm33xx.h | 2 +- > arch/arm/mach-omap2/omap_hwmod.c | 6 +++--- > 3 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile > index 8421f38cf445..7a695362aee7 100644 > --- a/arch/arm/mach-omap2/Makefile > +++ b/arch/arm/mach-omap2/Makefile > @@ -110,14 +110,16 @@ obj-y += prm_common.o cm_common.o > obj-$(CONFIG_ARCH_OMAP2) += prm2xxx_3xxx.o prm2xxx.o cm2xxx.o > obj-$(CONFIG_ARCH_OMAP3) += prm2xxx_3xxx.o prm3xxx.o cm3xxx.o > obj-$(CONFIG_ARCH_OMAP3) += vc3xxx_data.o vp3xxx_data.o > -obj-$(CONFIG_SOC_AM33XX) += prm33xx.o cm33xx.o > omap-prcm-4-5-common = cminst44xx.o cm44xx.o prm44xx.o \ > prcm_mpu44xx.o prminst44xx.o \ > vc44xx_data.o vp44xx_data.o > obj-$(CONFIG_ARCH_OMAP4) += $(omap-prcm-4-5-common) > obj-$(CONFIG_SOC_OMAP5) += $(omap-prcm-4-5-common) > obj-$(CONFIG_SOC_DRA7XX) += $(omap-prcm-4-5-common) > -obj-$(CONFIG_SOC_AM43XX) += $(omap-prcm-4-5-common) > +am33xx-43xx-prcm-common += prm33xx.o > +obj-$(CONFIG_SOC_AM33XX) += $(am33xx-43xx-prcm-common) cm33xx.o > +obj-$(CONFIG_SOC_AM43XX) += $(omap-prcm-4-5-common) \ > + $(am33xx-43xx-prcm-common) > > # OMAP voltage domains > voltagedomain-common := voltage.o vc.o vp.o > diff --git a/arch/arm/mach-omap2/cm33xx.h b/arch/arm/mach-omap2/cm33xx.h > index 15a778ce7707..bd2441790779 100644 > --- a/arch/arm/mach-omap2/cm33xx.h > +++ b/arch/arm/mach-omap2/cm33xx.h > @@ -380,7 +380,7 @@ void am33xx_cm_clkdm_disable_hwsup(u16 inst, u16 cdoffs); > void am33xx_cm_clkdm_force_sleep(u16 inst, u16 cdoffs); > void am33xx_cm_clkdm_force_wakeup(u16 inst, u16 cdoffs); > > -#ifdef CONFIG_SOC_AM33XX > +#if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX) > extern int am33xx_cm_wait_module_idle(u16 inst, s16 cdoffs, > u16 clkctrl_offs); > extern void am33xx_cm_module_enable(u8 mode, u16 inst, s16 cdoffs, > diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c > index f7bb435bb543..6c074f37cdd2 100644 > --- a/arch/arm/mach-omap2/omap_hwmod.c > +++ b/arch/arm/mach-omap2/omap_hwmod.c > @@ -4251,9 +4251,9 @@ void __init omap_hwmod_init(void) > soc_ops.enable_module = _omap4_enable_module; > soc_ops.disable_module = _omap4_disable_module; > soc_ops.wait_target_ready = _omap4_wait_target_ready; > - soc_ops.assert_hardreset = _omap4_assert_hardreset; > - soc_ops.deassert_hardreset = _omap4_deassert_hardreset; > - soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; > + soc_ops.assert_hardreset = _am33xx_assert_hardreset; > + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; > + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; > soc_ops.init_clkdm = _init_clkdm; > } else if (soc_is_am33xx()) { > soc_ops.enable_module = _am33xx_enable_module; > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX 2014-06-09 20:59 [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX Dave Gerlach 2014-06-13 19:40 ` Paul Walmsley @ 2014-06-16 4:43 ` Paul Walmsley 2014-06-16 20:19 ` Dave Gerlach 1 sibling, 1 reply; 6+ messages in thread From: Paul Walmsley @ 2014-06-16 4:43 UTC (permalink / raw) To: linux-arm-kernel Dave, On Mon, 9 Jun 2014, Dave Gerlach wrote: > am43xx reset register layout is more similar to am33xx than omap4 so > use the am33xx functions for hwmod hardreset soc_ops rather than the > currently used omap4 functions. Without this, assert_hardreset and > deassert_hardreset will not work on am43xx. > > Signed-off-by: Dave Gerlach <d-gerlach@ti.com> > --- > arch/arm/mach-omap2/omap_hwmod.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c > index 66c60fe..1c0885b 100644 > --- a/arch/arm/mach-omap2/omap_hwmod.c > +++ b/arch/arm/mach-omap2/omap_hwmod.c > @@ -4251,9 +4251,9 @@ void __init omap_hwmod_init(void) > soc_ops.enable_module = _omap4_enable_module; > soc_ops.disable_module = _omap4_disable_module; > soc_ops.wait_target_ready = _omap4_wait_target_ready; > - soc_ops.assert_hardreset = _omap4_assert_hardreset; > - soc_ops.deassert_hardreset = _omap4_deassert_hardreset; > - soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; > + soc_ops.assert_hardreset = _am33xx_assert_hardreset; > + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; > + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; > soc_ops.init_clkdm = _init_clkdm; > } else if (soc_is_am33xx()) { > soc_ops.enable_module = _am33xx_enable_module; Should AM43XX be using the _am33xx_{enable,disable}_module and wait_target_ready functions? - Paul ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX 2014-06-16 4:43 ` Paul Walmsley @ 2014-06-16 20:19 ` Dave Gerlach 0 siblings, 0 replies; 6+ messages in thread From: Dave Gerlach @ 2014-06-16 20:19 UTC (permalink / raw) To: linux-arm-kernel Paul, On 06/15/2014 11:43 PM, Paul Walmsley wrote: > Dave, > > On Mon, 9 Jun 2014, Dave Gerlach wrote: > >> am43xx reset register layout is more similar to am33xx than omap4 so >> use the am33xx functions for hwmod hardreset soc_ops rather than the >> currently used omap4 functions. Without this, assert_hardreset and >> deassert_hardreset will not work on am43xx. >> >> Signed-off-by: Dave Gerlach <d-gerlach@ti.com> >> --- >> arch/arm/mach-omap2/omap_hwmod.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c >> index 66c60fe..1c0885b 100644 >> --- a/arch/arm/mach-omap2/omap_hwmod.c >> +++ b/arch/arm/mach-omap2/omap_hwmod.c >> @@ -4251,9 +4251,9 @@ void __init omap_hwmod_init(void) >> soc_ops.enable_module = _omap4_enable_module; >> soc_ops.disable_module = _omap4_disable_module; >> soc_ops.wait_target_ready = _omap4_wait_target_ready; >> - soc_ops.assert_hardreset = _omap4_assert_hardreset; >> - soc_ops.deassert_hardreset = _omap4_deassert_hardreset; >> - soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; >> + soc_ops.assert_hardreset = _am33xx_assert_hardreset; >> + soc_ops.deassert_hardreset = _am33xx_deassert_hardreset; >> + soc_ops.is_hardreset_asserted = _am33xx_is_hardreset_asserted; >> soc_ops.init_clkdm = _init_clkdm; >> } else if (soc_is_am33xx()) { >> soc_ops.enable_module = _am33xx_enable_module; > > Should AM43XX be using the _am33xx_{enable,disable}_module and > wait_target_ready functions? AM43xx has been using the _omap4_{enable,disable}_module functions without issue. Nothing is currently using the hardreset ops for am43xx which is why it went unnoticed but I saw the issue when I tried to use them for the wkup_m3 hwmod and they failed during internal development. With that said, am43xx clockdomains have prcm_partition defined as part of their data which is only used by the _omap4_{enable,disable}_module functions and not the _am33xx functions so as the current configuration stands the _omap4 variants are the right choice. Regards, Dave > > > - Paul > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-06-16 20:19 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-09 20:59 [PATCH] ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX Dave Gerlach 2014-06-13 19:40 ` Paul Walmsley 2014-06-16 1:56 ` Paul Walmsley 2014-06-16 20:11 ` Dave Gerlach 2014-06-16 4:43 ` Paul Walmsley 2014-06-16 20:19 ` Dave Gerlach
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).