diff mbox series

[U-Boot] rockchip: rk3399: Fix enabling boot-on regulators

Message ID 20190621205720.37044-1-kettenis@openbsd.org
State Accepted
Commit 7c7ce3600ae97b08f281a6b61aa4abb0b56b0658
Delegated to: Kever Yang
Headers show
Series [U-Boot] rockchip: rk3399: Fix enabling boot-on regulators | expand

Commit Message

Mark Kettenis June 21, 2019, 8:57 p.m. UTC
The new common rockchip pinctrl driver does not support explicit
requests for a particular pinctrl function.  As a result, the
board_init() function bails out early before enabling the boot-on
regulators.  Fix this by simply removing the request for pwm0, pwm2
and pwm3.  The generic DM code already does the necessary
configuration if necessary.

Reported-by: Levin Du <djw@t-chip.com.cn>
Signed-of-by: Mark Kettenis <kettenis@openbsd.org>
---
Without this patch the boot-on regulators are not enabled and the
my firefly-rk3399 doesn't run OpenBSD stable without it.  Levin Du
reported similar problems with Linux.  I'd say this is a critical
fix that should make the 2019.07 release.

This patch deliberately does not touch the code in spl_boot_init()
as Jagan Teki just posted a patchset that touches those bits.

 board/rockchip/evb_rk3399/evb-rk3399.c | 32 +-------------------------
 1 file changed, 1 insertion(+), 31 deletions(-)

Comments

Kever Yang June 22, 2019, 1:43 p.m. UTC | #1
Hi Mark,


On 06/22/2019 04:57 AM, Mark Kettenis wrote:
> The new common rockchip pinctrl driver does not support explicit
> requests for a particular pinctrl function.  As a result, the
> board_init() function bails out early before enabling the boot-on
> regulators.  Fix this by simply removing the request for pwm0, pwm2
> and pwm3.  The generic DM code already does the necessary
> configuration if necessary.
>
> Reported-by: Levin Du <djw@t-chip.com.cn>
> Signed-of-by: Mark Kettenis <kettenis@openbsd.org>

Reveiwed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> Without this patch the boot-on regulators are not enabled and the
> my firefly-rk3399 doesn't run OpenBSD stable without it.  Levin Du
> reported similar problems with Linux.  I'd say this is a critical
> fix that should make the 2019.07 release.
>
> This patch deliberately does not touch the code in spl_boot_init()
> as Jagan Teki just posted a patchset that touches those bits.
>
>  board/rockchip/evb_rk3399/evb-rk3399.c | 32 +-------------------------
>  1 file changed, 1 insertion(+), 31 deletions(-)
>
> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c
> index bf2ad98c47..8c20bd6e11 100644
> --- a/board/rockchip/evb_rk3399/evb-rk3399.c
> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c
> @@ -13,39 +13,9 @@
>  
>  int board_init(void)
>  {
> -	struct udevice *pinctrl, *regulator;
> +	struct udevice *regulator;
>  	int ret;
>  
> -	/*
> -	 * The PWM do not have decicated interrupt number in dts and can
> -	 * not get periph_id by pinctrl framework, so let's init them here.
> -	 * The PWM2 and PWM3 are for pwm regulater.
> -	 */
> -	ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
> -	if (ret) {
> -		debug("%s: Cannot find pinctrl device\n", __func__);
> -		goto out;
> -	}
> -
> -	/* Enable pwm0 for panel backlight */
> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM0);
> -	if (ret) {
> -		debug("%s PWM0 pinctrl init fail! (ret=%d)\n", __func__, ret);
> -		goto out;
> -	}
> -
> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM2);
> -	if (ret) {
> -		debug("%s PWM2 pinctrl init fail!\n", __func__);
> -		goto out;
> -	}
> -
> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM3);
> -	if (ret) {
> -		debug("%s PWM3 pinctrl init fail!\n", __func__);
> -		goto out;
> -	}
> -
>  	ret = regulators_enable_boot_on(false);
>  	if (ret)
>  		debug("%s: Cannot enable boot on regulator\n", __func__);
Kever Yang July 2, 2019, 2:33 a.m. UTC | #2
On 06/22/2019 09:43 PM, Kever Yang wrote:
> Hi Mark,
>
>
> On 06/22/2019 04:57 AM, Mark Kettenis wrote:
>> The new common rockchip pinctrl driver does not support explicit
>> requests for a particular pinctrl function.  As a result, the
>> board_init() function bails out early before enabling the boot-on
>> regulators.  Fix this by simply removing the request for pwm0, pwm2
>> and pwm3.  The generic DM code already does the necessary
>> configuration if necessary.
>>
>> Reported-by: Levin Du <djw@t-chip.com.cn>
>> Signed-of-by: Mark Kettenis <kettenis@openbsd.org>
> Reveiwed-by: Kever Yang <kever.yang@rock-chips.com>

