#define CONFIG_CDROM_EMU 1
// Support int 1a/b1 PCI BIOS calls
#define CONFIG_PCIBIOS 1
+// Maximum number of PCI busses.
+#define CONFIG_PCI_BUS_COUNT 2
// Support int 15/53 APM BIOS calls
#define CONFIG_APMBIOS 1
// Support int 19/18 system bootup support
#include "pci.h" // PCIDevice
#include "ioport.h" // outl
#include "util.h" // dprintf
-
-#define MAX_BUS 1
+#include "config.h" // CONFIG_*
void pci_config_writel(PCIDevice d, u32 addr, u32 val)
{
{
int devfn, bus;
u32 id = (devid << 16) | vendid;
- for (bus=0; bus < MAX_BUS; bus++) {
+ for (bus=0; bus < CONFIG_PCI_BUS_COUNT; bus++) {
for (devfn=0; devfn<0x100; devfn++) {
PCIDevice d = pci_bd(bus, devfn);
u32 v = pci_config_readl(d, 0x00);
pci_find_class(u32 classid, int index, PCIDevice *dev)
{
int devfn, bus;
- for (bus=0; bus < MAX_BUS; bus++) {
+ for (bus=0; bus < CONFIG_PCI_BUS_COUNT; bus++) {
for (devfn=0; devfn<0x100; devfn++) {
PCIDevice d = pci_bd(bus, devfn);
u32 v = pci_config_readl(d, 0x08);
static void
handle_1ab101(struct bregs *regs)
{
- regs->ax = 0x0001;
- regs->bx = 0x0210;
- regs->cx = 0;
- // XXX - regs->cl should equal max bus number.
+ regs->al = 0x01; // Flags - "Config Mechanism #1" supported.
+ regs->bx = 0x0210; // PCI version 2.10
+ regs->cl = CONFIG_PCI_BUS_COUNT - 1;
regs->edx = 0x20494350; // "PCI "
// XXX - bochs bios code sets edi to point to 32bit code - but no
// reference to this in spec.
- set_success(regs);
+ set_code_success(regs);
}
// find pci device