Skip to content

Commit

Permalink
clocksource: pass clocksource to read() callback
Browse files Browse the repository at this point in the history
Pass clocksource pointer to the read() callback for clocksources.  This
allows us to share the callback between multiple instances.

[[email protected]: fix powerpc build of clocksource pass clocksource mods]
[[email protected]: cleanup]
Signed-off-by: Magnus Damm <[email protected]>
Acked-by: John Stultz <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Signed-off-by: Hugh Dickins <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Magnus Damm authored and torvalds committed Apr 21, 2009
1 parent ff14ed5 commit 8e19608
Show file tree
Hide file tree
Showing 54 changed files with 94 additions and 79 deletions.
2 changes: 1 addition & 1 deletion arch/arm/mach-at91/at91rm9200_time.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static struct irqaction at91rm9200_timer_irq = {
.handler = at91rm9200_timer_interrupt
};

static cycle_t read_clk32k(void)
static cycle_t read_clk32k(struct clocksource *cs)
{
return read_CRTR();
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-at91/at91sam926x_time.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ static u32 pit_cnt; /* access only w/system irq blocked */
* Clocksource: just a monotonic counter of MCK/16 cycles.
* We don't care whether or not PIT irqs are enabled.
*/
static cycle_t read_pit_clk(void)
static cycle_t read_pit_clk(struct clocksource *cs)
{
unsigned long flags;
u32 elapsed;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-davinci/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ static void __init timer_init(void)
/*
* clocksource
*/
static cycle_t read_cycles(void)
static cycle_t read_cycles(struct clocksource *cs)
{
struct timer_s *t = &timers[TID_CLOCKSOURCE];

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-imx/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ static void __init imx_timer_hardware_init(void)
IMX_TCTL(TIMER_BASE) = TCTL_FRR | TCTL_CLK_PCLK1 | TCTL_TEN;
}

cycle_t imx_get_cycles(void)
cycle_t imx_get_cycles(struct clocksource *cs)
{
return IMX_TCN(TIMER_BASE);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-ixp4xx/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ void __init ixp4xx_sys_init(void)
/*
* clocksource
*/
cycle_t ixp4xx_get_cycles(void)
cycle_t ixp4xx_get_cycles(struct clocksource *cs)
{
return *IXP4XX_OSTS;
}
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-msm/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ static irqreturn_t msm_timer_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}

static cycle_t msm_gpt_read(void)
static cycle_t msm_gpt_read(struct clocksource *cs)
{
return readl(MSM_GPT_BASE + TIMER_COUNT_VAL);
}

static cycle_t msm_dgt_read(void)
static cycle_t msm_dgt_read(struct clocksource *cs)
{
return readl(MSM_DGT_BASE + TIMER_COUNT_VAL) >> MSM_DGT_SHIFT;
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-netx/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ static struct irqaction netx_timer_irq = {
.handler = netx_timer_interrupt,
};

cycle_t netx_get_cycles(void)
cycle_t netx_get_cycles(struct clocksource *cs)
{
return readl(NETX_GPIO_COUNTER_CURRENT(TIMER_CLOCKSOURCE));
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-ns9xxx/time-ns9360.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#define TIMER_CLOCKEVENT 1
static u32 latch;

static cycle_t ns9360_clocksource_read(void)
static cycle_t ns9360_clocksource_read(struct clocksource *cs)
{
return __raw_readl(SYS_TR(TIMER_CLOCKSOURCE));
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-omap1/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ static struct irqaction omap_mpu_timer2_irq = {
.handler = omap_mpu_timer2_interrupt,
};

static cycle_t mpu_read(void)
static cycle_t mpu_read(struct clocksource *cs)
{
return ~omap_mpu_timer_read(1);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-omap2/timer-gp.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ static inline void __init omap2_gp_clocksource_init(void) {}
* clocksource
*/
static struct omap_dm_timer *gpt_clocksource;
static cycle_t clocksource_read_cycles(void)
static cycle_t clocksource_read_cycles(struct clocksource *cs)
{
return (cycle_t)omap_dm_timer_read_counter(gpt_clocksource);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ static struct clock_event_device ckevt_pxa_osmr0 = {
.set_mode = pxa_osmr0_set_mode,
};

static cycle_t pxa_read_oscr(void)
static cycle_t pxa_read_oscr(struct clocksource *cs)
{
return OSCR;
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-realview/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ static struct irqaction realview_timer_irq = {
.handler = realview_timer_interrupt,
};

static cycle_t realview_get_cycles(void)
static cycle_t realview_get_cycles(struct clocksource *cs)
{
return ~readl(timer3_va_base + TIMER_VALUE);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-versatile/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,7 @@ static struct irqaction versatile_timer_irq = {
.handler = versatile_timer_interrupt,
};

static cycle_t versatile_get_cycles(void)
static cycle_t versatile_get_cycles(struct clocksource *cs)
{
return ~readl(TIMER3_VA_BASE + TIMER_VALUE);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/plat-mxc/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED;

/* clock source */

static cycle_t mxc_get_cycles(void)
static cycle_t mxc_get_cycles(struct clocksource *cs)
{
return __raw_readl(TIMER_BASE + MXC_TCN);
}
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/plat-omap/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ console_initcall(omap_add_serial_console);

#include <linux/clocksource.h>

static cycle_t omap_32k_read(void)
static cycle_t omap_32k_read(struct clocksource *cs)
{
return omap_readl(TIMER_32K_SYNCHRONIZED);
}
Expand All @@ -207,7 +207,7 @@ unsigned long long sched_clock(void)
{
unsigned long long ret;

ret = (unsigned long long)omap_32k_read();
ret = (unsigned long long)omap_32k_read(&clocksource_32k);
ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
return ret;
}
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/plat-orion/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ static u32 ticks_per_jiffy;
/*
* Clocksource handling.
*/
static cycle_t orion_clksrc_read(void)
static cycle_t orion_clksrc_read(struct clocksource *cs)
{
return 0xffffffff - readl(TIMER0_VAL);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/avr32/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include <mach/pm.h>


static cycle_t read_cycle_count(void)
static cycle_t read_cycle_count(struct clocksource *cs)
{
return (cycle_t)sysreg_read(COUNT);
}
Expand Down
12 changes: 6 additions & 6 deletions arch/blackfin/kernel/time-ts.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,11 @@ static inline unsigned long long cycles_2_ns(cycle_t cyc)
return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR;
}

static cycle_t read_cycles(void)
static cycle_t read_cycles(struct clocksource *cs)
{
return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod);
}

unsigned long long sched_clock(void)
{
return cycles_2_ns(read_cycles());
}

static struct clocksource clocksource_bfin = {
.name = "bfin_cycles",
.rating = 350,
Expand All @@ -77,6 +72,11 @@ static struct clocksource clocksource_bfin = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};

unsigned long long sched_clock(void)
{
return cycles_2_ns(read_cycles(&clocksource_bfin));
}

static int __init bfin_clocksource_init(void)
{
set_cyc2ns_scale(get_cclk() / 1000);
Expand Down
2 changes: 1 addition & 1 deletion arch/ia64/kernel/cyclone.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ void __init cyclone_setup(void)

static void __iomem *cyclone_mc;

static cycle_t read_cyclone(void)
static cycle_t read_cyclone(struct clocksource *cs)
{
return (cycle_t)readq((void __iomem *)cyclone_mc);
}
Expand Down
4 changes: 2 additions & 2 deletions arch/ia64/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

#include "fsyscall_gtod_data.h"

static cycle_t itc_get_cycles(void);
static cycle_t itc_get_cycles(struct clocksource *cs);

struct fsyscall_gtod_data_t fsyscall_gtod_data = {
.lock = SEQLOCK_UNLOCKED,
Expand Down Expand Up @@ -383,7 +383,7 @@ ia64_init_itm (void)
}
}

static cycle_t itc_get_cycles(void)
static cycle_t itc_get_cycles(struct clocksource *cs)
{
u64 lcycle, now, ret;

Expand Down
2 changes: 1 addition & 1 deletion arch/ia64/sn/kernel/sn2/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

extern unsigned long sn_rtc_cycles_per_second;

static cycle_t read_sn2(void)
static cycle_t read_sn2(struct clocksource *cs)
{
return (cycle_t)readq(RTC_COUNTER_ADDR);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/m68knommu/platform/68328/timers.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ static struct irqaction m68328_timer_irq = {

/***************************************************************************/

static cycle_t m68328_read_clk(void)
static cycle_t m68328_read_clk(struct clocksource *cs)
{
unsigned long flags;
u32 cycles;
Expand Down
2 changes: 1 addition & 1 deletion arch/m68knommu/platform/coldfire/dma_timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#define DMA_DTMR_CLK_DIV_16 (2 << 1)
#define DMA_DTMR_ENABLE (1 << 0)

static cycle_t cf_dt_get_cycles(void)
static cycle_t cf_dt_get_cycles(struct clocksource *cs)
{
return __raw_readl(DTCN0);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/m68knommu/platform/coldfire/pit.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ static struct irqaction pit_irq = {

/***************************************************************************/

static cycle_t pit_read_clk(void)
static cycle_t pit_read_clk(struct clocksource *cs)
{
unsigned long flags;
u32 cycles;
Expand Down
2 changes: 1 addition & 1 deletion arch/m68knommu/platform/coldfire/timers.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ static struct irqaction mcftmr_timer_irq = {

/***************************************************************************/

static cycle_t mcftmr_read_clk(void)
static cycle_t mcftmr_read_clk(struct clocksource *cs)
{
unsigned long flags;
u32 cycles;
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/cevt-txx9.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

static struct txx9_tmr_reg __iomem *txx9_cs_tmrptr;

static cycle_t txx9_cs_read(void)
static cycle_t txx9_cs_read(struct clocksource *cs)
{
return __raw_readl(&txx9_cs_tmrptr->trr);
}
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/csrc-bcm1480.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

#include <asm/sibyte/sb1250.h>

static cycle_t bcm1480_hpt_read(void)
static cycle_t bcm1480_hpt_read(struct clocksource *cs)
{
return (cycle_t) __raw_readq(IOADDR(A_SCD_ZBBUS_CYCLE_COUNT));
}
Expand Down
6 changes: 3 additions & 3 deletions arch/mips/kernel/csrc-ioasic.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include <asm/dec/ioasic.h>
#include <asm/dec/ioasic_addrs.h>

static cycle_t dec_ioasic_hpt_read(void)
static cycle_t dec_ioasic_hpt_read(struct clocksource *cs)
{
return ioasic_read(IO_REG_FCTR);
}
Expand All @@ -47,13 +47,13 @@ void __init dec_ioasic_clocksource_init(void)
while (!ds1287_timer_state())
;

start = dec_ioasic_hpt_read();
start = dec_ioasic_hpt_read(&clocksource_dec);

while (i--)
while (!ds1287_timer_state())
;

end = dec_ioasic_hpt_read();
end = dec_ioasic_hpt_read(&clocksource_dec);

freq = (end - start) * 10;
printk(KERN_INFO "I/O ASIC clock frequency %dHz\n", freq);
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/csrc-r4k.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

#include <asm/time.h>

static cycle_t c0_hpt_read(void)
static cycle_t c0_hpt_read(struct clocksource *cs)
{
return read_c0_count();
}
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/csrc-sb1250.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* The HPT is free running from SB1250_HPT_VALUE down to 0 then starts over
* again.
*/
static cycle_t sb1250_hpt_read(void)
static cycle_t sb1250_hpt_read(struct clocksource *cs)
{
unsigned int count;

Expand Down
2 changes: 1 addition & 1 deletion arch/mips/kernel/i8253.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ void __init setup_pit_timer(void)
* to just read by itself. So use jiffies to emulate a free
* running counter:
*/
static cycle_t pit_read(void)
static cycle_t pit_read(struct clocksource *cs)
{
unsigned long flags;
int count;
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/nxp/pnx8550/common/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

static unsigned long cpj;

static cycle_t hpt_read(void)
static cycle_t hpt_read(struct clocksource *cs)
{
return read_c0_count2();
}
Expand Down
2 changes: 1 addition & 1 deletion arch/mips/sgi-ip27/ip27-timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ static void __init hub_rt_clock_event_global_init(void)
setup_irq(irq, &hub_rt_irqaction);
}

static cycle_t hub_rt_read(void)
static cycle_t hub_rt_read(struct clocksource *cs)
{
return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT);
}
Expand Down
8 changes: 4 additions & 4 deletions arch/powerpc/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
#include <linux/clockchips.h>
#include <linux/clocksource.h>

static cycle_t rtc_read(void);
static cycle_t rtc_read(struct clocksource *);
static struct clocksource clocksource_rtc = {
.name = "rtc",
.rating = 400,
Expand All @@ -88,7 +88,7 @@ static struct clocksource clocksource_rtc = {
.read = rtc_read,
};

static cycle_t timebase_read(void);
static cycle_t timebase_read(struct clocksource *);
static struct clocksource clocksource_timebase = {
.name = "timebase",
.rating = 400,
Expand Down Expand Up @@ -766,12 +766,12 @@ unsigned long read_persistent_clock(void)
}

/* clocksource code */
static cycle_t rtc_read(void)
static cycle_t rtc_read(struct clocksource *cs)
{
return (cycle_t)get_rtc();
}

static cycle_t timebase_read(void)
static cycle_t timebase_read(struct clocksource *cs)
{
return (cycle_t)get_tb();
}
Expand Down
2 changes: 1 addition & 1 deletion arch/s390/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ unsigned long read_persistent_clock(void)
return ts.tv_sec;
}

static cycle_t read_tod_clock(void)
static cycle_t read_tod_clock(struct clocksource *cs)
{
return get_clock();
}
Expand Down
Loading

0 comments on commit 8e19608

Please sign in to comment.