now avoids to use read_io* and write_io* (untested)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13525 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-07-07 12:19:37 +00:00
parent df41cb2540
commit d1ab37cbcc
2 changed files with 17 additions and 25 deletions
@@ -65,7 +65,7 @@ const char ** publish_devices(void);
device_hooks * find_device(const char *);
static char pci_name[] = B_PCI_MODULE_NAME;
static pci_module_info *pci;
pci_module_info *pci;
static char mpu401_name[] = B_MPU_401_MODULE_NAME;
generic_mpu401_module * mpu401;
+16 -24
View File
@@ -30,54 +30,46 @@
*/
#include <KernelExport.h>
#include <OS.h>
#include <PCI.h>
#include "io.h"
#include "emuxkireg.h"
/*
* from BeOS R3 KernelExport.h
* should be replaced by PCI bus manager functions
*/
uint8 read_io_8(int mapped_io_addr);
void write_io_8(int mapped_io_addr, uint8 value);
uint16 read_io_16(int mapped_io_addr);
void write_io_16(int mapped_io_addr, uint16 value);
uint32 read_io_32(int mapped_io_addr);
void write_io_32(int mapped_io_addr, uint32 value);
extern pci_module_info *pci;
uint8
emuxki_reg_read_8(device_config *config, int regno)
{
return read_io_8(config->nabmbar + regno);
return pci->read_io_8(config->nabmbar + regno);
}
uint16
emuxki_reg_read_16(device_config *config, int regno)
{
return read_io_16(config->nabmbar + regno);
return pci->read_io_16(config->nabmbar + regno);
}
uint32
emuxki_reg_read_32(device_config *config, int regno)
{
return read_io_32(config->nabmbar + regno);
return pci->read_io_32(config->nabmbar + regno);
}
void
emuxki_reg_write_8(device_config *config, int regno, uint8 value)
{
write_io_8(config->nabmbar + regno, value);
pci->write_io_8(config->nabmbar + regno, value);
}
void
emuxki_reg_write_16(device_config *config, int regno, uint16 value)
{
write_io_16(config->nabmbar + regno, value);
pci->write_io_16(config->nabmbar + regno, value);
}
void
emuxki_reg_write_32(device_config *config, int regno, uint32 value)
{
write_io_32(config->nabmbar + regno, value);
pci->write_io_32(config->nabmbar + regno, value);
}
/* Emu10k1 Low level */
@@ -96,8 +88,8 @@ emuxki_chan_read(device_config *config, uint16 chano, uint32 reg)
offset = (reg >> 16) & 0x1f;
mask = ((1 << size) - 1) << offset;
}
write_io_32(config->nabmbar + EMU_PTR, ptr);
ptr = (read_io_32(config->nabmbar + EMU_DATA) & mask) >> offset;
pci->write_io_32(config->nabmbar + EMU_PTR, ptr);
ptr = (pci->read_io_32(config->nabmbar + EMU_DATA) & mask) >> offset;
return ptr;
}
@@ -118,8 +110,8 @@ emuxki_chan_write(device_config *config, uint16 chano,
data = ((data << offset) & mask) |
(emuxki_chan_read(config, chano, reg & 0xFFFF) & ~mask);
}
write_io_32(config->nabmbar + EMU_PTR, ptr);
write_io_32(config->nabmbar + EMU_DATA, data);
pci->write_io_32(config->nabmbar + EMU_PTR, ptr);
pci->write_io_32(config->nabmbar + EMU_DATA, data);
}
/* Microcode */
@@ -208,15 +200,15 @@ emuxki_read_gpr(device_config *config, uint32 pc)
uint16
emuxki_codec_read(device_config *config, int regno)
{
write_io_8(config->nabmbar + EMU_AC97ADDR, regno);
return read_io_16(config->nabmbar + EMU_AC97DATA);
pci->write_io_8(config->nabmbar + EMU_AC97ADDR, regno);
return pci->read_io_16(config->nabmbar + EMU_AC97DATA);
}
void
emuxki_codec_write(device_config *config, int regno, uint16 value)
{
write_io_8(config->nabmbar + EMU_AC97ADDR, regno);
write_io_16(config->nabmbar + EMU_AC97DATA, value);
pci->write_io_8(config->nabmbar + EMU_AC97ADDR, regno);
pci->write_io_16(config->nabmbar + EMU_AC97DATA, value);
}
/* inte */