coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
bootblock.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
amdblocks/acpimmio.h
>
4
#include <
bootblock_common.h
>
5
#include <
device/pnp_def.h
>
6
#include <
device/pnp_ops.h
>
7
#include <
superio/ite/common/ite.h
>
8
#include <
superio/ite/it8728f/it8728f.h
>
9
10
#define SERIAL_DEV PNP_DEV(0x2e, IT8728F_SP1)
11
#define GPIO_DEV PNP_DEV(0x2e, IT8728F_GPIO)
12
#define ENVC_DEV PNP_DEV(0x2e, IT8728F_EC)
13
14
static
void
ite_evc_conf
(
pnp_devfn_t
dev)
15
{
16
pnp_enter_conf_state
(dev);
17
pnp_set_logical_device
(dev);
18
pnp_write_config
(dev,
PNP_IDX_MSC1
, 0x40);
19
pnp_write_config
(dev,
PNP_IDX_MSC4
, 0x80);
20
pnp_write_config
(dev,
PNP_IDX_MSC5
, 0x00);
21
pnp_write_config
(dev,
PNP_IDX_MSC6
, 0xf0);
22
pnp_write_config
(dev,
PNP_IDX_MSC9
, 0x48);
23
pnp_write_config
(dev,
PNP_IDX_MSCA
, 0x00);
24
pnp_write_config
(dev,
PNP_IDX_MSCB
, 0x00);
25
pnp_exit_conf_state
(dev);
26
}
27
28
static
void
ite_gpio_conf
(
pnp_devfn_t
dev)
29
{
30
pnp_enter_conf_state
(dev);
31
pnp_set_logical_device
(dev);
32
pnp_write_config
(dev, 0x25, 0x80);
33
pnp_write_config
(dev, 0x26, 0x07);
34
pnp_write_config
(dev, 0x28, 0x81);
35
pnp_write_config
(dev, 0x2c, 0x06);
36
pnp_write_config
(dev,
PNP_IDX_IRQ1
, 0x00);
37
pnp_write_config
(dev, 0x73, 0x00);
38
pnp_write_config
(dev, 0xb3, 0x01);
39
pnp_write_config
(dev, 0xb8, 0x00);
40
pnp_write_config
(dev, 0xc0, 0x00);
41
pnp_write_config
(dev, 0xc3, 0x00);
42
pnp_write_config
(dev, 0xc8, 0x00);
43
pnp_write_config
(dev, 0xc9, 0x07);
44
pnp_write_config
(dev, 0xcb, 0x01);
45
pnp_write_config
(dev,
PNP_IDX_MSC0
, 0x10);
46
pnp_write_config
(dev,
PNP_IDX_MSC4
, 0x27);
47
pnp_write_config
(dev,
PNP_IDX_MSC8
, 0x20);
48
pnp_write_config
(dev,
PNP_IDX_MSC9
, 0x01);
49
pnp_exit_conf_state
(dev);
50
}
51
52
void
bootblock_mainboard_early_init
(
void
)
53
{
54
/* Disable PCI-PCI bridge and release GPIO32/33 for other uses. */
55
pm_write8
(0xea, 0x1);
56
57
/* Set auxiliary output clock frequency on OSCOUT1 pin to be 48MHz */
58
misc_write32
(0x28,
misc_read32
(0x28) & 0xfff8ffff);
59
60
/* Enable Auxiliary Clock1, disable FCH 14 MHz OscClk */
61
misc_write32
(0x40,
misc_read32
(0x40) & 0xffffbffb);
62
63
/* Configure SIO as made under vendor BIOS */
64
ite_evc_conf
(
ENVC_DEV
);
65
ite_gpio_conf
(
GPIO_DEV
);
66
67
/* Enable serial output on it8728f */
68
ite_kill_watchdog
(
GPIO_DEV
);
69
ite_enable_serial
(
SERIAL_DEV
, CONFIG_TTYS0_BASE);
70
}
acpimmio.h
misc_read32
static uint32_t misc_read32(uint8_t reg)
Definition:
acpimmio.h:266
misc_write32
static void misc_write32(uint8_t reg, uint32_t value)
Definition:
acpimmio.h:281
pm_write8
static void pm_write8(uint8_t reg, uint8_t value)
Definition:
acpimmio.h:181
bootblock_common.h
pnp_enter_conf_state
static void pnp_enter_conf_state(pnp_devfn_t dev)
Definition:
bootblock.c:13
pnp_exit_conf_state
static void pnp_exit_conf_state(pnp_devfn_t dev)
Definition:
bootblock.c:19
it8728f.h
ite_enable_serial
void ite_enable_serial(pnp_devfn_t dev, u16 iobase)
Definition:
early_serial.c:61
ite_kill_watchdog
void ite_kill_watchdog(pnp_devfn_t dev)
Definition:
early_serial.c:129
ite.h
bootblock_mainboard_early_init
__weak void bootblock_mainboard_early_init(void)
Definition:
bootblock.c:16
GPIO_DEV
#define GPIO_DEV
Definition:
bootblock.c:11
ite_evc_conf
static void ite_evc_conf(pnp_devfn_t dev)
Definition:
bootblock.c:14
ite_gpio_conf
static void ite_gpio_conf(pnp_devfn_t dev)
Definition:
bootblock.c:28
ENVC_DEV
#define ENVC_DEV
Definition:
bootblock.c:12
SERIAL_DEV
#define SERIAL_DEV
Definition:
bootblock.c:10
pnp_def.h
PNP_IDX_MSC0
#define PNP_IDX_MSC0
Definition:
pnp_def.h:14
PNP_IDX_MSC9
#define PNP_IDX_MSC9
Definition:
pnp_def.h:23
PNP_IDX_MSCA
#define PNP_IDX_MSCA
Definition:
pnp_def.h:24
PNP_IDX_MSCB
#define PNP_IDX_MSCB
Definition:
pnp_def.h:25
PNP_IDX_MSC5
#define PNP_IDX_MSC5
Definition:
pnp_def.h:19
PNP_IDX_MSC4
#define PNP_IDX_MSC4
Definition:
pnp_def.h:18
PNP_IDX_IRQ1
#define PNP_IDX_IRQ1
Definition:
pnp_def.h:11
PNP_IDX_MSC8
#define PNP_IDX_MSC8
Definition:
pnp_def.h:22
PNP_IDX_MSC1
#define PNP_IDX_MSC1
Definition:
pnp_def.h:15
PNP_IDX_MSC6
#define PNP_IDX_MSC6
Definition:
pnp_def.h:20
pnp_set_logical_device
void pnp_set_logical_device(struct device *dev)
Definition:
pnp_device.c:59
pnp_write_config
void pnp_write_config(struct device *dev, u8 reg, u8 value)
Definition:
pnp_device.c:38
pnp_ops.h
pnp_devfn_t
u32 pnp_devfn_t
Definition:
pnp_type.h:8
src
mainboard
biostar
am1ml
bootblock.c
Generated by
1.9.1