kbuild: Allow drivers to fit src/drivers/[X]/[Y]/ scheme
Reorder drivers to fit src/drivers/[X]/[Y]/ scheme to make them pluggable. Also, fix up the following driver subdirectories by switching to the src/drivers/[X]/[Y]/ scheme as these are hard requirements for the main change: * drivers/intel * drivers/pc80 * drivers/dec Change-Id: I455d3089a317181d5b99bf658df759ec728a5f6b Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-on: https://review.coreboot.org/14047 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
parent
3812597c66
commit
86ddd732bd
|
@ -75,7 +75,9 @@ PHONY+= clean-abuild coreboot lint lint-stable build-dirs build_complete
|
||||||
subdirs-y := src/lib src/commonlib/ src/console src/device src/acpi
|
subdirs-y := src/lib src/commonlib/ src/console src/device src/acpi
|
||||||
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
subdirs-y += src/ec/acpi $(wildcard src/ec/*/*) $(wildcard src/southbridge/*/*)
|
||||||
subdirs-y += $(wildcard src/soc/*/*) $(wildcard src/northbridge/*/*)
|
subdirs-y += $(wildcard src/soc/*/*) $(wildcard src/northbridge/*/*)
|
||||||
subdirs-y += src/superio $(wildcard src/drivers/*) src/cpu src/vendorcode
|
subdirs-y += src/superio
|
||||||
|
subdirs-y += $(wildcard src/drivers/*) $(wildcard src/drivers/*/*)
|
||||||
|
subdirs-y += src/cpu src/vendorcode
|
||||||
subdirs-y += util/cbfstool util/sconfig util/nvramtool util/broadcom
|
subdirs-y += util/cbfstool util/sconfig util/nvramtool util/broadcom
|
||||||
subdirs-y += util/futility util/marvell
|
subdirs-y += util/futility util/marvell
|
||||||
subdirs-y += $(wildcard src/arch/*)
|
subdirs-y += $(wildcard src/arch/*)
|
||||||
|
|
|
@ -432,6 +432,7 @@ source "src/superio/*/Kconfig"
|
||||||
comment "Embedded Controllers"
|
comment "Embedded Controllers"
|
||||||
source "src/ec/acpi/Kconfig"
|
source "src/ec/acpi/Kconfig"
|
||||||
source "src/ec/*/*/Kconfig"
|
source "src/ec/*/*/Kconfig"
|
||||||
|
# FIXME move to vendorcode
|
||||||
source "src/drivers/intel/fsp1_0/Kconfig"
|
source "src/drivers/intel/fsp1_0/Kconfig"
|
||||||
|
|
||||||
source "src/southbridge/intel/common/firmware/Kconfig"
|
source "src/southbridge/intel/common/firmware/Kconfig"
|
||||||
|
@ -445,6 +446,7 @@ source "src/device/Kconfig"
|
||||||
|
|
||||||
menu "Generic Drivers"
|
menu "Generic Drivers"
|
||||||
source "src/drivers/*/Kconfig"
|
source "src/drivers/*/Kconfig"
|
||||||
|
source "src/drivers/*/*/Kconfig"
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
config RTC
|
config RTC
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
|
ifeq ($(CONFIG_DRIVERS_DEC_21143),y)
|
||||||
|
|
||||||
ramstage-y += 21143.c
|
ramstage-y += 21143.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
source src/drivers/dec/21143/Kconfig
|
|
|
@ -1 +0,0 @@
|
||||||
subdirs-$(CONFIG_DRIVERS_DEC_21143) += 21143
|
|
|
@ -1,19 +0,0 @@
|
||||||
##
|
|
||||||
## This file is part of the coreboot project.
|
|
||||||
##
|
|
||||||
## Copyright (C) 2013 Google Inc.
|
|
||||||
##
|
|
||||||
## This program is free software; you can redistribute it and/or modify
|
|
||||||
## it under the terms of the GNU General Public License as published by
|
|
||||||
## the Free Software Foundation; version 2 of the License.
|
|
||||||
##
|
|
||||||
## This program is distributed in the hope that it will be useful,
|
|
||||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
## GNU General Public License for more details.
|
|
||||||
##
|
|
||||||
|
|
||||||
source src/drivers/intel/fsp1_1/Kconfig
|
|
||||||
source src/drivers/intel/fsp2_0/Kconfig
|
|
||||||
source src/drivers/intel/gma/Kconfig
|
|
||||||
source src/drivers/intel/i210/Kconfig
|
|
|
@ -1,6 +0,0 @@
|
||||||
subdirs-y += gma
|
|
||||||
subdirs-$(CONFIG_GENERATE_SMBIOS_TABLES) += wifi
|
|
||||||
subdirs-$(CONFIG_PLATFORM_USES_FSP1_0) += fsp1_0
|
|
||||||
subdirs-$(CONFIG_PLATFORM_USES_FSP1_1) += fsp1_1
|
|
||||||
subdirs-$(CONFIG_PLATFORM_USES_FSP2_0) += fsp2_0
|
|
||||||
subdirs-$(CONFIG_DRIVER_INTEL_I210) += i210
|
|
|
@ -13,6 +13,8 @@
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PLATFORM_USES_FSP1_0),y)
|
||||||
|
|
||||||
ramstage-y += fsp_util.c hob.c
|
ramstage-y += fsp_util.c hob.c
|
||||||
romstage-y += fsp_util.c hob.c
|
romstage-y += fsp_util.c hob.c
|
||||||
|
|
||||||
|
@ -44,3 +46,4 @@ mrc.cache-type := mrc_cache
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PLATFORM_USES_FSP1_1),y)
|
||||||
|
|
||||||
verstage-y += car.c
|
verstage-y += car.c
|
||||||
verstage-y += fsp_util.c
|
verstage-y += fsp_util.c
|
||||||
verstage-y += verstage.c
|
verstage-y += verstage.c
|
||||||
|
@ -53,3 +55,5 @@ fsp.bin-file := $(call strip_quotes,$(CONFIG_FSP_FILE))
|
||||||
fsp.bin-position := $(CONFIG_FSP_LOC)
|
fsp.bin-position := $(CONFIG_FSP_LOC)
|
||||||
fsp.bin-type := fsp
|
fsp.bin-type := fsp
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
#
|
||||||
|
# This file is part of the coreboot project.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PLATFORM_USES_FSP2_0),y)
|
||||||
|
|
||||||
romstage-y += hand_off_block.c
|
romstage-y += hand_off_block.c
|
||||||
romstage-y += util.c
|
romstage-y += util.c
|
||||||
romstage-y += memory_init.c
|
romstage-y += memory_init.c
|
||||||
|
@ -9,3 +24,5 @@ ramstage-y += silicon_init.c
|
||||||
ramstage-y += util.c
|
ramstage-y += util.c
|
||||||
|
|
||||||
CPPFLAGS_common += -I$(src)/drivers/intel/fsp2_0/include
|
CPPFLAGS_common += -I$(src)/drivers/intel/fsp2_0/include
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
ramstage-y += i210.c
|
ifeq ($(CONFIG_DRIVER_INTEL_I210),y)
|
||||||
|
|
||||||
|
ramstage-y += i210.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1 +1,19 @@
|
||||||
|
#
|
||||||
|
# This file is part of the coreboot project.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; version 2 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
|
||||||
|
# really?
|
||||||
|
ifeq ($(CONFIG_GENERATE_SMBIOS_TABLES),y)
|
||||||
|
|
||||||
ramstage-$(CONFIG_PCIEXP_PLUGIN_SUPPORT) += wifi.c
|
ramstage-$(CONFIG_PCIEXP_PLUGIN_SUPPORT) += wifi.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Might be removed (alongside with the PS/2 init code) once payloads
|
# Might be removed (alongside with the PS/2 init code) once payloads
|
||||||
# reliably support PS/2 init themselves.
|
# reliably support PS/2 init themselves.
|
||||||
if PC80_SYSTEM
|
|
||||||
|
|
||||||
config DRIVERS_PS2_KEYBOARD
|
config DRIVERS_PS2_KEYBOARD
|
||||||
bool "PS/2 keyboard init"
|
bool "PS/2 keyboard init"
|
||||||
default n
|
default n
|
||||||
|
depends on PC80_SYSTEM
|
||||||
help
|
help
|
||||||
Enable this option to initialize PS/2 keyboards found connected
|
Enable this option to initialize PS/2 keyboards found connected
|
||||||
to the PS/2 port.
|
to the PS/2 port.
|
||||||
|
@ -16,12 +16,3 @@ config DRIVERS_PS2_KEYBOARD
|
||||||
If you know you will only use a payload which does not require
|
If you know you will only use a payload which does not require
|
||||||
this option, then you can say N here to speed up boot time.
|
this option, then you can say N here to speed up boot time.
|
||||||
Otherwise say Y.
|
Otherwise say Y.
|
||||||
|
|
||||||
config DRIVERS_MC146818
|
|
||||||
bool
|
|
||||||
default y if ARCH_X86
|
|
||||||
select RTC
|
|
||||||
|
|
||||||
source src/drivers/pc80/tpm/Kconfig
|
|
||||||
|
|
||||||
endif
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
ifeq ($(CONFIG_ARCH_X86),y)
|
||||||
|
|
||||||
|
ramstage-y += isa-dma.c
|
||||||
|
ramstage-y += i8254.c
|
||||||
|
ramstage-y += i8259.c
|
||||||
|
ramstage-$(CONFIG_UDELAY_IO) += udelay_io.c
|
||||||
|
romstage-$(CONFIG_UDELAY_IO) += udelay_io.c
|
||||||
|
ramstage-y += keyboard.c
|
||||||
|
ramstage-$(CONFIG_SPKMODEM) += spkmodem.c
|
||||||
|
romstage-$(CONFIG_SPKMODEM) += spkmodem.c
|
||||||
|
|
||||||
|
endif
|
|
@ -29,7 +29,7 @@ u16 pic_read_irq_mask(void)
|
||||||
printk(BIOS_DEBUG, "8259 PIC: OCW1 IRQ Mask: 0x%x\n", mask);
|
printk(BIOS_DEBUG, "8259 PIC: OCW1 IRQ Mask: 0x%x\n", mask);
|
||||||
printk(BIOS_SPEW, "\tEnabled IRQs (0 = Unmasked, 1 = Masked off):\n"
|
printk(BIOS_SPEW, "\tEnabled IRQs (0 = Unmasked, 1 = Masked off):\n"
|
||||||
"\t\tMaster\t\tSlave\n");
|
"\t\tMaster\t\tSlave\n");
|
||||||
for(i = 0; i <= 7; i++) {
|
for (i = 0; i <= 7; i++) {
|
||||||
printk(BIOS_SPEW, "\t\tIRQ%X: %x\t\tIRQ%X: %x\n",
|
printk(BIOS_SPEW, "\t\tIRQ%X: %x\t\tIRQ%X: %x\n",
|
||||||
i, (mask >> i) & 1, i + 8, (mask >> (i + 8)) & 1);
|
i, (mask >> i) & 1, i + 8, (mask >> (i + 8)) & 1);
|
||||||
}
|
}
|
||||||
|
@ -53,8 +53,8 @@ void pic_write_irq_mask(u16 mask)
|
||||||
*/
|
*/
|
||||||
void pic_irq_enable(u8 int_num, u8 mask)
|
void pic_irq_enable(u8 int_num, u8 mask)
|
||||||
{
|
{
|
||||||
pic_write_irq_mask(pic_read_irq_mask() & ~(mask << int_num));
|
pic_write_irq_mask(pic_read_irq_mask() & ~(mask << int_num));
|
||||||
pic_read_irq_mask();
|
pic_read_irq_mask();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup_i8259(void)
|
void setup_i8259(void)
|
||||||
|
@ -124,7 +124,8 @@ void i8259_configure_irq_trigger(int int_num, int is_level_triggered)
|
||||||
outb((u8)(int_bits >> 8), ELCR2);
|
outb((u8)(int_bits >> 8), ELCR2);
|
||||||
|
|
||||||
#ifdef PARANOID_IRQ_TRIGGERS
|
#ifdef PARANOID_IRQ_TRIGGERS
|
||||||
/* Try reading back the new values. This seems like an error but is not ... */
|
/* Try reading back the new values. This seems like an error
|
||||||
|
* but it is not. */
|
||||||
if (inb(ELCR1) != (int_bits & 0xff)) {
|
if (inb(ELCR1) != (int_bits & 0xff)) {
|
||||||
printk(BIOS_ERR, "%s: lower order bits are wrong: want 0x%x, got 0x%x\n",
|
printk(BIOS_ERR, "%s: lower order bits are wrong: want 0x%x, got 0x%x\n",
|
||||||
__func__, (int_bits & 0xff), inb(ELCR1));
|
__func__, (int_bits & 0xff), inb(ELCR1));
|
|
@ -67,6 +67,7 @@
|
||||||
static int kbc_input_buffer_empty(void)
|
static int kbc_input_buffer_empty(void)
|
||||||
{
|
{
|
||||||
u32 timeout;
|
u32 timeout;
|
||||||
|
|
||||||
for (timeout = KBC_TIMEOUT_IN_MS;
|
for (timeout = KBC_TIMEOUT_IN_MS;
|
||||||
timeout && (inb(KBD_STATUS) & KBD_IBF); timeout--)
|
timeout && (inb(KBD_STATUS) & KBD_IBF); timeout--)
|
||||||
mdelay(1);
|
mdelay(1);
|
||||||
|
@ -80,6 +81,7 @@ static int kbc_input_buffer_empty(void)
|
||||||
static int kbc_output_buffer_full(void)
|
static int kbc_output_buffer_full(void)
|
||||||
{
|
{
|
||||||
u32 timeout;
|
u32 timeout;
|
||||||
|
|
||||||
for (timeout = KBC_TIMEOUT_IN_MS;
|
for (timeout = KBC_TIMEOUT_IN_MS;
|
||||||
timeout && ((inb(KBD_STATUS) & KBD_OBF) == 0); timeout--)
|
timeout && ((inb(KBD_STATUS) & KBD_OBF) == 0); timeout--)
|
||||||
mdelay(1);
|
mdelay(1);
|
||||||
|
@ -93,6 +95,7 @@ static int kbc_output_buffer_full(void)
|
||||||
static int kbc_cleanup_buffers(void)
|
static int kbc_cleanup_buffers(void)
|
||||||
{
|
{
|
||||||
u32 timeout;
|
u32 timeout;
|
||||||
|
|
||||||
for (timeout = KBC_TIMEOUT_IN_MS;
|
for (timeout = KBC_TIMEOUT_IN_MS;
|
||||||
timeout && (inb(KBD_STATUS) & (KBD_OBF | KBD_IBF)); timeout--) {
|
timeout && (inb(KBD_STATUS) & (KBD_OBF | KBD_IBF)); timeout--) {
|
||||||
mdelay(1);
|
mdelay(1);
|
||||||
|
@ -221,8 +224,10 @@ static u8 send_keyboard(u8 command)
|
||||||
* reset */
|
* reset */
|
||||||
if (command == 0xFF) {
|
if (command == 0xFF) {
|
||||||
u8 retries;
|
u8 retries;
|
||||||
|
|
||||||
for (retries = 9; retries && !kbc_output_buffer_full();
|
for (retries = 9; retries && !kbc_output_buffer_full();
|
||||||
retries--) ;
|
retries--)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
if (!kbc_output_buffer_full()) {
|
if (!kbc_output_buffer_full()) {
|
||||||
printk(BIOS_ERR,
|
printk(BIOS_ERR,
|
||||||
|
@ -288,7 +293,8 @@ uint8_t pc_keyboard_init(uint8_t probe_aux)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the reset command takes some time, so wait a little longer */
|
/* the reset command takes some time, so wait a little longer */
|
||||||
for (retries = 9; retries && !kbc_output_buffer_full(); retries--) ;
|
for (retries = 9; retries && !kbc_output_buffer_full(); retries--)
|
||||||
|
;
|
||||||
|
|
||||||
if (!kbc_output_buffer_full()) {
|
if (!kbc_output_buffer_full()) {
|
||||||
printk(BIOS_ERR, "Timeout waiting for keyboard after reset.\n");
|
printk(BIOS_ERR, "Timeout waiting for keyboard after reset.\n");
|
|
@ -43,7 +43,7 @@ enum {
|
||||||
PIT_CTRL_SELECT_1 = 0x40,
|
PIT_CTRL_SELECT_1 = 0x40,
|
||||||
PIT_CTRL_SELECT_2 = 0x80,
|
PIT_CTRL_SELECT_2 = 0x80,
|
||||||
|
|
||||||
PIT_CTRL_READLOAD_MASK= 0x30,
|
PIT_CTRL_READLOAD_MASK = 0x30,
|
||||||
PIT_CTRL_COUNTER_LATCH = 0x00,
|
PIT_CTRL_COUNTER_LATCH = 0x00,
|
||||||
PIT_CTRL_READLOAD_LSB = 0x10,
|
PIT_CTRL_READLOAD_LSB = 0x10,
|
||||||
PIT_CTRL_READLOAD_MSB = 0x20,
|
PIT_CTRL_READLOAD_MSB = 0x20,
|
||||||
|
@ -68,28 +68,28 @@ enum {
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_tone (uint16_t freq_count, unsigned int duration)
|
make_tone(uint16_t freq_count, unsigned int duration)
|
||||||
{
|
{
|
||||||
outb (PIT_CTRL_SELECT_2
|
outb(PIT_CTRL_SELECT_2
|
||||||
| PIT_CTRL_READLOAD_WORD
|
| PIT_CTRL_READLOAD_WORD
|
||||||
| PIT_CTRL_SQUAREWAVE_GEN
|
| PIT_CTRL_SQUAREWAVE_GEN
|
||||||
| PIT_CTRL_COUNT_BINARY, PIT_CTRL);
|
| PIT_CTRL_COUNT_BINARY, PIT_CTRL);
|
||||||
|
|
||||||
outb (freq_count & 0xff, PIT_COUNTER_2);
|
outb(freq_count & 0xff, PIT_COUNTER_2);
|
||||||
|
|
||||||
outb ((freq_count >> 8) & 0xff, PIT_COUNTER_2);
|
outb((freq_count >> 8) & 0xff, PIT_COUNTER_2);
|
||||||
|
|
||||||
outb (inb (PIT_SPEAKER_PORT)
|
outb(inb(PIT_SPEAKER_PORT)
|
||||||
| PIT_SPK_TMR2 | PIT_SPK_DATA,
|
| PIT_SPK_TMR2 | PIT_SPK_DATA,
|
||||||
PIT_SPEAKER_PORT);
|
PIT_SPEAKER_PORT);
|
||||||
|
|
||||||
for (; duration; duration--) {
|
for (; duration; duration--) {
|
||||||
unsigned short counter, previous_counter = 0xffff;
|
unsigned short counter, previous_counter = 0xffff;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
counter = inb (PIT_COUNTER_2);
|
counter = inb(PIT_COUNTER_2);
|
||||||
counter |= ((uint16_t) inb (PIT_COUNTER_2)) << 8;
|
counter |= ((uint16_t)inb(PIT_COUNTER_2)) << 8;
|
||||||
if (counter > previous_counter)
|
if (counter > previous_counter) {
|
||||||
{
|
|
||||||
previous_counter = counter;
|
previous_counter = counter;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -102,20 +102,22 @@ void spkmodem_tx_byte(unsigned char c)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
make_tone (SPEAKER_PIT_FREQUENCY / 200, 4);
|
make_tone(SPEAKER_PIT_FREQUENCY / 200, 4);
|
||||||
for (i = 7; i >= 0; i--) {
|
for (i = 7; i >= 0; i--) {
|
||||||
if ((c >> i) & 1)
|
if ((c >> i) & 1)
|
||||||
make_tone (SPEAKER_PIT_FREQUENCY / 2000, 20);
|
make_tone(SPEAKER_PIT_FREQUENCY / 2000, 20);
|
||||||
else
|
else
|
||||||
make_tone (SPEAKER_PIT_FREQUENCY / 4000, 40);
|
make_tone(SPEAKER_PIT_FREQUENCY / 4000, 40);
|
||||||
make_tone (SPEAKER_PIT_FREQUENCY / 1000, 10);
|
make_tone(SPEAKER_PIT_FREQUENCY / 1000, 10);
|
||||||
}
|
}
|
||||||
make_tone (SPEAKER_PIT_FREQUENCY / 200, 0);
|
make_tone(SPEAKER_PIT_FREQUENCY / 200, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spkmodem_init(void)
|
void spkmodem_init(void)
|
||||||
{
|
{
|
||||||
/* Some cards need time to come online. Output some message to get it started. */
|
/* Some cards need time to come online.
|
||||||
|
* Output some message to get it started.
|
||||||
|
*/
|
||||||
spkmodem_tx_byte('S');
|
spkmodem_tx_byte('S');
|
||||||
spkmodem_tx_byte('P');
|
spkmodem_tx_byte('P');
|
||||||
spkmodem_tx_byte('K');
|
spkmodem_tx_byte('K');
|
|
@ -8,6 +8,7 @@ void init_timer(void)
|
||||||
void udelay(unsigned usecs)
|
void udelay(unsigned usecs)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < usecs; i++)
|
|
||||||
|
for (i = 0; i < usecs; i++)
|
||||||
inb(0x80);
|
inb(0x80);
|
||||||
}
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
config DRIVERS_MC146818
|
||||||
|
bool
|
||||||
|
default y if ARCH_X86
|
||||||
|
depends on PC80_SYSTEM
|
|
@ -1,20 +1,10 @@
|
||||||
ifeq ($(CONFIG_ARCH_X86),y)
|
ifeq ($(CONFIG_ARCH_X86),y)
|
||||||
|
|
||||||
romstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc.c
|
|
||||||
ramstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc.c
|
|
||||||
ramstage-y += isa-dma.c
|
|
||||||
ramstage-y += i8254.c
|
|
||||||
ramstage-y += i8259.c
|
|
||||||
romstage-$(CONFIG_UDELAY_IO) += udelay_io.c
|
|
||||||
ramstage-$(CONFIG_UDELAY_IO) += udelay_io.c
|
|
||||||
ramstage-y += keyboard.c
|
|
||||||
ramstage-$(CONFIG_SPKMODEM) += spkmodem.c
|
|
||||||
|
|
||||||
romstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc_early.c
|
romstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc_early.c
|
||||||
|
romstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc.c
|
||||||
|
|
||||||
romstage-$(CONFIG_SPKMODEM) += spkmodem.c
|
ramstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc_early.c
|
||||||
|
ramstage-$(CONFIG_DRIVERS_MC146818) += mc146818rtc.c
|
||||||
subdirs-y += tpm vga
|
|
||||||
|
|
||||||
cbfs-files-$(CONFIG_HAVE_CMOS_DEFAULT) += cmos.default
|
cbfs-files-$(CONFIG_HAVE_CMOS_DEFAULT) += cmos.default
|
||||||
cmos.default-file = $(CONFIG_CMOS_DEFAULT_FILE):nvramtool
|
cmos.default-file = $(CONFIG_CMOS_DEFAULT_FILE):nvramtool
|
|
@ -38,11 +38,11 @@
|
||||||
|
|
||||||
#if (defined(__PRE_RAM__) && \
|
#if (defined(__PRE_RAM__) && \
|
||||||
IS_ENABLED(CONFIG_HAVE_ROMSTAGE_NVRAM_CBFS_SPINLOCK))
|
IS_ENABLED(CONFIG_HAVE_ROMSTAGE_NVRAM_CBFS_SPINLOCK))
|
||||||
#define LOCK_NVRAM_CBFS_SPINLOCK spin_lock(romstage_nvram_cbfs_lock());
|
#define LOCK_NVRAM_CBFS_SPINLOCK() spin_lock(romstage_nvram_cbfs_lock())
|
||||||
#define UNLOCK_NVRAM_CBFS_SPINLOCK spin_unlock(romstage_nvram_cbfs_lock());
|
#define UNLOCK_NVRAM_CBFS_SPINLOCK() spin_unlock(romstage_nvram_cbfs_lock())
|
||||||
#else
|
#else
|
||||||
#define LOCK_NVRAM_CBFS_SPINLOCK
|
#define LOCK_NVRAM_CBFS_SPINLOCK() { }
|
||||||
#define UNLOCK_NVRAM_CBFS_SPINLOCK
|
#define UNLOCK_NVRAM_CBFS_SPINLOCK() { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void cmos_reset_date(void)
|
static void cmos_reset_date(void)
|
||||||
|
@ -63,11 +63,12 @@ static void cmos_reset_date(void)
|
||||||
|
|
||||||
static int cmos_checksum_valid(int range_start, int range_end, int cks_loc)
|
static int cmos_checksum_valid(int range_start, int range_end, int cks_loc)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
u16 sum, old_sum;
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_STATIC_OPTION_TABLE))
|
if (IS_ENABLED(CONFIG_STATIC_OPTION_TABLE))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
int i;
|
|
||||||
u16 sum, old_sum;
|
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (i = range_start; i <= range_end; i++)
|
for (i = range_start; i <= range_end; i++)
|
||||||
sum += cmos_read(i);
|
sum += cmos_read(i);
|
||||||
|
@ -80,6 +81,7 @@ static void cmos_set_checksum(int range_start, int range_end, int cks_loc)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u16 sum;
|
u16 sum;
|
||||||
|
|
||||||
sum = 0;
|
sum = 0;
|
||||||
for (i = range_start; i <= range_end; i++)
|
for (i = range_start; i <= range_end; i++)
|
||||||
sum += cmos_read(i);
|
sum += cmos_read(i);
|
||||||
|
@ -155,7 +157,7 @@ void cmos_init(bool invalid)
|
||||||
if (IS_ENABLED(CONFIG_USE_OPTION_TABLE)) {
|
if (IS_ENABLED(CONFIG_USE_OPTION_TABLE)) {
|
||||||
/* See if there is a LB CMOS checksum error */
|
/* See if there is a LB CMOS checksum error */
|
||||||
checksum_invalid = !cmos_checksum_valid(LB_CKS_RANGE_START,
|
checksum_invalid = !cmos_checksum_valid(LB_CKS_RANGE_START,
|
||||||
LB_CKS_RANGE_END,LB_CKS_LOC);
|
LB_CKS_RANGE_END, LB_CKS_LOC);
|
||||||
if (checksum_invalid)
|
if (checksum_invalid)
|
||||||
printk(BIOS_DEBUG, "RTC: coreboot checksum invalid\n");
|
printk(BIOS_DEBUG, "RTC: coreboot checksum invalid\n");
|
||||||
|
|
||||||
|
@ -180,7 +182,7 @@ static enum cb_err get_cmos_value(unsigned long bit, unsigned long length,
|
||||||
void *vret)
|
void *vret)
|
||||||
{
|
{
|
||||||
unsigned char *ret;
|
unsigned char *ret;
|
||||||
unsigned long byte,byte_bit;
|
unsigned long byte, byte_bit;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
unsigned char uchar;
|
unsigned char uchar;
|
||||||
|
|
||||||
|
@ -215,7 +217,7 @@ enum cb_err get_option(void *dest, const char *name)
|
||||||
if (!IS_ENABLED(CONFIG_USE_OPTION_TABLE))
|
if (!IS_ENABLED(CONFIG_USE_OPTION_TABLE))
|
||||||
return CB_CMOS_OTABLE_DISABLED;
|
return CB_CMOS_OTABLE_DISABLED;
|
||||||
|
|
||||||
LOCK_NVRAM_CBFS_SPINLOCK
|
LOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
|
|
||||||
/* Figure out how long name is */
|
/* Figure out how long name is */
|
||||||
namelen = strnlen(name, CMOS_MAX_NAME_LENGTH);
|
namelen = strnlen(name, CMOS_MAX_NAME_LENGTH);
|
||||||
|
@ -227,12 +229,12 @@ enum cb_err get_option(void *dest, const char *name)
|
||||||
printk(BIOS_ERR, "RTC: cmos_layout.bin could not be found. "
|
printk(BIOS_ERR, "RTC: cmos_layout.bin could not be found. "
|
||||||
"Options are disabled\n");
|
"Options are disabled\n");
|
||||||
|
|
||||||
UNLOCK_NVRAM_CBFS_SPINLOCK
|
UNLOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
return CB_CMOS_LAYOUT_NOT_FOUND;
|
return CB_CMOS_LAYOUT_NOT_FOUND;
|
||||||
}
|
}
|
||||||
ce = (struct cmos_entries*)((unsigned char *)ct + ct->header_length);
|
ce = (struct cmos_entries *)((unsigned char *)ct + ct->header_length);
|
||||||
for(; ce->tag == LB_TAG_OPTION;
|
for (; ce->tag == LB_TAG_OPTION;
|
||||||
ce = (struct cmos_entries*)((unsigned char *)ce + ce->size)) {
|
ce = (struct cmos_entries *)((unsigned char *)ce + ce->size)) {
|
||||||
if (memcmp(ce->name, name, namelen) == 0) {
|
if (memcmp(ce->name, name, namelen) == 0) {
|
||||||
found = 1;
|
found = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -240,19 +242,19 @@ enum cb_err get_option(void *dest, const char *name)
|
||||||
}
|
}
|
||||||
if (!found) {
|
if (!found) {
|
||||||
printk(BIOS_DEBUG, "WARNING: No CMOS option '%s'.\n", name);
|
printk(BIOS_DEBUG, "WARNING: No CMOS option '%s'.\n", name);
|
||||||
UNLOCK_NVRAM_CBFS_SPINLOCK
|
UNLOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
return CB_CMOS_OPTION_NOT_FOUND;
|
return CB_CMOS_OPTION_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_cmos_value(ce->bit, ce->length, dest) != CB_SUCCESS) {
|
if (get_cmos_value(ce->bit, ce->length, dest) != CB_SUCCESS) {
|
||||||
UNLOCK_NVRAM_CBFS_SPINLOCK
|
UNLOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
return CB_CMOS_ACCESS_ERROR;
|
return CB_CMOS_ACCESS_ERROR;
|
||||||
}
|
}
|
||||||
if (!cmos_checksum_valid(LB_CKS_RANGE_START, LB_CKS_RANGE_END, LB_CKS_LOC)) {
|
if (!cmos_checksum_valid(LB_CKS_RANGE_START, LB_CKS_RANGE_END, LB_CKS_LOC)) {
|
||||||
UNLOCK_NVRAM_CBFS_SPINLOCK
|
UNLOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
return CB_CMOS_CHECKSUM_INVALID;
|
return CB_CMOS_CHECKSUM_INVALID;
|
||||||
}
|
}
|
||||||
UNLOCK_NVRAM_CBFS_SPINLOCK
|
UNLOCK_NVRAM_CBFS_SPINLOCK();
|
||||||
return CB_SUCCESS;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +262,7 @@ static enum cb_err set_cmos_value(unsigned long bit, unsigned long length,
|
||||||
void *vret)
|
void *vret)
|
||||||
{
|
{
|
||||||
unsigned char *ret;
|
unsigned char *ret;
|
||||||
unsigned long byte,byte_bit;
|
unsigned long byte, byte_bit;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
unsigned char uchar, mask;
|
unsigned char uchar, mask;
|
||||||
unsigned int chksum_update_needed = 0;
|
unsigned int chksum_update_needed = 0;
|
||||||
|
@ -319,9 +321,9 @@ enum cb_err set_option(const char *name, void *value)
|
||||||
"Options are disabled\n");
|
"Options are disabled\n");
|
||||||
return CB_CMOS_LAYOUT_NOT_FOUND;
|
return CB_CMOS_LAYOUT_NOT_FOUND;
|
||||||
}
|
}
|
||||||
ce = (struct cmos_entries*)((unsigned char *)ct + ct->header_length);
|
ce = (struct cmos_entries *)((unsigned char *)ct + ct->header_length);
|
||||||
for(; ce->tag == LB_TAG_OPTION;
|
for (; ce->tag == LB_TAG_OPTION;
|
||||||
ce = (struct cmos_entries*)((unsigned char *)ce + ce->size)) {
|
ce = (struct cmos_entries *)((unsigned char *)ce + ce->size)) {
|
||||||
if (memcmp(ce->name, name, namelen) == 0) {
|
if (memcmp(ce->name, name, namelen) == 0) {
|
||||||
found = 1;
|
found = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -338,11 +340,11 @@ enum cb_err set_option(const char *name, void *value)
|
||||||
/* make sure the string is null terminated */
|
/* make sure the string is null terminated */
|
||||||
if (set_cmos_value(ce->bit + ce->length - 8, 8, &(u8[]){0})
|
if (set_cmos_value(ce->bit + ce->length - 8, 8, &(u8[]){0})
|
||||||
!= CB_SUCCESS)
|
!= CB_SUCCESS)
|
||||||
return (CB_CMOS_ACCESS_ERROR);
|
return CB_CMOS_ACCESS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set_cmos_value(ce->bit, length, value) != CB_SUCCESS)
|
if (set_cmos_value(ce->bit, length, value) != CB_SUCCESS)
|
||||||
return (CB_CMOS_ACCESS_ERROR);
|
return CB_CMOS_ACCESS_ERROR;
|
||||||
|
|
||||||
return CB_SUCCESS;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -352,7 +354,7 @@ enum cb_err set_option(const char *name, void *value)
|
||||||
* hurts some OSes. Even if we don't set USE_OPTION_TABLE, we need
|
* hurts some OSes. Even if we don't set USE_OPTION_TABLE, we need
|
||||||
* to make sure the date is valid.
|
* to make sure the date is valid.
|
||||||
*/
|
*/
|
||||||
void cmos_check_update_date()
|
void cmos_check_update_date(void)
|
||||||
{
|
{
|
||||||
u8 year, century;
|
u8 year, century;
|
||||||
|
|
||||||
|
@ -369,7 +371,8 @@ void cmos_check_update_date()
|
||||||
cmos_reset_date();
|
cmos_reset_date();
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtc_set(const struct rtc_time *time){
|
int rtc_set(const struct rtc_time *time)
|
||||||
|
{
|
||||||
cmos_write(bin2bcd(time->sec), RTC_CLK_SECOND);
|
cmos_write(bin2bcd(time->sec), RTC_CLK_SECOND);
|
||||||
cmos_write(bin2bcd(time->min), RTC_CLK_MINUTE);
|
cmos_write(bin2bcd(time->min), RTC_CLK_MINUTE);
|
||||||
cmos_write(bin2bcd(time->hour), RTC_CLK_HOUR);
|
cmos_write(bin2bcd(time->hour), RTC_CLK_HOUR);
|
|
@ -22,11 +22,11 @@ static int cmos_chksum_valid(void)
|
||||||
#if CONFIG_USE_OPTION_TABLE
|
#if CONFIG_USE_OPTION_TABLE
|
||||||
unsigned char addr;
|
unsigned char addr;
|
||||||
u16 sum, old_sum;
|
u16 sum, old_sum;
|
||||||
|
|
||||||
sum = 0;
|
sum = 0;
|
||||||
/* Compute the cmos checksum */
|
/* Compute the cmos checksum */
|
||||||
for(addr = LB_CKS_RANGE_START; addr <= LB_CKS_RANGE_END; addr++) {
|
for (addr = LB_CKS_RANGE_START; addr <= LB_CKS_RANGE_END; addr++)
|
||||||
sum += cmos_read(addr);
|
sum += cmos_read(addr);
|
||||||
}
|
|
||||||
|
|
||||||
/* Read the stored checksum */
|
/* Read the stored checksum */
|
||||||
old_sum = cmos_read(LB_CKS_LOC) << 8;
|
old_sum = cmos_read(LB_CKS_LOC) << 8;
|
||||||
|
@ -95,6 +95,7 @@ unsigned read_option_lowlevel(unsigned start, unsigned size, unsigned def)
|
||||||
{
|
{
|
||||||
#if CONFIG_USE_OPTION_TABLE
|
#if CONFIG_USE_OPTION_TABLE
|
||||||
unsigned byte;
|
unsigned byte;
|
||||||
|
|
||||||
byte = cmos_read(start/8);
|
byte = cmos_read(start/8);
|
||||||
return (byte >> (start & 7U)) & ((1U << size) - 1U);
|
return (byte >> (start & 7U)) & ((1U << size) - 1U);
|
||||||
#else
|
#else
|
|
@ -1,4 +1,8 @@
|
||||||
|
ifeq ($(CONFIG_ARCH_X86),y)
|
||||||
|
|
||||||
verstage-$(CONFIG_LPC_TPM) += tpm.c
|
verstage-$(CONFIG_LPC_TPM) += tpm.c
|
||||||
romstage-$(CONFIG_LPC_TPM) += tpm.c
|
romstage-$(CONFIG_LPC_TPM) += tpm.c
|
||||||
ramstage-$(CONFIG_LPC_TPM) += tpm.c
|
ramstage-$(CONFIG_LPC_TPM) += tpm.c
|
||||||
romstage-$(CONFIG_LPC_TPM) += romstage.c
|
romstage-$(CONFIG_LPC_TPM) += romstage.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
|
ifeq ($(CONFIG_ARCH_X86),y)
|
||||||
|
|
||||||
ramstage-$(CONFIG_VGA) += vga_io.c
|
ramstage-$(CONFIG_VGA) += vga_io.c
|
||||||
ramstage-$(CONFIG_VGA) += vga_palette.c
|
ramstage-$(CONFIG_VGA) += vga_palette.c
|
||||||
ramstage-$(CONFIG_VGA) += vga_font_8x16.c
|
ramstage-$(CONFIG_VGA) += vga_font_8x16.c
|
||||||
ramstage-$(CONFIG_VGA) += vga.c
|
ramstage-$(CONFIG_VGA) += vga.c
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
|
@ -21,6 +21,6 @@ Device (SIO) {
|
||||||
|
|
||||||
// Keyboard or AUX port (a.k.a Mouse)
|
// Keyboard or AUX port (a.k.a Mouse)
|
||||||
#ifdef SIO_EC_ENABLE_PS2K
|
#ifdef SIO_EC_ENABLE_PS2K
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,7 +179,7 @@ enum cb_err get_option(void *dest, const char *name);
|
||||||
unsigned read_option_lowlevel(unsigned start, unsigned size, unsigned def);
|
unsigned read_option_lowlevel(unsigned start, unsigned size, unsigned def);
|
||||||
|
|
||||||
#else /* defined(__ROMCC__) */
|
#else /* defined(__ROMCC__) */
|
||||||
#include <drivers/pc80/mc146818rtc_early.c>
|
#include <drivers/pc80/rtc/mc146818rtc_early.c>
|
||||||
#endif /* !defined(__ROMCC__) */
|
#endif /* !defined(__ROMCC__) */
|
||||||
#define read_option(name, default) read_option_lowlevel(CMOS_VSTART_ ##name, CMOS_VLEN_ ##name, (default))
|
#define read_option(name, default) read_option_lowlevel(CMOS_VSTART_ ##name, CMOS_VLEN_ ##name, (default))
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/x86/cache.h>
|
#include <cpu/x86/cache.h>
|
||||||
#include <halt.h>
|
#include <halt.h>
|
||||||
#include "drivers/pc80/i8254.c"
|
#include "drivers/pc80/pc/i8254.c"
|
||||||
#include <northbridge/dmp/vortex86ex/northbridge.h>
|
#include <northbridge/dmp/vortex86ex/northbridge.h>
|
||||||
#include <southbridge/dmp/vortex86ex/southbridge.h>
|
#include <southbridge/dmp/vortex86ex/southbridge.h>
|
||||||
#include "northbridge/dmp/vortex86ex/raminit.c"
|
#include "northbridge/dmp/vortex86ex/raminit.c"
|
||||||
|
|
|
@ -15,4 +15,4 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -13,4 +13,4 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <drivers/pc80/ps2_controller.asl>
|
#include <drivers/pc80/pc/ps2_controller.asl>
|
||||||
|
|
|
@ -27,7 +27,7 @@ romstage-y += ./../../../southbridge/via/common/early_smbus_is_busy.c
|
||||||
romstage-y += ./../../../southbridge/via/common/early_smbus_print_error.c
|
romstage-y += ./../../../southbridge/via/common/early_smbus_print_error.c
|
||||||
romstage-y += ./../../../southbridge/via/common/early_smbus_reset.c
|
romstage-y += ./../../../southbridge/via/common/early_smbus_reset.c
|
||||||
romstage-y += ./../../../southbridge/via/common/early_smbus_wait_until_ready.c
|
romstage-y += ./../../../southbridge/via/common/early_smbus_wait_until_ready.c
|
||||||
romstage-y += ./../../../drivers/pc80/udelay_io.c
|
romstage-y += ./../../../drivers/pc80/pc/udelay_io.c
|
||||||
|
|
||||||
ramstage-y += pci_util.c
|
ramstage-y += pci_util.c
|
||||||
ramstage-y += pcie.c
|
ramstage-y += pcie.c
|
||||||
|
|
|
@ -64,7 +64,7 @@ Method(_PTS,1)
|
||||||
defer si.Close()
|
defer si.Close()
|
||||||
|
|
||||||
if hasKeyboard {
|
if hasKeyboard {
|
||||||
si.WriteString("#include <drivers/pc80/ps2_controller.asl>\n")
|
si.WriteString("#include <drivers/pc80/pc/ps2_controller.asl>\n")
|
||||||
MainboardInit += fmt.Sprintf("\tpc_keyboard_init();\n")
|
MainboardInit += fmt.Sprintf("\tpc_keyboard_init();\n")
|
||||||
MainboardIncludes = append(MainboardIncludes, "pc80/keyboard.h")
|
MainboardIncludes = append(MainboardIncludes, "pc80/keyboard.h")
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ Method(_PTS,1)
|
||||||
si := Create(ctx, "acpi/superio.asl")
|
si := Create(ctx, "acpi/superio.asl")
|
||||||
defer si.Close()
|
defer si.Close()
|
||||||
|
|
||||||
si.WriteString("#include <drivers/pc80/ps2_controller.asl>\n")
|
si.WriteString("#include <drivers/pc80/pc/ps2_controller.asl>\n")
|
||||||
|
|
||||||
dock := Create(ctx, "dock.c")
|
dock := Create(ctx, "dock.c")
|
||||||
defer dock.Close()
|
defer dock.Close()
|
||||||
|
|
Loading…
Reference in New Issue