Commit c40aaec6 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Ingo Molnar

x86: apic - unify __setup_APIC_LVTT

Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent c43da2f5
...@@ -248,8 +248,12 @@ int lapic_get_maxlvt(void) ...@@ -248,8 +248,12 @@ int lapic_get_maxlvt(void)
* Local APIC timer * Local APIC timer
*/ */
/* Clock divisor is set to 16 */ /* Clock divisor */
#ifdef CONFG_X86_64
#define APIC_DIVISOR 1
#else
#define APIC_DIVISOR 16 #define APIC_DIVISOR 16
#endif
/* /*
* This function sets up the local APIC timer, with a timeout of * This function sets up the local APIC timer, with a timeout of
...@@ -281,8 +285,8 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen) ...@@ -281,8 +285,8 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen)
*/ */
tmp_value = apic_read(APIC_TDCR); tmp_value = apic_read(APIC_TDCR);
apic_write(APIC_TDCR, apic_write(APIC_TDCR,
(tmp_value & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) | (tmp_value & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) |
APIC_TDR_DIV_16); APIC_TDR_DIV_16);
if (!oneshot) if (!oneshot)
apic_write(APIC_TMICT, clocks / APIC_DIVISOR); apic_write(APIC_TMICT, clocks / APIC_DIVISOR);
......
...@@ -259,8 +259,12 @@ int lapic_get_maxlvt(void) ...@@ -259,8 +259,12 @@ int lapic_get_maxlvt(void)
* Local APIC timer * Local APIC timer
*/ */
/* Clock divisor is set to 1 */ /* Clock divisor */
#ifdef CONFG_X86_64
#define APIC_DIVISOR 1 #define APIC_DIVISOR 1
#else
#define APIC_DIVISOR 16
#endif
/* /*
* This function sets up the local APIC timer, with a timeout of * This function sets up the local APIC timer, with a timeout of
...@@ -291,9 +295,9 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen) ...@@ -291,9 +295,9 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen)
* Divide PICLK by 16 * Divide PICLK by 16
*/ */
tmp_value = apic_read(APIC_TDCR); tmp_value = apic_read(APIC_TDCR);
apic_write(APIC_TDCR, (tmp_value apic_write(APIC_TDCR,
& ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) (tmp_value & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) |
| APIC_TDR_DIV_16); APIC_TDR_DIV_16);
if (!oneshot) if (!oneshot)
apic_write(APIC_TMICT, clocks / APIC_DIVISOR); apic_write(APIC_TMICT, clocks / APIC_DIVISOR);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment