Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 59206
b: refs/heads/master
c: 275bc6b
h: refs/heads/master
v: v3
  • Loading branch information
Rafał Bilski authored and Dave Jones committed Jun 6, 2007
1 parent 09a668f commit d81a731
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ce243823af4fee3ab82e1da6b710fbc5f859ad8c
refs/heads/master: 275bc6b7f6429afb8d7a883c2e267547dd899066
23 changes: 16 additions & 7 deletions trunk/arch/i386/kernel/cpu/cpufreq/longhaul.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ static unsigned int minmult, maxmult;
static int can_scale_voltage;
static struct acpi_processor *pr = NULL;
static struct acpi_processor_cx *cx = NULL;
static u32 acpi_regs_addr;
static u8 longhaul_flags;
static unsigned int longhaul_index;

Expand Down Expand Up @@ -247,7 +248,7 @@ static void longhaul_setstate(unsigned int table_index)
unsigned long flags;
unsigned int pic1_mask, pic2_mask;
u32 bm_status = 0;
u32 bm_timeout = 100000;
u32 bm_timeout = 1000;
unsigned int dir = 0;

clock_ratio_index = longhaul_table[table_index].index;
Expand Down Expand Up @@ -282,12 +283,13 @@ static void longhaul_setstate(unsigned int table_index)
/* Wait while PCI bus is busy. */
if (longhaul_flags & USE_NORTHBRIDGE
|| ((pr != NULL) && pr->flags.bm_control)) {
acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
bm_status = inl(acpi_regs_addr);
bm_status &= 1 << 4;
while (bm_status && bm_timeout) {
acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
outl(1 << 4, acpi_regs_addr);
bm_timeout--;
acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS,
&bm_status);
bm_status = inl(acpi_regs_addr);
bm_status &= 1 << 4;
}
}

Expand Down Expand Up @@ -344,8 +346,7 @@ static void longhaul_setstate(unsigned int table_index)
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);

if (!bm_timeout)
printk(KERN_INFO PFX "Warning: Timeout while waiting for "
"idle PCI bus.\n");
printk(KERN_INFO PFX "Warning: Timeout while waiting for idle PCI bus.\n");
}

/*
Expand Down Expand Up @@ -713,6 +714,14 @@ static int longhaul_setup_southbridge(void)
pci_read_config_byte(dev, 0xe5, &pci_cmd);
pci_cmd |= 1 << 7;
pci_write_config_byte(dev, 0xe5, pci_cmd);
/* Get address of ACPI registers block*/
pci_read_config_byte(dev, 0x81, &pci_cmd);
if (pci_cmd & 1 << 7) {
pci_read_config_dword(dev, 0x88, &acpi_regs_addr);
acpi_regs_addr &= 0xff00;
printk(KERN_INFO PFX "ACPI I/O at 0x%x\n", acpi_regs_addr);
}

pci_dev_put(dev);
return 1;
}
Expand Down

0 comments on commit d81a731

Please sign in to comment.