All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lokesh Vutla <lokeshvutla@ti.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 15:52:09 +0530	[thread overview]
Message-ID: <9c9d4e9b-2e15-18d5-df30-eff15a36734c@ti.com> (raw)
In-Reply-To: <20200214110154.72e0eef0@crub>



On 14/02/20 3:31 PM, 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:
> 
> Starting kernel ...
> 
> device_remove: OFF 'clk', uclass pd 0
> device_remove: OFF 'gpioledsgrp', uclass pd 0
> device_remove: OFF 'lpi2c0grp', uclass pd 0
> device_remove: OFF 'lpi2c1grp', uclass pd 0
> device_remove: OFF 'lpuart2grp', uclass pd 0
> device_remove: OFF 'usdhc1grp', uclass pd 0
> device_remove: OFF 'fec2grp', uclass pd 0
> device_remove: OFF 'imx8qxp-som', 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_gpio3', 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_enet1', uclass pd 1
> device_remove: 'connectivity_power_domain', uclass pd 1
> device_remove: 'dma_lpi2c0', uclass pd 1
> device_remove: 'dma_lpi2c1', uclass pd 1
> device_remove: 'dma_lpuart2', uclass pd 1
> device_remove: 'dma_power_domain', uclass pd 1
> device_remove: OFF 'imx8qx-pm', uclass pd 0
> device_remove: OFF 'generic_50', uclass pd 0
> device_remove: OFF 'i2c at 5a800000', uclass pd 0
> device_remove: 'dma_lpi2c0', uclass pd 1
> device_remove: OFF 'i2c at 5a810000', uclass pd 0
> device_remove: 'dma_lpi2c1', uclass pd 1
> device_remove: OFF 'gpio at 5d080000', uclass pd 0
> device_remove: 'lsio_gpio0', uclass pd 1
> device_remove: OFF 'gpio at 5d090000', uclass pd 0
> device_remove: 'lsio_gpio1', uclass pd 1
> device_remove: OFF 'gpio at 5d0b0000', uclass pd 0
> device_remove: 'lsio_gpio3', uclass pd 1
> device_remove: OFF 'gpio at 5d0c0000', uclass pd 0
> device_remove: 'lsio_gpio4', uclass pd 1
> device_remove: OFF 'gpio at 5d0d0000', uclass pd 0
> device_remove: 'lsio_gpio5', uclass pd 1
> device_remove: 'serial at 5a080000', uclass pd 0
> device_remove: OFF 'usdhc at 5b010000.blk', uclass pd 0
> device_remove: OFF 'usdhc at 5b010000', uclass pd 0
> device_remove: 'conn_sdhc0', uclass pd 1
> device_remove: OFF 'ethernet at 5b050000', uclass pd 0
> device_remove: 'conn_enet1', uclass pd 1
> device_remove: OFF 'run', uclass pd 0
> device_remove: OFF 'flt', uclass pd 0
> device_remove: OFF 'svc', uclass pd 0
> device_remove: OFF 'com1_tx', uclass pd 0
> device_remove: OFF 'com1_rx', uclass pd 0
> device_remove: OFF 'com2_tx', uclass pd 0
> device_remove: OFF 'com2_rx', uclass pd 0
> device_remove: OFF 'cloud', uclass pd 0
> device_remove: OFF 'wlan', uclass pd 0
> device_remove: OFF 'dbg1', uclass pd 0
> device_remove: OFF 'dbg2', uclass pd 0
> device_remove: OFF 'dbg3', uclass pd 0
> device_remove: OFF 'dbg4', uclass pd 0
> device_remove: OFF 'leds', uclass pd 0
> device_remove: OFF 'root_driver', uclass pd 0
> 
> My original patch v3 had this additional condition for power domain off:
> 
>  (device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN)
> 
> This was dropped in the merged patch for some reason, I don't know why.

power_domain_get_by_index() handles this case. It tries to read power-domains in
the node, if not found it will fall back. I am not sure why it should be an
issue in this case.

I am not saying the above condition is wrong but it is already taken care the
power_domain_off.

Thanks and regards,
Lokesh

  parent reply	other threads:[~2020-02-14 10:22 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 [this message]
2020-02-14 10:50         ` Oliver Graute
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=9c9d4e9b-2e15-18d5-df30-eff15a36734c@ti.com \
    --to=lokeshvutla@ti.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.