coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
grf.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_ROCKCHIP_RK3288_GRF_H__
4 #define __SOC_ROCKCHIP_RK3288_GRF_H__
5 
6 #include <soc/addressmap.h>
7 #include <soc/soc.h>
8 #include <types.h>
9 
11  u32 l;
12  u32 h;
13 };
15 
18  union {
21  };
24  union {
27  };
29  union {
32  };
33  union {
36  };
37  union {
40  };
50  union {
53  };
56  union {
59  };
60  union {
64  };
65  union {
68  };
70  union {
74  };
75  union {
78  };
79  union {
83  };
84  union {
88  };
90  union {
94  };
95  union {
98  };
100  struct rk3288_grf_gpio_lh gpio_sr[8];
101  u32 gpio1_p[8][4];
102  u32 gpio1_e[8][4];
143 };
144 check_member(rk3288_grf_regs, soc_con16, 0x3a8);
145 
153  u32 reserved1[(0x20-0x18)/4];
155  u32 reserved2[(0x40-0x28)/4];
157  u32 reserved3[(0x50-0x4c)/4];
174  u32 reserved4[(0x100-0x90)/4];
176  u32 reserved5[(0x120-0x108)/4];
178 };
179 check_member(rk3288_sgrf_regs, fast_boot_addr, 0x0120);
180 
181 static struct rk3288_grf_regs * const rk3288_grf = (void *)GRF_BASE;
182 static struct rk3288_sgrf_regs * const rk3288_sgrf = (void *)GRF_SECURE_BASE;
183 
184 #define IOMUX_I2C1 RK_CLRSETBITS(3 << 10 | 3 << 8, 1 << 10 | 1 << 8)
185 #define IOMUX_I2C2 RK_SETBITS(1 << 4 | 1 << 2)
186 #define IOMUX_I2C3 RK_SETBITS(1 << 2 | 1 << 0)
187 #define IOMUX_I2C4 RK_SETBITS(1 << 8 | 1 << 4)
188 #define IOMUX_I2C5SDA RK_CLRSETBITS(3 << 12, 1 << 12)
189 #define IOMUX_I2C5SCL RK_CLRSETBITS(3 << 0, 1 << 0)
190 #define IOMUX_SPI0 RK_CLRSETBITS(0xff << 8, 1 << 14 | 1 << 12 | \
191  1 << 10 | 1 << 8)
192 #define IOMUX_SPI2_CSCLK RK_CLRSETBITS(3 << 14 | 3 << 12, 1 << 14 | 1 << 12)
193 #define IOMUX_SPI2_TXRX RK_CLRSETBITS(3 << 2 | 3 << 0, 1 << 2 | 1 << 0)
194 #define IOMUX_I2S RK_SETBITS(1 << 8 | 1 << 6 | 1 << 4 | 1 << 2 | 1 << 0)
195 #define IOMUX_I2SCLK RK_SETBITS(1 << 0)
196 #define IOMUX_UART2 RK_CLRSETBITS(7 << 12 | 3 << 8, 1 << 12 | 1 << 8)
197 #define IOMUX_LCDC RK_SETBITS(1 << 6 | 1 << 4 | 1 << 2 | 1 << 0)
198 #define IOMUX_SDMMC0 RK_CLRSETBITS(0x17ff, 1 << 12 | 1 << 10 | 1 << 8 |\
199  1 << 6 | 1 << 4 | 1 << 2 | 1 << 0)
200 #define IOMUX_EMMCDATA RK_CLRSETBITS(0xffff, 2 << 14 | 2 << 12 | 2 << 10 |\
201  2 << 8 | 2 << 6 | 2 << 4 |\
202  2 << 2 | 2 << 0)
203 #define IOMUX_EMMCPWREN RK_CLRSETBITS(0x3 << 2, 0x2 << 2)
204 #define IOMUX_EMMCCMD RK_CLRSETBITS(0x3f, 2 << 4 | 2 << 2 | 2 << 0)
205 #define IOMUX_PWM1 RK_SETBITS(1 << 2)
206 #define IOMUX_EDP_HOTPLUG RK_CLRSETBITS(0x3 << 6, 0x2 << 6)
207 #define IOMUX_HDMI_EDP_I2C_SDA RK_CLRSETBITS(0x3 << 12, 2 << 12)
208 #define IOMUX_HDMI_EDP_I2C_SCL RK_CLRSETBITS(0x3 << 0, 2 << 0)
209 
210 /* Use to mux a pin back to GPIO function. Since the selector for that is always
211  * 0, we can just reuse RK mask/value patterns and mask out the "value" part. */
212 #define IOMUX_GPIO(iomux_clrsetbits) ((iomux_clrsetbits) & (0xffff << 16))
213 
214 #endif /* __SOC_ROCKCHIP_RK3288_GRF_H__ */
static struct rk3288_grf_regs *const rk3288_grf
Definition: grf.h:181
check_member(rk3288_grf_gpio_lh, h, 0x4)
static struct rk3288_sgrf_regs *const rk3288_sgrf
Definition: grf.h:182
#define GRF_BASE
Definition: addressmap.h:53
#define GRF_SECURE_BASE
Definition: addressmap.h:50
uint32_t u32
Definition: stdint.h:51
u32 gpio8a_iomux
Definition: grf.h:91
u32 reserved11
Definition: grf.h:127
u32 tsadc_testbit_h
Definition: grf.h:138
u32 iomux_emmcdata
Definition: grf.h:31
u32 reserved8[30]
Definition: grf.h:99
u32 soc_con9
Definition: grf.h:113
u32 soc_con6
Definition: grf.h:110
u32 reserved4
Definition: grf.h:49
u32 gpio7a_iomux
Definition: grf.h:71
u32 iomux_pwm1
Definition: grf.h:73
u32 reserved5
Definition: grf.h:55
u32 gpio3dl_iomux
Definition: grf.h:41
u32 gpio1_p[8][4]
Definition: grf.h:101
u32 iomux_lcdc
Definition: grf.h:20
u32 iomux_spi0
Definition: grf.h:52
u32 soc_con2
Definition: grf.h:106
u32 uoc2_con[4]
Definition: grf.h:130
u32 soc_con4
Definition: grf.h:108
u32 iomux_emmccmd
Definition: grf.h:39
u32 soc_con0
Definition: grf.h:104
u32 reserved[3]
Definition: grf.h:17
u32 iomux_edp_hotplug
Definition: grf.h:77
u32 gpio5b_iomux
Definition: grf.h:51
u32 gpio6a_iomux
Definition: grf.h:57
u32 reserved6
Definition: grf.h:69
u32 ddrc1_con0
Definition: grf.h:123
u32 iomux_i2c4
Definition: grf.h:82
u32 cpu_con[5]
Definition: grf.h:124
u32 io_vsel
Definition: grf.h:135
u32 gpio1d_iomux
Definition: grf.h:19
u32 soc_con12
Definition: grf.h:116
u32 soc_con3
Definition: grf.h:107
u32 soc_con13
Definition: grf.h:117
u32 soc_con1
Definition: grf.h:105
u32 gpio4al_iomux
Definition: grf.h:43
u32 soc_con10
Definition: grf.h:114
u32 peridmac_con[4]
Definition: grf.h:121
u32 uoc1_con[5]
Definition: grf.h:129
u32 reserved12
Definition: grf.h:140
u32 tsadc_testbit_l
Definition: grf.h:137
u32 uoc0_con[5]
Definition: grf.h:128
u32 gpio6c_iomux
Definition: grf.h:66
u32 iomux_i2s
Definition: grf.h:58
u32 gpio6b_iomux
Definition: grf.h:61
u32 gpio7b_iomux
Definition: grf.h:76
u32 iomux_spi2csclk
Definition: grf.h:92
u32 soc_con8
Definition: grf.h:112
u32 gpio3dh_iomux
Definition: grf.h:42
u32 gpio7cl_iomux
Definition: grf.h:80
u32 gpio3b_iomux
Definition: grf.h:34
u32 iomux_emmcpwren
Definition: grf.h:35
u32 gpio4bl_iomux
Definition: grf.h:45
u32 uoc3_con[2]
Definition: grf.h:131
u32 iomux_i2c3
Definition: grf.h:26
u32 os_reg[4]
Definition: grf.h:139
u32 iomux_i2c5scl
Definition: grf.h:87
u32 reserved2
Definition: grf.h:28
u32 ddrc0_con0
Definition: grf.h:122
u32 gpio2b_iomux
Definition: grf.h:23
u32 soc_status[22]
Definition: grf.h:119
u32 gpio3c_iomux
Definition: grf.h:38
u32 soc_con5
Definition: grf.h:109
u32 soc_con7
Definition: grf.h:111
u32 iomux_pwm0
Definition: grf.h:72
u32 soc_con14
Definition: grf.h:118
u32 gpio2a_iomux
Definition: grf.h:22
u32 saradc_testbit
Definition: grf.h:136
u32 cpu_status0
Definition: grf.h:126
u32 gpio4ah_iomux
Definition: grf.h:44
u32 reserved3
Definition: grf.h:46
u32 gpio_smt
Definition: grf.h:103
u32 gpio7ch_iomux
Definition: grf.h:85
u32 gpio8b_iomux
Definition: grf.h:96
u32 pvtm_status[3]
Definition: grf.h:134
u32 iomux_spi2txrx
Definition: grf.h:97
u32 soc_con16
Definition: grf.h:142
u32 iomux_uart2
Definition: grf.h:86
u32 uoc4_con[2]
Definition: grf.h:132
u32 reserved7
Definition: grf.h:89
u32 iomux_sdmmc0
Definition: grf.h:67
u32 iomux_i2c5sda
Definition: grf.h:81
u32 reserved9[2]
Definition: grf.h:120
u32 reserved10[3]
Definition: grf.h:125
u32 gpio3a_iomux
Definition: grf.h:30
u32 soc_con15
Definition: grf.h:141
u32 iomux_i2c1
Definition: grf.h:93
u32 gpio1_e[8][4]
Definition: grf.h:102
u32 gpio4c_iomux
Definition: grf.h:47
u32 iomux_i2c2
Definition: grf.h:62
u32 pvtm_con[3]
Definition: grf.h:133
u32 soc_con11
Definition: grf.h:115
struct rk3288_grf_gpio_lh gpio_sr[8]
Definition: grf.h:100
u32 gpio5c_iomux
Definition: grf.h:54
u32 iomux_i2sclk
Definition: grf.h:63
u32 gpio2c_iomux
Definition: grf.h:25
u32 gpio4d_iomux
Definition: grf.h:48
u32 soc_con2
Definition: grf.h:149
u32 soc_con8
Definition: grf.h:160
u32 reserved2[(0x40-0x28)/4]
Definition: grf.h:155
u32 soc_con19
Definition: grf.h:171
u32 busdmac_con[2]
Definition: grf.h:154
u32 soc_con3
Definition: grf.h:150
u32 soc_con5
Definition: grf.h:152
u32 soc_con21
Definition: grf.h:173
u32 soc_con7
Definition: grf.h:159
u32 cpu_con[3]
Definition: grf.h:156
u32 soc_con0
Definition: grf.h:147
u32 soc_con17
Definition: grf.h:169
u32 soc_con11
Definition: grf.h:163
u32 soc_con6
Definition: grf.h:158
u32 soc_status[2]
Definition: grf.h:175
u32 reserved5[(0x120-0x108)/4]
Definition: grf.h:176
u32 soc_con15
Definition: grf.h:167
u32 soc_con4
Definition: grf.h:151
u32 soc_con13
Definition: grf.h:165
u32 reserved4[(0x100-0x90)/4]
Definition: grf.h:174
u32 soc_con20
Definition: grf.h:172
u32 fast_boot_addr
Definition: grf.h:177
u32 soc_con10
Definition: grf.h:162
u32 soc_con9
Definition: grf.h:161
u32 reserved1[(0x20-0x18)/4]
Definition: grf.h:153
u32 soc_con12
Definition: grf.h:164
u32 soc_con16
Definition: grf.h:168
u32 soc_con1
Definition: grf.h:148
u32 soc_con14
Definition: grf.h:166
u32 reserved3[(0x50-0x4c)/4]
Definition: grf.h:157
u32 soc_con18
Definition: grf.h:170