[PATCH] include: <io.h>: define (read|write)[bwlq]_relaxed
From: Ahmad Fatoum <hidden>
Date: 2021-06-11 08:03:32
Subsystem:
arm/rockchip soc support, common clk framework, gpio subsystem, spi subsystem, the rest, ti davinci series gpio driver, voltage and current regulator framework · Maintainers:
Heiko Stuebner, Michael Turquette, Stephen Boyd, Linus Walleij, Bartosz Golaszewski, Mark Brown, Linus Torvalds, Keerthy, Liam Girdwood
For Linux, It's always correct to substitute any of the read or write _relaxed functions with their non relaxed counterpart. Define functions that do this. Unlike with Linux, they doesn't per se affect performance: barebox writel doesn't imply memory barriers, instead it depends on the architecture support to map IO memory regions as non-bufferable. Signed-off-by: Ahmad Fatoum <redacted> --- drivers/clk/rockchip/clk.h | 3 --- drivers/gpio/gpio-davinci.c | 3 --- drivers/regulator/stm32-vrefbuf.c | 4 +--- drivers/spi/atmel-quadspi.c | 3 --- include/io.h | 32 +++++++++++++++++++++++++++++++ 5 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h
index 5b5bc8c23137..a3db88dfc890 100644
--- a/drivers/clk/rockchip/clk.h
+++ b/drivers/clk/rockchip/clk.h@@ -21,9 +21,6 @@ #include <linux/clk.h> #include <restart.h> -#define writel_relaxed writel -#define readl_relaxed readl - #define HIWORD_UPDATE(val, mask, shift) \ ((val) << (shift) | (mask) << ((shift) + 16))
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 20311d968b82..b4f217660691 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c@@ -13,9 +13,6 @@ #include <io.h> #include <linux/err.h> -#define readl_relaxed readl -#define writel_relaxed writel - struct davinci_gpio_regs { u32 dir; u32 out_data;
diff --git a/drivers/regulator/stm32-vrefbuf.c b/drivers/regulator/stm32-vrefbuf.c
index 3956b1f64f6e..77287c2b0e82 100644
--- a/drivers/regulator/stm32-vrefbuf.c
+++ b/drivers/regulator/stm32-vrefbuf.c@@ -10,6 +10,7 @@ #include <linux/clk.h> #include <linux/iopoll.h> #include <of.h> +#include <io.h> #include <regulator.h> /* STM32 VREFBUF registers */
@@ -23,9 +24,6 @@ #define STM32_VREFBUF_AUTO_SUSPEND_DELAY_MS 10 -#define readl_relaxed readl -#define writel_relaxed writel - struct stm32_vrefbuf { void __iomem *base; struct clk *clk;
diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index 6799f95ea33e..af2191726fe9 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c@@ -34,9 +34,6 @@ #include <of_device.h> #include <linux/iopoll.h> -#define writel_relaxed writel -#define readl_relaxed readl - /* QSPI register offsets */ #define QSPI_CR 0x0000 /* Control Register */ #define QSPI_MR 0x0004 /* Mode Register */
diff --git a/include/io.h b/include/io.h
index 79d8b56c4e3f..6a74246ea777 100644
--- a/include/io.h
+++ b/include/io.h@@ -6,4 +6,36 @@ #define IOMEM_ERR_PTR(err) (__force void __iomem *)ERR_PTR(err) +#ifndef readq_relaxed +#define readq_relaxed(addr) readq(addr) +#endif + +#ifndef readl_relaxed +#define readl_relaxed(addr) readl(addr) +#endif + +#ifndef readw_relaxed +#define readw_relaxed(addr) readw(addr) +#endif + +#ifndef readb_relaxed +#define readb_relaxed(addr) readb(addr) +#endif + +#ifndef writeq_relaxed +#define writeq_relaxed(val, addr) writeq((val), (addr)) +#endif + +#ifndef writel_relaxed +#define writel_relaxed(val, addr) writel((val), (addr)) +#endif + +#ifndef writew_relaxed +#define writew_relaxed(val, addr) writew((val), (addr)) +#endif + +#ifndef writeb_relaxed +#define writeb_relaxed(val, addr) writeb((val), (addr)) +#endif + #endif /* __IO_H */
--
2.32.0.rc0
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox