Devman (acpi.sys):

- Fixed errors breaking build; 
- Added to auto build;

git-svn-id: svn://kolibrios.org@9499 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
turbocat 2021-12-27 18:22:14 +00:00
parent c1d40e004d
commit 8848af8de1
8 changed files with 59 additions and 132 deletions

View File

@ -1,56 +1,42 @@
CC = kos32-gcc
LD = kos32-ld
KPACK = kpack
CFLAGS = -c -w -O2 -fomit-frame-pointer -fno-builtin-printf
CC = gcc DRV_DIR = $(CURDIR)/..
FASM = e:/fasm/fasm.exe INCLUDES = -I$(DRV_DIR)/devman/acpica/include -I$(DRV_DIR)/devman -I$(DRV_DIR)/include/linux -I$(DRV_DIR)/include -I$(DRV_DIR)/include/uapi
CFLAGS = -c -O2 -fomit-frame-pointer -fno-builtin-printf DEFINES = -D__KERNEL__ -DCONFIG_X86_32 -DCONFIG_X86_L1_CACHE_SHIFT=6 -DCONFIG_ARCH_HAS_CACHE_LINE_SIZE -DHAVE_ACPICA -DCONFIG_ACPI -DLINUX_MOD_DEVICETABLE_H -DCONFIG_PCI
LDFLAGS = -nostdlib -shared -s -Map acpi.map --image-base 0 --file-alignment 512 --section-alignment 4096
DRV_DIR = $(CURDIR)/.. LIBPATH := -L$(DRV_DIR)/ddk -L../devman/acpica -L../../contrib/sdk/lib
LIBS := -lacpica -lgcc -lddk -lcore
DRV_INCLUDES = $(DRV_DIR)/include NAME = acpi.sys
ACPI_INCLUDES = ./acpica/include NAME_SRCS = acpi.c \
scan.c \
pci_root.c \
pci_bind.c \
pci_irq.c \
pci/probe.c \
pci/pci.c \
pci/access.c
INCLUDES = -I$(DRV_INCLUDES) -I$(ACPI_INCLUDES) -I$(DRV_DIR)/include/linux all: $(NAME)
DEFINES = -D__KERNEL__ -DCONFIG_X86_32 NAME_OBJS = $(patsubst %.S, %.o, $(patsubst %.asm, %.o, \
LDFLAGS = -nostdlib -shared -s -Map acpi.map --image-base 0\
--file-alignment 512 --section-alignment 4096
LIBPATH:= -L$(DRV_DIR)/ddk -L./acpica
LIBS:= -lacpica -lgcc -lddk -lcore
NAME= acpi
NAME_SRCS= acpi.c \
scan.c \
pci_irq.c \
pci_root.c \
pci/access.c \
pci/pci.c \
pci/probe.c \
pci_bind.c
all: $(NAME).dll
NAME_OBJS = $(patsubst %.S, %.o, $(patsubst %.asm, %.o,\
$(patsubst %.c, %.o, $(NAME_SRCS)))) $(patsubst %.c, %.o, $(NAME_SRCS))))
$(NAME).dll: $(NAME_OBJS) acpi.lds Makefile $(NAME): $(NAME_OBJS) ../devman/acpi.lds Makefile
ld $(LIBPATH) $(LDFLAGS) -T acpi.lds -o $@ $(NAME_OBJS) $(LIBS) $(LD) $(LIBPATH) $(LDFLAGS) -T ../devman/acpi.lds -o $@ $(NAME_OBJS) $(LIBS)
kpack $(NAME).dll $(KPACK) $(NAME)
%.o : %.c $(HFILES) Makefile %.o : %.c $(HFILES) Makefile
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -o $@ $< $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -o $@ $<
%.o : %.S $(HFILES) Makefile clean:
as -o $@ $< rm -rf *.o

21
drivers/devman/Tupfile.lua Executable file
View File

