From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Mathieu OTHACEHE <m.othacehe@gmail.com>,
gregkh@linuxfoundation.org, jslaby@suse.com,
anton.wuerfel@fau.de, phillip.raffeck@fau.de,
heikki.krogerus@linux.intel.com, hpeter@gmail.com,
soeren.grunewald@desy.de, udknight@gmail.com,
adam.lee@canonical.com, JBeulich@suse.com
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] serial: 8250_pci: add MOXA Smartio MUE boards support
Date: Mon, 15 Feb 2016 15:54:14 +0200 [thread overview]
Message-ID: <1455544454.31169.120.camel@linux.intel.com> (raw)
In-Reply-To: <1455301730-24333-1-git-send-email-m.othacehe@gmail.com>
On Fri, 2016-02-12 at 19:28 +0100, Mathieu OTHACEHE wrote:
> Add support for :
>
> - CP-102E: 2 ports RS232 PCIE card
> - CP-102EL: 2 ports RS232 PCIE card
> - CP-132EL: 2 ports RS422/485 PCIE card
> - CP-114EL: 4 ports RS232/422/485 PCIE card
> - CP-104EL-A: 4 ports RS232 PCIE card
> - CP-168EL-A: 8 ports RS232 PCIE card
> - CP-118EL-A: 8 ports RS232/422/485 PCIE card
> - CP-118E-A: 8 ports RS422/485 PCIE card
> - CP-138E-A: 8 ports RS422/485 PCIE card
> - CP-134EL-A: 4 ports RS422/485 PCIE card
> - CP-116E-A (A): 8 ports RS232/422/485 PCIE card
> - CP-116E-A (B): 8 ports RS232/422/485 PCIE card
>
> Signed-off-by: Mathieu OTHACEHE <m.othacehe@gmail.com>
> ---
>
> Hi,
>
> This patch add support for MOXA Smartio MUE boards to 8250 driver.
> I already submitted an independant driver based on the vendor one :
>
> https://lkml.org/lkml/2016/2/1/720
>
> But as Andy pointed out, it seems to be a better idea to add this
> support
> directly in 8250 driver.
Yes, something like this. It would be even better to have something
like 8250_moxa.c at some point. I don't know if it worth to do right
now.
See my comments below.
> I was able to test this patch on a CP-168EL-A on PC.
>
> Mathieu
>
> drivers/tty/serial/8250/8250_pci.c | 193
> +++++++++++++++++++++++++++++++++++++
> 1 file changed, 193 insertions(+)
>
> diff --git a/drivers/tty/serial/8250/8250_pci.c
> b/drivers/tty/serial/8250/8250_pci.c
> index 8f8d5c5..67c1028 100644
> --- a/drivers/tty/serial/8250/8250_pci.c
> +++ b/drivers/tty/serial/8250/8250_pci.c
> @@ -1862,6 +1862,25 @@ pci_wch_ch38x_setup(struct serial_private
> *priv,
> return pci_default_setup(priv, board, port, idx);
> }
>
> +static int pci_mxupcie_setup(struct serial_private *priv,
> + const struct pciserial_board *board,
> + struct uart_8250_port *port, int idx)
> +{
> + unsigned int bar, offset;
> +
> + /*
> + * MOXA Smartio MUE boards with 4 ports have
> + * a different offset for port #3
> + */
> + if (idx == 3) {
> + bar = FL_GET_BASE(board->flags);
> + offset = 7 * board->uart_offset;
> + return setup_port(priv, port, bar, offset, board-
> >reg_shift);
> + } else {
> + return pci_default_setup(priv, board, port, idx);
> + }
> +}
So, looks like it would be pretty simple to have it in a separate file.
> +
> #define PCI_VENDOR_ID_SBSMODULARIO 0x124B
> #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
> #define PCI_DEVICE_ID_OCTPRO 0x0001
> @@ -1927,6 +1946,19 @@ pci_wch_ch38x_setup(struct serial_private
> *priv,
> #define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954
> #define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958
>
> +#define PCI_DEVICE_ID_MOXA_CP102E 0x1024
> +#define PCI_DEVICE_ID_MOXA_CP102EL 0x1025
> +#define PCI_DEVICE_ID_MOXA_CP132EL 0x1322
> +#define PCI_DEVICE_ID_MOXA_CP114EL 0x1144
> +#define PCI_DEVICE_ID_MOXA_CP104EL_A 0x1045
> +#define PCI_DEVICE_ID_MOXA_CP168EL_A 0x1683
> +#define PCI_DEVICE_ID_MOXA_CP118EL_A 0x1182
> +#define PCI_DEVICE_ID_MOXA_CP118E_A_I 0x1183
> +#define PCI_DEVICE_ID_MOXA_CP138E_A 0x1381
> +#define PCI_DEVICE_ID_MOXA_CP134EL_A 0x1342
> +#define PCI_DEVICE_ID_MOXA_CP116E_A_A 0x1160
> +#define PCI_DEVICE_ID_MOXA_CP116E_A_B 0x1161
But you can keep this sorted by IDs, right?
> @@ -2938,6 +2994,19 @@ enum pci_board_num_t {
> pbn_pericom_PI7C9X7952,
> pbn_pericom_PI7C9X7954,
> pbn_pericom_PI7C9X7958,
>
> + pbn_moxa_CP102E,
> + pbn_moxa_CP102EL,
> + pbn_moxa_CP132EL,
> + pbn_moxa_CP114EL,
> + pbn_moxa_CP104EL_A,
> + pbn_moxa_CP168EL_A,
> + pbn_moxa_CP118EL_A,
> + pbn_moxa_CP118E_A_I,
> + pbn_moxa_CP138E_A,
> + pbn_moxa_CP134EL_A,
> + pbn_moxa_CP116E_A_A,
> + pbn_moxa_CP116E_A_B
This part seems too verbose. You have similarities in the bunch of
boards.
+
> };
>
> /*
> @@ -3794,6 +3863,81 @@ static struct pciserial_board pci_boards[] = {
> .base_baud = 921600,
> .uart_offset = 0x8,
> },
> + /*
> + * MOXA Smartio MUE boards
> + */
> + [pbn_moxa_CP102E] = {
> + .flags = FL_BASE1,
> + .num_ports = 2,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP102EL] = {
> + .flags = FL_BASE1,
> + .num_ports = 2,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP132EL] = {
> + .flags = FL_BASE1,
> + .num_ports = 2,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP114EL] = {
> + .flags = FL_BASE1,
> + .num_ports = 4,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP104EL_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 4,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP168EL_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP118EL_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP118E_A_I] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP138E_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP134EL_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 4,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP116E_A_A] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
> + },
> + [pbn_moxa_CP116E_A_B] = {
> + .flags = FL_BASE1,
> + .num_ports = 8,
> + .base_baud = 921600,
> + .uart_offset = 0x200,
So, I see only 3. Only difference is a number of ports.
So, if you go with 8250_moxa.c you may use your private structure to
keep only what is needed.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
prev parent reply other threads:[~2016-02-15 13:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-12 18:28 [PATCH] serial: 8250_pci: add MOXA Smartio MUE boards support Mathieu OTHACEHE
2016-02-15 8:23 ` Jiri Slaby
2016-02-15 13:54 ` Andy Shevchenko [this message]
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=1455544454.31169.120.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=JBeulich@suse.com \
--cc=adam.lee@canonical.com \
--cc=anton.wuerfel@fau.de \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=hpeter@gmail.com \
--cc=jslaby@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=m.othacehe@gmail.com \
--cc=phillip.raffeck@fau.de \
--cc=soeren.grunewald@desy.de \
--cc=udknight@gmail.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.