All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oliver Graute <oliver.graute@gmail.com>
To: u-boot@lists.denx.de
Subject: [RFC 2/2] Revert "dm: core: device: switch off power domain after device removal"
Date: Fri, 14 Feb 2020 11:50:47 +0100	[thread overview]
Message-ID: <20200214105047.GE6975@optiplex> (raw)
In-Reply-To: <20200214110154.72e0eef0@crub>

On 14/02/20, Anatolij Gustschin wrote:
> On Fri, 14 Feb 2020 09:50:54 +0530
> Lokesh Vutla lokeshvutla at ti.com wrote:
> 
> > On 13/02/20 10:42 PM, Neil Armstrong wrote:
> > > Hi,
> > > 
> > > On 03/02/2020 14:59, Oliver Graute wrote:  
> > >> The conga-imx8 board isn't booting without this revert. Can someone tell me
> > >> what I need to Do so that this revert is not necessary?  
> > 
> > Can you give more details on where the failure is happening?(logs would really
> > help).
> 
> On i.MX8QXP based SoM running U-Boot v2020.04-rc2 with below patch the
> v4.14.98 kernel from NXP BSP boots:
> 
> diff --git a/arch/arm/mach-imx/imx8/fdt.c b/arch/arm/mach-imx/imx8/fdt.c
> index 65c8ac1a7e..cf79a12f42 100644
> --- a/arch/arm/mach-imx/imx8/fdt.c
> +++ b/arch/arm/mach-imx/imx8/fdt.c
> @@ -280,7 +280,9 @@ int ft_system_setup(void *blob, bd_t *bd)
>  {
>  	int ret;
>  
> +	/*
>  	update_fdt_with_owned_resources(blob);
> +	*/
>  
>  	if (is_imx8qm()) {
>  		ret = config_smmu_fdt(blob);
> 
> diff --git a/drivers/core/device-remove.c b/drivers/core/device-remove.c
> index 444e34b492..a218f481b5 100644
> --- a/drivers/core/device-remove.c
> +++ b/drivers/core/device-remove.c
> @@ -194,9 +194,18 @@ int device_remove(struct udevice *dev, uint flags)
>  		}
>  	}
>  
> -	if (!(drv->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF) &&
> -	    (dev != gd->cur_serial_dev))
> +	if (!(dev->flags & DM_FLAG_DEFAULT_PD_CTRL_OFF) &&
> +	    (device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) &&
> +	    (dev != gd->cur_serial_dev)) {
> +		dm_warn("%s: OFF '%s', uclass pd %d\n",
> +			__func__, dev->name,
> +			device_get_uclass_id(dev) == UCLASS_POWER_DOMAIN);
>  		dev_power_domain_off(dev);
> +	} else {
> +		dm_warn("%s: '%s', uclass pd %d\n",
> +			__func__, dev->name,
> +			device_get_uclass_id(dev) == UCLASS_POWER_DOMAIN);
> +	}
>  
>  	if (flags_remove(flags, drv->flags)) {
>  		device_free(dev);
> 
> The generated debug log:

thx I did the same as Anatolij on my imx8qm congatec board:

done
Bytes transferred = 21224 (52e8 hex)
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 0000000083000000, end 00000000830082e7

Starting kernel ...

device_remove: OFF 'clk', uclass pd 0
device_remove: OFF 'hoggrp', uclass pd 0
device_remove: OFF 'fec1grp', uclass pd 0
device_remove: OFF 'lpuart0grp', uclass pd 0
device_remove: OFF 'usdhc1grp', uclass pd 0
device_remove: OFF 'usdhc2grpgpio', uclass pd 0
device_remove: OFF 'usdhc2grp', uclass pd 0
device_remove: OFF 'usdhc3grpgpio', uclass pd 0
device_remove: OFF 'usdhc3grp', uclass pd 0
device_remove: OFF 'imx8qm-qmx8', uclass pd 0
device_remove: OFF 'iomuxc', uclass pd 0
device_remove: OFF 'mu at 5d1c0000', uclass pd 0
device_remove: 'lsio_gpio0', uclass pd 1
device_remove: 'lsio_gpio1', uclass pd 1
device_remove: 'lsio_gpio2', uclass pd 1
device_remove: 'lsio_gpio4', uclass pd 1
device_remove: 'lsio_gpio5', uclass pd 1
device_remove: 'lsio_power_domain', uclass pd 1
device_remove: 'conn_sdhc0', uclass pd 1
device_remove: 'conn_sdhc1', uclass pd 1
device_remove: 'conn_sdhc2', uclass pd 1
device_remove: 'conn_enet0', uclass pd 1
device_remove: 'connectivity_power_domain', uclass pd 1
device_remove: 'dma_lpuart0', uclass pd 1
device_remove: 'dma_power_domain', uclass pd 1
device_remove: OFF 'imx8qm-pm', uclass pd 0
device_remove: OFF 'gpio at 5d080000', uclass pd 0
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdaea0f0, power_domain=00000000fdae0118)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdae0118)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdae0118)
power_domain_off() power_domain_off(power_domain=00000000fdae0118)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdae0118)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_gpio0, state_on 1
imx8_power_domain_off_node() lsio_gpio0 is powered off
imx8_power_domain_off_parentnodes() imx8_power_domain_off_parentnodes, lsio_power_domain, state_on 1
imx8_power_domain_off_parentnodes() sibling lsio_gpio1, state_on 1
device_remove: 'lsio_gpio0', uclass pd 1
device_remove: OFF 'gpio at 5d090000', uclass pd 0
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdaea1d0, power_domain=00000000fdae0118)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdae0118)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdae0118)
power_domain_off() power_domain_off(power_domain=00000000fdae0118)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdae0118)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_gpio1, state_on 1
imx8_power_domain_off_node() lsio_gpio1 is powered off
imx8_power_domain_off_parentnodes() imx8_power_domain_off_parentnodes, lsio_power_domain, state_on 1
imx8_power_domain_off_parentnodes() sibling lsio_gpio2, state_on 1
device_remove: 'lsio_gpio1', uclass pd 1
device_remove: OFF 'gpio at 5d0a0000', uclass pd 0
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdaea2b0, power_domain=00000000fdae0118)

Best regards,

Oliver

  parent reply	other threads:[~2020-02-14 10:50 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-03 13:59 [PATCH v2] imx: support for conga-QMX8 board Oliver Graute
2020-02-03 13:59 ` [RFC 1/2] hack to boot with 2020.01 Oliver Graute
2020-02-03 17:15   ` Simon Glass
2020-02-04 17:07   ` Tom Rini
2020-02-05  8:48     ` Oliver Graute
2020-02-03 13:59 ` [RFC 2/2] Revert "dm: core: device: switch off power domain after device removal" Oliver Graute
2020-02-13 17:12   ` Neil Armstrong
2020-02-14  4:20     ` Lokesh Vutla
2020-02-14  9:18       ` Oliver Graute
2020-02-14  9:30         ` Lokesh Vutla
2020-02-14 10:30           ` Oliver Graute
2020-02-14 10:01       ` Anatolij Gustschin
2020-02-14 10:14         ` Anatolij Gustschin
2020-02-14 10:22         ` Lokesh Vutla
2020-02-14 10:50         ` Oliver Graute [this message]
2020-02-17  8:55       ` Neil Armstrong
2020-02-17 13:17       ` Anatolij Gustschin
2020-02-17 13:05     ` Anatolij Gustschin
2020-02-17 13:37       ` Lokesh Vutla
2020-05-04  7:40 ` [PATCH v2] imx: support for conga-QMX8 board Stefano Babic
2020-05-04 14:25   ` Oliver Graute

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200214105047.GE6975@optiplex \
    --to=oliver.graute@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.