xref: /rk3399_rockchip-uboot/arch/x86/include/asm/arch-broadwell/pch.h (revision 1e6f4e58862088f31cae350d73f0b1162d0ceb46)
1*1e6f4e58SSimon Glass /*
2*1e6f4e58SSimon Glass  * Copyright (c) 2016 Google, Inc
3*1e6f4e58SSimon Glass  *
4*1e6f4e58SSimon Glass  * SPDX-License-Identifier:	GPL-2.0
5*1e6f4e58SSimon Glass  */
6*1e6f4e58SSimon Glass 
7*1e6f4e58SSimon Glass #ifndef __ASM_ARCH_PCH_H
8*1e6f4e58SSimon Glass #define __ASM_ARCH_PCH_H
9*1e6f4e58SSimon Glass 
10*1e6f4e58SSimon Glass /* CPU bus clock is fixed at 100MHz */
11*1e6f4e58SSimon Glass #define CPU_BCLK		100
12*1e6f4e58SSimon Glass 
13*1e6f4e58SSimon Glass #define PMBASE			0x40
14*1e6f4e58SSimon Glass #define ACPI_CNTL		0x44
15*1e6f4e58SSimon Glass #define  ACPI_EN		(1 << 7)
16*1e6f4e58SSimon Glass 
17*1e6f4e58SSimon Glass #define GPIO_BASE		0x48 /* LPC GPIO Base Address Register */
18*1e6f4e58SSimon Glass #define GPIO_CNTL		0x4C /* LPC GPIO Control Register */
19*1e6f4e58SSimon Glass #define  GPIO_EN		(1 << 4)
20*1e6f4e58SSimon Glass 
21*1e6f4e58SSimon Glass #define PCIEXBAR	0x60
22*1e6f4e58SSimon Glass 
23*1e6f4e58SSimon Glass #define  PCH_DEV_LPC		PCI_BDF(0, 0x1f, 0)
24*1e6f4e58SSimon Glass 
25*1e6f4e58SSimon Glass /* RCB registers */
26*1e6f4e58SSimon Glass #define OIC		0x31fe	/* 16bit */
27*1e6f4e58SSimon Glass #define HPTC		0x3404	/* 32bit */
28*1e6f4e58SSimon Glass #define FD		0x3418	/* 32bit */
29*1e6f4e58SSimon Glass 
30*1e6f4e58SSimon Glass /* Function Disable 1 RCBA 0x3418 */
31*1e6f4e58SSimon Glass #define PCH_DISABLE_ALWAYS	(1 << 0)
32*1e6f4e58SSimon Glass 
33*1e6f4e58SSimon Glass /* PM registers */
34*1e6f4e58SSimon Glass #define TCO1_CNT		0x60
35*1e6f4e58SSimon Glass #define  TCO_TMR_HLT		(1 << 11)
36*1e6f4e58SSimon Glass 
37*1e6f4e58SSimon Glass 
38*1e6f4e58SSimon Glass /* Device 0:0.0 PCI configuration space */
39*1e6f4e58SSimon Glass 
40*1e6f4e58SSimon Glass #define EPBAR		0x40
41*1e6f4e58SSimon Glass #define MCHBAR		0x48
42*1e6f4e58SSimon Glass #define PCIEXBAR	0x60
43*1e6f4e58SSimon Glass #define DMIBAR		0x68
44*1e6f4e58SSimon Glass #define GGC		0x50	/* GMCH Graphics Control */
45*1e6f4e58SSimon Glass #define DEVEN		0x54	/* Device Enable */
46*1e6f4e58SSimon Glass #define  DEVEN_D7EN	(1 << 14)
47*1e6f4e58SSimon Glass #define  DEVEN_D4EN	(1 << 7)
48*1e6f4e58SSimon Glass #define  DEVEN_D3EN	(1 << 5)
49*1e6f4e58SSimon Glass #define  DEVEN_D2EN	(1 << 4)
50*1e6f4e58SSimon Glass #define  DEVEN_D1F0EN	(1 << 3)
51*1e6f4e58SSimon Glass #define  DEVEN_D1F1EN	(1 << 2)
52*1e6f4e58SSimon Glass #define  DEVEN_D1F2EN	(1 << 1)
53*1e6f4e58SSimon Glass #define  DEVEN_D0EN	(1 << 0)
54*1e6f4e58SSimon Glass #define DPR		0x5c
55*1e6f4e58SSimon Glass #define  DPR_EPM	(1 << 2)
56*1e6f4e58SSimon Glass #define  DPR_PRS	(1 << 1)
57*1e6f4e58SSimon Glass #define  DPR_SIZE_MASK	0xff0
58*1e6f4e58SSimon Glass 
59*1e6f4e58SSimon Glass #define MCHBAR_PEI_VERSION	0x5034
60*1e6f4e58SSimon Glass #define BIOS_RESET_CPL		0x5da8
61*1e6f4e58SSimon Glass #define EDRAMBAR		0x5408
62*1e6f4e58SSimon Glass #define MCH_PAIR		0x5418
63*1e6f4e58SSimon Glass #define GDXCBAR			0x5420
64*1e6f4e58SSimon Glass 
65*1e6f4e58SSimon Glass #define PAM0		0x80
66*1e6f4e58SSimon Glass #define PAM1		0x81
67*1e6f4e58SSimon Glass #define PAM2		0x82
68*1e6f4e58SSimon Glass #define PAM3		0x83
69*1e6f4e58SSimon Glass #define PAM4		0x84
70*1e6f4e58SSimon Glass #define PAM5		0x85
71*1e6f4e58SSimon Glass #define PAM6		0x86
72*1e6f4e58SSimon Glass 
73*1e6f4e58SSimon Glass /* PCODE MMIO communications live in the MCHBAR. */
74*1e6f4e58SSimon Glass #define BIOS_MAILBOX_INTERFACE			0x5da4
75*1e6f4e58SSimon Glass #define  MAILBOX_RUN_BUSY			(1 << 31)
76*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_READ_PCS		1
77*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_WRITE_PCS		2
78*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_READ_CALIBRATION	0x509
79*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_FSM_MEASURE_INTVL	0x909
80*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_READ_PCH_POWER	0xa
81*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_READ_PCH_POWER_EXT	0xb
82*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_READ_C9C10_VOLTAGE	0x26
83*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_CMD_WRITE_C9C10_VOLTAGE	0x27
84*1e6f4e58SSimon Glass /* Errors are returned back in bits 7:0. */
85*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_NONE		0
86*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_INVALID_COMMAND	1
87*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_TIMEOUT		2
88*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_ILLEGAL_DATA	3
89*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_RESERVED		4
90*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_ILLEGAL_VR_ID	5
91*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_VR_INTERFACE_LOCKED	6
92*1e6f4e58SSimon Glass #define  MAILBOX_BIOS_ERROR_VR_ERROR		7
93*1e6f4e58SSimon Glass /* Data is passed through bits 31:0 of the data register. */
94*1e6f4e58SSimon Glass #define BIOS_MAILBOX_DATA			0x5da0
95*1e6f4e58SSimon Glass 
96*1e6f4e58SSimon Glass /* SATA IOBP Registers */
97*1e6f4e58SSimon Glass #define SATA_IOBP_SP0_SECRT88	0xea002688
98*1e6f4e58SSimon Glass #define SATA_IOBP_SP1_SECRT88	0xea002488
99*1e6f4e58SSimon Glass 
100*1e6f4e58SSimon Glass #define SATA_SECRT88_VADJ_MASK	0xff
101*1e6f4e58SSimon Glass #define SATA_SECRT88_VADJ_SHIFT	16
102*1e6f4e58SSimon Glass 
103*1e6f4e58SSimon Glass #define SATA_IOBP_SP0DTLE_DATA	0xea002550
104*1e6f4e58SSimon Glass #define SATA_IOBP_SP0DTLE_EDGE	0xea002554
105*1e6f4e58SSimon Glass #define SATA_IOBP_SP1DTLE_DATA	0xea002750
106*1e6f4e58SSimon Glass #define SATA_IOBP_SP1DTLE_EDGE	0xea002754
107*1e6f4e58SSimon Glass 
108*1e6f4e58SSimon Glass #define SATA_DTLE_MASK		0xF
109*1e6f4e58SSimon Glass #define SATA_DTLE_DATA_SHIFT	24
110*1e6f4e58SSimon Glass #define SATA_DTLE_EDGE_SHIFT	16
111*1e6f4e58SSimon Glass 
112*1e6f4e58SSimon Glass /* Power Management */
113*1e6f4e58SSimon Glass #define GEN_PMCON_1		0xa0
114*1e6f4e58SSimon Glass #define  SMI_LOCK		(1 << 4)
115*1e6f4e58SSimon Glass #define GEN_PMCON_2		0xa2
116*1e6f4e58SSimon Glass #define  SYSTEM_RESET_STS	(1 << 4)
117*1e6f4e58SSimon Glass #define  THERMTRIP_STS		(1 << 3)
118*1e6f4e58SSimon Glass #define  SYSPWR_FLR		(1 << 1)
119*1e6f4e58SSimon Glass #define  PWROK_FLR		(1 << 0)
120*1e6f4e58SSimon Glass #define GEN_PMCON_3		0xa4
121*1e6f4e58SSimon Glass #define  SUS_PWR_FLR		(1 << 14)
122*1e6f4e58SSimon Glass #define  GEN_RST_STS		(1 << 9)
123*1e6f4e58SSimon Glass #define  RTC_BATTERY_DEAD	(1 << 2)
124*1e6f4e58SSimon Glass #define  PWR_FLR		(1 << 1)
125*1e6f4e58SSimon Glass #define  SLEEP_AFTER_POWER_FAIL	(1 << 0)
126*1e6f4e58SSimon Glass #define GEN_PMCON_LOCK		0xa6
127*1e6f4e58SSimon Glass #define  SLP_STR_POL_LOCK	(1 << 2)
128*1e6f4e58SSimon Glass #define  ACPI_BASE_LOCK		(1 << 1)
129*1e6f4e58SSimon Glass #define PMIR			0xac
130*1e6f4e58SSimon Glass #define  PMIR_CF9LOCK		(1 << 31)
131*1e6f4e58SSimon Glass #define  PMIR_CF9GR		(1 << 20)
132*1e6f4e58SSimon Glass 
133*1e6f4e58SSimon Glass /* Broadwell PCH (Wildcat Point) */
134*1e6f4e58SSimon Glass #define PCH_WPT_HSW_U_SAMPLE	0x9cc1
135*1e6f4e58SSimon Glass #define PCH_WPT_BDW_U_SAMPLE	0x9cc2
136*1e6f4e58SSimon Glass #define PCH_WPT_BDW_U_PREMIUM	0x9cc3
137*1e6f4e58SSimon Glass #define PCH_WPT_BDW_U_BASE	0x9cc5
138*1e6f4e58SSimon Glass #define PCH_WPT_BDW_Y_SAMPLE	0x9cc6
139*1e6f4e58SSimon Glass #define PCH_WPT_BDW_Y_PREMIUM	0x9cc7
140*1e6f4e58SSimon Glass #define PCH_WPT_BDW_Y_BASE	0x9cc9
141*1e6f4e58SSimon Glass #define PCH_WPT_BDW_H		0x9ccb
142*1e6f4e58SSimon Glass 
143*1e6f4e58SSimon Glass #define SA_IGD_OPROM_VENDEV	0x80860406
144*1e6f4e58SSimon Glass 
145*1e6f4e58SSimon Glass /* Dynamically determine if the part is ULT */
146*1e6f4e58SSimon Glass bool cpu_is_ult(void);
147*1e6f4e58SSimon Glass 
148*1e6f4e58SSimon Glass u32 pch_iobp_read(u32 address);
149*1e6f4e58SSimon Glass int pch_iobp_write(u32 address, u32 data);
150*1e6f4e58SSimon Glass int pch_iobp_update(u32 address, u32 andvalue, u32 orvalue);
151*1e6f4e58SSimon Glass int  pch_iobp_exec(u32 addr, u16 op_dcode, u8 route_id, u32 *data, u8 *resp);
152*1e6f4e58SSimon Glass 
153*1e6f4e58SSimon Glass #endif
154