Just some cleanup. We won't need pci module for setup.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41025 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Fredrik Holmqvist 2011-03-19 11:47:18 +00:00
parent 04de4ed00e
commit 7fae779766
3 changed files with 17 additions and 28 deletions

View File

@ -600,21 +600,11 @@ ioapic_init(kernel_args* args)
BPrivate::CObjectDeleter<const char, status_t>
acpiModulePutter(B_ACPI_MODULE_NAME, put_module);
// load pci module
pci_module_info* pciModule;
status = get_module(B_PCI_MODULE_NAME, (module_info**)&pciModule);
if (status != B_OK) {
dprintf("could not load pci module, not configuring ioapic\n");
return;
}
CObjectDeleter<const char, status_t> pciModulePutter(B_PCI_MODULE_NAME,
put_module);
// TODO: here ACPI needs to be used to properly set up the PCI IRQ
// routing.
IRQRoutingTable table;
status = read_irq_routing_table(pciModule, acpiModule, &table);
status = read_irq_routing_table(acpiModule, &table);
if (status != B_OK) {
dprintf("reading IRQ routing table failed, no ioapic.\n");
return;

View File

@ -1,5 +1,6 @@
/*
* Copyright 2009, Clemens Zeidler haiku@clemens-zeidler.de. All rights reserved.
* Copyright 2009, Clemens Zeidler haiku@clemens-zeidler.de.
* All rights reserved.
*
* Distributed under the terms of the MIT License.
*/
@ -50,8 +51,9 @@ print_irq_descriptor(irq_descriptor* descriptor)
const char* edgeTriggeredString = " edge triggered";
dprintf("irq: %i, shareable: %i, polarity: %s, interrupt_mode: %s\n",
descriptor->irq, descriptor->shareable, descriptor->polarity == B_HIGH_ACTIVE_POLARITY
? activeHighString : activeLowString,
descriptor->irq, descriptor->shareable,
descriptor->polarity == B_HIGH_ACTIVE_POLARITY ? activeHighString
: activeLowString,
descriptor->interrupt_mode == B_LEVEL_TRIGGERED ? levelTriggeredString
: edgeTriggeredString);
}
@ -72,8 +74,8 @@ print_irq_routing_table(IRQRoutingTable* table)
static status_t
read_device_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
acpi_handle device, IRQRoutingTable* table)
read_device_irq_routing_table(acpi_module_info* acpi, acpi_handle device,
IRQRoutingTable* table)
{
acpi_data buffer;
buffer.pointer = 0;
@ -103,8 +105,7 @@ read_device_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
status_t
read_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
IRQRoutingTable* table)
read_irq_routing_table(acpi_module_info* acpi, IRQRoutingTable* table)
{
char rootPciName[255];
acpi_handle rootPciHandle;
@ -117,7 +118,7 @@ read_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
if (status != B_OK)
return status;
TRACE("Read root pci bus irq rooting table\n");
status = read_device_irq_routing_table(pci, acpi, rootPciHandle, table);
status = read_device_irq_routing_table(acpi, rootPciHandle, table);
if (status != B_OK)
return status;
@ -133,7 +134,7 @@ read_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
if (status != B_OK)
continue;
status = read_device_irq_routing_table(pci, acpi, brigde, table);
status = read_device_irq_routing_table(acpi, brigde, table);
if (status == B_OK)
TRACE("routing table found %s\n", name);
}

View File

@ -7,18 +7,17 @@
#include <ACPI.h>
#include <PCI.h>
#include "util/Vector.h"
struct irq_routing_entry {
int device_address;
int device_address;
int8 pin;
acpi_handle source;
int source_index;
int source_index;
// pci busmanager connection
uchar pci_bus;
@ -45,10 +44,10 @@ struct irq_descriptor {
typedef struct acpi_prt {
uint32 length;
uint32 pin;
uint64 address; // here for 64-bit alignment
uint64 address; // here for 64-bit alignment
uint32 sourceIndex;
char source[4]; // pad to 64 bits so sizeof() works in
// all cases
char source[4]; // pad to 64 bits so sizeof()
// works in all cases
} acpi_pci_routing_table;
//TODO: Hack until we expose ACPI structs better, currently hardcoded to
@ -70,8 +69,7 @@ void print_irq_descriptor(irq_descriptor* descriptor);
void print_irq_routing_table(IRQRoutingTable* table);
status_t read_irq_routing_table(pci_module_info *pci, acpi_module_info* acpi,
IRQRoutingTable* table);
status_t read_irq_routing_table(acpi_module_info* acpi, IRQRoutingTable* table);
status_t read_irq_descriptor(acpi_module_info* acpi, acpi_handle device,
const char* method, irq_descriptor* descriptor);