Skip to contentSkip to conversation

ARM: dts: mx28evk: Add auart0 and auart3 support

PATCH New Fabio Estevam 4 participants 13 messages Jun 15, 2012

Subsystems (4)
lore
Share & tools
lore

Fabio Estevam

author reviewer
#0 lore raw

PATCH v2 1/3 ARM: dts: mx28evk: Add auart0 and auart3 support

From: Fabio Estevam <[email protected]>

Add auart0 and auart3 support.

---
Changes since v1:
- Merged patches 1 and 2 from v1 into this one

 arch/arm/boot/dts/imx28-evk.dts |   12 ++++++++++++
 arch/arm/boot/dts/imx28.dtsi    |   26 ++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 0 deletions(-)
arch/arm/boot/dts/imx28-evk.dts +12 -0
index ee520a5..4353f48 100644
@@ -73,6 +73,18 @@
 				pinctrl-0 = <&duart_pins_a>;
 				status = "okay";
 			};
+
+			auart0: serial at 8006a000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart0_pins_a>;
+				status = "okay";
+			};
+
+			auart3: serial at 80070000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart3_pins_a>;
+				status = "okay";
+			};
 		};
 	};
 
arch/arm/boot/dts/imx28.dtsi +26 -0
index 4634cb8..f26e0d6 100644
@@ -22,6 +22,11 @@
 		gpio4 = &gpio4;
 		saif0 = &saif0;
 		saif1 = &saif1;
+		serial0 = &auart0;
+		serial1 = &auart1;
+		serial2 = &auart2;
+		serial3 = &auart3;
+		serial4 = &auart4;
 	};
 
 	cpus {
@@ -167,6 +172,22 @@
 					fsl,pull-up = <0>;
 				};
 
+				auart0_pins_a: auart0 at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <0x3000 0x3010 0x3020 0x3030>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				auart3_pins_a: auart3 at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <0x30c0 0x30d0 0x30e0 0x30f0>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
 				mac0_pins_a: mac0 at 0 {
 					reg = <0>;
 					fsl,pinmux-ids = <0x4000 0x4010 0x4020
@@ -404,30 +425,35 @@
 			};
 
 			auart0: serial@8006a000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006a000 0x2000>;
 				interrupts = <112 70 71>;
 				status = "disabled";
 			};
 
 			auart1: serial at 8006c000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006c000 0x2000>;
 				interrupts = <113 72 73>;
 				status = "disabled";
 			};
 
 			auart2: serial at 8006e000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006e000 0x2000>;
 				interrupts = <114 74 75>;
 				status = "disabled";
 			};
 
 			auart3: serial at 80070000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x80070000 0x2000>;
 				interrupts = <115 76 77>;
 				status = "disabled";
 			};
 
 			auart4: serial at 80072000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x80072000 0x2000>;
 				interrupts = <116 78 79>;
 				status = "disabled";
Signature · 1 line
1.7.1
author reviewer
#1 lore raw

PATCH v2 2/3 serial: mxs-auart: Allow device tree probing

From: Fabio Estevam <[email protected]>

Allow device tree probing.

---
Changes since v1:
- Merged patches 3 and 5 from v1 into this one

 .../bindings/tty/serial/fsl-mxs-auart.txt          |   13 +++++
 drivers/tty/serial/mxs-auart.c                     |   55 +++++++++++++++++++-
 2 files changed, 67 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +13 -0
new file mode 100644
index 0000000..1b28b1c
@@ -0,0 +1,13 @@
+* Freescale MXS Application UART (AUART)
+
+Required properties:
+- compatible : Should be "fsl,mxs-uart"
+- reg : Address and length of the register set for the device
+- interrupts : Should contain the auart interrupt
+
+Example:
+auart0: serial at 8006a000 {
+	compatible = "fsl,mxs-auart";
+	reg = <0x8006a000 0x2000>;
+	interrupts = <112 70 71>;
+};
drivers/tty/serial/mxs-auart.c +54 -1

91 lines not on this page · raw message

