summaryrefslogtreecommitdiffstats
path: root/src/soc/amd/common/block/include/amdblocks/acpimmio_map.h
blob: 38b21252132595d6d3273edcf1830becb22ccec7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* SPDX-License-Identifier: GPL-2.0-or-later */

#ifndef AMD_BLOCK_ACPIMMIO_MAP_H
#define AMD_BLOCK_ACPIMMIO_MAP_H

/*
 * The following AcpiMmio register block mapping represents definitions
 * that have been documented in AMD publications.  All blocks aren't
 * implemented in all products, so the caller should be careful not to
 * inadvertently access a non-existent block.  The definitions within
 * each block are also subject to change across products.  Please refer
 * to the appropriate RRG, the BKDG, or PPR for the product.
 *
 * The base address is configurable in older products, but defaults to
 * 0xfed80000.  The address is fixed at 0xfed80000 in newer products.
 *
 * +---------------------------------------------------------------------------+
 * |0x000    SMBus PCI space                                                   |
 * |           * Dual-mapped to PCI configuration header of D14F0              |
 * +---------------------------------------------------------------------------+
 * |0x100    GPIO configuration registers                                      |
 * |           * old style, never implemented with newer style                 |
 * |           * discrete controller hubs and Family 16h Models 00h-0Fh.       |
 * +---------------------------------------------------------------------------+
 * |0x200    SMI configuration registers                                       |
 * +---------------------------------------------------------------------------+
 * |0x300    Power Management registers                                        |
 * |           * Dual-mapped via IO Index/Data 0xcd6/0xcd7 (byte access only)  |
 * +---------------------------------------------------------------------------+
 * |0x400    Power Management 2 registers                                      |
 * +---------------------------------------------------------------------------+
 * |0x500    BIOS RAM                                                          |
 * |           * General-purpose storage in S3 domain                          |
 * |           * Byte access only                                              |
 * +---------------------------------------------------------------------------+
 * |0x600    CMOS RAM                                                          |
 * |           * Dual-mapped to storage at Alt RTC Index/Data (0x72/0x73)      |
 * |           * Byte access only                                              |
 * +---------------------------------------------------------------------------+
 * |0x700    CMOS                                                              |
 * |           * Dual-mapped to storage at RTC Index/Data (0x70/0x71)          |
 * |           * Byte access only                                              |
 * +---------------------------------------------------------------------------+
 * |0x800    Standard ACPI registers                                           |
 * |           * Dual-mapped to I/O ACPI registers                             |
 * +---------------------------------------------------------------------------+
 * |0x900    ASF controller registers                                          |
 * |           * Dual-mapped to I/O ASF controller registers                   |
 * +---------------------------------------------------------------------------+
 * |0xa00    SMBus controller registers                                        |
 * |           * Dual-mapped to I/O SMBus controller registers                 |
 * +---------------------------------------------------------------------------+
 * |0xb00    WDT registers                                                     |
 * |           * Dual-mapped to WDT registers, typ. enabled at 0xfeb00000      |
 * +---------------------------------------------------------------------------+
 * |0xc00    HPET registers                                                    |
 * |           * Dual-mapped to HPET registers, typ. enabled at 0xfed00000     |
 * +---------------------------------------------------------------------------+
 * |0xd00    MUX configuration registers for GPIO signals                      |
 * +---------------------------------------------------------------------------+
 * |0xe00    Miscellaneous registers                                           |
 * +---------------------------------------------------------------------------+
 * |0x1000   Serial debug bus                                                  |
 * +---------------------------------------------------------------------------+
 * |0x1200   remote GPIO configuration registers                               |
 * |           * contains both GPIO and MUX registers                          |
 * +---------------------------------------------------------------------------+
 * |0x1400   DP-VGA                                                            |
 * +---------------------------------------------------------------------------+
 * |0x1500   GPIO configuration registers bank 0                               |
 * |           * new style, never implemented with older style                 |
 * |           * SoCs starting with Family 16h Models 30h-3Fh                  |
 * +---------------------------------------------------------------------------+
 * |0x1600   GPIO configuration registers bank 1 (following bank 0)            |
 * +---------------------------------------------------------------------------+
 * |0x1700   GPIO configuration registers bank 2 (following bank 1)            |
 * +---------------------------------------------------------------------------+
 * |0x1800   GPIO configuration registers bank 3 (following bank 2)            |
 * +---------------------------------------------------------------------------+
 * |0x1c00   xHCI Power Management registers                                   |
 * +---------------------------------------------------------------------------+
 * |0x1d00   Wake device (AC DC timer)                                         |
 * +---------------------------------------------------------------------------+
 * |0x1e00   Always On Always Connected (AOAC) registers                       |
 * +---------------------------------------------------------------------------+
 */

/*
 * MMIO register blocks are at fixed offsets from 0xfed80000 and are enabled
 * in PMx24[0] (older implementations) and PMx04[1] (newer implementations).
 * PM registers are also accessible via IO CD6/CD7.
 *
 * All products do not support all blocks below, however AMD has avoided
 * redefining addresses and consumes new ranges as necessary.
 *
 * Definitions within each block are not guaranteed to remain consistent
 * across family/model products.
 */

#define AMD_SB_ACPI_MMIO_ADDR		0xfed80000

#ifdef __ACPI__
/* ASL MemoryFixed32() fails if these are additions. */
#define ACPIMMIO_MISC_BASE		0xfed80e00
#define ACPIMMIO_GPIO0_BASE		0xfed81500
#endif

#define ACPIMMIO_SM_PCI_BANK		0x0000
#define ACPIMMIO_GPIO_100_BANK		0x0100
#define ACPIMMIO_SMI_BANK		0x0200
#define ACPIMMIO_PMIO_BANK		0x0300
#define ACPIMMIO_PMIO2_BANK		0x0400
#define ACPIMMIO_BIOSRAM_BANK		0x0500
#define ACPIMMIO_CMOSRAM_BANK		0x0600
#define ACPIMMIO_CMOS_BANK		0x0700
#define ACPIMMIO_ACPI_BANK		0x0800
#define ACPIMMIO_ASF_BANK		0x0900
#define ACPIMMIO_SMBUS_BANK		0x0a00
#define ACPIMMIO_WDT_BANK		0x0b00
#define ACPIMMIO_HPET_BANK		0x0c00
#define ACPIMMIO_IOMUX_BANK		0x0d00
#define ACPIMMIO_MISC_BANK		0x0e00
#define ACPIMMIO_REMOTE_GPIO_BANK	0x1200
#define ACPIMMIO_DPVGA_BANK		0x1400
#define ACPIMMIO_GPIO0_BANK		0x1500
#define ACPIMMIO_XHCIPM_BANK		0x1c00
#define ACPIMMIO_ACDCTMR_BANK		0x1d00
#define ACPIMMIO_AOAC_BANK		0x1e00

#define ACPIMMIO_BASE(bank)	(AMD_SB_ACPI_MMIO_ADDR + ACPIMMIO_ ## bank ## _BANK)

#endif /* AMD_BLOCK_ACPIMMIO_MAP_H */