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/haswell.h
>
4
#include <
northbridge/intel/haswell/raminit.h
>
5
#include <
southbridge/intel/lynxpoint/pch.h
>
6
7
void
mainboard_config_rcba
(
void
)
8
{
9
/*
10
* GFX INTA -> PIRQA (MSI)
11
* D28IP_P1IP PCIE INTA -> PIRQA
12
* D29IP_E1P EHCI INTA -> PIRQD
13
* D20IP_XHCI XHCI INTA -> PIRQC (MSI)
14
* D31IP_SIP SATA INTA -> PIRQF (MSI)
15
* D31IP_SMIP SMBUS INTB -> PIRQG
16
* D31IP_TTIP THRT INTC -> PIRQA
17
* D27IP_ZIP HDA INTA -> PIRQG (MSI)
18
*/
19
20
/* Device interrupt pin register (board specific) */
21
RCBA32
(
D31IP
) = (
INTC
<<
D31IP_TTIP
) | (
NOINT
<<
D31IP_SIP2
) |
22
(
INTB
<<
D31IP_SMIP
) | (
INTA
<<
D31IP_SIP
);
23
RCBA32
(
D29IP
) = (
INTA
<<
D29IP_E1P
);
24
RCBA32
(
D28IP
) = (
INTA
<<
D28IP_P1IP
) | (
INTC
<<
D28IP_P3IP
) |
25
(
INTB
<<
D28IP_P4IP
);
26
RCBA32
(
D27IP
) = (
INTA
<<
D27IP_ZIP
);
27
RCBA32
(
D26IP
) = (
INTA
<<
D26IP_E2P
);
28
RCBA32
(
D22IP
) = (
NOINT
<<
D22IP_MEI1IP
);
29
RCBA32
(
D20IP
) = (
INTA
<<
D20IP_XHCI
);
30
31
/* Device interrupt route registers */
32
RCBA16
(
D31IR
) =
DIR_ROUTE
(
PIRQG
,
PIRQC
,
PIRQB
,
PIRQA
);
/* LPC */
33
RCBA16
(
D29IR
) =
DIR_ROUTE
(
PIRQD
,
PIRQD
,
PIRQD
,
PIRQD
);
/* EHCI */
34
RCBA16
(
D28IR
) =
DIR_ROUTE
(
PIRQA
,
PIRQB
,
PIRQC
,
PIRQD
);
/* PCIE */
35
RCBA16
(
D27IR
) =
DIR_ROUTE
(
PIRQG
,
PIRQG
,
PIRQG
,
PIRQG
);
/* HDA */
36
RCBA16
(
D22IR
) =
DIR_ROUTE
(
PIRQA
,
PIRQA
,
PIRQA
,
PIRQA
);
/* ME */
37
RCBA16
(
D21IR
) =
DIR_ROUTE
(
PIRQE
,
PIRQF
,
PIRQF
,
PIRQF
);
/* SIO */
38
RCBA16
(
D20IR
) =
DIR_ROUTE
(
PIRQC
,
PIRQC
,
PIRQC
,
PIRQC
);
/* XHCI */
39
RCBA16
(
D23IR
) =
DIR_ROUTE
(
PIRQH
,
PIRQH
,
PIRQH
,
PIRQH
);
/* SDIO */
40
}
41
42
void
mb_get_spd_map
(
struct
spd_info
*spdi)
43
{
44
spdi->
addresses
[0] = 0x50;
45
spdi->
addresses
[2] = 0x52;
46
}
47
48
const
struct
usb2_port_config
mainboard_usb2_ports
[
MAX_USB2_PORTS
] = {
49
/* Length, Enable, OCn#, Location */
50
{ 0x0064, 1, 0,
/* P0: VP8 */
51
USB_PORT_MINI_PCIE
},
52
{ 0x0040, 1, 0,
/* P1: Port A, CN22 */
53
USB_PORT_INTERNAL
},
54
{ 0x0040, 1, 1,
/* P2: Port B, CN23 */
55
USB_PORT_INTERNAL
},
56
{ 0x0040, 1,
USB_OC_PIN_SKIP
,
/* P3: WLAN */
57
USB_PORT_INTERNAL
},
58
{ 0x0040, 1, 2,
/* P4: Port C, CN25 */
59
USB_PORT_INTERNAL
},
60
{ 0x0040, 1, 2,
/* P5: Port D, CN25 */
61
USB_PORT_INTERNAL
},
62
{ 0x0040, 1,
USB_OC_PIN_SKIP
,
/* P6: Card Reader */
63
USB_PORT_INTERNAL
},
64
{ 0x0000, 0, 0,
/* P7: N/C */
65
USB_PORT_SKIP
},
66
};
67
68
const
struct
usb3_port_config
mainboard_usb3_ports
[
MAX_USB3_PORTS
] = {
69
/* Enable, OCn# */
70
{ 1, 0 },
/* P1; CN22 */
71
{ 1, 1 },
/* P2; CN23 */
72
{ 1, 2 },
/* P3; CN25 */
73
{ 1, 2 },
/* P4; CN25 */
74
};
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
mainboard_usb3_ports
const struct usb3_port_config mainboard_usb3_ports[MAX_USB3_PORTS]
Definition:
romstage.c:45
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
mainboard_usb2_ports
const struct usb2_port_config mainboard_usb2_ports[MAX_USB2_PORTS]
Definition:
romstage.c:27
haswell.h
USB_OC_PIN_SKIP
#define USB_OC_PIN_SKIP
Definition:
pei_data.h:27
MAX_USB3_PORTS
#define MAX_USB3_PORTS
Definition:
pei_data.h:26
USB_PORT_SKIP
@ USB_PORT_SKIP
Definition:
pei_data.h:36
USB_PORT_MINI_PCIE
@ USB_PORT_MINI_PCIE
Definition:
pei_data.h:33
USB_PORT_INTERNAL
@ USB_PORT_INTERNAL
Definition:
pei_data.h:35
MAX_USB2_PORTS
#define MAX_USB2_PORTS
Definition:
pei_data.h:25
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::addresses
uint8_t addresses[4]
Definition:
raminit.h:11
usb2_port_config
Definition:
usb.h:27
usb3_port_config
Definition:
usb.h:130
src
mainboard
google
beltino
romstage.c
Generated by
1.9.1