From: Ian Abbott <abbotti@mev.co.uk>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Ian Abbott <abbotti@mev.co.uk>,
H Hartley Sweeten <hsweeten@visionengravers.com>,
Arnd Bergmann <arnd@kernel.org>,
Niklas Schnelle <schnelle@linux.ibm.com>
Subject: [PATCH v2 11/13] comedi: amplc_dio200_common: Refactor register access functions
Date: Wed, 13 Sep 2023 17:40:11 +0100 [thread overview]
Message-ID: <20230913164013.107520-12-abbotti@mev.co.uk> (raw)
In-Reply-To: <20230913164013.107520-1-abbotti@mev.co.uk>
The `dio200_read8()`, `dio200_write8()`, `dio200_read32()` and
`dio200_write32()` functions apply a right-shift to the register offset
for some devices and then perform the actual register access. Factor
the register access part out to new functions `dio200___read8()`,
`dio200___write8()`, `dio200___read32()`, and `dio200___write32()`.
This will reduce duplicated code in a subsequent patch that will
conditionally compile support for port I/O as part of the `HAS_IOPORT`
changes.
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
v2: Correct `HAS_PORTIO` to `HAS_IOPORT` in commit description.
---
drivers/comedi/drivers/amplc_dio200_common.c | 52 ++++++++++++++------
1 file changed, 38 insertions(+), 14 deletions(-)
diff --git a/drivers/comedi/drivers/amplc_dio200_common.c b/drivers/comedi/drivers/amplc_dio200_common.c
index 19166cb26f5e..e6d63e89e7bf 100644
--- a/drivers/comedi/drivers/amplc_dio200_common.c
+++ b/drivers/comedi/drivers/amplc_dio200_common.c
@@ -86,6 +86,40 @@ struct dio200_subdev_intr {
unsigned int active:1;
};
+static unsigned char dio200___read8(struct comedi_device *dev,
+ unsigned int offset)
+{
+ if (dev->mmio)
+ return readb(dev->mmio + offset);
+ return inb(dev->iobase + offset);
+}
+
+static void dio200___write8(struct comedi_device *dev,
+ unsigned int offset, unsigned char val)
+{
+ if (dev->mmio)
+ writeb(val, dev->mmio + offset);
+ else
+ outb(val, dev->iobase + offset);
+}
+
+static unsigned int dio200___read32(struct comedi_device *dev,
+ unsigned int offset)
+{
+ if (dev->mmio)
+ return readl(dev->mmio + offset);
+ return inl(dev->iobase + offset);
+}
+
+static void dio200___write32(struct comedi_device *dev,
+ unsigned int offset, unsigned int val)
+{
+ if (dev->mmio)
+ writel(val, dev->mmio + offset);
+ else
+ outl(val, dev->iobase + offset);
+}
+
static unsigned char dio200_read8(struct comedi_device *dev,
unsigned int offset)
{
@@ -94,9 +128,7 @@ static unsigned char dio200_read8(struct comedi_device *dev,
if (board->is_pcie)
offset <<= 3;
- if (dev->mmio)
- return readb(dev->mmio + offset);
- return inb(dev->iobase + offset);
+ return dio200___read8(dev, offset);
}
static void dio200_write8(struct comedi_device *dev,
@@ -107,10 +139,7 @@ static void dio200_write8(struct comedi_device *dev,
if (board->is_pcie)
offset <<= 3;
- if (dev->mmio)
- writeb(val, dev->mmio + offset);
- else
- outb(val, dev->iobase + offset);
+ dio200___write8(dev, offset, val);
}
static unsigned int dio200_read32(struct comedi_device *dev,
@@ -121,9 +150,7 @@ static unsigned int dio200_read32(struct comedi_device *dev,
if (board->is_pcie)
offset <<= 3;
- if (dev->mmio)
- return readl(dev->mmio + offset);
- return inl(dev->iobase + offset);
+ return dio200___read32(dev, offset);
}
static void dio200_write32(struct comedi_device *dev,
@@ -134,10 +161,7 @@ static void dio200_write32(struct comedi_device *dev,
if (board->is_pcie)
offset <<= 3;
- if (dev->mmio)
- writel(val, dev->mmio + offset);
- else
- outl(val, dev->iobase + offset);
+ dio200___write32(dev, offset, val);
}
static unsigned int dio200_subdev_8254_offset(struct comedi_device *dev,
--
2.40.1
next prev parent reply other threads:[~2023-09-13 16:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Message-Id: <20230913113247.91749-1-abbotti@mev.co.uk>
2023-09-13 16:40 ` [PATCH v2 00/13] comedi: Re-do HAS_IOPORT dependencies Ian Abbott
2023-09-13 16:40 ` [PATCH v2 01/13] comedi: Correct dependencies for COMEDI_NI_PCIDIO Ian Abbott
2023-09-13 16:40 ` [PATCH v2 02/13] comedi: comedi_8254: Use a call-back function for register access Ian Abbott
2023-09-13 16:40 ` [PATCH v2 03/13] comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() Ian Abbott
2023-09-13 16:40 ` [PATCH v2 04/13] comedi: comedi_8254: Conditionally remove I/O port support Ian Abbott
2023-09-13 16:46 ` Ian Abbott
2023-09-13 16:40 ` [PATCH v2 05/13] comedi: 8255_pci: Conditionally remove devices that use port I/O Ian Abbott
2023-09-13 16:40 ` [PATCH v2 06/13] comedi: comedi_8255: Rework subdevice initialization functions Ian Abbott
2023-09-13 16:40 ` [PATCH v2 07/13] comedi: comedi_8255: Conditionally remove I/O port support Ian Abbott
2023-09-13 16:40 ` [PATCH v2 08/13] comedi: ni_labpc_common: " Ian Abbott
2023-09-13 16:40 ` [PATCH v2 09/13] comedi: ni_mio_common: Conditionally use I/O port or MMIO Ian Abbott
2023-09-13 16:40 ` [PATCH v2 10/13] comedi: amplc_dio200_pci: Conditionally remove devices that use port I/O Ian Abbott
2023-09-13 16:40 ` Ian Abbott [this message]
2023-09-13 16:40 ` [PATCH v2 12/13] comedi: amplc_dio200_common: Conditionally remove I/O port support Ian Abbott
2023-09-13 16:40 ` [PATCH v2 13/13] comedi: add HAS_IOPORT dependencies again Ian Abbott
2023-09-13 17:06 ` [PATCH v3 00/13] comedi: Re-do HAS_IOPORT dependencies Ian Abbott
2023-09-13 17:07 ` [PATCH v3 01/13] comedi: Correct dependencies for COMEDI_NI_PCIDIO Ian Abbott
2023-09-13 17:07 ` [PATCH v3 02/13] comedi: comedi_8254: Use a call-back function for register access Ian Abbott
2023-09-13 17:07 ` [PATCH v3 03/13] comedi: comedi_8254: Replace comedi_8254_init() and comedi_8254_mm_init() Ian Abbott
2023-09-13 17:07 ` [PATCH v3 04/13] comedi: comedi_8254: Conditionally remove I/O port support Ian Abbott
2023-09-13 17:07 ` [PATCH v3 05/13] comedi: 8255_pci: Conditionally remove devices that use port I/O Ian Abbott
2023-09-13 17:07 ` [PATCH v3 06/13] comedi: comedi_8255: Rework subdevice initialization functions Ian Abbott
2023-09-13 17:07 ` [PATCH v3 07/13] comedi: comedi_8255: Conditionally remove I/O port support Ian Abbott
2023-09-13 17:07 ` [PATCH v3 08/13] comedi: ni_labpc_common: " Ian Abbott
2023-09-13 17:07 ` [PATCH v3 09/13] comedi: ni_mio_common: Conditionally use I/O port or MMIO Ian Abbott
2023-09-13 17:07 ` [PATCH v3 10/13] comedi: amplc_dio200_pci: Conditionally remove devices that use port I/O Ian Abbott
2023-09-13 17:07 ` [PATCH v3 11/13] comedi: amplc_dio200_common: Refactor register access functions Ian Abbott
2023-09-13 17:07 ` [PATCH v3 12/13] comedi: amplc_dio200_common: Conditionally remove I/O port support Ian Abbott
2023-09-13 17:07 ` [PATCH v3 13/13] comedi: add HAS_IOPORT dependencies again Ian Abbott
2023-09-19 11:40 ` Niklas Schnelle
2023-09-19 11:54 ` Greg Kroah-Hartman
2023-09-13 17:15 ` [PATCH v3 00/13] comedi: Re-do HAS_IOPORT dependencies Ian Abbott
2023-09-13 17:16 ` [PATCH v2 " Ian Abbott
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=20230913164013.107520-12-abbotti@mev.co.uk \
--to=abbotti@mev.co.uk \
--cc=arnd@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hsweeten@visionengravers.com \
--cc=linux-kernel@vger.kernel.org \
--cc=schnelle@linux.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.