Applied to u-boot-rockchip/master

Thanks,
- Kever
>
> Thanks,
> - Kever
>> ---
>> Without this patch the boot-on regulators are not enabled and the
>> my firefly-rk3399 doesn't run OpenBSD stable without it.  Levin Du
>> reported similar problems with Linux.  I'd say this is a critical
>> fix that should make the 2019.07 release.
>>
>> This patch deliberately does not touch the code in spl_boot_init()
>> as Jagan Teki just posted a patchset that touches those bits.
>>
>>  board/rockchip/evb_rk3399/evb-rk3399.c | 32 +-------------------------
>>  1 file changed, 1 insertion(+), 31 deletions(-)
>>
>> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c
>> index bf2ad98c47..8c20bd6e11 100644
>> --- a/board/rockchip/evb_rk3399/evb-rk3399.c
>> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c
>> @@ -13,39 +13,9 @@
>>  
>>  int board_init(void)
>>  {
>> -	struct udevice *pinctrl, *regulator;
>> +	struct udevice *regulator;
>>  	int ret;
>>  
>> -	/*
>> -	 * The PWM do not have decicated interrupt number in dts and can
>> -	 * not get periph_id by pinctrl framework, so let's init them here.
>> -	 * The PWM2 and PWM3 are for pwm regulater.
>> -	 */
>> -	ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
>> -	if (ret) {
>> -		debug("%s: Cannot find pinctrl device\n", __func__);
>> -		goto out;
>> -	}
>> -
>> -	/* Enable pwm0 for panel backlight */
>> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM0);
>> -	if (ret) {
>> -		debug("%s PWM0 pinctrl init fail! (ret=%d)\n", __func__, ret);
>> -		goto out;
>> -	}
>> -
>> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM2);
>> -	if (ret) {
>> -		debug("%s PWM2 pinctrl init fail!\n", __func__);
>> -		goto out;
>> -	}
>> -
>> -	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM3);
>> -	if (ret) {
>> -		debug("%s PWM3 pinctrl init fail!\n", __func__);
>> -		goto out;
>> -	}
>> -
>>  	ret = regulators_enable_boot_on(false);
>>  	if (ret)
>>  		debug("%s: Cannot enable boot on regulator\n", __func__);
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
diff mbox series

Patch

diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c
index bf2ad98c47..8c20bd6e11 100644
--- a/board/rockchip/evb_rk3399/evb-rk3399.c
+++ b/board/rockchip/evb_rk3399/evb-rk3399.c
@@ -13,39 +13,9 @@ 
 
 int board_init(void)
 {
-	struct udevice *pinctrl, *regulator;
+	struct udevice *regulator;
 	int ret;
 
-	/*
-	 * The PWM do not have decicated interrupt number in dts and can
-	 * not get periph_id by pinctrl framework, so let's init them here.
-	 * The PWM2 and PWM3 are for pwm regulater.
-	 */
-	ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
-	if (ret) {
-		debug("%s: Cannot find pinctrl device\n", __func__);
-		goto out;
-	}
-
-	/* Enable pwm0 for panel backlight */
-	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM0);
-	if (ret) {
-		debug("%s PWM0 pinctrl init fail! (ret=%d)\n", __func__, ret);
-		goto out;
-	}
-
-	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM2);
-	if (ret) {
-		debug("%s PWM2 pinctrl init fail!\n", __func__);
-		goto out;
-	}
-
-	ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_PWM3);
-	if (ret) {
-		debug("%s PWM3 pinctrl init fail!\n", __func__);
-		goto out;
-	}
-
 	ret = regulators_enable_boot_on(false);
 	if (ret)
 		debug("%s: Cannot enable boot on regulator\n", __func__);