Commit e2349697 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://are.twiddle.net/axp-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents 3c0ba99c ba646b39
...@@ -1076,7 +1076,7 @@ marvel_agp_info(void) ...@@ -1076,7 +1076,7 @@ marvel_agp_info(void)
/* /*
* Fill it in. * Fill it in.
*/ */
agp->type = 0 /* FIXME: ALPHA_CORE_AGP */; agp->type = ALPHA_CORE_AGP;
agp->hose = hose; agp->hose = hose;
agp->private = NULL; agp->private = NULL;
agp->ops = &marvel_agp_ops; agp->ops = &marvel_agp_ops;
......
...@@ -764,7 +764,7 @@ titan_agp_info(void) ...@@ -764,7 +764,7 @@ titan_agp_info(void)
/* /*
* Fill it in. * Fill it in.
*/ */
agp->type = 0 /* FIXME: ALPHA_CORE_AGP */; agp->type = ALPHA_CORE_AGP;
agp->hose = hose; agp->hose = hose;
agp->private = port; agp->private = port;
agp->ops = &titan_agp_ops; agp->ops = &titan_agp_ops;
......
...@@ -392,6 +392,29 @@ pcibios_set_master(struct pci_dev *dev) ...@@ -392,6 +392,29 @@ pcibios_set_master(struct pci_dev *dev)
pci_write_config_byte(dev, PCI_LATENCY_TIMER, 64); pci_write_config_byte(dev, PCI_LATENCY_TIMER, 64);
} }
static void __init
pcibios_claim_one_bus(struct pci_bus *b)
{
struct list_head *ld;
struct pci_bus *child_bus;
for (ld = b->devices.next; ld != &b->devices; ld = ld->next) {
struct pci_dev *dev = pci_dev_b(ld);
int i;
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
struct resource *r = &dev->resource[i];
if (r->parent || !r->start || !r->flags)
continue;
pci_claim_resource(dev, i);
}
}
list_for_each_entry(child_bus, &b->children, node)
pcibios_claim_one_bus(child_bus);
}
static void __init static void __init
pcibios_claim_console_setup(void) pcibios_claim_console_setup(void)
{ {
...@@ -399,20 +422,7 @@ pcibios_claim_console_setup(void) ...@@ -399,20 +422,7 @@ pcibios_claim_console_setup(void)
for(lb = pci_root_buses.next; lb != &pci_root_buses; lb = lb->next) { for(lb = pci_root_buses.next; lb != &pci_root_buses; lb = lb->next) {
struct pci_bus *b = pci_bus_b(lb); struct pci_bus *b = pci_bus_b(lb);
struct list_head *ld; pcibios_claim_one_bus(b);
for (ld = b->devices.next; ld != &b->devices; ld = ld->next) {
struct pci_dev *dev = pci_dev_b(ld);
int i;
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
struct resource *r = &dev->resource[i];
if (r->parent || !r->start || !r->flags)
continue;
pci_claim_resource(dev, i);
}
}
} }
} }
......
...@@ -78,6 +78,8 @@ void ...@@ -78,6 +78,8 @@ void
nautilus_kill_arch(int mode) nautilus_kill_arch(int mode)
{ {
struct pci_bus *bus = pci_isa_hose->bus; struct pci_bus *bus = pci_isa_hose->bus;
u32 pmuport;
int off;
switch (mode) { switch (mode) {
case LINUX_REBOOT_CMD_RESTART: case LINUX_REBOOT_CMD_RESTART:
...@@ -92,14 +94,18 @@ nautilus_kill_arch(int mode) ...@@ -92,14 +94,18 @@ nautilus_kill_arch(int mode)
break; break;
case LINUX_REBOOT_CMD_POWER_OFF: case LINUX_REBOOT_CMD_POWER_OFF:
{ /* Assume M1543C */
u32 pmuport; off = 0x2000; /* SLP_TYPE = 0, SLP_EN = 1 */
pci_bus_read_config_dword(bus, 0x88, 0x10, &pmuport); pci_bus_read_config_dword(bus, 0x88, 0x10, &pmuport);
pmuport &= 0xfffe; if (!pmuport) {
outl(0xffff, pmuport); /* clear pending events */ /* M1535D/D+ */
outw(0x2000, pmuport+4); /* power off */ off = 0x3400; /* SLP_TYPE = 5, SLP_EN = 1 */
/* NOTREACHED */ pci_bus_read_config_dword(bus, 0x88, 0xe0, &pmuport);
} }
pmuport &= 0xfffe;
outw(0xffff, pmuport); /* Clear pending events. */
outw(off, pmuport + 4);
/* NOTREACHED */
break; break;
} }
} }
......
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