Re: [PATCH v2 4/6] tty: serial: msm: Add TX DMA support
From: Andy Gross
Date: Wed Sep 30 2015 - 16:25:10 EST
On Wed, Sep 30, 2015 at 06:32:01PM +0100, Mark Rutland wrote:
> On Wed, Sep 30, 2015 at 02:51:26PM +0100, Ivan T. Ivanov wrote:
> >
> > On Wed, 2015-09-30 at 14:29 +0100, Mark Rutland wrote:
> > > On Wed, Sep 30, 2015 at 01:08:24PM +0100, Ivan T. Ivanov wrote:
> > > > Add transmit DMA support for UARTDM type of controllers.
> > > >
> > > > Tested on APQ8064, which have UARTDM v1.3 and ADM DMA engine
> > > > and APQ8016, which have UARTDM v1.4 and BAM DMA engine.
> > > >
> > > > Signed-off-by: Ivan T. Ivanov ivanov@xxxxxxxxxx>
> > > > ---
> > > > .../devicetree/bindings/serial/qcom,msm-uartdm.txt | 3 +
> > > > drivers/tty/serial/msm_serial.c | 312 +++++++++++++++++++--
> > > > drivers/tty/serial/msm_serial.h | 3 +
> > > > 3 files changed, 294 insertions(+), 24 deletions(-)
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
> > > > index a2114c217376..a600023d9ec1 100644
> > > > --- a/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
> > > > +++ b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
> > > > @@ -26,6 +26,9 @@ Required properties:
> > > > Optional properties:
> > > > - dmas: Should contain dma specifiers for transmit and receive channels
> > > > - dma-names: Should contain "tx" for transmit and "rx" for receive channels
> > > > +- qcom,tx-crci: Identificator <u32> for Client Rate Control Interface to be
> > > > + used with TX DMA channel. Required when using DMA for transmission
> > > > + with UARTDM v1.3 and bellow.
> > >
> > > This sounds like it belongs in the dma-specifier, and dealt with by the
> > > DMA controller driver.
> > >
> > > Why does the UART driver need to know about this?
> >
> > CRCI information was part of the first version of ADM DMA engine driver
> > bindings, but Andy remove it because some client devices are requiring
> > more that one CRCI number. See here[1] and here [2].
> >
> > Regards,
> > Ivan
> >
> > [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-January/314190.html
> > [2] https://lkml.org/lkml/2015/8/19/19
>
> This leaves me more confused. If different writes from the same agent
> are being distinguished then it sounds like you actually have two
> logical DMA channels.
>
> Could you elaborate on the qcom,ebi2-nand binding? From a brief read I'd
> expect you to have "txrx" and "cmd" dmas, rather than describing the
> CRCI information on the side.
The ADM does have physical channels, but when you utilize those channels you may
also need to describe the flow control used for specific transactions. And this
flow control has to be configured for that specific transaction, if you are
interleaving different flow control origination/end points.
In the case of nand, they actually use different flow controls on the same
physical channel. For UART/I2C/SPI, they use just one flow control identifier.
I see your point at specifying these as logical channels. That is certainly a
possibility. Then the ADM driver would just have to handle the logical channel
allocation. That would remove the need for the slave_config being sent.
--
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/