Skip to content

Commit

Permalink
[CPUFREQ] Longhaul: Magic timer frobbing.
Browse files Browse the repository at this point in the history
As mandated by the spec, disable timer around transitions.

From code by : Ken Staton <ken_staton@agilent.com
Signed-off-by: Dave Jones <davej@redhat.com>
  • Loading branch information
Dave Jones committed Jun 1, 2005
1 parent 3be6a48 commit 1174631
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions arch/i386/kernel/cpu/cpufreq/longhaul.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,10 @@ static int longhaul_get_cpu_mult(void)
static void do_powersaver(union msr_longhaul *longhaul,
unsigned int clock_ratio_index)
{
int version;
unsigned long flags;
struct pci_dev *dev;
unsigned long flags;
unsigned int tmp_mask;
int version;
int i;
u16 pci_cmd;
u16 cmd_state[64];
Expand Down Expand Up @@ -163,6 +164,10 @@ static void do_powersaver(union msr_longhaul *longhaul,
}
} while (dev != NULL);

tmp_mask=inb(0x21); /* works on C3. save mask. */
outb(0xFE,0x21); /* TMR0 only */
outb(0xFF,0x80); /* delay */

local_irq_enable();

__hlt();
Expand All @@ -171,6 +176,8 @@ static void do_powersaver(union msr_longhaul *longhaul,

local_irq_disable();

outb(tmp_mask,0x21); /* restore mask */

/* restore pci bus master state for all devices */
dev = NULL;
i = 0;
Expand Down

0 comments on commit 1174631

Please sign in to comment.