enable bios.c in Jamfile; impliment malloc/free/delay Cail callbacks; stub out rest of the Cail callbacks for now

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41137 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Alexander von Gluck IV
2011-03-28 21:29:11 +00:00
parent 9f6153aa51
commit ff37eb80fc
2 changed files with 162 additions and 1 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ Addon radeon_hd.accelerant :
engine.cpp
hooks.cpp
mode.cpp
# bios.cpp
bios.cpp
: be libaccelerantscommon.a atombios.a
;
+161
View File
@@ -54,3 +54,164 @@ AtomParser(void *parameterSpace, uint8_t index, void *handle, void *biosBase)
return B_ERROR;
}
/* Begin AtomBIOS OS callbacks
These functions are used by AtomBios to access
functions and data provided by the accelerant
*/
extern "C" {
VOID*
CailAllocateMemory(VOID *CAIL, UINT16 size)
{
return malloc(size);
}
VOID
CailReleaseMemory(VOID *CAIL, VOID *addr)
{
free(addr);
}
VOID
CailDelayMicroSeconds(VOID *CAIL, UINT32 delay)
{
usleep(delay);
}
UINT32
CailReadATIRegister(VOID* CAIL, UINT32 idx)
{
// TODO : CailReadATIRegister
UINT32 ret = 0;
// ret = RHDRegRead(((atomBiosHandlePtr)CAIL), idx << 2);
return ret;
}
VOID
CailWriteATIRegister(VOID *CAIL, UINT32 idx, UINT32 data)
{
// TODO : CailWriteATIRegister
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterMMIO, idx << 2);
// RHDRegWrite(((atomBiosHandlePtr)CAIL), idx << 2a, data);
}
VOID
CailReadPCIConfigData(VOID *CAIL, VOID* ret, UINT32 idx, UINT16 size)
{
// TODO : CailReadPCIConfigData
// pci_device_cfg_read(RHDPTRI((atomBiosHandlePtr)CAIL)->PciInfo,
// ret, idx << 2 , size >> 3, NULL);
}
VOID
CailWritePCIConfigData(VOID *CAIL, VOID *src, UINT32 idx, UINT16 size)
{
// TODO : CailWritePCIConfigData
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterPCICFG, idx << 2);
// pci_device_cfg_write(RHDPTRI((atomBiosHandlePtr)CAIL)->PciInfo,
// src, idx << 2, size >> 3, NULL);
}
ULONG
CailReadPLL(VOID *CAIL, ULONG Address)
{
// TODO : CailReadPLL
ULONG ret = 0;
// ret = _RHDReadPLL(((atomBiosHandlePtr)CAIL)->scrnIndex, Address);
return ret;
}
VOID
CailWritePLL(VOID *CAIL, ULONG Address, ULONG Data)
{
// TODO : CailWritePLL
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterPLL, Address);
// _RHDWritePLL(((atomBiosHandlePtr)CAIL)->scrnIndex, Address, Data);
}
ULONG
CailReadMC(VOID *CAIL, ULONG Address)
{
// TODO : CailReadMC
ULONG ret = 0;
// ret = RHDReadMC(((atomBiosHandlePtr)CAIL), Address | MC_IND_ALL);
return ret;
}
VOID
CailWriteMC(VOID *CAIL, ULONG Address, ULONG data)
{
// TODO : CailWriteMC
// atomSaveRegisters((atomBiosHandlePtr)CAIL, atomRegisterMC, Address);
// RHDWriteMC(((atomBiosHandlePtr)CAIL),
// Address | MC_IND_ALL | MC_IND_WR_EN, data);
}
UINT32
CailReadFBData(VOID* CAIL, UINT32 idx)
{
// TODO : CailReadFBData
UINT32 ret = 0;
/*
if (((atomBiosHandlePtr)CAIL)->fbBase) {
CARD8 *FBBase = (CARD8*)
RHDPTRI((atomBiosHandlePtr)CAIL)->FbBase;
ret = *((CARD32*)(FBBase + (((atomBiosHandlePtr)CAIL)->fbBase)
+ idx));
TRACE(("%s(%x) = %x\n", __func__, idx, ret));
} else if (((atomBiosHandlePtr)CAIL)->scratchBase) {
ret = *(CARD32*)((CARD8*)(((atomBiosHandlePtr)CAIL)->scratchBase)
+ idx);
TRACE(("%s(%x) = %x\n", __func__, idx, ret));
} else {
TRACE(("%s: no fbbase set\n", __func__));
return 0;
}
*/
return ret;
}
VOID
CailWriteFBData(VOID *CAIL, UINT32 idx, UINT32 data)
{
// TODO : CailReadFBData
TRACE(("%s(%x) = %x\n", __func__, idx, data));
/*
if (((atomBiosHandlePtr)CAIL)->fbBase) {
CARD8 *FBBase = (CARD8*)
RHDPTRI((atomBiosHandlePtr)CAIL)->FbBase;
*((CARD32*)(FBBase + (((atomBiosHandlePtr)CAIL)->fbBase) + idx)) = data;
} else if (((atomBiosHandlePtr)CAIL)->scratchBase) {
*(CARD32*)((CARD8*)(((atomBiosHandlePtr)CAIL)->scratchBase) + idx) = data;
} else
TRACE(("%s: no fbbase set\n", __func__));
*/
}
} // end extern "C"