MIPS: Malta: Use gic_read_count() to read GIC timer
Instead of reading the GIC registers directly, use the interface the GIC driver already exposes for reading the global timer. Also get rid of the unnecessary #ifdefs. Signed-off-by: Andrew Bresticker <abrestic@chromium.org> Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Paul Burton <paul.burton@imgtec.com> Cc: Qais Yousef <qais.yousef@imgtec.com> Cc: John Crispin <blogic@openwrt.org> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/8123/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
a393d93059
commit
7d9ad5d8c3
|
@ -70,9 +70,7 @@ static void __init estimate_frequencies(void)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int count, start;
|
unsigned int count, start;
|
||||||
#ifdef CONFIG_MIPS_GIC
|
cycle_t giccount = 0, gicstart = 0;
|
||||||
unsigned int giccount = 0, gicstart = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_KVM_GUEST) && CONFIG_KVM_GUEST_TIMER_FREQ
|
#if defined(CONFIG_KVM_GUEST) && CONFIG_KVM_GUEST_TIMER_FREQ
|
||||||
mips_hpt_frequency = CONFIG_KVM_GUEST_TIMER_FREQ * 1000000;
|
mips_hpt_frequency = CONFIG_KVM_GUEST_TIMER_FREQ * 1000000;
|
||||||
|
@ -87,32 +85,26 @@ static void __init estimate_frequencies(void)
|
||||||
|
|
||||||
/* Initialize counters. */
|
/* Initialize counters. */
|
||||||
start = read_c0_count();
|
start = read_c0_count();
|
||||||
#ifdef CONFIG_MIPS_GIC
|
|
||||||
if (gic_present)
|
if (gic_present)
|
||||||
GICREAD(GIC_REG(SHARED, GIC_SH_COUNTER_31_00), gicstart);
|
gicstart = gic_read_count();
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Read counter exactly on falling edge of update flag. */
|
/* Read counter exactly on falling edge of update flag. */
|
||||||
while (CMOS_READ(RTC_REG_A) & RTC_UIP);
|
while (CMOS_READ(RTC_REG_A) & RTC_UIP);
|
||||||
while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
|
while (!(CMOS_READ(RTC_REG_A) & RTC_UIP));
|
||||||
|
|
||||||
count = read_c0_count();
|
count = read_c0_count();
|
||||||
#ifdef CONFIG_MIPS_GIC
|
|
||||||
if (gic_present)
|
if (gic_present)
|
||||||
GICREAD(GIC_REG(SHARED, GIC_SH_COUNTER_31_00), giccount);
|
giccount = gic_read_count();
|
||||||
#endif
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
||||||
count -= start;
|
count -= start;
|
||||||
mips_hpt_frequency = count;
|
mips_hpt_frequency = count;
|
||||||
|
|
||||||
#ifdef CONFIG_MIPS_GIC
|
|
||||||
if (gic_present) {
|
if (gic_present) {
|
||||||
giccount -= gicstart;
|
giccount -= gicstart;
|
||||||
gic_frequency = giccount;
|
gic_frequency = giccount;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_persistent_clock(struct timespec *ts)
|
void read_persistent_clock(struct timespec *ts)
|
||||||
|
|
Loading…
Reference in New Issue