All of lore.kernel.org
 help / color / mirror / Atom feed
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 10/13] comedi: amplc_dio200_pci: Conditionally remove devices that use port I/O
Date: Wed, 13 Sep 2023 17:40:10 +0100	[thread overview]
Message-ID: <20230913164013.107520-11-abbotti@mev.co.uk> (raw)
In-Reply-To: <20230913164013.107520-1-abbotti@mev.co.uk>

In a future patch, the port I/O functions (`inb()`, `outb()`, and
friends will only be declared in the `HAS_IOPORT` configuration option
is enabled.

The amplc_dio200_pci module supports various Amplicon PCI and PCI
Express devices.  Some of the supported devices (the PCI ones) use port
I/O, and some of them (the PCIe ones) only use memory-mapped I/O.

Conditionally compile in support for the devices that need port I/O if
and only if the `CONFIG_HAS_IOPORT` macro is defined.

Add a run-time check in `dio200_pci_auto_attach()` to return an error if
the device actually requires port I/O (based on the PCI BAR resource
flags) but the `HAS_IOPORT` configuration option is not enabled.

Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
---
v2: Correct `CONFIG_HAS_PORTIO` to `CONFIG_HAS_IOPORT` in commit
description.
---
 drivers/comedi/drivers/amplc_dio200_pci.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/comedi/drivers/amplc_dio200_pci.c b/drivers/comedi/drivers/amplc_dio200_pci.c
index 527994d82a1f..cb5b328a28e3 100644
--- a/drivers/comedi/drivers/amplc_dio200_pci.c
+++ b/drivers/comedi/drivers/amplc_dio200_pci.c
@@ -223,14 +223,17 @@
  */
 
 enum dio200_pci_model {
+#ifdef CONFIG_HAS_IOPORT
 	pci215_model,
 	pci272_model,
+#endif /* CONFIG_HAS_IOPORT */
 	pcie215_model,
 	pcie236_model,
 	pcie296_model
 };
 
 static const struct dio200_board dio200_pci_boards[] = {
+#ifdef CONFIG_HAS_IOPORT
 	[pci215_model] = {
 		.name		= "pci215",
 		.mainbar	= 2,
@@ -252,6 +255,7 @@ static const struct dio200_board dio200_pci_boards[] = {
 		.sdinfo		= { 0x00, 0x08, 0x10, 0x3f },
 		.has_int_sce	= true,
 	},
+#endif /* CONFIG_HAS_IOPORT */
 	[pcie215_model] = {
 		.name		= "pcie215",
 		.mainbar	= 1,
@@ -364,8 +368,12 @@ static int dio200_pci_auto_attach(struct comedi_device *dev,
 				"error! cannot remap registers\n");
 			return -ENOMEM;
 		}
-	} else {
+	} else if (IS_ENABLED(CONFIG_HAS_IOPORT)) {
 		dev->iobase = pci_resource_start(pci_dev, bar);
+	} else {
+		dev_err(dev->class_dev,
+			"error! need I/O port support\n");
+		return -ENXIO;
 	}
 
 	if (board->is_pcie) {
@@ -385,8 +393,10 @@ static struct comedi_driver dio200_pci_comedi_driver = {
 };
 
 static const struct pci_device_id dio200_pci_table[] = {
+#ifdef CONFIG_HAS_IOPORT
 	{ PCI_VDEVICE(AMPLICON, 0x000b), pci215_model },
 	{ PCI_VDEVICE(AMPLICON, 0x000a), pci272_model },
+#endif /* CONFIG_HAS_IOPORT */
 	{ PCI_VDEVICE(AMPLICON, 0x0011), pcie236_model },
 	{ PCI_VDEVICE(AMPLICON, 0x0012), pcie215_model },
 	{ PCI_VDEVICE(AMPLICON, 0x0014), pcie296_model },
-- 
2.40.1


  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   ` Ian Abbott [this message]
2023-09-13 16:40   ` [PATCH v2 11/13] comedi: amplc_dio200_common: Refactor register access functions Ian Abbott
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-11-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.