Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1655968

[PATCH v5 01/11] serial: exar: Leave MPIOs as output for Commtech adapters

From Jan Kiszka <jan.kiszka@siemens.com>
Newsgroups linux.kernel
Subject [PATCH v5 01/11] serial: exar: Leave MPIOs as output for Commtech adapters
Date 2017-06-02 09:30 +0200
Message-ID <tNPbZ-6hW-29@gated-at.bofh.it> (permalink)
References <tNPbZ-6hW-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Commtech adapters apparently need the original setting as outputs, see
https://marc.info/?l=linux-gpio&m=149557425201323&w=2. Account for that.

Fixes: 7dea8165f1d6 ("serial: exar: Preconfigure xr17v35x MPIOs as output")
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/tty/serial/8250/8250_exar.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c
index b4fa585156c7..8984e8b2d524 100644
--- a/drivers/tty/serial/8250/8250_exar.c
+++ b/drivers/tty/serial/8250/8250_exar.c
@@ -171,19 +171,26 @@ pci_xr17c154_setup(struct exar8250 *priv, struct pci_dev *pcidev,
 	return default_setup(priv, pcidev, idx, offset, port);
 }
 
-static void setup_gpio(u8 __iomem *p)
+static void setup_gpio(struct pci_dev *pcidev, u8 __iomem *p)
 {
+	/*
+	 * The Commtech adapters required the MPIOs to be driven low. The Exar
+	 * devices will export them as GPIOs, so we pre-configure them safely
+	 * as inputs.
+	 */
+	u8 dir = pcidev->vendor == PCI_VENDOR_ID_EXAR ? 0xff : 0x00;
+
 	writeb(0x00, p + UART_EXAR_MPIOINT_7_0);
 	writeb(0x00, p + UART_EXAR_MPIOLVL_7_0);
 	writeb(0x00, p + UART_EXAR_MPIO3T_7_0);
 	writeb(0x00, p + UART_EXAR_MPIOINV_7_0);
-	writeb(0xff, p + UART_EXAR_MPIOSEL_7_0);
+	writeb(dir,  p + UART_EXAR_MPIOSEL_7_0);
 	writeb(0x00, p + UART_EXAR_MPIOOD_7_0);
 	writeb(0x00, p + UART_EXAR_MPIOINT_15_8);
 	writeb(0x00, p + UART_EXAR_MPIOLVL_15_8);
 	writeb(0x00, p + UART_EXAR_MPIO3T_15_8);
 	writeb(0x00, p + UART_EXAR_MPIOINV_15_8);
-	writeb(0xff, p + UART_EXAR_MPIOSEL_15_8);
+	writeb(dir,  p + UART_EXAR_MPIOSEL_15_8);
 	writeb(0x00, p + UART_EXAR_MPIOOD_15_8);
 }
 
@@ -236,7 +243,7 @@ pci_xr17v35x_setup(struct exar8250 *priv, struct pci_dev *pcidev,
 
 	if (idx == 0) {
 		/* Setup Multipurpose Input/Output pins. */
-		setup_gpio(p);
+		setup_gpio(pcidev, p);
 
 		port->port.private_data = xr17v35x_register_gpio(pcidev);
 	}
-- 
2.12.3

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v5 00/11] serial/gpio: exar: Fixes and support for IOT2000 Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:30 +0200
  [PATCH v5 01/11] serial: exar: Leave MPIOs as output for Commtech adapters Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:30 +0200
  [PATCH v5 04/11] gpio: exar: Allocate resources on behalf of the platform device Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:30 +0200
  [PATCH v5 11/11] serial: exar: Add support for IOT2040 device Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 05/11] gpio: exar: Fix iomap request Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 02/11] gpio-exar/8250-exar: Do not even instantiate a GPIO device for Commtech cards Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 08/11] serial: exar: Factor out platform hooks Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 07/11] gpio-exar/8250-exar: Rearrange gpiochip parenthood Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 10/11] gpio-exar/8250-exar: Make set of exported GPIOs configurable Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
    Re: [PATCH v5 10/11] gpio-exar/8250-exar: Make set of exported GPIOs configurable Andy Shevchenko <andy.shevchenko@gmail.com> - 2017-06-02 12:40 +0200
  [PATCH v5 03/11] gpio-exar/8250-exar: Fix passing in of parent PCI device Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 06/11] gpio: exar: Fix reading of directions and values Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200
  [PATCH v5 09/11] platform: Accept const properties Jan Kiszka <jan.kiszka@siemens.com> - 2017-06-02 09:40 +0200

csiph-web