aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorOlliver Schinagl <oliver@schinagl.nl>2018-11-21 20:05:26 +0200
committerJagan Teki <jagan@amarulasolutions.com>2018-12-07 22:24:33 +0530
commitc970e8954f084b543d241fd96c0377988d8d4971 (patch)
tree7c3d032c79fabde59020fc1733da7a97f21a8b45 /arch
parenta8011eb84dfac5187cebf00ed8bc981bdb5c1fa1 (diff)
downloadu-boot-c970e8954f084b543d241fd96c0377988d8d4971.zip
u-boot-c970e8954f084b543d241fd96c0377988d8d4971.tar.gz
u-boot-c970e8954f084b543d241fd96c0377988d8d4971.tar.bz2
sunxi: pmic_bus: Decrease boot time by not writing duplicate data
When we clear a pmic_bus bit, we do a read-modify-write operation. We waste some time however, by writing back the exact samea value that was already set in the chip. Let us thus only do the write in case data was changed. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl> Signed-off-by: Priit Laes <plaes@plaes.org> Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-sunxi/pmic_bus.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mach-sunxi/pmic_bus.c b/arch/arm/mach-sunxi/pmic_bus.c
index 5d91d7e..dea42de 100644
--- a/arch/arm/mach-sunxi/pmic_bus.c
+++ b/arch/arm/mach-sunxi/pmic_bus.c
@@ -101,6 +101,9 @@ int pmic_bus_setbits(u8 reg, u8 bits)
if (ret)
return ret;
+ if ((val & bits) == bits)
+ return 0;
+
val |= bits;
return pmic_bus_write(reg, val);
}
@@ -114,6 +117,9 @@ int pmic_bus_clrbits(u8 reg, u8 bits)
if (ret)
return ret;
+ if (!(val & bits))
+ return 0;
+
val &= ~bits;
return pmic_bus_write(reg, val);
}