Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 37744
b: refs/heads/master
c: 7f1be89
h: refs/heads/master
v: v3
  • Loading branch information
rafalbilski@interia.pl authored and Dave Jones committed Sep 27, 2006
1 parent 294389a commit 15d6483
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 15 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: 0497c8ca282915a1c36d51db33fbf2629d7346f3
refs/heads/master: 7f1be8924791535c5fdc6749d1f119e141baa122
51 changes: 37 additions & 14 deletions trunk/arch/i386/kernel/cpu/cpufreq/longhaul.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,17 @@ static void do_powersaver(int cx_address, unsigned int clock_ratio_index)
safe_halt();
/* Change frequency on next halt or sleep */
wrmsrl(MSR_VIA_LONGHAUL, longhaul.val);
ACPI_FLUSH_CPU_CACHE();
/* Invoke C3 */
inb(cx_address);
/* Dummy op - must do something useless after P_LVL3 read */
t = inl(acpi_fadt.xpm_tmr_blk.address);
if (port22_en) {
ACPI_FLUSH_CPU_CACHE();
/* Invoke C1 */
halt();
} else {
ACPI_FLUSH_CPU_CACHE();
/* Invoke C3 */
inb(cx_address);
/* Dummy op - must do something useless after P_LVL3 read */
t = inl(acpi_fadt.xpm_tmr_blk.address);
}

/* Disable bus ratio bit */
local_irq_disable();
Expand Down Expand Up @@ -567,16 +573,23 @@ static acpi_status longhaul_walk_callback(acpi_handle obj_handle,
static int enable_arbiter_disable(void)
{
struct pci_dev *dev;
int reg;
u8 pci_cmd;

/* Find PLE133 host bridge */
reg = 0x78;
dev = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8601_0, NULL);
/* Find CLE266 host bridge */
if (dev == NULL) {
dev = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_862X_0, NULL);
reg = 0x76;
}
if (dev != NULL) {
/* Enable access to port 0x22 */
pci_read_config_byte(dev, 0x78, &pci_cmd);
pci_read_config_byte(dev, reg, &pci_cmd);
if ( !(pci_cmd & 1<<7) ) {
pci_cmd |= 1<<7;
pci_write_config_byte(dev, 0x78, pci_cmd);
pci_write_config_byte(dev, reg, pci_cmd);
}
return 1;
}
Expand Down Expand Up @@ -681,19 +694,29 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
/* Check ACPI support for C3 state */
cx = &pr->power.states[ACPI_STATE_C3];
if (cx->address == 0 ||
(cx->latency > 1000 && ignore_latency == 0) )
goto err_acpi;
(cx->latency > 1000 && ignore_latency == 0) ) {
if (enable_arbiter_disable()) {
port22_en = 1;
} else {
goto err_acpi;
}
}

} else {
/* Check ACPI support for bus master arbiter disable */
if (!pr->flags.bm_control) {
if (!enable_arbiter_disable()) {
printk(KERN_ERR PFX "No ACPI support. No VT8601 host bridge. Aborting.\n");
return -ENODEV;
} else
if (enable_arbiter_disable()) {
port22_en = 1;
} else {
goto err_acpi;
}
}
}
if (!port22_en) {
printk (KERN_INFO PFX "Using ACPI support.\n");
} else {
printk (KERN_INFO PFX "Using northbridge support.\n");
}

ret = longhaul_get_ranges();
if (ret != 0)
Expand All @@ -716,7 +739,7 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
return 0;

err_acpi:
printk(KERN_ERR PFX "No ACPI support for CPU frequency changes.\n");
printk(KERN_ERR PFX "No ACPI support. No VT8601 or VT8623 northbridge. Aborting.\n");
return -ENODEV;
}

Expand Down

0 comments on commit 15d6483

Please sign in to comment.