[PATCH 2/2] ARM: Exynos4: use s5p-timer for UniversalC210 board

Kukjin Kim kgene.kim at samsung.com
Thu Sep 15 03:38:30 EDT 2011


Kyungmin Park wrote:
> 
> On Thu, Sep 15, 2011 at 3:03 PM, Kukjin Kim <kgene.kim at samsung.com> wrote:
> > Kukjin Kim wrote:
> >>
> >> Kyungmin Park wrote:
> >> >
> >> > Hi,
> >> >
> >> > It's required for boot universal c210 w/ EVT0 chip.
> >> > Can you include it at 3.1 fixed branch?
> >> >
> >> Sure, will apply into samsung-fixes for 3.1.
> >
> > Unfortunately, it happens boot failure with this patch on other
EXYNOS4210
> > boards and it is due to HAVE_SCHED_CLOCK.
> >
> >> > > +       select HAVE_SCHED_CLOCK
> >
> > I think, we need to sort out the method...
> As sched_clock_postinit is called at generic time code by
> HAVE_SCHED_CLOCK. and there's no sched_clock_update_fn() is defined.
> As a work-around, you can test it.
> 
> static void sched_clock_poll(unsigned long wrap_ticks)
> {
>         mod_timer(&sched_clock_timer, round_jiffies(jiffies +
wrap_ticks));
>         if (sched_clock_update_fn)
>                 sched_clock_update_fn();
> }
> 

Following is better than above but need Russell's review

diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c
index 9a46370..b1a1283 100644
--- a/arch/arm/kernel/sched_clock.c
+++ b/arch/arm/kernel/sched_clock.c
@@ -70,5 +70,6 @@ void __init init_sched_clock(struct clock_data *cd, void
(*update)(void),

 void __init sched_clock_postinit(void)
 {
-       sched_clock_poll(sched_clock_timer.data);
+       if (sched_clock_update_fn)
+               sched_clock_poll(sched_clock_timer.data);
 }


> To solve the problem correctly. you can add init_sched_clock at
> "arch/arm/mach-exynos4/mct.c" properly
> 
> Please test the work-around and share the result. I'll try to find the
> proper place to add init_sched_clock at mct.c
> 
> Thank you,
> Kyungmin Park
> 
> 
> >
> > Thanks.
> >
> > Best regards,
> > Kgene.
> > --
> > Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
> > SW Solution Development Team, Samsung Electronics Co., Ltd.
> >
> >>
> >> > Thank you,
> >> > Kyungmin Park
> >> >
> >> > On Tue, Jul 26, 2011 at 2:50 PM, Marek Szyprowski
> >> > <m.szyprowski at samsung.com> wrote:
> >> > > Commit 069d4e743 removed support for local timers and forced to use
> > MCT
> >> as
> >> > > event source. However MCT is not operating properly on early
revision
> > (EVT0)
> >> > > of Exynos4 SoCs. All UniversalC210 boards are based on Exynos4
EVT0,
> > so
> >> > that
> >> > > commit broke support for it. This patch provides a workaround that
> > enables
> >> > > UniversalC210 boards to boot again. s5p-timer is used as an event
> > source.
> >> > >
> >> > > Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
> >> > > Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> >> > > ---
> >> > >  arch/arm/mach-exynos4/Kconfig               |    3 +++
> >> > >  arch/arm/mach-exynos4/mach-universal_c210.c |    4 +++-
> >> > >  2 files changed, 6 insertions(+), 1 deletions(-)
> >> > >
> >> > > diff --git a/arch/arm/mach-exynos4/Kconfig
> > b/arch/arm/mach-exynos4/Kconfig
> >> > > index 9d62e13..2aad73f 100644
> >> > > --- a/arch/arm/mach-exynos4/Kconfig
> >> > > +++ b/arch/arm/mach-exynos4/Kconfig
> >> > > @@ -173,6 +173,9 @@ config MACH_ARMLEX4210
> >> > >  config MACH_UNIVERSAL_C210
> >> > >        bool "Mobile UNIVERSAL_C210 Board"
> >> > >        select CPU_EXYNOS4210
> >> > > +       select S5P_HRT
> >> > > +       select CLKSRC_MMIO
> >> > > +       select HAVE_SCHED_CLOCK
> >> > >        select S5P_GPIO_INT
> >> > >        select S5P_DEV_FIMC0
> >> > >        select S5P_DEV_FIMC1
> >> > > diff --git a/arch/arm/mach-exynos4/mach-universal_c210.c
> > b/arch/arm/mach-
> >> > exynos4/mach-universal_c210.c
> >> > > index 0e280d1..ca9e7b7 100644
> >> > > --- a/arch/arm/mach-exynos4/mach-universal_c210.c
> >> > > +++ b/arch/arm/mach-exynos4/mach-universal_c210.c
> >> > > @@ -34,6 +34,7 @@
> >> > >  #include <plat/mfc.h>
> >> > >  #include <plat/sdhci.h>
> >> > >  #include <plat/pd.h>
> >> > > +#include <plat/s5p-time.h>
> >> > >
> >> > >  #include <mach/map.h>
> >> > >
> >> > > @@ -730,6 +731,7 @@ static void __init universal_map_io(void)
> >> > >        s5p_init_io(NULL, 0, S5P_VA_CHIPID);
> >> > >        s3c24xx_init_clocks(24000000);
> >> > >        s3c24xx_init_uarts(universal_uartcfgs,
> > ARRAY_SIZE(universal_uartcfgs));
> >> > > +       s5p_set_timer_source(S5P_PWM2, S5P_PWM4);
> >> > >  }
> >> > >
> >> > >  static void __init universal_reserve(void)
> >> > > @@ -766,6 +768,6 @@ MACHINE_START(UNIVERSAL_C210,
> >> > "UNIVERSAL_C210")
> >> > >        .init_irq       = exynos4_init_irq,
> >> > >        .map_io         = universal_map_io,
> >> > >        .init_machine   = universal_machine_init,
> >> > > -       .timer          = &exynos4_timer,
> >> > > +       .timer          = &s5p_timer,
> >> > >        .reserve        = &universal_reserve,
> >> > >  MACHINE_END
> >> > > --
> >> > > 1.7.1.569.g6f426
> >> > >
> >> > > --


Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.




More information about the linux-arm-kernel mailing list