public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Anatolij Gustschin <agust@denx.de>
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:01:54 +0100	[thread overview]
Message-ID: <20200214110154.72e0eef0@crub> (raw)
In-Reply-To: <914a0443-bdab-3b43-3534-9e5c5a6c65c9@ti.com>

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.

--
Anatolij

  parent reply	other threads:[~2020-02-14 10:01 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 [this message]
2020-02-14 10:14         ` Anatolij Gustschin
2020-02-14 10:22         ` Lokesh Vutla
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=20200214110154.72e0eef0@crub \
    --to=agust@denx.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox