[PATCH master 3/4] ARM: psci: client: always register OF fixup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We currently only register the device tree fixup if PSCI version in
device tree disagrees with version read from firmware. The barebox
PSCI DT version may differ from the kernel version though, so we
should rather run the fixup always. If the kernel has already an
up-to-date compatible, it won't change. But for cases where firmware is
expected to fill out the correct PSCI version, barebox will do what's
expected.

While at it, move the of_version logic together to make it easier
to follow.

Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
---
 arch/arm/cpu/psci-client.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/arch/arm/cpu/psci-client.c b/arch/arm/cpu/psci-client.c
index 8e151177c2d7..218170dfa4ba 100644
--- a/arch/arm/cpu/psci-client.c
+++ b/arch/arm/cpu/psci-client.c
@@ -119,10 +119,6 @@ static int __init psci_probe(struct device_d *dev)
 	ulong of_version, actual_version;
 	int ret;
 
-	ret = dev_get_drvdata(dev, (const void **)&of_version);
-	if (ret)
-		return -ENODEV;
-
 	ret = of_property_read_string(dev->device_node, "method", &method);
 	if (ret) {
 		dev_warn(dev, "missing \"method\" property\n");
@@ -139,6 +135,7 @@ static int __init psci_probe(struct device_d *dev)
 	}
 
 
+	of_version = (ulong)device_get_match_data(dev);
 	if (of_version < ARM_PSCI_VER(0,2)) {
 		version = of_version;
 
@@ -155,8 +152,7 @@ static int __init psci_probe(struct device_d *dev)
 	dev_info(dev, "detected version %u.%u\n",
 		 version >> 16, version & 0xffff);
 
-	if (actual_version != of_version)
-		of_register_fixup(of_psci_do_fixup, &version);
+	of_register_fixup(of_psci_do_fixup, &version);
 
 	ret = poweroff_handler_register_fn(psci_poweroff);
 	if (ret)
-- 
2.30.2





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux