On 18 February 2011 16:12, Jason Liu <r64...@freescale.com> wrote: > Signed-off-by: Jason Liu <r64...@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@70000000 create child: /spba@70000000/imx-uart@C000 match: /aips@73f00000 create child: /aips@73f00000/imx-uart@BC000 create child: /aips@73f00000/imx-uart@C0000 match: /aips@83f00000 create child: /aips@83f00000/fec@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@0 { > + compatible = "clock"; > + clock-outputs = "imx-uart.0"; > + }; > + > + uart_clk1: uart@1{ > + compatible = "clock"; > + clock-outputs = "imx-uart.1"; > + }; > + > + uart_clk2: uart@2{ > + compatible = "clock"; > + clock-outputs = "imx-uart.2"; > + }; > + > + fec_clk: @0{ > + compatible = "clock"; > + clock-outputs = "fec.0"; > + }; > + }; > + > + spba@70000000 { > + #address-cells = <0x1>; > + #size-cells = <0x1>; > + device_type = "soc"; > + compatible = "simple-bus"; > + ranges = <0x0 0x70000000 0x100000>; > + > + imx-uart@C000 { > + compatible = "imx-uart"; > + reg = <0xc000 0x1000>; > + interrupts = <0x21>; > + rts-cts; > + uart-clock = < &uart_clk2 >, "uart"; > + }; > + }; > + > + aips@73f00000 { > + #address-cells = <0x1>; > + #size-cells = <0x1>; > + device_type = "soc"; > + compatible = "simple-bus"; > + ranges = <0x0 0x73f00000 0x100000>; > + > + imx-uart@BC000 { > + compatible = "imx-uart"; > + reg = <0xbc000 0x1000>; > + interrupts = <0x1f>; > + rts-cts; > + uart-clock = < &uart_clk0 >, "uart"; > + }; > + > + imx-uart@C0000 { > + compatible = "imx-uart"; > + reg = <0xc0000 0x1000>; > + interrupts = <0x20>; > + rts-cts; > + uart-clock = <&uart_clk1>, "uart"; > + }; > + }; > + > + aips@83f00000 { > + #address-cells = <0x1>; > + #size-cells = <0x1>; > + device_type = "soc"; > + compatible = "simple-bus"; > + ranges = <0x0 0x83f00000 0x100000>; > + > + fec@EC000 { > + compatible = "fec"; > + reg = <0xec000 0x1000>; > + interrupts = <0x57>; > + fec_clk-clock = < &fec_clk >, "fec"; > + }; > + }; > +}; > -- > 1.7.0.4 > > > > _______________________________________________ > linaro-dev mailing list > linaro-dev@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/linaro-dev > -- Regards, Shawn _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev