From 7d114ec31e537fcb4c2e4f0fca867b050fd59549 Mon Sep 17 00:00:00 2001 From: Dragan Simic Date: Thu, 10 Feb 2022 14:43:05 +0100 Subject: [PATCH] Reconfigure GPIO4_D3 as input on PinePhone Pro --- .../pinephone-pro-rk3399.c | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c index d79084614f..bc19b275b2 100644 --- a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c +++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c @@ -12,6 +12,7 @@ #include #include #include +#include #define GRF_IO_VSEL_BT565_SHIFT 0 #define PMUGRF_CON0_VSEL_SHIFT 8 @@ -52,5 +53,41 @@ int misc_init_r(void) return ret; } - #endif + +#define GPIO4_D3 "155" + +static int setup_gpios(void) +{ + struct gpio_desc gpio; + int ret; + + /* + * MaskROM enables output on GPIO4_D3 and leaves it that way, seemingly + * because the RK3399 reference BOX and VR REF designs use GPIO4_D3 as + * EFUSE_VQPS (AD23) power control output, while it is a light sensor + * interrupt on the PinePhone Pro and needs to be configured as input. + */ + ret = dm_gpio_lookup_name(GPIO4_D3, &gpio); + if (ret) + return ret; + + ret = dm_gpio_request(&gpio, "light_int_l"); + if (ret) + return ret; + + dm_gpio_set_dir_flags(&gpio, GPIOD_IS_IN); + + return 0; +} + +int rk_board_late_init(void) +{ + int ret; + + ret = setup_gpios(); + if (ret) + debug("Failed to configure GPIO lines: %d\n", ret); + + return ret; +} -- 2.33.1