diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 9554a93eb48a02..356cda37e230c0 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -43,6 +43,7 @@ config MIPS select GENERIC_SMP_IDLE_THREAD select BUILDTIME_EXTABLE_SORT select GENERIC_CLOCKEVENTS + select GENERIC_SCHED_CLOCK if !CAVIUM_OCTEON_SOC select GENERIC_CMOS_UPDATE select HAVE_MOD_ARCH_SPECIFIC select VIRT_TO_BUS diff --git a/drivers/clocksource/jz4780-tcu.c b/drivers/clocksource/jz4780-tcu.c index 4db47f9d2e0229..0193030a931d7b 100644 --- a/drivers/clocksource/jz4780-tcu.c +++ b/drivers/clocksource/jz4780-tcu.c @@ -10,6 +10,7 @@ #include #include +#include #include "jz47xx-tcu.h" @@ -51,6 +52,11 @@ static cycle_t jz4780_tcu_clocksource_read(struct clocksource *cs) return jz47xx_tcu_read_channel_count(jz4780_tcu_clocksource.channel); } +static u64 notrace jz4780_tcu_sched_read(void) +{ + return jz47xx_tcu_read_channel_count(jz4780_tcu_clocksource.channel); +} + static void __init jz4780_tcu_init(struct device_node *np) { struct jz47xx_tcu *tcu; @@ -72,6 +78,7 @@ static void __init jz4780_tcu_init(struct device_node *np) err = clocksource_register_hz(&jz4780_tcu_clocksource.cs, rate); BUG_ON(err); + sched_clock_register(jz4780_tcu_sched_read, 64, rate); /* For local clock events */ err = jz47xx_tcu_setup_cevt(tcu, 5);