[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