Signature · 1 line
1.7.1
#2 lore raw

PATCH v2 2/3 serial: mxs-auart: Allow device tree probing

Dear Fabio Estevam,

Quoted 51 lines

From: Fabio Estevam <[email protected]>

Allow device tree probing.

---
Changes since v1:
- Merged patches 3 and 5 from v1 into this one

 .../bindings/tty/serial/fsl-mxs-auart.txt          |   13 +++++
 drivers/tty/serial/mxs-auart.c                     |   55
+++++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletions(-)
 create mode 100644

Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt

(quoted diff) +0 -0

b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file mode 100644
index 0000000..1b28b1c

Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +13 -0
@@ -0,0 +1,13 @@
+* Freescale MXS Application UART (AUART)
+
+Required properties:
+- compatible : Should be "fsl,mxs-uart"
+- reg : Address and length of the register set for the device
+- interrupts : Should contain the auart interrupt
+
+Example:
+auart0: serial at 8006a000 {
+	compatible = "fsl,mxs-auart";
+	reg = <0x8006a000 0x2000>;
+	interrupts = <112 70 71>;
+};
(quoted diff) +0 -0

b/drivers/tty/serial/mxs-auart.c index ec56d83..21e2ce7 100644

drivers/tty/serial/mxs-auart.c +1 -0
@@ -33,6 +33,7 @@
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/of_device.h>
 
 #include <asm/cacheflush.h>
 

drivers/tty/serial/mxs-auart.c static struct uart_driver auart_driver = { · line 679

Quoted 4 lines
drivers/tty/serial/mxs-auart.c +1 -0
@@ -675,6 +676,44 @@ static struct uart_driver auart_driver = {
 #endif
 };
 
+#ifdef CONFIG_OF

Isn't CONFIG_OF always enabled?

Quoted 20 lines
drivers/tty/serial/mxs-auart.c +2 -0
+/*
+ * This function returns 1 if pdev isn't a device instatiated by dt, 0 if

it + * could successfully get all information from dt or a negative errno.
+ */

drivers/tty/serial/mxs-auart.c +16 -0
+static int serial_mxs_probe_dt(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	int ret;
+
+	if (!np)
+		/* no device tree device */
+		return 1;
+
+	ret = of_alias_get_id(np, "serial");
+	if (ret < 0) {
+		dev_err(&pdev->dev, "failed to get alias id: %d\n", ret);
+		return ret;
+	}
+	s->port.line = ret;

drivers/tty/serial/mxs-auart.c static struct uart_driver auart_driver = { · line 709

Quoted 10 lines
drivers/tty/serial/mxs-auart.c +10 -0
+
+	return 0;
+}
+#else
+static inline int serial_mxs_probe_dt(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{
+	return 1;
+}
+#endif

So drop this whole ifdef stuff ...

Quoted 43 lines
drivers/tty/serial/mxs-auart.c +15 -1
+
+static void mxs_auart_probe_pdev(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{
+	s->port.line = pdev->id < 0 ? 0 : pdev->id;
+}
+
 static int __devinit mxs_auart_probe(struct platform_device *pdev)
 {
 	struct mxs_auart_port *s;
@@ -689,6 +728,14 @@ static int __devinit mxs_auart_probe(struct
 platform_device *pdev) goto out;
 	}
 
+	ret = serial_mxs_probe_dt(s, pdev);
+	if (ret > 0)
+		mxs_auart_probe_pdev(s, pdev);
+	else if (ret < 0) {
+		ret = -EINVAL;
+		goto out_free;
+	}
+
 	pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
 	if (IS_ERR(pinctrl)) {
 		ret = PTR_ERR(pinctrl);
@@ -711,7 +758,6 @@ static int __devinit mxs_auart_probe(struct
 platform_device *pdev) s->port.membase = ioremap(r->start,
 resource_size(r));
 	s->port.ops = &mxs_auart_ops;
 	s->port.iotype = UPIO_MEM;
-	s->port.line = pdev->id < 0 ? 0 : pdev->id;
 	s->port.fifosize = 16;
 	s->port.uartclk = clk_get_rate(s->clk);
drivers/tty/serial/mxs-auart.c +5 -0
 	s->port.type = PORT_IMX;
@@ -769,12 +815,19 @@ static int __devexit mxs_auart_remove(struct
 platform_device *pdev) return 0;
 }
 
+static struct of_device_id mxs_auart_dt_ids[] = {
+	{.compatible = "fsl,mxs-auart", },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, mxs_auart_dt_ids);

drivers/tty/serial/mxs-auart.c static int __devexit mxs_auart_remove(struct · line 832

Quoted 10 lines
drivers/tty/serial/mxs-auart.c +2 -0
+
 static struct platform_driver mxs_auart_driver = {
 	.probe = mxs_auart_probe,
 	.remove = __devexit_p(mxs_auart_remove),
 	.driver = {
 		.name = "mxs-auart",
 		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(mxs_auart_dt_ids),
 	},
 };

Best regards,
Marek Vasut

author reviewer
#3 lore raw

PATCH v2 2/3 serial: mxs-auart: Allow device tree probing

Hi Marek,

Quoted 3 lines · Marek Vasut
Quoted 1 line

+#ifdef CONFIG_OF

Isn't CONFIG_OF always enabled?

Not always necessarily. You can boot mx23/mx28 via non-DT kernel.

The serial imx driver also does the same thing about this.

author reviewer
#4 lore raw

PATCH v2 2/3 serial: mxs-auart: Allow device tree probing

In reply to Marek Vasut
Quoted 24 lines · Marek Vasut
Quoted 24 lines

+/*
+ * This function returns 1 if pdev isn't a device instatiated by dt, 0 if it + * could successfully get all information from dt or a negative errno.
+ */

(quoted diff) +20 -0
+static int serial_mxs_probe_dt(struct mxs_auart_port *s,
+ ? ? ? ? ? ? struct platform_device *pdev)
+{
+ ? ? struct device_node *np = pdev->dev.of_node;
+ ? ? int ret;
+
+ ? ? if (!np)
+ ? ? ? ? ? ? /* no device tree device */
+ ? ? ? ? ? ? return 1;
+
+ ? ? ret = of_alias_get_id(np, "serial");
+ ? ? if (ret < 0) {
+ ? ? ? ? ? ? dev_err(&pdev->dev, "failed to get alias id: %d\n", ret);
+ ? ? ? ? ? ? return ret;
+ ? ? }
+ ? ? s->port.line = ret;
+
+ ? ? return 0;
+}
+#else
Quoted 8 lines

drivers/tty/serial/mxs-auart.c static struct uart_driver auart_driver = { · line 709

Quoted 6 lines
drivers/tty/serial/mxs-auart.c +6 -0
+static inline int serial_mxs_probe_dt(struct mxs_auart_port *s,
+ ? ? ? ? ? ? struct platform_device *pdev)
+{
+ ? ? return 1;
+}
+#endif

So drop this whole ifdef stuff ...

Yes, you are right. We can safely remove it. Just tested and it worked fine.

I will drop the ifdef in the next revision.

Thanks,

Fabio Estevam

#5 lore raw

PATCH v2 2/3 serial: mxs-auart: Allow device tree probing

In reply to Fabio Estevam
Quoted 23 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

Allow device tree probing.

---
Changes since v1:
- Merged patches 3 and 5 from v1 into this one

 .../bindings/tty/serial/fsl-mxs-auart.txt          |   13 +++++
 drivers/tty/serial/mxs-auart.c                     |   55 +++++++++++++++++++-
 2 files changed, 67 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +0 -0
new file mode 100644
index 0000000..1b28b1c

Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt line 4

Quoted 4 lines
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +4 -0
@@ -0,0 +1,13 @@
+* Freescale MXS Application UART (AUART)
+
+Required properties:
+- compatible : Should be "fsl,mxs-uart"

The compatible property is to specify the compatibility between different versions of the hardware block. One general way to do that is using SoC name to specific the version. We know the auart block works for both imx23 and imx28 without any tweaking in the driver, so we should have something like the following to tell that the auart block used on imx28 is completely compatible with the one on imx23.

static struct of_device_id mxs_auart_dt_ids[] = {
	{ .compatible = "fsl,imx23-auart", },
	{ /* sentinel */ }
};

imx23.dtsi:

auart0: serial@8006a000 {
	compatible = "fsl,imx23-auart";
	...
};

imx28.dtsi:

auart0: serial@8006a000 {
	compatible = "fsl,imx28-auart", "fsl,imx23-auart";
	...
};

Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt line 6

Quoted 2 lines
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +2 -0
+- reg : Address and length of the register set for the device
+- interrupts : Should contain the auart interrupt

The binding relies on alias to work with the driver, so we may need to note it here. See Documentation/devicetree/bindings/gpio/gpio-mxs.txt for example.

Quoted 51 lines
Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt new file +7 -0
+
+Example:
+auart0: serial@8006a000 {
+	compatible = "fsl,mxs-auart";
+	reg = <0x8006a000 0x2000>;
+	interrupts = <112 70 71>;
+};
drivers/tty/serial/mxs-auart.c +29 -0
index ec56d83..21e2ce7 100644
@@ -33,6 +33,7 @@
 #include <linux/delay.h>
 #include <linux/io.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/of_device.h>
 
 #include <asm/cacheflush.h>
 
@@ -675,6 +676,44 @@ static struct uart_driver auart_driver = {
 #endif
 };
 
+#ifdef CONFIG_OF
+/*
+ * This function returns 1 if pdev isn't a device instatiated by dt, 0 if it
+ * could successfully get all information from dt or a negative errno.
+ */
+static int serial_mxs_probe_dt(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{
+	struct device_node *np = pdev->dev.of_node;
+	int ret;
+
+	if (!np)
+		/* no device tree device */
+		return 1;
+
+	ret = of_alias_get_id(np, "serial");
+	if (ret < 0) {
+		dev_err(&pdev->dev, "failed to get alias id: %d\n", ret);
+		return ret;
+	}
+	s->port.line = ret;
+
+	return 0;
+}
+#else
+static inline int serial_mxs_probe_dt(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{

drivers/tty/serial/mxs-auart.c static struct uart_driver auart_driver = { · line 716

Quoted 10 lines
drivers/tty/serial/mxs-auart.c +10 -0
+	return 1;
+}
+#endif
+
+static void mxs_auart_probe_pdev(struct mxs_auart_port *s,
+		struct platform_device *pdev)
+{
+	s->port.line = pdev->id < 0 ? 0 : pdev->id;
+}
+

Do we really need such a simple function?

drivers/tty/serial/mxs-auart.c static int __devinit mxs_auart_probe(struct platform_device *pdev) · line 735

Quoted 12 lines
drivers/tty/serial/mxs-auart.c +5 -0
 static int __devinit mxs_auart_probe(struct platform_device *pdev)
 {
 	struct mxs_auart_port *s;
@@ -689,6 +728,14 @@ static int __devinit mxs_auart_probe(struct platform_device *pdev)
 		goto out;
 	}
 
+	ret = serial_mxs_probe_dt(s, pdev);
+	if (ret > 0)
+		mxs_auart_probe_pdev(s, pdev);
+	else if (ret < 0) {
+		ret = -EINVAL;

Why changing the error code here?

Quoted 15 lines
drivers/tty/serial/mxs-auart.c +3 -1
+		goto out_free;
+	}
+
 	pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
 	if (IS_ERR(pinctrl)) {
 		ret = PTR_ERR(pinctrl);
@@ -711,7 +758,6 @@ static int __devinit mxs_auart_probe(struct platform_device *pdev)
 	s->port.membase = ioremap(r->start, resource_size(r));
 	s->port.ops = &mxs_auart_ops;
 	s->port.iotype = UPIO_MEM;
-	s->port.line = pdev->id < 0 ? 0 : pdev->id;
 	s->port.fifosize = 16;
 	s->port.uartclk = clk_get_rate(s->clk);
 	s->port.type = PORT_IMX;

drivers/tty/serial/mxs-auart.c static int __devexit mxs_auart_remove(struct platform_device *pdev) · line 819

Quoted 5 lines
drivers/tty/serial/mxs-auart.c +2 -0
@@ -769,12 +815,19 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static struct of_device_id mxs_auart_dt_ids[] = {
+	{.compatible = "fsl,mxs-auart", },

Nit: put a space after "{".

drivers/tty/serial/mxs-auart.c static int __devexit mxs_auart_remove(struct platform_device *pdev) · line 830

Quoted 11 lines
drivers/tty/serial/mxs-auart.c +5 -0
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, mxs_auart_dt_ids);
+
 static struct platform_driver mxs_auart_driver = {
 	.probe = mxs_auart_probe,
 	.remove = __devexit_p(mxs_auart_remove),
 	.driver = {
 		.name = "mxs-auart",
 		.owner = THIS_MODULE,
+		.of_match_table = of_match_ptr(mxs_auart_dt_ids),

As Marek already pointed out, we have ARCH_MXS select USE_OF to have CONFIG_OF always enabled, the of_match_ptr wrapper is not really needed here.

Quoted 6 lines
drivers/tty/serial/mxs-auart.c +0 -0
 	},
 };
 
Signature · 1 line
1.7.1
Signature · 2 lines
Regards,
Shawn
author reviewer
#6 lore raw

PATCH v2 3/3 ARM: mxs_defconfig: Let AUART driver be built by default

In reply to Fabio Estevam

From: Fabio Estevam <[email protected]>

Let AUART driver be built by default.

---
Changes since v1:
- No changes

 arch/arm/configs/mxs_defconfig |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/configs/mxs_defconfig +1 -0
index 5406c23..66b76c1 100644
@@ -77,6 +77,7 @@ CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_DEVKMEM is not set
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_MXS_AUART=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_I2C=y
 # CONFIG_I2C_COMPAT is not set
Signature · 1 line
1.7.1
#7 lore raw

PATCH v2 3/3 ARM: mxs_defconfig: Let AUART driver be built by default

Dear Fabio Estevam,

Quoted 5 lines

From: Fabio Estevam <[email protected]>

Let AUART driver be built by default.

Not much to review, but ...

Quoted 11 lines

---
Changes since v1:
- No changes

 arch/arm/configs/mxs_defconfig |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
(quoted diff) +0 -0

b/arch/arm/configs/mxs_defconfig index 5406c23..66b76c1 100644

arch/arm/configs/mxs_defconfig CONFIG_DEVPTS_MULTIPLE_INSTANCES=y · line 83

Quoted 7 lines
arch/arm/configs/mxs_defconfig +1 -0
@@ -77,6 +77,7 @@ CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_DEVKMEM is not set
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_MXS_AUART=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_I2C=y
 # CONFIG_I2C_COMPAT is not set

Best regards,
Marek Vasut

#10 lore raw

PATCH v2 3/3 ARM: mxs_defconfig: Let AUART driver be built by default

Dear Subodh Nijsure,

Quoted 11 lines · Shawn Guo
Quoted 8 lines · Fabio Estevam
Quoted 5 lines

From: Fabio Estevam<[email protected]>

Let AUART driver be built by default.

Applied, thanks.

Applied to what? arm-soc/for-next ?

git://git.linaro.org/people/shawnguo/linux-2.6.git

OR (probably later)

git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

Quoted 2 lines

/Subodh

Best regards,
Marek Vasut

#11 lore raw

PATCH v2 3/3 ARM: mxs_defconfig: Let AUART driver be built by default

Quoted 8 lines · Marek Vasut

Dear Subodh Nijsure,

Quoted 6 lines · Shawn Guo
Quoted 5 lines · Fabio Estevam
Quoted 4 lines

From: Fabio Estevam<[email protected]>

Let AUART driver be built by default.

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line

Applied, thanks.

Applied to what? arm-soc/for-next ?

git://git.linaro.org/people/shawnguo/linux-2.6.git

Yes, I collect patches there, and will send them to arm-soc at some point.

Quoted 4 lines

OR (probably later)

git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

I do not have my branch included into linux-next and rely on arm-soc/for-next to have the patches exposed on linux-next.

Signature · 2 lines
Regards,
Shawn
#12 lore raw

PATCH v2 1/3 ARM: dts: mx28evk: Add auart0 and auart3 support

In reply to Fabio Estevam

Dear Fabio Estevam,

Quoted 5 lines

From: Fabio Estevam <[email protected]>

Add auart0 and auart3 support.

Quoted 47 lines

---
Changes since v1:
- Merged patches 1 and 2 from v1 into this one

 arch/arm/boot/dts/imx28-evk.dts |   12 ++++++++++++
 arch/arm/boot/dts/imx28.dtsi    |   26 ++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 0 deletions(-)
(quoted diff) +0 -0

b/arch/arm/boot/dts/imx28-evk.dts index ee520a5..4353f48 100644

arch/arm/boot/dts/imx28-evk.dts +12 -0
@@ -73,6 +73,18 @@
 				pinctrl-0 = <&duart_pins_a>;
 				status = "okay";
 			};
+
+			auart0: serial at 8006a000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart0_pins_a>;
+				status = "okay";
+			};
+
+			auart3: serial at 80070000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart3_pins_a>;
+				status = "okay";
+			};
 		};
 	};
 
arch/arm/boot/dts/imx28.dtsi +5 -0
index 4634cb8..f26e0d6 100644
@@ -22,6 +22,11 @@
 		gpio4 = &gpio4;
 		saif0 = &saif0;
 		saif1 = &saif1;
+		serial0 = &auart0;
+		serial1 = &auart1;
+		serial2 = &auart2;
+		serial3 = &auart3;
+		serial4 = &auart4;
 	};
 
 	cpus {

arch/arm/boot/dts/imx28.dtsi line 177

Quoted 6 lines
arch/arm/boot/dts/imx28.dtsi +3 -0
@@ -167,6 +172,22 @@
 					fsl,pull-up = <0>;
 				};
 
+				auart0_pins_a: auart0 at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <0x3000 0x3010 0x3020 

0x3030>;

arch/arm/boot/dts/imx28.dtsi

Quoted 8 lines
arch/arm/boot/dts/imx28.dtsi +8 -0
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				auart3_pins_a: auart3 at 0 {
+					reg = <0>;
+					fsl,pinmux-ids = <0x30c0 0x30d0 0x30e0 

0x30f0>;

Quoted 34 lines
arch/arm/boot/dts/imx28.dtsi +9 -0
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
 				mac0_pins_a: mac0 at 0 {
 					reg = <0>;
 					fsl,pinmux-ids = <0x4000 0x4010 0x4020
@@ -404,30 +425,35 @@
 			};
 
 			auart0: serial at 8006a000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006a000 0x2000>;
 				interrupts = <112 70 71>;
 				status = "disabled";
 			};
 
 			auart1: serial at 8006c000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006c000 0x2000>;
 				interrupts = <113 72 73>;
 				status = "disabled";
 			};
 
 			auart2: serial at 8006e000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x8006e000 0x2000>;
 				interrupts = <114 74 75>;
 				status = "disabled";
 			};
 
 			auart3: serial at 80070000 {
+				compatible = "fsl,mxs-auart";

arch/arm/boot/dts/imx28.dtsi line 459

Quoted 10 lines
arch/arm/boot/dts/imx28.dtsi +1 -0
 				reg = <0x80070000 0x2000>;
 				interrupts = <115 76 77>;
 				status = "disabled";
 			};
 
 			auart4: serial at 80072000 {
+				compatible = "fsl,mxs-auart";
 				reg = <0x80072000 0x2000>;
 				interrupts = <116 78 79>;
 				status = "disabled";

Best regards,
Marek Vasut