lkml.org 
[lkml]   [2024]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v1 1/1] gpio: mmio: Support 64-bit BE access
Date
Use ioread64be()/iowrite64be() for 64-bit BE access.

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
drivers/gpio/gpio-mmio.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c
index 71e1af7c2184..cd5ef9233152 100644
--- a/drivers/gpio/gpio-mmio.c
+++ b/drivers/gpio/gpio-mmio.c
@@ -92,12 +92,12 @@ static unsigned long bgpio_read32(void __iomem *reg)
#if BITS_PER_LONG >= 64
static void bgpio_write64(void __iomem *reg, unsigned long data)
{
- writeq(data, reg);
+ iowrite64(data, reg);
}

static unsigned long bgpio_read64(void __iomem *reg)
{
- return readq(reg);
+ return ioread64(reg);
}
#endif /* BITS_PER_LONG >= 64 */

@@ -121,6 +121,18 @@ static unsigned long bgpio_read32be(void __iomem *reg)
return ioread32be(reg);
}

+#if BITS_PER_LONG >= 64
+static void bgpio_write64be(void __iomem *reg, unsigned long data)
+{
+ iowrite64be(data, reg);
+}
+
+static unsigned long bgpio_read64be(void __iomem *reg)
+{
+ return ioread64be(reg);
+}
+#endif /* BITS_PER_LONG >= 64 */
+
static unsigned long bgpio_line2mask(struct gpio_chip *gc, unsigned int line)
{
if (gc->be_bits)
@@ -445,9 +457,8 @@ static int bgpio_setup_accessors(struct device *dev,
#if BITS_PER_LONG >= 64
case 64:
if (byte_be) {
- dev_err(dev,
- "64 bit big endian byte order unsupported\n");
- return -EINVAL;
+ gc->read_reg = bgpio_read64be;
+ gc->write_reg = bgpio_write64be;
} else {
gc->read_reg = bgpio_read64;
gc->write_reg = bgpio_write64;
--
2.43.2

\
 
 \ /
  Last update: 2024-05-27 15:13    [W:0.080 / U:0.132 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site