summaryrefslogtreecommitdiff
path: root/src/southbridge/amd/pi/hudson/gpio.h
blob: dad2279e6cf98a4b003e7b40aa20acd6d29186f2 (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
133
/*
 * This file is part of the coreboot project.
 *
 * Copyright (C) 2017 Advanced Micro Devices, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef _HUDSON_GPIO_H_
#define _HUDSON_GPIO_H_

#include <southbridge/amd/common/amd_defs.h>
#include <types.h>

#define CROS_GPIO_DEVICE_NAME "AmdKern"

#define GPIO_PIN_STS		(1 << 16)
#define GPIO_OUTPUT_VALUE	(1 << 22)
#define GPIO_OUTPUT_ENABLE	(1 << 23)

#if IS_ENABLED(CONFIG_SOUTHBRIDGE_AMD_PI_KERN)
/* GPIO_0 - GPIO_62 */
#define GPIO_BANK0_CONTROL (AMD_SB_ACPI_MMIO_ADDR + 0x1500)
#define   GPIO_0	(GPIO_BANK0_CONTROL + 0x00)
#define   GPIO_1	(GPIO_BANK0_CONTROL + 0x04)
#define   GPIO_2	(GPIO_BANK0_CONTROL + 0x08)
#define   GPIO_3	(GPIO_BANK0_CONTROL + 0x0C)
#define   GPIO_4	(GPIO_BANK0_CONTROL + 0x10)
#define   GPIO_5	(GPIO_BANK0_CONTROL + 0x14)
#define   GPIO_6	(GPIO_BANK0_CONTROL + 0x18)
#define   GPIO_7	(GPIO_BANK0_CONTROL + 0x1C)
#define   GPIO_8	(GPIO_BANK0_CONTROL + 0x20)
#define   GPIO_9	(GPIO_BANK0_CONTROL + 0x24)
#define   GPIO_10	(GPIO_BANK0_CONTROL + 0x28)
#define   GPIO_11	(GPIO_BANK0_CONTROL + 0x2C)
#define   GPIO_12	(GPIO_BANK0_CONTROL + 0x30)
#define   GPIO_13	(GPIO_BANK0_CONTROL + 0x34)
#define   GPIO_14	(GPIO_BANK0_CONTROL + 0x38)
#define   GPIO_15	(GPIO_BANK0_CONTROL + 0x3C)
#define   GPIO_16	(GPIO_BANK0_CONTROL + 0x40)
#define   GPIO_17	(GPIO_BANK0_CONTROL + 0x44)
#define   GPIO_18	(GPIO_BANK0_CONTROL + 0x48)
#define   GPIO_19	(GPIO_BANK0_CONTROL + 0x4C)
#define   GPIO_20	(GPIO_BANK0_CONTROL + 0x50)
#define   GPIO_21	(GPIO_BANK0_CONTROL + 0x54)
#define   GPIO_22	(GPIO_BANK0_CONTROL + 0x58)
#define   GPIO_23	(GPIO_BANK0_CONTROL + 0x5C)
#define   GPIO_24	(GPIO_BANK0_CONTROL + 0x60)
#define   GPIO_25	(GPIO_BANK0_CONTROL + 0x64)
#define   GPIO_26	(GPIO_BANK0_CONTROL + 0x68)
#define   GPIO_39	(GPIO_BANK0_CONTROL + 0x9C)
#define   GPIO_42	(GPIO_BANK0_CONTROL + 0xA8)

/* GPIO_64 - GPIO_127 */
#define GPIO_BANK1_CONTROL (AMD_SB_ACPI_MMIO_ADDR + 0x1600)
#define   GPIO_64	(GPIO_BANK1_CONTROL + 0x00)
#define   GPIO_65	(GPIO_BANK1_CONTROL + 0x04)
#define   GPIO_66	(GPIO_BANK1_CONTROL + 0x08)
#define   GPIO_67	(GPIO_BANK1_CONTROL + 0x0C)
#define   GPIO_68	(GPIO_BANK1_CONTROL + 0x10)
#define   GPIO_69	(GPIO_BANK1_CONTROL + 0x14)
#define   GPIO_70	(GPIO_BANK1_CONTROL + 0x18)
#define   GPIO_71	(GPIO_BANK1_CONTROL + 0x1C)
#define   GPIO_72	(GPIO_BANK1_CONTROL + 0x20)
#define   GPIO_74	(GPIO_BANK1_CONTROL + 0x28)
#define   GPIO_75	(GPIO_BANK1_CONTROL + 0x2C)
#define   GPIO_76	(GPIO_BANK1_CONTROL + 0x30)
#define   GPIO_84	(GPIO_BANK1_CONTROL + 0x50)
#define   GPIO_85	(GPIO_BANK1_CONTROL + 0x54)
#define   GPIO_86	(GPIO_BANK1_CONTROL + 0x58)
#define   GPIO_87	(GPIO_BANK1_CONTROL + 0x5C)
#define   GPIO_88	(GPIO_BANK1_CONTROL + 0x60)
#define   GPIO_89	(GPIO_BANK1_CONTROL + 0x64)
#define   GPIO_90	(GPIO_BANK1_CONTROL + 0x68)
#define   GPIO_91	(GPIO_BANK1_CONTROL + 0x6C)
#define   GPIO_92	(GPIO_BANK1_CONTROL + 0x70)
#define   GPIO_93	(GPIO_BANK1_CONTROL + 0x74)
#define   GPIO_95	(GPIO_BANK1_CONTROL + 0x7C)
#define   GPIO_96	(GPIO_BANK1_CONTROL + 0x80)
#define   GPIO_97	(GPIO_BANK1_CONTROL + 0x84)
#define   GPIO_98	(GPIO_BANK1_CONTROL + 0x88)
#define   GPIO_99	(GPIO_BANK1_CONTROL + 0x8C)
#define   GPIO_100	(GPIO_BANK1_CONTROL + 0x90)
#define   GPIO_101	(GPIO_BANK1_CONTROL + 0x94)
#define   GPIO_102	(GPIO_BANK1_CONTROL + 0x98)
#define   GPIO_113	(GPIO_BANK1_CONTROL + 0xC4)
#define   GPIO_114	(GPIO_BANK1_CONTROL + 0xC8)
#define   GPIO_115	(GPIO_BANK1_CONTROL + 0xCC)
#define   GPIO_116	(GPIO_BANK1_CONTROL + 0xD0)
#define   GPIO_117	(GPIO_BANK1_CONTROL + 0xD4)
#define   GPIO_118	(GPIO_BANK1_CONTROL + 0xD8)
#define   GPIO_119	(GPIO_BANK1_CONTROL + 0xDC)
#define   GPIO_120	(GPIO_BANK1_CONTROL + 0xE0)
#define   GPIO_121	(GPIO_BANK1_CONTROL + 0xE4)
#define   GPIO_122	(GPIO_BANK1_CONTROL + 0xE8)
#define   GPIO_126	(GPIO_BANK1_CONTROL + 0xF8)

/* GPIO_128 - GPIO_183 */
#define GPIO_BANK2_CONTROL (AMD_SB_ACPI_MMIO_ADDR + 0x1700)
#define   GPIO_129	(GPIO_BANK2_CONTROL + 0x04)
#define   GPIO_130	(GPIO_BANK2_CONTROL + 0x08)
#define   GPIO_131	(GPIO_BANK2_CONTROL + 0x0C)
#define   GPIO_132	(GPIO_BANK2_CONTROL + 0x10)
#define   GPIO_133	(GPIO_BANK2_CONTROL + 0x14)
#define   GPIO_134	(GPIO_BANK2_CONTROL + 0x18)
#define   GPIO_135	(GPIO_BANK2_CONTROL + 0x1C)
#define   GPIO_136	(GPIO_BANK2_CONTROL + 0x20)
#define   GPIO_137	(GPIO_BANK2_CONTROL + 0x24)
#define   GPIO_138	(GPIO_BANK2_CONTROL + 0x28)
#define   GPIO_139	(GPIO_BANK2_CONTROL + 0x2C)
#define   GPIO_140	(GPIO_BANK2_CONTROL + 0x30)
#define   GPIO_141	(GPIO_BANK2_CONTROL + 0x34)
#define   GPIO_142	(GPIO_BANK2_CONTROL + 0x38)
#define   GPIO_143	(GPIO_BANK2_CONTROL + 0x3C)
#define   GPIO_144	(GPIO_BANK2_CONTROL + 0x40)
#define   GPIO_145	(GPIO_BANK2_CONTROL + 0x44)
#define   GPIO_146	(GPIO_BANK2_CONTROL + 0x48)
#define   GPIO_147	(GPIO_BANK2_CONTROL + 0x4C)
#define   GPIO_148	(GPIO_BANK2_CONTROL + 0x50)
#endif	/* IS_ENABLED(CONFIG_SOUTHBRIDGE_AMD_PI_KERN) */

typedef uint32_t gpio_t;

int gpio_get(gpio_t gpio_num);

#endif	/* _HUDSON_GPIO_H_ */