Loading arch/arm/mach-at91/at91rm9200_time.c +2 −5 Original line number Diff line number Diff line Loading @@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) static struct clock_event_device clkevt = { .name = "at91_tick", .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .shift = 32, .rating = 150, .set_next_event = clkevt32k_next_event, .set_mode = clkevt32k_mode, Loading Loading @@ -265,11 +264,9 @@ void __init at91rm9200_timer_init(void) at91_st_write(AT91_ST_RTMR, 1); /* Setup timer clockevent, with minimum of two ticks (important!!) */ clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt); clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1; clkevt.cpumask = cpumask_of(0); clockevents_register_device(&clkevt); clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK, 2, AT91_ST_ALMV); /* register clocksource */ clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); Loading drivers/clocksource/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ config ARM_ARCH_TIMER config ARM_ARCH_TIMER_EVTSTREAM bool "Support for ARM architected timer event stream generation" default y if ARM_ARCH_TIMER depends on ARM_ARCH_TIMER help This option enables support for event stream generation based on the ARM architected timer. It is used for waking up CPUs executing Loading drivers/clocksource/sh_mtu2.c +14 −2 Original line number Diff line number Diff line Loading @@ -313,8 +313,20 @@ static int sh_mtu2_setup(struct sh_mtu2_priv *p, struct platform_device *pdev) goto err1; } return sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev), ret = clk_prepare(p->clk); if (ret < 0) goto err2; ret = sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev), cfg->clockevent_rating); if (ret < 0) goto err3; return 0; err3: clk_unprepare(p->clk); err2: clk_put(p->clk); err1: iounmap(p->mapbase); err0: Loading drivers/clocksource/sh_tmu.c +17 −3 Original line number Diff line number Diff line Loading @@ -472,12 +472,26 @@ static int sh_tmu_setup(struct sh_tmu_priv *p, struct platform_device *pdev) ret = PTR_ERR(p->clk); goto err1; } ret = clk_prepare(p->clk); if (ret < 0) goto err2; p->cs_enabled = false; p->enable_count = 0; return sh_tmu_register(p, (char *)dev_name(&p->pdev->dev), ret = sh_tmu_register(p, (char *)dev_name(&p->pdev->dev), cfg->clockevent_rating, cfg->clocksource_rating); if (ret < 0) goto err3; return 0; err3: clk_unprepare(p->clk); err2: clk_put(p->clk); err1: iounmap(p->mapbase); err0: Loading Loading
arch/arm/mach-at91/at91rm9200_time.c +2 −5 Original line number Diff line number Diff line Loading @@ -174,7 +174,6 @@ clkevt32k_next_event(unsigned long delta, struct clock_event_device *dev) static struct clock_event_device clkevt = { .name = "at91_tick", .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .shift = 32, .rating = 150, .set_next_event = clkevt32k_next_event, .set_mode = clkevt32k_mode, Loading Loading @@ -265,11 +264,9 @@ void __init at91rm9200_timer_init(void) at91_st_write(AT91_ST_RTMR, 1); /* Setup timer clockevent, with minimum of two ticks (important!!) */ clkevt.mult = div_sc(AT91_SLOW_CLOCK, NSEC_PER_SEC, clkevt.shift); clkevt.max_delta_ns = clockevent_delta2ns(AT91_ST_ALMV, &clkevt); clkevt.min_delta_ns = clockevent_delta2ns(2, &clkevt) + 1; clkevt.cpumask = cpumask_of(0); clockevents_register_device(&clkevt); clockevents_config_and_register(&clkevt, AT91_SLOW_CLOCK, 2, AT91_ST_ALMV); /* register clocksource */ clocksource_register_hz(&clk32k, AT91_SLOW_CLOCK); Loading
drivers/clocksource/Kconfig +1 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ config ARM_ARCH_TIMER config ARM_ARCH_TIMER_EVTSTREAM bool "Support for ARM architected timer event stream generation" default y if ARM_ARCH_TIMER depends on ARM_ARCH_TIMER help This option enables support for event stream generation based on the ARM architected timer. It is used for waking up CPUs executing Loading
drivers/clocksource/sh_mtu2.c +14 −2 Original line number Diff line number Diff line Loading @@ -313,8 +313,20 @@ static int sh_mtu2_setup(struct sh_mtu2_priv *p, struct platform_device *pdev) goto err1; } return sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev), ret = clk_prepare(p->clk); if (ret < 0) goto err2; ret = sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev), cfg->clockevent_rating); if (ret < 0) goto err3; return 0; err3: clk_unprepare(p->clk); err2: clk_put(p->clk); err1: iounmap(p->mapbase); err0: Loading
drivers/clocksource/sh_tmu.c +17 −3 Original line number Diff line number Diff line Loading @@ -472,12 +472,26 @@ static int sh_tmu_setup(struct sh_tmu_priv *p, struct platform_device *pdev) ret = PTR_ERR(p->clk); goto err1; } ret = clk_prepare(p->clk); if (ret < 0) goto err2; p->cs_enabled = false; p->enable_count = 0; return sh_tmu_register(p, (char *)dev_name(&p->pdev->dev), ret = sh_tmu_register(p, (char *)dev_name(&p->pdev->dev), cfg->clockevent_rating, cfg->clocksource_rating); if (ret < 0) goto err3; return 0; err3: clk_unprepare(p->clk); err2: clk_put(p->clk); err1: iounmap(p->mapbase); err0: Loading