Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd5583a4 authored by Mark Rutland's avatar Mark Rutland
Browse files

arm: arch_timer: split cntfrq accessor



The CNTFRQ register is not duplicated for physical and virtual timers,
and accessing it as if it were is confusing.

Instead, use a separate accessor which doesn't take the access type
as a parameter.

Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
parent b8e24343
Loading
Loading
Loading
Loading
+9 −7
Original line number Original line Diff line number Diff line
@@ -51,8 +51,7 @@ static bool arch_timer_use_virtual = true;
#define ARCH_TIMER_CTRL_IT_STAT		(1 << 2)
#define ARCH_TIMER_CTRL_IT_STAT		(1 << 2)


#define ARCH_TIMER_REG_CTRL		0
#define ARCH_TIMER_REG_CTRL		0
#define ARCH_TIMER_REG_FREQ		1
#define ARCH_TIMER_REG_TVAL		1
#define ARCH_TIMER_REG_TVAL		2


#define ARCH_TIMER_PHYS_ACCESS		0
#define ARCH_TIMER_PHYS_ACCESS		0
#define ARCH_TIMER_VIRT_ACCESS		1
#define ARCH_TIMER_VIRT_ACCESS		1
@@ -101,9 +100,6 @@ static inline u32 arch_timer_reg_read(const int access, const int reg)
		case ARCH_TIMER_REG_TVAL:
		case ARCH_TIMER_REG_TVAL:
			asm volatile("mrc p15, 0, %0, c14, c2, 0" : "=r" (val));
			asm volatile("mrc p15, 0, %0, c14, c2, 0" : "=r" (val));
			break;
			break;
		case ARCH_TIMER_REG_FREQ:
			asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (val));
			break;
		}
		}
	}
	}


@@ -121,6 +117,13 @@ static inline u32 arch_timer_reg_read(const int access, const int reg)
	return val;
	return val;
}
}


static inline u32 arch_timer_get_cntfrq(void)
{
	u32 val;
	asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (val));
	return val;
}

static inline u64 arch_counter_get_cntpct(void)
static inline u64 arch_counter_get_cntpct(void)
{
{
	u64 cval;
	u64 cval;
@@ -253,8 +256,7 @@ static int arch_timer_available(void)
	u32 freq;
	u32 freq;


	if (arch_timer_rate == 0) {
	if (arch_timer_rate == 0) {
		freq = arch_timer_reg_read(ARCH_TIMER_PHYS_ACCESS,
		freq = arch_timer_get_cntfrq();
					   ARCH_TIMER_REG_FREQ);


		/* Check the timer frequency. */
		/* Check the timer frequency. */
		if (freq == 0) {
		if (freq == 0) {