All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 14/16] tegra: dts: Add serial port details
Date: Thu, 31 Jul 2014 17:06:15 -0600	[thread overview]
Message-ID: <53DACBE7.4040308@wwwdotorg.org> (raw)
In-Reply-To: <CAPnjgZ2qKLapvh6f0d5U_=0cG+=Ysttr2X9SYxiWHFjdicqn0g@mail.gmail.com>

On 07/31/2014 04:10 PM, Simon Glass wrote:
> Hi Stephen,
>
> On 31 July 2014 21:16, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 07/30/2014 03:49 AM, Simon Glass wrote:
>>>
>>> Some Tegra device tree files do not include information about the serial
>>> ports. Add this and also add information about the input clock speed.
>>>
>>> The console alias needs to be set up to indicate which port is used for
>>> the console.
>>>
>>> Also add a binding file since this is missing.
>>
>>
>>> diff --git a/arch/arm/dts/tegra114-dalmore.dts
>>> b/arch/arm/dts/tegra114-dalmore.dts
>>> index 435c01e..e2426ef 100644
>>> --- a/arch/arm/dts/tegra114-dalmore.dts
>>> +++ b/arch/arm/dts/tegra114-dalmore.dts
>>> @@ -7,6 +7,7 @@
>>>          compatible = "nvidia,dalmore", "nvidia,tegra114";
>>>
>>>          aliases {
>>> +               console = &uart_d;
>>
>>
>> I don't think that's a standard alias name. There was some recent discussion
>> in the devicetree mailing list re: using some property in /chosen for this
>> purpose instead. U-Boot and the kernel should use the same representation
>> here.
>
> This is U-Boot's approach at present,

That's not the U-Boot approach on Tegra boards before this patch. I do 
not want Tegra U-Boot do adopt any more U-Boot-specific 
not-really-DT-but-pretending-to-be bindings.

 > if we change it then we should
> change it everywhere. I worry that 'chosen' is for Linux rather than
> U-Boot and we might get very confused about what chosen is for?

That discussion should be had on the devicetree mailing list.

>>> diff --git a/arch/arm/dts/tegra114.dtsi b/arch/arm/dts/tegra114.dtsi
>>
>>
>>> +       uart_a: serial at 70006000 {
>>> +               compatible = "nvidia,tegra20-uart";
>>
>>
>> This property needs to include both the specific HW (i.e. Tegra114) and any
>> HW it's compatible with (i.e. Tegra20).
>
> So something like this?
>
> compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";

Yes.

>>> +               reg = <0x70006000 0x40>;
>>> +               reg-shift = <2>;
>>> +               clock-frequency = <408000000>;
>>
>>
>> This isn't a property that's defined by the Tegra serial binding. This
>> information should be obtained by looking up the relevant clock, and
>> querying its rate.
>
> We can't do that in the ns16550 driver as yet since there is no
> generic U-Boot clock infrastructure. I suspect that will come with
> time.

The solution here is to put the clock infra-structure in place first. 
One thing I've learned from the kernel DT experience is that a lot of 
time would have been saved by putting the correct infra-structure in 
place first, then using it, rather than hacking around things the wrong 
way, then putting the infra-structure in place, then converting to it. 
That's a lot more work, and rather painful. Equally, if we don't just do 
the infra-structure right, there's really little guarantee that we'll 
ever convert to the correct approach. Just look at all the DT content in 
use in U-Boot that don't match the real DT bindings, even after it's 
been around years.

>> For reference, here's the DT node for this UART in the kernel DT, which
>> complies with the relevant binding document:
>>
>>          uarta: serial at 70006000 {
>>                  compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
>>
>>                  reg = <0x70006000 0x40>;
>>                  reg-shift = <2>;
>>                  interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
>>                  clocks = <&tegra_car TEGRA114_CLK_UARTA>;
>>                  resets = <&tegra_car 6>;
>>                  reset-names = "serial";
>>                  dmas = <&apbdma 8>, <&apbdma 8>;
>>                  dma-names = "rx", "tx";
>>                  status = "disabled";
>>          };
>>
>> All the comment above apply to all the files in this patch.
>
> My intent was to make this work with a more generic binding for now -
> ns16550 is a pretty standard thing and I thought I could avoid making
> the driver Tegra-specific. Then we could allow many SoCs to use it.
> Why does Tegra have its own binding in the kernel for this standard
> UART?

The HW is not a PC-style UART where all you care about is the 16550 
registers, and clocks/resets/DMA/... can be ignored or deferred to 
firmware to set up before DT-driven SW runs.

As an aside, /almost/ all reviewed DT bindings use DT properties of the 
form:

clocks = <&provider parameters>;

rather than:

clock-rate = <number>;

So, that aspect of the Tegra UART binding isn't anything remotely 
unusual/non-standard.

  reply	other threads:[~2014-07-31 23:06 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30  9:49 [U-Boot] [PATCH v3 0/16] Introduce driver model serial uclass Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 01/16] serial: Set up the 'priv' pointer when creating a serial device Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 02/16] dm: Adjust lists_bind_fdt() to return the bound device Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 03/16] dm: Add a uclass for serial devices Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 04/16] Set up stdio earlier when using driver model Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 05/16] sandbox: Convert serial driver to use " Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 06/16] sandbox: serial: Support a coloured console Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 07/16] sandbox: dts: Add a serial console node Simon Glass
2014-07-31 20:20   ` Stephen Warren
2014-07-31 22:13     ` Simon Glass
2014-07-31 23:09       ` Stephen Warren
2014-08-01 15:46         ` Jon Loeliger
2014-08-01 16:53           ` Tom Rini
2014-08-01 21:37             ` Simon Glass
2014-08-01 21:40         ` Simon Glass
2014-08-01 21:52           ` Stephen Warren
2014-07-30  9:49 ` [U-Boot] [PATCH v3 08/16] dm: exynos: Mark exynos5 console as pre-reloc Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 09/16] dm: exynos: Move serial to driver model Simon Glass
2014-07-30 15:38   ` Tom Rini
2014-07-30 15:43     ` Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 10/16] dm: Make driver model available before board_init() Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 11/16] dm: serial: Move baud rate calculation to ns16550.c Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 12/16] dm: serial: Collect common baud rate code in ns16550 Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 13/16] dm: serial: Add driver model support for ns16550 Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 14/16] tegra: dts: Add serial port details Simon Glass
2014-07-31 20:16   ` Stephen Warren
2014-07-31 22:10     ` Simon Glass
2014-07-31 23:06       ` Stephen Warren [this message]
2014-08-01 21:32         ` Simon Glass
2014-08-01 21:50           ` Stephen Warren
2014-08-04 10:43             ` Simon Glass
2014-08-04 17:47               ` Stephen Warren
2014-08-04 18:11                 ` Tom Rini
2014-08-04 18:47                   ` Jeroen Hofstee
2014-08-04 20:14                 ` Simon Glass
2014-08-05 16:05                   ` Stephen Warren
2014-07-30  9:49 ` [U-Boot] [PATCH v3 15/16] RFC: dm: tegra: Enable driver model for serial Simon Glass
2014-07-31 20:18   ` Stephen Warren
2014-07-31 22:11     ` Simon Glass
2014-07-30  9:49 ` [U-Boot] [PATCH v3 16/16] dm: tegra: Use V_NS16550_CLK only in SPL builds Simon Glass
2014-07-31 20:22   ` Stephen Warren
2014-07-31 22:14     ` Simon Glass

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=53DACBE7.4040308@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=u-boot@lists.denx.de \
    /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.