[SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

[Impact]
We shipped several platform with sunix device, which is enabled by sunix
DKMS driver.
We should use in-tree driver instead.

[Fix]
Backport in-tree Sunix driver.

[Test]
Sunix test it on all their devices and they confirmed it works.

[Regression Potential]
Low. It's a new driver so the regression potential is minimal.

Kai-Heng Feng (2):
  serial: 8250_pci: Add support for Sunix serial boards
  parport: parport_serial: Add support for Sunix Multi I/O boards

 drivers/parport/parport_serial.c    | 44 ++++++++++----
 drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
 drivers/tty/serial/8250/8250_port.c |  8 +++
 include/uapi/linux/serial_core.h    |  3 +
 4 files changed, 119 insertions(+), 29 deletions(-)

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[B/OEM-B] [PATCH 1/2] serial: 8250_pci: Add support for Sunix serial boards

Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

Add support to Sunix serial boards with up to 16 ports.

Sunix board need its own setup callback instead of using Timedia's, to
properly support more than 4 ports.

Cc: Morris Ku <[hidden email]>
Cc: Debbie Liu <[hidden email]>
Signed-off-by: Kai-Heng Feng <[hidden email]>
Link: https://lore.kernel.org/r/20190809190130.30773-1-kai.heng.feng@...
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(backported from commit a4b7aca30609899a925cbf24b08bfea79883254c linux-next)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
 drivers/tty/serial/8250/8250_port.c |  8 +++
 include/uapi/linux/serial_core.h    |  3 +
 3 files changed, 87 insertions(+), 17 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index f05d35217611..e384d73bcac2 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1637,6 +1637,30 @@ pci_wch_ch38x_setup(struct serial_private *priv,
  return pci_default_setup(priv, board, port, idx);
 }
 
+static int
+pci_sunix_setup(struct serial_private *priv,
+ const struct pciserial_board *board,
+ struct uart_8250_port *port, int idx)
+{
+ int bar;
+ int offset;
+
+ port->port.flags |= UPF_FIXED_TYPE;
+ port->port.type = PORT_SUNIX;
+
+ if (idx < 4) {
+ bar = 0;
+ offset = idx * board->uart_offset;
+ } else {
+ bar = 1;
+ idx -= 4;
+ idx = div_s64_rem(idx, 4, &offset);
+ offset = idx * 64 + offset * board->uart_offset;
+ }
+
+ return setup_port(priv, port, bar, offset, 0);
+}
+
 #define PCI_VENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_DEVICE_ID_OCTPRO 0x0001
@@ -2231,21 +2255,14 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
  .setup = pci_timedia_setup,
  },
  /*
- * SUNIX (Timedia) cards
- * Do not "probe" for these cards as there is at least one combination
- * card that should be handled by parport_pc that doesn't match the
- * rule in pci_timedia_probe.
- * It is part number is MIO5079A but its subdevice ID is 0x0102.
- * There are some boards with part number SER5037AL that report
- * subdevice ID 0x0002.
+ * Sunix PCI serial boards
  */
  {
  .vendor = PCI_VENDOR_ID_SUNIX,
  .device = PCI_DEVICE_ID_SUNIX_1999,
  .subvendor = PCI_VENDOR_ID_SUNIX,
  .subdevice = PCI_ANY_ID,
- .init = pci_timedia_init,
- .setup = pci_timedia_setup,
+ .setup = pci_sunix_setup,
  },
  /*
  * Xircom cards
@@ -2699,6 +2716,11 @@ enum pci_board_num_t {
  pbn_pericom_PI7C9X7952,
  pbn_pericom_PI7C9X7954,
  pbn_pericom_PI7C9X7958,
+ pbn_sunix_pci_1s,
+ pbn_sunix_pci_2s,
+ pbn_sunix_pci_4s,
+ pbn_sunix_pci_8s,
+ pbn_sunix_pci_16s,
 };
 
 /*
@@ -3436,6 +3458,31 @@ static struct pciserial_board pci_boards[] = {
  .base_baud      = 921600,
  .uart_offset = 0x8,
  },
+ [pbn_sunix_pci_1s] = {
+ .num_ports = 1,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_2s] = {
+ .num_ports = 2,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_4s] = {
+ .num_ports = 4,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_8s] = {
+ .num_ports = 8,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_16s] = {
+ .num_ports = 16,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
 };
 
 static const struct pci_device_id blacklist[] = {
@@ -4489,17 +4536,29 @@ static const struct pci_device_id serial_pci_tbl[] = {
  pbn_b0_bt_1_921600 },
 
  /*
- * SUNIX (TIMEDIA)
+ * Sunix PCI serial boards
  */
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
-
+ PCI_VENDOR_ID_SUNIX, 0x0001, 0, 0,
+ pbn_sunix_pci_1s },
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
+ PCI_VENDOR_ID_SUNIX, 0x0002, 0, 0,
+ pbn_sunix_pci_2s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0004, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0084, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0008, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0088, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0010, 0, 0,
+ pbn_sunix_pci_16s },
 
  /*
  * AFAVLAB serial card, from Harald Welte <[hidden email]>
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index f6ceb83a1d6e..2ff86278877d 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -305,6 +305,14 @@ static const struct serial8250_config uart_config[] = {
  .rxtrig_bytes = {1, 4, 8, 14},
  .flags = UART_CAP_FIFO,
  },
+ [PORT_SUNIX] = {
+ .name = "Sunix",
+ .fifo_size = 128,
+ .tx_loadsz = 128,
+ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
+ .rxtrig_bytes = {1, 32, 64, 112},
+ .flags = UART_CAP_FIFO | UART_CAP_SLEEP,
+ },
 };
 
 /* Uart divisor latch read */
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
index dce5f9dae121..87914a635bbf 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -281,4 +281,7 @@
 /* MediaTek BTIF */
 #define PORT_MTK_BTIF 117
 
+/* Sunix UART */
+#define PORT_SUNIX 121
+
 #endif /* _UAPILINUX_SERIAL_CORE_H */
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[D] [PATCH 1/2] serial: 8250_pci: Add support for Sunix serial boards

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

Add support to Sunix serial boards with up to 16 ports.

Sunix board need its own setup callback instead of using Timedia's, to
properly support more than 4 ports.

Cc: Morris Ku <[hidden email]>
Cc: Debbie Liu <[hidden email]>
Signed-off-by: Kai-Heng Feng <[hidden email]>
Link: https://lore.kernel.org/r/20190809190130.30773-1-kai.heng.feng@...
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(backported from commit a4b7aca30609899a925cbf24b08bfea79883254c linux-next)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
 drivers/tty/serial/8250/8250_port.c |  8 +++
 include/uapi/linux/serial_core.h    |  3 +
 3 files changed, 87 insertions(+), 17 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index bbe5cba21522..71d10efee492 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1637,6 +1637,30 @@ pci_wch_ch38x_setup(struct serial_private *priv,
  return pci_default_setup(priv, board, port, idx);
 }
 
+static int
+pci_sunix_setup(struct serial_private *priv,
+ const struct pciserial_board *board,
+ struct uart_8250_port *port, int idx)
+{
+ int bar;
+ int offset;
+
+ port->port.flags |= UPF_FIXED_TYPE;
+ port->port.type = PORT_SUNIX;
+
+ if (idx < 4) {
+ bar = 0;
+ offset = idx * board->uart_offset;
+ } else {
+ bar = 1;
+ idx -= 4;
+ idx = div_s64_rem(idx, 4, &offset);
+ offset = idx * 64 + offset * board->uart_offset;
+ }
+
+ return setup_port(priv, port, bar, offset, 0);
+}
+
 #define PCI_VENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_DEVICE_ID_OCTPRO 0x0001
@@ -2228,21 +2252,14 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
  .setup = pci_timedia_setup,
  },
  /*
- * SUNIX (Timedia) cards
- * Do not "probe" for these cards as there is at least one combination
- * card that should be handled by parport_pc that doesn't match the
- * rule in pci_timedia_probe.
- * It is part number is MIO5079A but its subdevice ID is 0x0102.
- * There are some boards with part number SER5037AL that report
- * subdevice ID 0x0002.
+ * Sunix PCI serial boards
  */
  {
  .vendor = PCI_VENDOR_ID_SUNIX,
  .device = PCI_DEVICE_ID_SUNIX_1999,
  .subvendor = PCI_VENDOR_ID_SUNIX,
  .subdevice = PCI_ANY_ID,
- .init = pci_timedia_init,
- .setup = pci_timedia_setup,
+ .setup = pci_sunix_setup,
  },
  /*
  * Xircom cards
@@ -2696,6 +2713,11 @@ enum pci_board_num_t {
  pbn_pericom_PI7C9X7952,
  pbn_pericom_PI7C9X7954,
  pbn_pericom_PI7C9X7958,
+ pbn_sunix_pci_1s,
+ pbn_sunix_pci_2s,
+ pbn_sunix_pci_4s,
+ pbn_sunix_pci_8s,
+ pbn_sunix_pci_16s,
 };
 
 /*
@@ -3433,6 +3455,31 @@ static struct pciserial_board pci_boards[] = {
  .base_baud      = 921600,
  .uart_offset = 0x8,
  },
+ [pbn_sunix_pci_1s] = {
+ .num_ports = 1,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_2s] = {
+ .num_ports = 2,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_4s] = {
+ .num_ports = 4,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_8s] = {
+ .num_ports = 8,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_16s] = {
+ .num_ports = 16,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
 };
 
 static const struct pci_device_id blacklist[] = {
@@ -4486,17 +4533,29 @@ static const struct pci_device_id serial_pci_tbl[] = {
  pbn_b0_bt_1_921600 },
 
  /*
- * SUNIX (TIMEDIA)
+ * Sunix PCI serial boards
  */
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
-
+ PCI_VENDOR_ID_SUNIX, 0x0001, 0, 0,
+ pbn_sunix_pci_1s },
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
+ PCI_VENDOR_ID_SUNIX, 0x0002, 0, 0,
+ pbn_sunix_pci_2s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0004, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0084, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0008, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0088, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0010, 0, 0,
+ pbn_sunix_pci_16s },
 
  /*
  * AFAVLAB serial card, from Harald Welte <[hidden email]>
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index d2f3310abe54..bc4ae0cd0bf8 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -308,6 +308,14 @@ static const struct serial8250_config uart_config[] = {
  .rxtrig_bytes = {1, 4, 8, 14},
  .flags = UART_CAP_FIFO,
  },
+ [PORT_SUNIX] = {
+ .name = "Sunix",
+ .fifo_size = 128,
+ .tx_loadsz = 128,
+ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
+ .rxtrig_bytes = {1, 32, 64, 112},
+ .flags = UART_CAP_FIFO | UART_CAP_SLEEP,
+ },
 };
 
 /* Uart divisor latch read */
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
index df4a7534e239..052421c7261d 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -284,4 +284,7 @@
 /* RDA UART */
 #define PORT_RDA 118
 
+/* Sunix UART */
+#define PORT_SUNIX 121
+
 #endif /* _UAPILINUX_SERIAL_CORE_H */
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[E/Unstable/OEM-OSP1-B] [PATCH 1/2] serial: 8250_pci: Add support for Sunix serial boards

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

Add support to Sunix serial boards with up to 16 ports.

Sunix board need its own setup callback instead of using Timedia's, to
properly support more than 4 ports.

Cc: Morris Ku <[hidden email]>
Cc: Debbie Liu <[hidden email]>
Signed-off-by: Kai-Heng Feng <[hidden email]>
Link: https://lore.kernel.org/r/20190809190130.30773-1-kai.heng.feng@...
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit a4b7aca30609899a925cbf24b08bfea79883254c linux-next)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
 drivers/tty/serial/8250/8250_port.c |  8 +++
 include/uapi/linux/serial_core.h    |  3 +
 3 files changed, 87 insertions(+), 17 deletions(-)

diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 7f740b37700b..b2a5c2228858 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1692,6 +1692,30 @@ pci_wch_ch38x_setup(struct serial_private *priv,
  return pci_default_setup(priv, board, port, idx);
 }
 
+static int
+pci_sunix_setup(struct serial_private *priv,
+ const struct pciserial_board *board,
+ struct uart_8250_port *port, int idx)
+{
+ int bar;
+ int offset;
+
+ port->port.flags |= UPF_FIXED_TYPE;
+ port->port.type = PORT_SUNIX;
+
+ if (idx < 4) {
+ bar = 0;
+ offset = idx * board->uart_offset;
+ } else {
+ bar = 1;
+ idx -= 4;
+ idx = div_s64_rem(idx, 4, &offset);
+ offset = idx * 64 + offset * board->uart_offset;
+ }
+
+ return setup_port(priv, port, bar, offset, 0);
+}
+
 #define PCI_VENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
 #define PCI_DEVICE_ID_OCTPRO 0x0001
@@ -2289,21 +2313,14 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
  .setup = pci_timedia_setup,
  },
  /*
- * SUNIX (Timedia) cards
- * Do not "probe" for these cards as there is at least one combination
- * card that should be handled by parport_pc that doesn't match the
- * rule in pci_timedia_probe.
- * It is part number is MIO5079A but its subdevice ID is 0x0102.
- * There are some boards with part number SER5037AL that report
- * subdevice ID 0x0002.
+ * Sunix PCI serial boards
  */
  {
  .vendor = PCI_VENDOR_ID_SUNIX,
  .device = PCI_DEVICE_ID_SUNIX_1999,
  .subvendor = PCI_VENDOR_ID_SUNIX,
  .subdevice = PCI_ANY_ID,
- .init = pci_timedia_init,
- .setup = pci_timedia_setup,
+ .setup = pci_sunix_setup,
  },
  /*
  * Xircom cards
@@ -2757,6 +2774,11 @@ enum pci_board_num_t {
  pbn_pericom_PI7C9X7952,
  pbn_pericom_PI7C9X7954,
  pbn_pericom_PI7C9X7958,
+ pbn_sunix_pci_1s,
+ pbn_sunix_pci_2s,
+ pbn_sunix_pci_4s,
+ pbn_sunix_pci_8s,
+ pbn_sunix_pci_16s,
 };
 
 /*
@@ -3494,6 +3516,31 @@ static struct pciserial_board pci_boards[] = {
  .base_baud      = 921600,
  .uart_offset = 0x8,
  },
+ [pbn_sunix_pci_1s] = {
+ .num_ports = 1,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_2s] = {
+ .num_ports = 2,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_4s] = {
+ .num_ports = 4,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_8s] = {
+ .num_ports = 8,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [pbn_sunix_pci_16s] = {
+ .num_ports = 16,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
 };
 
 static const struct pci_device_id blacklist[] = {
@@ -4532,17 +4579,29 @@ static const struct pci_device_id serial_pci_tbl[] = {
  pbn_b0_bt_1_921600 },
 
  /*
- * SUNIX (TIMEDIA)
+ * Sunix PCI serial boards
  */
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
-
+ PCI_VENDOR_ID_SUNIX, 0x0001, 0, 0,
+ pbn_sunix_pci_1s },
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
- PCI_VENDOR_ID_SUNIX, PCI_ANY_ID,
- PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
- pbn_b0_bt_1_921600 },
+ PCI_VENDOR_ID_SUNIX, 0x0002, 0, 0,
+ pbn_sunix_pci_2s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0004, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0084, 0, 0,
+ pbn_sunix_pci_4s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0008, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0088, 0, 0,
+ pbn_sunix_pci_8s },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999,
+ PCI_VENDOR_ID_SUNIX, 0x0010, 0, 0,
+ pbn_sunix_pci_16s },
 
  /*
  * AFAVLAB serial card, from Harald Welte <[hidden email]>
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index c1cec808571b..8900112ed232 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -308,6 +308,14 @@ static const struct serial8250_config uart_config[] = {
  .rxtrig_bytes = {1, 4, 8, 14},
  .flags = UART_CAP_FIFO,
  },
+ [PORT_SUNIX] = {
+ .name = "Sunix",
+ .fifo_size = 128,
+ .tx_loadsz = 128,
+ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
+ .rxtrig_bytes = {1, 32, 64, 112},
+ .flags = UART_CAP_FIFO | UART_CAP_SLEEP,
+ },
 };
 
 /* Uart divisor latch read */
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
index 3cc3af1c2ee1..055626ca0a40 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -290,4 +290,7 @@
 /* SiFive UART */
 #define PORT_SIFIVE_V0 120
 
