package embox.driver

module pci {
	option string log_level="LOG_INFO"
	option number dev_quantity = 32
	option number bus_n_to_scan = 256
	source "pci.c", "pci_repo.c", "pci_driver.c"
	source "pci_access.c"

	@IncludeExport(path="drivers/pci")
	source "pci.h"
    @IncludeExport(path="drivers/pci")
	source "pci_repo.h"
    @IncludeExport(path="drivers/pci")
	source "pci_driver.h"
	@IncludeExport(path="drivers/pci")
	source "pci_id.h"
	@IncludeExport(path="drivers/pci")
	source "pci_regs.h"

	depends embox.mem.pool
	depends embox.kernel.irq
	@NoRuntime depends embox.lib.libds
	depends embox.driver.pci_chip.pci_chip
	depends embox.driver.pci_bios_api
}

@DefaultImpl(pci_bios_stub)
abstract module pci_bios_api { }
module pci_bios_stub extends pci_bios_api { }

module pci_bios extends pci_bios_api {
	option string log_level="LOG_NONE"
	option number pci_space_base
	option number pci_space_size
	option number pci_window_size
	source "pci_bios.c"

	depends embox.driver.pci_chip.pci_chip
}

module pci_tlp {
	option string log_level="LOG_NONE"
	source "pci_tlp.c"

	@IncludeExport(path="drivers/pci")
	source "pci_tlp.h"

}
