From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
tony@atomide.com, balbi@ti.com, Vinod Koul <vinod.koul@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 05/15] tty: serial: Add 8250-core based omap driver
Date: Mon, 01 Sep 2014 15:31:56 +0200 [thread overview]
Message-ID: <5404754C.8080809@linutronix.de> (raw)
In-Reply-To: <20140818134643.GA32400@xps8300>
On 08/18/2014 03:46 PM, Heikki Krogerus wrote:
> On Fri, Aug 15, 2014 at 07:42:33PM +0200, Sebastian Andrzej Siewior wrote:
>> diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
>> index cc90c19..ab003b6 100644
>> --- a/drivers/tty/serial/8250/8250_core.c
>> +++ b/drivers/tty/serial/8250/8250_core.c
>> @@ -264,6 +264,12 @@ static const struct serial8250_config uart_config[] = {
>> .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
>> .flags = UART_CAP_FIFO | UART_CAP_AFE,
>> },
>> + [PORT_OMAP_16750] = {
>> + .name = "OMAP",
>> + .fifo_size = 64,
>> + .tx_loadsz = 64,
>> + .flags = UART_CAP_FIFO | UART_CAP_EFR | UART_CAP_SLEEP,
>> + },
>
> I don't think you need this. Reasons below...
For those it works. However I have to this value to something because
it can't stay PORT_UNKNOWN. So for now I took PORT_8250 because it is
not used anywhere in the code. The only side effect of this is that I
can't specify the name. I can live with this…
>
>> [PORT_TEGRA] = {
>> .name = "Tegra",
>> .fifo_size = 32,
>> @@ -1390,6 +1396,8 @@ static void serial8250_stop_rx(struct uart_port *port)
>> serial8250_rpm_get(up);
>>
>> up->ier &= ~UART_IER_RLSI;
>> + if (port->type == PORT_OMAP_16750)
>> + up->ier &= ~UART_IER_RDI;
>
> I don't see any reason why this could not be always cleared regardless
> of the type:
>
> up->ier &= ~(UART_IER_RLSI | UART_IRE_RDI);
>
I remember you brought that up recently asking Alan if it is okay doing
so. Since it looks sane to revert that bit on RX-stop, I will drop that
omap check here.
> [cut]
>
> Since you are not calling serial8250_do_set_termios, 8250_core.c newer
> overrides the FCR set in this driver. However, if the FCR is a
> problem, since Yoshihiro added the member for it to struct
> uart_8250_port (commit aef9a7bd9), just make it possible for the probe
> drivers to provide also it's value:
>
> static int
>
> So instead of using PORT_OMAP_16750:
> up.port.type = PORT_16750;
> up.capabilities = UART_CAP_FIFO | UART_CAP_EFR | UART_CAP_SLEEP;
>
> and the fcr if needed.
> up.fcr = ...
>
That fcr value looks nice so I can't drop my private copy of it. But
this FCR works different for RX trigger (the way it is used). Which
means to support user configurable RX-level I would need to overwrite
that callback. However since PORT_8250 does not supply any FCR values,
I can just ignore it for now.
>> + up.port.iotype = UPIO_MEM32;
>> + up.port.flags = UPF_BOOT_AUTOCONF | UPF_FIXED_PORT | UPF_FIXED_TYPE |
>> + UPF_SOFT_FLOW | UPF_HARD_FLOW;
>> + up.port.private_data = priv;
>> +
>> + up.port.regshift = 2;
>> + up.port.fifosize = 64;
>
> You don't need to set the fifosize unless you want to replace the
> value you get from uart_config array.
Since you made me drop my uart_config array entry I keep this and add
the other values, too
>> + up.port.set_termios = omap_8250_set_termios;
>> + up.port.pm = omap_8250_pm;
>> + up.port.startup = omap_8250_startup;
>> + up.port.shutdown = omap_8250_shutdown;
>> + up.port.throttle = omap_8250_throttle;
>> + up.port.unthrottle = omap_8250_unthrottle;
>> +
>> + if (pdev->dev.of_node) {
>> + up.port.line = of_alias_get_id(pdev->dev.of_node, "serial");
>> + of_property_read_u32(pdev->dev.of_node, "clock-frequency",
>> + &up.port.uartclk);
>> + priv->wakeirq = irq_of_parse_and_map(pdev->dev.of_node, 1);
>> + } else {
>> + up.port.line = pdev->id;
>> + }
>> +
>> + if (up.port.line < 0) {
>> + dev_err(&pdev->dev, "failed to get alias/pdev id, errno %d\n",
>> + up.port.line);
>> + return -ENODEV;
>> + }
>> + if (!up.port.uartclk) {
>> + up.port.uartclk = DEFAULT_CLK_SPEED;
>> + dev_warn(&pdev->dev,
>> + "No clock speed specified: using default: %d\n",
>> + DEFAULT_CLK_SPEED);
>> + }
>> +
>> +#ifdef CONFIG_PM_RUNTIME
>> + up.capabilities |= UART_CAP_RPM;
>> +#endif
>
> By setting this here, you will not get the capabilities from the
> uart_config[type].flags if runtime PM is enabled in any case, right?
Yes. It was not plan to behave like this and is fixed, thanks.
> [cut]
>
>> diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile
>> index 36d68d0..4bac392 100644
>> --- a/drivers/tty/serial/8250/Makefile
>> +++ b/drivers/tty/serial/8250/Makefile
>> @@ -20,3 +20,4 @@ obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
>> obj-$(CONFIG_SERIAL_8250_FSL) += 8250_fsl.o
>> obj-$(CONFIG_SERIAL_8250_DW) += 8250_dw.o
>> obj-$(CONFIG_SERIAL_8250_EM) += 8250_em.o
>> +obj-$(CONFIG_SERIAL_8250_OMAP) += 8250_omap.o
>> diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
>> index 5820269..74f9b11 100644
>> --- a/include/uapi/linux/serial_core.h
>> +++ b/include/uapi/linux/serial_core.h
>> @@ -54,7 +54,8 @@
>> #define PORT_ALTR_16550_F32 26 /* Altera 16550 UART with 32 FIFOs */
>> #define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */
>> #define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */
>> -#define PORT_MAX_8250 28 /* max port ID */
>> +#define PORT_OMAP_16750 29 /* TI's OMAP internal 16C750 compatible UART */
>> +#define PORT_MAX_8250 29 /* max port ID */
>
> So in this case I see no reason for new type.
gone.
>
> Cheers,
>
Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-09-01 13:31 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-15 17:42 [PATCH v7] 8250-core based serial driver for OMAP + DMA Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 01/15] tty: serial: 8250_core: allow to overwrite & export serial8250_startup() Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 02/15] tty: serial: 8250_core: allow to set ->throttle / ->unthrottle callbacks Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 03/15] tty: serial: 8250_core: add run time pm Sebastian Andrzej Siewior
2014-08-20 9:23 ` Frans Klaver
2014-08-20 9:39 ` Frans Klaver
2014-09-01 14:48 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 04/15] tty: serial: 8250_core: read only RX if there is something in the FIFO Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 05/15] tty: serial: Add 8250-core based omap driver Sebastian Andrzej Siewior
2014-08-15 18:37 ` Lennart Sorensen
2014-08-15 19:27 ` Sebastian Andrzej Siewior
2014-08-15 19:33 ` Lennart Sorensen
2014-08-15 20:20 ` Sebastian Andrzej Siewior
2014-08-15 21:07 ` Tony Lindgren
2014-08-15 22:44 ` Tony Lindgren
2014-08-29 15:49 ` Sebastian Andrzej Siewior
2014-08-29 16:08 ` Tony Lindgren
2014-08-21 11:00 ` Sebastian Andrzej Siewior
2014-08-21 18:38 ` Tony Lindgren
2014-08-18 13:46 ` Heikki Krogerus
2014-09-01 13:31 ` Sebastian Andrzej Siewior [this message]
2014-08-15 17:42 ` [PATCH 06/15] tty: serial: 8250_dma: handle error on TX submit Sebastian Andrzej Siewior
2014-08-18 13:57 ` Heikki Krogerus
2014-09-01 14:38 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 07/15] tty: serial: 8250_dma: enqueue RX dma again on completion Sebastian Andrzej Siewior
2014-08-18 10:52 ` One Thousand Gnomes
2014-08-29 15:52 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 08/15] dmaengine: edma: fix two faults which happen with the 8250_dma user Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 09/15] dmaengine: omap-dma: complete the transfer on terminate_all Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 10/15] tty: serial: 8250_dma: Add a TX trigger workaround for AM33xx Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 11/15] tty: serial: 8250_dma: handle the when UART response while DMA remains idle Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 12/15] tty: serial: 8250_dma: add pm runtime Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 13/15] arm: dts: am33xx: add DMA properties for UART Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 14/15] arm: dts: dra7: " Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 15/15] tty: serial: 8250: omap: add dma support Sebastian Andrzej Siewior
2014-08-15 21:02 ` Tony Lindgren
2014-08-21 8:34 ` Sebastian Andrzej Siewior
2014-08-21 18:44 ` Tony Lindgren
2014-08-27 19:54 ` Sebastian Andrzej Siewior
2014-08-27 20:23 ` Tony Lindgren
2014-08-28 8:23 ` Sebastian Andrzej Siewior
2014-08-28 16:46 ` Tony Lindgren
2014-08-28 19:37 ` Sebastian Andrzej Siewior
2014-08-28 22:54 ` Tony Lindgren
2014-08-29 9:32 ` Sebastian Andrzej Siewior
2014-08-29 15:55 ` Felipe Balbi
2014-08-29 16:12 ` Tony Lindgren
2014-08-29 16:31 ` Sebastian Andrzej Siewior
2014-09-01 17:47 ` Sebastian Andrzej Siewior
2014-09-02 3:05 ` Sebastian Reichel
2014-09-02 16:55 ` Tony Lindgren
2014-09-02 18:39 ` Sebastian Andrzej Siewior
2014-09-02 20:15 ` Tony Lindgren
2014-09-02 20:38 ` Sebastian Reichel
2014-09-03 16:46 ` Sebastian Andrzej Siewior
2014-09-03 17:48 ` Tony Lindgren
2014-09-04 13:44 ` Sebastian Andrzej Siewior
2014-09-04 14:52 ` Tony Lindgren
2014-09-04 14:56 ` Sebastian Andrzej Siewior
2014-09-04 16:25 ` Tony Lindgren
2014-08-15 18:17 ` [PATCH v7] 8250-core based serial driver for OMAP + DMA Lennart Sorensen
2014-08-15 19:14 ` Sebastian Andrzej Siewior
2014-08-15 20:28 ` Tony Lindgren
2014-08-17 20:35 ` Sebastian Andrzej Siewior
2014-08-18 15:15 ` Peter Hurley
2014-08-18 16:37 ` Felipe Balbi
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=5404754C.8080809@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=balbi@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=tony@atomide.com \
--cc=vinod.koul@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).