coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
romstage.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
northbridge/intel/haswell/raminit.h
>
4
#include <
southbridge/intel/lynxpoint/pch.h
>
5
6
#include "
variant.h
"
7
8
void
mainboard_config_rcba
(
void
)
9
{
10
/*
11
* GFX INTA -> PIRQA (MSI)
12
* D28IP_P1IP PCIE INTA -> PIRQA
13
* D29IP_E1P EHCI INTA -> PIRQD
14
* D20IP_XHCI XHCI INTA -> PIRQC (MSI)
15
* D31IP_SIP SATA INTA -> PIRQF (MSI)
16
* D31IP_SMIP SMBUS INTB -> PIRQG
17
* D31IP_TTIP THRT INTC -> PIRQA
18
* D27IP_ZIP HDA INTA -> PIRQG (MSI)
19
*/
20
21
/* Device interrupt pin register (board specific) */
22
RCBA32
(
D31IP
) = (
INTC
<<
D31IP_TTIP
) | (
NOINT
<<
D31IP_SIP2
) |
23
(
INTB
<<
D31IP_SMIP
) | (
INTA
<<
D31IP_SIP
);
24
RCBA32
(
D29IP
) = (
INTA
<<
D29IP_E1P
);
25
RCBA32
(
D28IP
) = (
INTA
<<
D28IP_P1IP
) | (
INTC
<<
D28IP_P3IP
) |
26
(
INTB
<<
D28IP_P4IP
);
27
RCBA32
(
D27IP
) = (
INTA
<<
D27IP_ZIP
);
28
RCBA32
(
D26IP
) = (
INTA
<<
D26IP_E2P
);
29
RCBA32
(
D22IP
) = (
NOINT
<<
D22IP_MEI1IP
);
30
RCBA32
(
D20IP
) = (
INTA
<<
D20IP_XHCI
);
31
32
/* Device interrupt route registers */
33
RCBA16
(
D31IR
) =
DIR_ROUTE
(
PIRQG
,
PIRQC
,
PIRQB
,
PIRQA
);
/* LPC */
34
RCBA16
(
D29IR
) =
DIR_ROUTE
(
PIRQD
,
PIRQD
,
PIRQD
,
PIRQD
);
/* EHCI */
35
RCBA16
(
D28IR
) =
DIR_ROUTE
(
PIRQA
,
PIRQB
,
PIRQC
,
PIRQD
);
/* PCIE */
36
RCBA16
(
D27IR
) =
DIR_ROUTE
(
PIRQG
,
PIRQG
,
PIRQG
,
PIRQG
);
/* HDA */
37
RCBA16
(
D22IR
) =
DIR_ROUTE
(
PIRQA
,
PIRQA
,
PIRQA
,
PIRQA
);
/* ME */
38
RCBA16
(
D21IR
) =
DIR_ROUTE
(
PIRQE
,
PIRQF
,
PIRQF
,
PIRQF
);
/* SIO */
39
RCBA16
(
D20IR
) =
DIR_ROUTE
(
PIRQC
,
PIRQC
,
PIRQC
,
PIRQC
);
/* XHCI */
40
RCBA16
(
D23IR
) =
DIR_ROUTE
(
PIRQH
,
PIRQH
,
PIRQH
,
PIRQH
);
/* SDIO */
41
}
42
43
void
mb_get_spd_map
(
struct
spd_info
*spdi)
44
{
45
spdi->
spd_index
=
variant_get_spd_index
();
46
spdi->
addresses
[0] =
SPD_MEMORY_DOWN
;
47
spdi->
addresses
[2] =
variant_is_dual_channel
(spdi->
spd_index
) ?
SPD_MEMORY_DOWN
: 0;
48
}
PIRQH
#define PIRQH
Definition:
irq.h:101
PIRQC
#define PIRQC
Definition:
irq.h:96
PIRQA
#define PIRQA
Definition:
irq.h:94
PIRQD
#define PIRQD
Definition:
irq.h:97
PIRQB
#define PIRQB
Definition:
irq.h:95
PIRQF
#define PIRQF
Definition:
irq.h:99
PIRQE
#define PIRQE
Definition:
irq.h:98
PIRQG
#define PIRQG
Definition:
irq.h:100
raminit.h
SPD_MEMORY_DOWN
#define SPD_MEMORY_DOWN
Definition:
raminit.h:8
mainboard_config_rcba
void mainboard_config_rcba(void)
Definition:
romstage.c:7
mb_get_spd_map
void mb_get_spd_map(struct spd_info *spdi)
Definition:
romstage.c:19
variant_is_dual_channel
bool variant_is_dual_channel(const unsigned int spd_index)
Definition:
romstage.c:14
variant_get_spd_index
unsigned int variant_get_spd_index(void)
Definition:
romstage.c:8
D28IP_P3IP
#define D28IP_P3IP
Definition:
rcba.h:71
D31IP_TTIP
#define D31IP_TTIP
Definition:
rcba.h:57
D20IR
#define D20IR
Definition:
rcba.h:96
D31IR
#define D31IR
Definition:
rcba.h:87
D22IP
#define D22IP
Definition:
rcba.h:80
D31IP_SMIP
#define D31IP_SMIP
Definition:
rcba.h:59
D28IR
#define D28IR
Definition:
rcba.h:90
INTA
#define INTA
Definition:
rcba.h:21
D26IP_E2P
#define D26IP_E2P
Definition:
rcba.h:77
D31IP
#define D31IP
Definition:
rcba.h:56
D31IP_SIP2
#define D31IP_SIP2
Definition:
rcba.h:58
D22IR
#define D22IR
Definition:
rcba.h:95
D20IP_XHCI
#define D20IP_XHCI
Definition:
rcba.h:86
D29IP
#define D29IP
Definition:
rcba.h:63
DIR_ROUTE
#define DIR_ROUTE(a, b, c, d)
Definition:
rcba.h:116
D29IR
#define D29IR
Definition:
rcba.h:89
D27IP
#define D27IP
Definition:
rcba.h:74
D27IP_ZIP
#define D27IP_ZIP
Definition:
rcba.h:75
D27IR
#define D27IR
Definition:
rcba.h:91
NOINT
#define NOINT
Definition:
rcba.h:20
D28IP_P4IP
#define D28IP_P4IP
Definition:
rcba.h:70
D20IP
#define D20IP
Definition:
rcba.h:85
D23IR
#define D23IR
Definition:
rcba.h:94
INTC
#define INTC
Definition:
rcba.h:23
D26IP
#define D26IP
Definition:
rcba.h:76
D28IP_P1IP
#define D28IP_P1IP
Definition:
rcba.h:73
D21IR
#define D21IR
Definition:
rcba.h:97
D29IP_E1P
#define D29IP_E1P
Definition:
rcba.h:64
D28IP
#define D28IP
Definition:
rcba.h:65
D31IP_SIP
#define D31IP_SIP
Definition:
rcba.h:60
INTB
#define INTB
Definition:
rcba.h:22
D22IP_MEI1IP
#define D22IP_MEI1IP
Definition:
rcba.h:84
RCBA16
#define RCBA16(x)
Definition:
rcba.h:13
RCBA32
#define RCBA32(x)
Definition:
rcba.h:14
pch.h
spd_info
Definition:
spd.h:11
spd_info::spd_index
unsigned int spd_index
Definition:
raminit.h:12
spd_info::addresses
uint8_t addresses[4]
Definition:
raminit.h:11
variant.h
src
mainboard
google
slippy
romstage.c
Generated by
1.9.1