forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/soc/rockchip/grf.c
....@@ -1,11 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Rockchip Generic Register Files setup
34 *
45 * Copyright (c) 2016 Heiko Stuebner <heiko@sntech.de>
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License version 2 as
8
- * published by the Free Software Foundation.
96 */
107
118 #include <linux/bitfield.h>
....@@ -198,9 +195,11 @@
198195 };
199196
200197 #define RK3308_GRF_SOC_CON3 0x30c
198
+#define RK3308_GRF_SOC_CON13 0x608
201199
202200 static const struct rockchip_grf_value rk3308_defaults[] __initconst = {
203201 { "uart dma mask", RK3308_GRF_SOC_CON3, HIWORD_UPDATE(0, 0x1f, 10) },
202
+ { "uart2 auto switching", RK3308_GRF_SOC_CON13, HIWORD_UPDATE(0, 0x1, 12) },
204203 };
205204
206205 static const struct rockchip_grf_info rk3308_grf __initconst = {
....@@ -228,6 +227,17 @@
228227 static const struct rockchip_grf_info rk3399_grf __initconst = {
229228 .values = rk3399_defaults,
230229 .num_values = ARRAY_SIZE(rk3399_defaults),
230
+};
231
+
232
+#define RK3588_SYS_GRF_SOC_CON7 0x031c
233
+
234
+static const struct rockchip_grf_value rk3588_sys_grf_defaults[] __initconst = {
235
+ { "Connect EDP hpd to IO", RK3588_SYS_GRF_SOC_CON7, HIWORD_UPDATE(0x3, 0x3, 14) },
236
+};
237
+
238
+static const struct rockchip_grf_info rk3588_sys_grf __initconst = {
239
+ .values = rk3588_sys_grf_defaults,
240
+ .num_values = ARRAY_SIZE(rk3588_sys_grf_defaults),
231241 };
232242
233243 #define DELAY_ONE_SECOND 0x16E3600
....@@ -285,6 +295,9 @@
285295 .compatible = "rockchip,rk3399-grf",
286296 .data = (void *)&rk3399_grf,
287297 }, {
298
+ .compatible = "rockchip,rk3588-sys-grf",
299
+ .data = (void *)&rk3588_sys_grf,
300
+ }, {
288301 .compatible = "rockchip,rv1126-grf",
289302 .data = (void *)&rv1126_grf,
290303 },
....@@ -306,15 +319,17 @@
306319 np = of_find_matching_node_and_match(NULL, rockchip_grf_dt_match,
307320 &match);
308321 if (!np)
309
- return -ENODEV;
322
+ return 0;
310323 if (!match || !match->data) {
311324 pr_err("%s: missing grf data\n", __func__);
325
+ of_node_put(np);
312326 return -EINVAL;
313327 }
314328
315329 grf_info = match->data;
316330
317331 grf = syscon_node_to_regmap(np);
332
+ of_node_put(np);
318333 if (IS_ERR(grf)) {
319334 pr_err("%s: could not get grf syscon\n", __func__);
320335 return PTR_ERR(grf);