[U-Boot] [PATCH v3 14/16] tegra: dts: Add serial port details
Simon Glass
sjg at chromium.org
Fri Aug 1 00:10:03 CEST 2014
Hi Stephen,
On 31 July 2014 21:16, Stephen Warren <swarren at 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, 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?
>
>> 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";
>
>
>> + 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.
>
>
>> + interrupts = < 68 >;
>> + };
>
>
> 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?
Regards,
Simon
More information about the U-Boot
mailing list