+/* Sunix UART */
+#define PORT_SUNIX 121
+
 #endif /* _UAPILINUX_SERIAL_CORE_H */
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[B/OEM-B] [PATCH 2/2] parport: parport_serial: Add support for Sunix Multi I/O boards

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

Sunix Multi I/O boards are different to Timedia's.

This patch adds proper support for Sunix MIO boards with 1 parallel and
up to 4 serial ports.

Cc: Morris Ku <[hidden email]>
Cc: Debbie Liu <[hidden email]>
Signed-off-by: Kai-Heng Feng <[hidden email]>
Link: https://lore.kernel.org/r/20190809190130.30773-2-kai.heng.feng@...
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(backported from commit 605b5b4c90ecc31c5fea234f882bf4248dae4fc8 linux-next)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/parport/parport_serial.c | 44 +++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c
index e15b4845f7c6..7c7856c4381a 100644
--- a/drivers/parport/parport_serial.c
+++ b/drivers/parport/parport_serial.c
@@ -65,7 +65,10 @@ enum parport_pc_pci_cards {
  wch_ch353_1s1p,
  wch_ch353_2s1p,
  wch_ch382_2s1p,
- sunix_2s1p,
+ sunix_4008a,
+ sunix_5069a,
+ sunix_5079a,
+ sunix_5099a,
 };
 
 /* each element directly indexed from enum list, above */
@@ -153,7 +156,10 @@ static struct parport_pc_pci cards[] = {
  /* wch_ch353_1s1p*/             { 1, { { 1, -1}, } },
  /* wch_ch353_2s1p*/             { 1, { { 2, -1}, } },
  /* wch_ch382_2s1p*/             { 1, { { 2, -1}, } },
- /* sunix_2s1p */                { 1, { { 3, -1 }, } },
+ /* sunix_4008a */ { 1, { { 1, 2 }, } },
+ /* sunix_5069a */ { 1, { { 1, 2 }, } },
+ /* sunix_5079a */ { 1, { { 1, 2 }, } },
+ /* sunix_5099a */ { 1, { { 1, 2 }, } },
 };
 
 #define PCI_VENDOR_ID_SUNIX 0x1fd4
@@ -261,13 +267,15 @@ static struct pci_device_id parport_serial_pci_tbl[] = {
  { 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p},
  { 0x1c00, 0x3250, 0x1c00, 0x3250, 0, 0, wch_ch382_2s1p},
 
- /*
- * More SUNIX variations. At least one of these has part number
- * '5079A but subdevice 0x102. That board reports 0x0708 as
- * its PCI Class.
- */
+ /* Sunix boards */
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0100, 0, 0, sunix_4008a },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0101, 0, 0, sunix_5069a },
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
-  0x0102, 0, 0, sunix_2s1p },
+  0x0102, 0, 0, sunix_5079a },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0104, 0, 0, sunix_5099a },
 
  { 0, } /* terminate list */
 };
@@ -504,11 +512,23 @@ static struct pciserial_board pci_parport_serial_boards[] = {
  .uart_offset    = 8,
  .first_offset   = 0xC0,
  },
- [sunix_2s1p] = {
- .flags = FL_BASE0|FL_BASE_BARS,
+ [sunix_4008a] = {
+ .num_ports = 0,
+ },
+ [sunix_5069a] = {
+ .num_ports = 1,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [sunix_5079a] = {
  .num_ports = 2,
- .base_baud = 921600,
- .uart_offset = 8,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [sunix_5099a] = {
+ .num_ports = 4,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
  },
 };
 
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[D/E/Unstable/OEM-OSP1-B] [PATCH 2/2] parport: parport_serial: Add support for Sunix Multi I/O boards

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1826716

Sunix Multi I/O boards are different to Timedia's.

This patch adds proper support for Sunix MIO boards with 1 parallel and
up to 4 serial ports.

Cc: Morris Ku <[hidden email]>
Cc: Debbie Liu <[hidden email]>
Signed-off-by: Kai-Heng Feng <[hidden email]>
Link: https://lore.kernel.org/r/20190809190130.30773-2-kai.heng.feng@...
Signed-off-by: Greg Kroah-Hartman <[hidden email]>
(cherry picked from commit 605b5b4c90ecc31c5fea234f882bf4248dae4fc8 linux-next)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/parport/parport_serial.c | 44 +++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/drivers/parport/parport_serial.c b/drivers/parport/parport_serial.c
index 461fd8a24278..60d5d985113c 100644
--- a/drivers/parport/parport_serial.c
+++ b/drivers/parport/parport_serial.c
@@ -61,7 +61,10 @@ enum parport_pc_pci_cards {
  wch_ch382_0s1p,
  wch_ch382_2s1p,
  brainboxes_5s1p,
- sunix_2s1p,
+ sunix_4008a,
+ sunix_5069a,
+ sunix_5079a,
+ sunix_5099a,
 };
 
 /* each element directly indexed from enum list, above */
@@ -151,7 +154,10 @@ static struct parport_pc_pci cards[] = {
  /* wch_ch382_0s1p*/ { 1, { { 2, -1}, } },
  /* wch_ch382_2s1p*/             { 1, { { 2, -1}, } },
  /* brainboxes_5s1p */           { 1, { { 3, -1 }, } },
- /* sunix_2s1p */                { 1, { { 3, -1 }, } },
+ /* sunix_4008a */ { 1, { { 1, 2 }, } },
+ /* sunix_5069a */ { 1, { { 1, 2 }, } },
+ /* sunix_5079a */ { 1, { { 1, 2 }, } },
+ /* sunix_5099a */ { 1, { { 1, 2 }, } },
 };
 
 static struct pci_device_id parport_serial_pci_tbl[] = {
@@ -261,13 +267,15 @@ static struct pci_device_id parport_serial_pci_tbl[] = {
  { PCI_VENDOR_ID_INTASHIELD, 0x4100,
   PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_5s1p },
 
- /*
- * More SUNIX variations. At least one of these has part number
- * '5079A but subdevice 0x102. That board reports 0x0708 as
- * its PCI Class.
- */
+ /* Sunix boards */
  { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
-  0x0102, 0, 0, sunix_2s1p },
+  0x0100, 0, 0, sunix_4008a },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0101, 0, 0, sunix_5069a },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0102, 0, 0, sunix_5079a },
+ { PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX,
+  0x0104, 0, 0, sunix_5099a },
 
  { 0, } /* terminate list */
 };
@@ -516,11 +524,23 @@ static struct pciserial_board pci_parport_serial_boards[] = {
  .base_baud = 921600,
  .uart_offset = 8,
  },