@ -0,0 +1,21 @@
if tup.getconfig("NO_FASM") ~= "" then return end
if tup.getconfig("NO_GCC") ~= "" then return end
tup.include("../../programs/use_gcc.lua")
DRV_DIR = ".."
INCLUDES = string.format(" -I./include -I./acpica/include -I. -I%s/include -I%s/include/linux -I%s/include/uapi ", DRV_DIR, DRV_DIR, DRV_DIR)
DEFINES = " -D__KERNEL__ -DCONFIG_X86_32 -DCONFIG_X86_L1_CACHE_SHIFT=6 -DCONFIG_ARCH_HAS_CACHE_LINE_SIZE -DHAVE_ACPICA -DCONFIG_ACPI -DLINUX_MOD_DEVICETABLE_H -DCONFIG_PCI "
CFLAGS = " -w -Os -march=i686 -fno-ident -msse2 -fomit-frame-pointer -fno-builtin-printf -mno-stack-arg-probe -mpreferred-stack-boundary=2 -mincoming-stack-boundary=2 -mno-ms-bitfields " .. DEFINES
LDFLAGS = " -nostdlib -T acpi.lds -shared -s --image-base 0 --file-alignment 512 --section-alignment 4096 -L../../contrib/sdk/lib -L../ddk -Lacpica "
NAME = "acpi.sys"
compile_gcc{ "acpi.c", "scan.c", "pci_root.c", "pci_bind.c", "pci_irq.c", "pci/probe.c", "pci/pci.c", "pci/access.c" }
OBJS.extra_inputs = {"../ddk/libcore.a", "../ddk/libddk.a", "./acpica/libacpica.a"}
LIBS = " -lacpica -lgcc -lddk -lcore "
tup.rule(OBJS, "kos32-ld" .. LDFLAGS .. "%f -o %o " .. LIBS .. tup.getconfig("KPACK_CMD"), NAME);
tup.rule("acpi.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "acpi")

View File

@ -27,7 +27,7 @@ start:
align 4 align 4
app_path rb 2048 app_path rb 2048
sz_dll db '.dll',0 sz_dll db '.sys',0
i_end: i_end:
rb 128 rb 128
mem: mem:

View File

@ -571,46 +571,37 @@ void acpi_init_pci(struct acpi_device *device)
}; };
uint32_t drvEntry(int action, char *cmdline)
u32_t drvEntry(int action, char *cmdline)
{ {
u32_t retval; uint32_t retval;
ACPI_STATUS status; ACPI_STATUS status;
int i; int i;
if(action != 1) if(action != 1)
return 0; return 0;
if( !dbg_open("/rd/1/drivers/acpi.log") )
{
printf("Can't open /rd/1/drivers/acpi.log\nExit\n");
return 0;
}
status = AcpiInitializeSubsystem(); status = AcpiInitializeSubsystem();
if (status != AE_OK) { if (status != AE_OK) {
dbgprintf("AcpiInitializeSubsystem failed (%s)\n", printf("AcpiInitializeSubsystem failed (%s)\n",
AcpiFormatException(status)); AcpiFormatException(status));
goto err; goto err;
} }
status = AcpiInitializeTables (NULL, 16, FALSE); status = AcpiInitializeTables (NULL, 16, FALSE);
if (status != AE_OK) { if (status != AE_OK) {
dbgprintf("AcpiInitializeTables failed (%s)\n", printf("AcpiInitializeTables failed (%s)\n",
AcpiFormatException(status)); AcpiFormatException(status));
goto err; goto err;
} }
status = AcpiLoadTables(); status = AcpiLoadTables();
if (status != AE_OK) { if (status != AE_OK) {
dbgprintf("AcpiLoadTables failed (%s)\n", printf("AcpiLoadTables failed (%s)\n",
AcpiFormatException(status)); AcpiFormatException(status));
goto err; goto err;
} }
// u32_t mode = ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE; // u32_t mode = ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE;
status = AcpiEnableSubsystem(ACPI_NO_HANDLER_INIT | ACPI_NO_HARDWARE_INIT); status = AcpiEnableSubsystem(ACPI_NO_HANDLER_INIT | ACPI_NO_HARDWARE_INIT);
if (status != AE_OK) { if (status != AE_OK) {
@ -627,25 +618,17 @@ u32_t drvEntry(int action, char *cmdline)
goto err; goto err;
} }
set_pic_mode(IO_APIC); set_pic_mode(IO_APIC);
acpi_scan(); acpi_scan();
acpi_init_pci(acpi_root); acpi_init_pci(acpi_root);
print_pci_irqs(); print_pci_irqs();
create_dm_list(); create_dm_list();
print_dm_list(); print_dm_list();
write_device_dat("/RD/1/DRIVERS/DEVICES.DAT"); write_device_dat("/RD/1/DRIVERS/DEVICES.DAT");
err: err:
return 0; return 0;
}; };
char* strdup(const char *str) char* strdup(const char *str)
@ -699,7 +682,6 @@ count_dev_resources(ACPI_RESOURCE *acpi_res, void *data)
return AE_OK; return AE_OK;
} }
static void dm_add_acpi(struct acpi_device *device) static void dm_add_acpi(struct acpi_device *device)
{ {
struct acpi_device *child; struct acpi_device *child;
@ -748,7 +730,6 @@ static void create_dm_list()
{ {
struct acpi_pci_root *root; struct acpi_pci_root *root;
list_for_each_entry(root, &acpi_pci_roots, node) list_for_each_entry(root, &acpi_pci_roots, node)
{ {
struct pci_bus *pbus, *tbus; struct pci_bus *pbus, *tbus;

View File

@ -5,55 +5,6 @@
#include <pci.h> #include <pci.h>
#include <syscall.h> #include <syscall.h>
int pci_read_config_byte(struct pci_dev *dev, int where, u8 *val)
{
*val = PciRead8(dev->busnr, dev->devfn, where);
return 0;
}
int pci_read_config_word(struct pci_dev *dev, int where, u16 *val)
{
if ( where & 1)
return PCIBIOS_BAD_REGISTER_NUMBER;
*val = PciRead16(dev->busnr, dev->devfn, where);
return 0;
}
int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val)
{
if ( where & 3)
return PCIBIOS_BAD_REGISTER_NUMBER;
*val = PciRead32(dev->busnr, dev->devfn, where);
return 0;
}
int pci_write_config_byte(struct pci_dev *dev, int where, u8 val)
{
PciWrite8(dev->busnr, dev->devfn, where, val);
return 0;
};
int pci_write_config_word(struct pci_dev *dev, int where, u16 val)
{
if ( where & 1)
return PCIBIOS_BAD_REGISTER_NUMBER;
PciWrite16(dev->busnr, dev->devfn, where, val);
return 0;
}
int pci_write_config_dword(struct pci_dev *dev, int where,
u32 val)
{
if ( where & 3)
return PCIBIOS_BAD_REGISTER_NUMBER;
PciWrite32(dev->busnr, dev->devfn, where, val);
return 0;
}
int pci_bus_read_config_byte (struct pci_bus *bus, u32 devfn, int pci_bus_read_config_byte (struct pci_bus *bus, u32 devfn,
int pos, u8 *value) int pos, u8 *value)
{ {

View File

@ -2,7 +2,7 @@
#include <ddk.h> #include <ddk.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <mutex.h> #include <mutex.h>
#include <pci.h> #include <linux/pci.h>
#include <syscall.h> #include <syscall.h>
extern struct list_head pci_root_buses; extern struct list_head pci_root_buses;

View File

@ -18,22 +18,11 @@ LIST_HEAD(pci_root_buses);
#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
#define CARDBUS_RESERVE_BUSNR 3 #define CARDBUS_RESERVE_BUSNR 3
static int pcibios_assign_all_busses(void) int pcibios_assign_all_busses(void)
{ {
return 0; return 0;
}; };
/**
* pci_ari_enabled - query ARI forwarding status
* @bus: the PCI bus
*
* Returns 1 if ARI forwarding is enabled, or 0 if not enabled;
*/
static inline int pci_ari_enabled(struct pci_bus *bus)
{
return bus->self && bus->self->ari_enabled;
}
/* /*
* Translate the low bits of the PCI base * Translate the low bits of the PCI base
* to the resource type * to the resource type
@ -632,7 +621,7 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max); pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
} }
vsprintf(child->name, sprintf(child->name,
(is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"), (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
pci_domain_nr(bus), child->number); pci_domain_nr(bus), child->number);
@ -669,7 +658,7 @@ void set_pcie_port_type(struct pci_dev *pdev)
pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
if (!pos) if (!pos)
return; return;
pdev->is_pcie = 1; //pdev->is_pcie = 1;
pdev->pcie_cap = pos; pdev->pcie_cap = pos;
pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16); pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4; pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
@ -1062,7 +1051,7 @@ unsigned int pci_scan_child_bus(struct pci_bus *bus)
pci_scan_slot(bus, devfn); pci_scan_slot(bus, devfn);
/* Reserve buses for SR-IOV capability. */ /* Reserve buses for SR-IOV capability. */
max += pci_iov_bus_range(bus); //max += pci_iov_bus_range(bus);
/* /*
* After performing arch-dependent fixup of the bus, look behind * After performing arch-dependent fixup of the bus, look behind

View File

@ -784,4 +784,3 @@ int acpi_scan()
return err; return err;
}; };