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.
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox