On 18 February 2011 16:12, Jason Liu r64343@freescale.com wrote:
Signed-off-by: Jason Liu r64343@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