[PATCH 2/3] arm/dt: add very basic dts file for babbage board
Shawn Guo
shawn.guo at linaro.org
Sun Feb 27 01:30:31 EST 2011
On 18 February 2011 16:12, Jason Liu <r64343 at freescale.com> wrote:
> Signed-off-by: Jason Liu <r64343 at freescale.com>
> ---
> arch/arm/boot/dts/babbage.dts | 117 +++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 117 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/babbage.dts b/arch/arm/boot/dts/babbage.dts
> new file mode 100644
> index 0000000..7ee26f1
> --- /dev/null
> +++ b/arch/arm/boot/dts/babbage.dts
> @@ -0,0 +1,117 @@
> +/dts-v1/;
> +
> +/ {
> + model = "mx51_babbage";
> + compatible = "fsl,mx51_babbage";
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + #interrupt-cells = <0x1>;
> + interrupt-parent = <0x1>;
> +
> + memory {
> + device_type = "memory";
> + reg = <0x90000000 0x20000000>;
> + };
> +
> + chosen {
> + bootargs = "console=ttymxc1,115200n8 debug earlyprintk";
> + };
I was confused by this a little bit. We used to have ttymxc0 than
ttymxc1 here for bootargs. Per this dts file, we have the imx uart
nodes in order of imx-uart.2 (0x7000c000) --> imx-uart.0 (0x73fbc000)
--> mx-uart.1 (0x73fc0000). That is why we have the following message
of of_platform_bus_probe().
of_platform_bus_probe()
starting at: /
match: /soc
create child: /soc/tzic
match: /spba at 70000000
create child: /spba at 70000000/imx-uart at C000
match: /aips at 73f00000
create child: /aips at 73f00000/imx-uart at BC000
create child: /aips at 73f00000/imx-uart at C0000
match: /aips at 83f00000
create child: /aips at 83f00000/fec at EC000
That is to say imx-uart.2 will get probed as the first one before
imx-uart.0. Meanwhile, the '[PATCH 3/3] serial/imx: parse from device
tree support' assumes it's the usual order, imx-uart.0 --> imx-uart.1
--> imx-uart.2.
======
+#ifdef CONFIG_OF
+static int serial_imx_probe_dt(struct imx_port *sport,
+ struct platform_device *pdev)
+{
+ struct device_node *node = pdev->dev.of_node;
+ static int line;
+
+ if (!node)
+ return -ENODEV;
+
+ if (of_get_property(node, "rts-cts", NULL))
+ sport->have_rtscts = 1;
+
+#ifdef CONFIG_IRDA
+ if (of_get_property(node, "irda", NULL))
+ sport->use_irda = 1;
+#endif
+ sport->port.line = line++;
+
+ return 0;
+}
+#else
+static int serial_imx_probe_dt(struct imx_port *sport,
+ struct platform_device *pdev)
+{
+ return -ENODEV;
+}
+#endif
+
[...]
@@ -1236,6 +1288,12 @@ static int serial_imx_probe(struct platform_device *pdev)
if (!sport)
return -ENOMEM;
+ ret = serial_imx_probe_dt(sport, pdev);
+ if (ret == -ENODEV)
+ ret = serial_imx_probe_pdata(sport, pdev);
+ if (ret)
+ goto free;
+
======
That's probably we have to tell console=ttymxc1 in bootargs, however
ttymxc0 hardware is actually being used.
> +
> + soc {
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + device_type = "soc";
> + compatible = "simple-bus";
> + ranges = <0x0 0x0 0xffffffff>;
> +
> + tzic {
> + #address-cells = <0x0>;
> + #interrupt-cells = <0x1>;
> + interrupt-controller;
> + reg = <0xe0000000 0x1000>;
> + compatible = "fsl,tzic";
> + device_type = "tzic";
> + phandle = <0x1>;
> + };
> + };
> +
> + clocks {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + uart_clk0: uart at 0 {
> + compatible = "clock";
> + clock-outputs = "imx-uart.0";
> + };
> +
> + uart_clk1: uart at 1{
> + compatible = "clock";
> + clock-outputs = "imx-uart.1";
> + };
> +
> + uart_clk2: uart at 2{
> + compatible = "clock";
> + clock-outputs = "imx-uart.2";
> + };
> +
> + fec_clk: @0{
> + compatible = "clock";
> + clock-outputs = "fec.0";
> + };
> + };
> +
> + spba at 70000000 {
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + device_type = "soc";
> + compatible = "simple-bus";
> + ranges = <0x0 0x70000000 0x100000>;
> +
> + imx-uart at C000 {
> + compatible = "imx-uart";
> + reg = <0xc000 0x1000>;
> + interrupts = <0x21>;
> + rts-cts;
> + uart-clock = < &uart_clk2 >, "uart";
> + };
> + };
> +
> + aips at 73f00000 {
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + device_type = "soc";
> + compatible = "simple-bus";
> + ranges = <0x0 0x73f00000 0x100000>;
> +
> + imx-uart at BC000 {
> + compatible = "imx-uart";
> + reg = <0xbc000 0x1000>;
> + interrupts = <0x1f>;
> + rts-cts;
> + uart-clock = < &uart_clk0 >, "uart";
> + };
> +
> + imx-uart at C0000 {
> + compatible = "imx-uart";
> + reg = <0xc0000 0x1000>;
> + interrupts = <0x20>;
> + rts-cts;
> + uart-clock = <&uart_clk1>, "uart";
> + };
> + };
> +
> + aips at 83f00000 {
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + device_type = "soc";
> + compatible = "simple-bus";
> + ranges = <0x0 0x83f00000 0x100000>;
> +
> + fec at EC000 {
> + compatible = "fec";
> + reg = <0xec000 0x1000>;
> + interrupts = <0x57>;
> + fec_clk-clock = < &fec_clk >, "fec";
> + };
> + };
> +};
> --
> 1.7.0.4
>
>
>
> _______________________________________________
> linaro-dev mailing list
> linaro-dev at lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev
>
--
Regards,
Shawn
More information about the devicetree-discuss
mailing list