coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mainboard.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
device/device.h
>
4
#include <
device/pci.h
>
5
#include <
device/pci_ops.h
>
6
#include <
pc80/keyboard.h
>
7
8
static
const
unsigned
char
qemu_i440fx_irqs
[] = {
9
11, 10, 10, 11,
10
11, 10, 10, 11,
11
};
12
13
#define D0F0_PAM(x) (0x59 + (x))
/* 0-6 */
14
15
static
void
qemu_nb_init
(
struct
device
*dev)
16
{
17
/* Map memory at 0xc0000 - 0xfffff */
18
int
i;
19
pci_or_config8
(dev,
D0F0_PAM
(0), 0x30);
20
for
(i = 1; i <= 6; i++)
21
pci_write_config8
(dev,
D0F0_PAM
(i), 0x33);
22
23
/* This sneaked in here, because Qemu does not emulate a SuperIO chip. */
24
pc_keyboard_init
(
NO_AUX_DEVICE
);
25
26
/* setup IRQ routing */
27
for
(i = 0; i < 32; i++) {
28
struct
device
*d =
pcidev_on_root
(i, 0);
29
if
(d)
30
pci_assign_irqs(d,
qemu_i440fx_irqs
+ (i % 4));
31
}
32
}
33
34
static
void
qemu_nb_read_resources
(
struct
device
*dev)
35
{
36
pci_dev_read_resources
(dev);
37
38
if
(
CONFIG
(ARCH_RAMSTAGE_X86_64)) {
39
/* Reserve page tables in DRAM. FIXME: Remove once x86_64 page tables reside in CBMEM */
40
reserved_ram_resource
(dev, 0, CONFIG_ARCH_X86_64_PGTBL_LOC /
KiB
,
41
(6 * 0x1000) /
KiB
);
42
}
43
}
44
45
static
struct
device_operations
nb_operations
= {
46
.
read_resources
=
qemu_nb_read_resources
,
47
.set_resources =
pci_dev_set_resources
,
48
.enable_resources =
pci_dev_enable_resources
,
49
.init =
qemu_nb_init
,
50
};
51
52
static
const
struct
pci_driver nb_driver
__pci_driver
= {
53
.ops = &
nb_operations
,
54
.vendor = 0x8086,
55
.device = 0x1237,
56
};
KiB
#define KiB
Definition:
helpers.h:75
pcidev_on_root
DEVTREE_CONST struct device * pcidev_on_root(uint8_t dev, uint8_t fn)
Definition:
device_const.c:260
CONFIG
@ CONFIG
Definition:
dsi_common.h:201
qemu_nb_read_resources
static void qemu_nb_read_resources(struct device *dev)
Definition:
mainboard.c:34
D0F0_PAM
#define D0F0_PAM(x)
Definition:
mainboard.c:13
qemu_nb_init
static void qemu_nb_init(struct device *dev)
Definition:
mainboard.c:15
nb_operations
static struct device_operations nb_operations
Definition:
mainboard.c:45
qemu_i440fx_irqs
static const unsigned char qemu_i440fx_irqs[]
Definition:
mainboard.c:8
__pci_driver
static const struct pci_driver nb_driver __pci_driver
Definition:
mainboard.c:52
device.h
reserved_ram_resource
#define reserved_ram_resource(dev, idx, basek, sizek)
Definition:
device.h:324
pci_ops.h
pci_or_config8
static __always_inline void pci_or_config8(const struct device *dev, u16 reg, u8 ormask)
Definition:
pci_ops.h:169
pci_write_config8
static __always_inline void pci_write_config8(const struct device *dev, u16 reg, u8 val)
Definition:
pci_ops.h:64
pc_keyboard_init
uint8_t pc_keyboard_init(uint8_t probe_aux)
Definition:
keyboard.c:229
keyboard.h
NO_AUX_DEVICE
#define NO_AUX_DEVICE
Definition:
keyboard.h:6
pci.h
pci_dev_enable_resources
void pci_dev_enable_resources(struct device *dev)
Definition:
pci_device.c:721
pci_dev_read_resources
void pci_dev_read_resources(struct device *dev)
Definition:
pci_device.c:534
pci_dev_set_resources
void pci_dev_set_resources(struct device *dev)
Definition:
pci_device.c:691
device_operations
Definition:
device.h:38
device_operations::read_resources
void(* read_resources)(struct device *dev)
Definition:
device.h:39
device
Definition:
device.h:107
src
mainboard
emulation
qemu-i440fx
mainboard.c
Generated by
1.9.1