busmanager is working now

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8380 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2004-07-12 13:53:18 +00:00
parent 663294ccbb
commit d58daf62a0
3 changed files with 18 additions and 11 deletions

View File

@ -83,7 +83,7 @@ status_t init(void)
INIT_BEN(pd->kernel);
/* find all of our supported devices, if any */
if (!probe_devices())
if (probe_devices() != B_OK)
{
/* free the driver data */
DELETE_BEN(pd->kernel);
@ -150,6 +150,7 @@ next_device:
/* note actual number of AGP devices found */
pd->count = count;
TRACE("agp_man: found %d AGP capable device(s)\n", (uint16)count);
/* if we didn't find any devices no AGP bus exists */
if (!count) return B_ERROR;
@ -162,7 +163,7 @@ next_device:
if ((pd->di[count - 1].agpi.interface.agp_stat & AGP_rate_rev) !=
(pd->di[count].agpi.interface.agp_stat & AGP_rate_rev))
{
TRACE(("agp_man: compatibility problem detected, aborting\n"));
TRACE("agp_man: compatibility problem detected, aborting\n");
return B_ERROR;
}
}
@ -216,13 +217,16 @@ static bool has_AGP_interface(pci_info *pcii, uint8 *adress)
long get_nth_agp_info (long index, agp_info *info)
{
pci_info *pcii = &(pd->di[index].pcii);
pci_info *pcii;
TRACE("agp_man: get_nth_agp_info called with index %d\n", (uint16)index);
/* check if we have a device here */
if (index > pd->count) return B_ERROR;
if (index >= pd->count) return B_ERROR;
/* refresh from the contents of the AGP registers from this device */
/* (note: also get agp_stat as some graphicsdriver may have been tweaking, like nvidia) */
pcii = &(pd->di[index].pcii);
pd->di[index].agpi.interface.agp_stat = get_pci(pd->di[index].agp_adress + 4, 4);
pd->di[index].agpi.interface.agp_cmd = get_pci(pd->di[index].agp_adress + 8, 4);
@ -237,6 +241,8 @@ void enable_agp (uint32 *command)
long count;
pci_info *pcii;
TRACE("agp_man: enable_agp called\n");
/* validate the given command: */
/* if we should set PCI mode, reset all options */
if (!(*command & AGP_enable)) *command = 0x00000000;

View File

@ -2,10 +2,11 @@
#define AGP_PROTO_H
#include <KernelExport.h>
#include <PCI.h>
#include "AGP.h"
//#define AGP_DEBUG
#define AGP_DEBUG
#ifdef AGP_DEBUG
#define TRACE dprintf
#else

View File

@ -36,14 +36,14 @@ bus_std_ops(int32 op, ...)
{
switch(op) {
case B_MODULE_INIT:
TRACE(("agp_man: bus module: init\n"));
TRACE("agp_man: bus module: init\n");
if (init() != B_OK)
{
return ENODEV;
}
break;
case B_MODULE_UNINIT:
TRACE(("agp_man: bus module: uninit\n"));
TRACE("agp_man: bus module: uninit\n");
uninit();
break;
default:
@ -70,11 +70,11 @@ struct agp_module_info m_module_info =
NULL // the rescan function
} ,
//my functions
&get_nth_agp_info,
&enable_agp,
get_nth_agp_info,
enable_agp
};
module_info *modules[] = {
_EXPORT module_info *modules[] = {
(module_info *)&m_module_info ,
NULL
};