From: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
To: Dong Aisheng <dongas86@gmail.com>
Cc: "A.S. Dong" <aisheng.dong@nxp.com>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
	Andy Duan <fugang.duan@nxp.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"Y.B. Lu" <yangbo.lu@nxp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stefan@agner.ch" <stefan@agner.ch>,
	Mingkai Hu <mingkai.hu@nxp.com>,
	"jslaby@suse.com" <jslaby@suse.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [V2, 2/6] tty: serial: lpuart: add little endian 32 bit register support
Date: Wed, 17 May 2017 11:04:04 +0300	[thread overview]
Message-ID: <045d1888-4a23-cf73-ab4c-009e29fde974@cogentembedded.com> (raw)
In-Reply-To: <20170517070019.GG9913@b29396-OptiPlex-7040>
Hi
My view of your statement is:
- you currently assume only a few cases for this driver - builtin UART
in vf610, ls1012a and imx7,
- in each of these cases, all lpuart instances share same endian, thus
having that in global var works for these cases,
- having that in global var makes it possible for you to write less
lines of code
My complain is:
- in Linux, we are trying to keep drivers generic,
- in Linux, having less lines of code has never been sufficient to break
basic data structure consistency,
- having driver to keep per-device capability in global var is a clear
case of breaking consistency.
>>> That's for special case, normally we wouldn't do that.
>>
>> For me this "special case" looks like "let's break data structure
>> consistency to reuse several lines of code".
>>
>> With code snippets you show, it looks even worse: you assign same global
>> variable in several places for different uses. 
> 
> If you mean lpuart_is_be, it's not for different uses.
> The purpose is the same to align the correct endian but in two places.
_probe() routine called for device X alters state already in use for
device Y.
> 
>> implicitly assuming that
>> it is for same device. Which can be true in your current system, but not
>> elsewhere (e.g. why not having lpuart programmed into fpga)?
>>
> 
> Sorry, What issues for fpga?
Connect FPGA to IMX7 based system and program LS1012a version of lpuart
core into it.  Have your console on system UART broken at time when
driver gets registered.
> 
>> Alternative solution could be - have separate write path for earlycon.
> 
> It looks to me having the same issue with a separate write patch
> for earlycon as we still need distinguish Little or Big endian
> for Layerscape and IMX.
> 
>> At a glance, it is dozen lines of code.
> 
> Would you please show some sample code?
Do not reuse lpuart32_console_putchar() in earlycon code.
Have two sets of early_setup/early_write/putchar - for BE and
defaut-endian earlycon. And in these putchar's do not use
lpuart_(read|write).
As far as I can see, fsl_lpuart.c already has two drivers in one -
there is separate set of routines for 8bit and 32bit cases.
And those routines that are common, have if blocks that separate cases.
I think these drivers will be cleaner if separated.
However that's completely different story.
next prev parent reply	other threads:[~2017-05-17  8:04 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15  7:48 [PATCH V2 0/6] tty: serial: lpuart: add imx7ulp support Dong Aisheng
2017-05-15  7:48 ` [PATCH V2 1/6] tty: serial: lpuart: introduce lpuart_soc_data to represent SoC property Dong Aisheng
2017-05-15 13:35   ` Andy Shevchenko
2017-05-15  7:48 ` [PATCH V2 2/6] tty: serial: lpuart: add little endian 32 bit register support Dong Aisheng
2017-05-15 13:36   ` Andy Shevchenko
2017-05-17  3:26     ` Dong Aisheng
2017-05-16 11:08   ` [V2, " Nikita Yushchenko
2017-05-17  3:31     ` Dong Aisheng
2017-05-17  5:43       ` Nikita Yushchenko
2017-05-17  6:01         ` A.S. Dong
2017-05-17  6:25           ` Nikita Yushchenko
2017-05-17  7:00             ` Dong Aisheng
2017-05-17  8:04               ` Nikita Yushchenko [this message]
2017-05-19 15:07                 ` Dong Aisheng
2017-05-23  5:24                   ` Nikita Yushchenko
2017-05-31  8:07                     ` Dong Aisheng
2017-05-16 11:15   ` Nikita Yushchenko
2017-05-17  3:39     ` Dong Aisheng
2017-05-17  5:37       ` Nikita Yushchenko
2017-05-17  5:43         ` Dong Aisheng
2017-05-17  5:50           ` Nikita Yushchenko
2017-05-17  6:09             ` Dong Aisheng
2017-05-17  9:55           ` Andy Shevchenko
2017-05-31  7:47             ` Dong Aisheng
2017-05-17  9:53     ` Andy Shevchenko
2017-05-15  7:48 ` [PATCH V2 3/6] dt-bindings: serial: fsl-lpuart: add i.MX7ULP support Dong Aisheng
2017-05-15  7:48 ` [PATCH V2 4/6] tty: serial: lpuart: add imx7ulp support Dong Aisheng
2017-05-15  7:48 ` [PATCH V2 5/6] tty: serial: lpuart: add earlycon support for imx7ulp Dong Aisheng
2017-05-15  7:48 ` [PATCH V2 6/6] tty: serial: lpuart: add a more accurate baud rate calculation method Dong Aisheng
2017-05-15 17:06   ` Stefan Agner
2017-05-17  3:47     ` Dong Aisheng
2017-05-17 17:35       ` Stefan Agner
2017-05-19 11:50         ` Dong Aisheng
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=045d1888-4a23-cf73-ab4c-009e29fde974@cogentembedded.com \
    --to=nikita.yoush@cogentembedded.com \
    --cc=aisheng.dong@nxp.com \
    --cc=dongas86@gmail.com \
    --cc=fugang.duan@nxp.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jslaby@suse.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=mingkai.hu@nxp.com \
    --cc=stefan@agner.ch \
    --cc=yangbo.lu@nxp.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).