- [sunix_2s1p] = {
- .flags = FL_BASE0|FL_BASE_BARS,
+ [sunix_4008a] = {
+ .num_ports = 0,
+ },
+ [sunix_5069a] = {
+ .num_ports = 1,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [sunix_5079a] = {
  .num_ports = 2,
- .base_baud = 921600,
- .uart_offset = 8,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
+ },
+ [sunix_5099a] = {
+ .num_ports = 4,
+ .base_baud      = 921600,
+ .uart_offset = 0x8,
  },
 };
 
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

Anthony Wong-2
In reply to this post by Kai-Heng Feng
On Tue, Aug 13, 2019 at 07:55:45PM +0800, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1826716
>
> [Impact]
> We shipped several platform with sunix device, which is enabled by sunix
> DKMS driver.
> We should use in-tree driver instead.
>
> [Fix]
> Backport in-tree Sunix driver.
>
> [Test]
> Sunix test it on all their devices and they confirmed it works.
>
> [Regression Potential]
> Low. It's a new driver so the regression potential is minimal.
>
> Kai-Heng Feng (2):
>   serial: 8250_pci: Add support for Sunix serial boards
>   parport: parport_serial: Add support for Sunix Multi I/O boards
>
>  drivers/parport/parport_serial.c    | 44 ++++++++++----
>  drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
>  drivers/tty/serial/8250/8250_port.c |  8 +++
>  include/uapi/linux/serial_core.h    |  3 +
>  4 files changed, 119 insertions(+), 29 deletions(-)
>
> --
> 2.17.1

All cherry-picks and backports from linux-next look good:

Acked-by: Anthony Wong <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/APPLIED[OEM-B]: [SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

AceLan Kao
In reply to this post by Kai-Heng Feng
Applied on Ubuntu-oem-4.15.0-1051.59

Acked-By: AceLan Kao <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED/CMNT[OEM-OSP1-B]: [SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

Timo Aaltonen-6
In reply to this post by Kai-Heng Feng
On 13.8.2019 14.55, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1826716
>
> [Impact]
> We shipped several platform with sunix device, which is enabled by sunix
> DKMS driver.
> We should use in-tree driver instead.
>
> [Fix]
> Backport in-tree Sunix driver.
>
> [Test]
> Sunix test it on all their devices and they confirmed it works.
>
> [Regression Potential]
> Low. It's a new driver so the regression potential is minimal.
>
> Kai-Heng Feng (2):
>   serial: 8250_pci: Add support for Sunix serial boards
>   parport: parport_serial: Add support for Sunix Multi I/O boards
>
>  drivers/parport/parport_serial.c    | 44 ++++++++++----
>  drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
>  drivers/tty/serial/8250/8250_port.c |  8 +++
>  include/uapi/linux/serial_core.h    |  3 +
>  4 files changed, 119 insertions(+), 29 deletions(-)

Applied to osp1 oem-next

the first patch didn't apply cleanly though, so I doubt it applies to D
either.


--
t

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED[E/Unstable]: [SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

Seth Forshee
In reply to this post by Kai-Heng Feng
On Tue, Aug 13, 2019 at 07:55:45PM +0800, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1826716
>
> [Impact]
> We shipped several platform with sunix device, which is enabled by sunix
> DKMS driver.
> We should use in-tree driver instead.
>
> [Fix]
> Backport in-tree Sunix driver.
>
> [Test]
> Sunix test it on all their devices and they confirmed it works.
>
> [Regression Potential]
> Low. It's a new driver so the regression potential is minimal.

Applied to eoan/master-next and unstable/master, thanks!

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [SRU] [B/D] [PATCH 0/2] Include Sunix serial/parallel driver

Connor Kuehl
In reply to this post by Kai-Heng Feng
On 8/13/19 4:55 AM, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1826716
>
> [Impact]
> We shipped several platform with sunix device, which is enabled by sunix
> DKMS driver.
> We should use in-tree driver instead.
>
> [Fix]
> Backport in-tree Sunix driver.
>
> [Test]
> Sunix test it on all their devices and they confirmed it works.
>
> [Regression Potential]
> Low. It's a new driver so the regression potential is minimal.
>
> Kai-Heng Feng (2):
>    serial: 8250_pci: Add support for Sunix serial boards
>    parport: parport_serial: Add support for Sunix Multi I/O boards
>
>   drivers/parport/parport_serial.c    | 44 ++++++++++----
>   drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
>   drivers/tty/serial/8250/8250_port.c |  8 +++
>   include/uapi/linux/serial_core.h    |  3 +
>   4 files changed, 119 insertions(+), 29 deletions(-)
>

For B/D which I believe are the only ones remaining:

Acked-by: Connor Kuehl <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

APPLIED[B/D]: [SRU] [B/D/E/Unstable/OEM-B/OEM-OSP1-B] [PATCH 0/2] Include Sunix serial/parallel driver

Kleber Souza
In reply to this post by Kai-Heng Feng
On 8/13/19 1:55 PM, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1826716
>
> [Impact]
> We shipped several platform with sunix device, which is enabled by sunix
> DKMS driver.
> We should use in-tree driver instead.
>
> [Fix]
> Backport in-tree Sunix driver.
>
> [Test]
> Sunix test it on all their devices and they confirmed it works.
>
> [Regression Potential]
> Low. It's a new driver so the regression potential is minimal.
>
> Kai-Heng Feng (2):
>   serial: 8250_pci: Add support for Sunix serial boards
>   parport: parport_serial: Add support for Sunix Multi I/O boards
>
>  drivers/parport/parport_serial.c    | 44 ++++++++++----
>  drivers/tty/serial/8250/8250_pci.c  | 93 +++++++++++++++++++++++------
>  drivers/tty/serial/8250/8250_port.c |  8 +++
>  include/uapi/linux/serial_core.h    |  3 +
>  4 files changed, 119 insertions(+), 29 deletions(-)
>

Applied to bionic/master-next and disco/master-next branches.

Thanks,
Kleber

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team