public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: peter@hurleysoftware•com (Peter Hurley)
To: linux-arm-kernel@lists•infradead.org
Subject: GPIO-driven RTS on TI hardware with 8250_omap driver
Date: Fri, 15 Jan 2016 15:55:58 -0800	[thread overview]
Message-ID: <5699870E.8080804@hurleysoftware.com> (raw)
In-Reply-To: <CAHp75Vd6eTXnwErTZdug_rW51mk2sZv5=nT2800ourp=VEHY=Q@mail.gmail.com>

On 12/27/2015 04:47 AM, Andy Shevchenko wrote:
> +Peter, Russell, and Matwey.
> 
> I suggest you to ask people I added to the Cc list.
> 
> On Sat, Dec 26, 2015 at 6:17 PM, ????? ??????? <torso.nafi@gmail•com> wrote:
>> Hello.
>>
>> We are upgrading to the 4.1.x kernel for our smart metering appliance
>> project, which is based on TI's Sitara hardware (AM335x SoC), and I
>> decided to switch from omap-serial legacy driver to the newer
>> 8250-based one. It marginally increases throughput efficiency, CPU
>> cycle wise, among other goodies, but I'm looking to implement a rather
>> important feature that is present in the legacy driver, but the newer
>> one is lacking.
>>
>> Namely, our project makes use of RS232<->RS485 converters, which in
>> turn need to consume RTS signals to switch between Rx and Tx modes at
>> the RS485 side, due to the bus variant we use being half-duplex.
>> However, the already manufactured hardware is already designed to make
>> the use of certain pins to take the RTS signal from, which can only be
>> configured as GPIO for that purpose (in other words, no "native" UART
>> RTS) - and basically redesigning the h/w configuration now is
>> definitely out of question. The omap-serial driver already provides
>> FDT options for that, named "rts-gpio", "rs485-rts-active-high" etc.
>>
>> As far as I could ascertain, the 8250_omap driver (as well as the 8250
>> framework itself) at the moment lacks the means to make use of GPIO
>> pins for that purpose. While trying to implement it myself, I noticed
>> that the legacy driver has it made in a comparably straightforward
>> approach, via dispatching the code to switch the pin in its .start_tx
>> and .stop_tx handlers, and some timing adjustments. Unfortunately, the
>> situation with 8250-based drivers is different - the aforementioned
>> handlers are provided by the 8250_core module and are common for all
>> drivers within the framework.
>>
>> At first, I thought that implementing such feature for the 8250
>> framework itself sounds like a good idea, but after reading this
>> particular post:
>> http://lists.infradead.org/pipermail/linux-arm-kernel/2014-July/271377.html
>> I decided to comply with the point of view specified there. However,
>> I'm not that familiar with the 8250 framework internals (or serial
>> internals at all, for that matter), and my time is quite short, so I
>> would appreciate much any useful directions on how to do it
>> hardware-specific style, which functions/structs/handlers to use, etc.

Please use the helpers in serial_mctrl_gpio.c if you try this.

And please build on top of Matwey's patches, as those will likely be
the rs485 implementation for the 8250_omap driver soon.


>> Of particular interest is the following part:
>>
>>> I don't care whether the drive does it via serial_out magic or a more explicit hook but it doesn't belong here in core code.
>>
>> Any ideas/clarifications on what might be meant on that part?

What Alan means here is encapsulate gpio-as-RTS where RTS is actually
read/written rather than all over the the code.

Regards,
Peter Hurley

  parent reply	other threads:[~2016-01-15 23:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-26 16:17 GPIO-driven RTS on TI hardware with 8250_omap driver Ильяс Гасанов
2015-12-27 12:47 ` Andy Shevchenko
2015-12-27 13:14   ` Matwey V. Kornilov
2015-12-27 13:43     ` Ильяс Гасанов
2016-01-15 23:55   ` Peter Hurley [this message]
2016-02-08  7:35     ` Ильяс Гасанов

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=5699870E.8080804@hurleysoftware.com \
    --to=peter@hurleysoftware$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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