diff mbox

[v2,3/7] ARM: mxs: convert m28evk board to device tree

Message ID 1341898587-8462-4-git-send-email-shawn.guo@linaro.org
State New
Headers show

Commit Message

Shawn Guo July 10, 2012, 5:36 a.m. UTC
From: Marek Vasut <marex@denx.de>

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
 arch/arm/boot/dts/imx28.dtsi |   11 ++
 arch/arm/boot/dts/m28evk.dts |  210 ++++++++++++++++++++++++++++++++++++++++++
 arch/arm/mach-mxs/mach-mxs.c |   41 ++++++++-
 3 files changed, 258 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/boot/dts/m28evk.dts

Comments

Marek Vasut July 10, 2012, 7:20 a.m. UTC | #1
Dear Shawn Guo,

> From: Marek Vasut <marex@denx.de>
> 
[...]

> +	sound {
> +		compatible = "fsl,imx28-evk-sgtl5000",

imx28-evk ? ;-)

> +			     "fsl,mxs-audio-sgtl5000";
> +		model = "imx28-evk-sgtl5000";
> +		saif-controllers = <&saif0 &saif1>;
> +		audio-codec = <&sgtl5000>;
> +	};
> +};

Otherwise, add my Acked-by: Marek Vasut <marex@denx.de> so if it gets broken 
now, the blame falls on my head ;-)

Best regards,
Marek Vasut
Shawn Guo July 10, 2012, 7:24 a.m. UTC | #2
On 10 July 2012 15:20, Marek Vasut <marex@denx.de> wrote:
> Dear Shawn Guo,
>
>> From: Marek Vasut <marex@denx.de>
>>
> [...]
>
>> +     sound {
>> +             compatible = "fsl,imx28-evk-sgtl5000",
>
> imx28-evk ? ;-)
>
Will fix it, as well as apx4devkit.dts.

>> +                          "fsl,mxs-audio-sgtl5000";
>> +             model = "imx28-evk-sgtl5000";
>> +             saif-controllers = <&saif0 &saif1>;
>> +             audio-codec = <&sgtl5000>;
>> +     };
>> +};
>
> Otherwise, add my Acked-by: Marek Vasut <marex@denx.de> so if it gets broken
> now, the blame falls on my head ;-)
>
I'm much relieved now.

Regards,
Shawn
Marek Vasut July 10, 2012, 8:32 a.m. UTC | #3
Dear Shawn Guo,

> On 10 July 2012 15:20, Marek Vasut <marex@denx.de> wrote:
> > Dear Shawn Guo,
> > 
> >> From: Marek Vasut <marex@denx.de>
> > 
> > [...]
> > 
> >> +     sound {
> >> +             compatible = "fsl,imx28-evk-sgtl5000",
> > 
> > imx28-evk ? ;-)
> 
> Will fix it, as well as apx4devkit.dts.
> 
> >> +                          "fsl,mxs-audio-sgtl5000";
> >> +             model = "imx28-evk-sgtl5000";
> >> +             saif-controllers = <&saif0 &saif1>;
> >> +             audio-codec = <&sgtl5000>;
> >> +     };
> >> +};
> > 
> > Otherwise, add my Acked-by: Marek Vasut <marex@denx.de> so if it gets
> > broken now, the blame falls on my head ;-)
> 
> I'm much relieved now.

Heh ;-)

> Regards,
> Shawn

Best regards,
Marek Vasut
Marek Vasut July 10, 2012, 3:37 p.m. UTC | #4
Dear Shawn Guo,

> On Tue, Jul 10, 2012 at 09:20:03AM +0200, Marek Vasut wrote:
> > Dear Shawn Guo,
> > 
> > > From: Marek Vasut <marex@denx.de>
> > 
> > [...]
> > 
> > > +	sound {
> > > +		compatible = "fsl,imx28-evk-sgtl5000",
> > 
> > imx28-evk ? ;-)

Good on my end.

> Fixed as below.
> 
> Regards,
> Shawn

[...]

> diff --git a/arch/arm/boot/dts/m28evk.dts b/arch/arm/boot/dts/m28evk.dts

Just a suggestion -- why not name all the imx28-based boards' DTS files "imx28-
<board>.dts" ? In this case imx28-m28evk.dts , it'd make it obvious where this 
board fits.

[...]

Best regards,
Marek Vasut
Shawn Guo July 10, 2012, 3:45 p.m. UTC | #5
On Tue, Jul 10, 2012 at 05:37:15PM +0200, Marek Vasut wrote:
> > diff --git a/arch/arm/boot/dts/m28evk.dts b/arch/arm/boot/dts/m28evk.dts
> 
> Just a suggestion -- why not name all the imx28-based boards' DTS files "imx28-
> <board>.dts" ? In this case imx28-m28evk.dts , it'd make it obvious where this 
> board fits.

Because the name scheme is simply <boardname>.dts rather than
imx28-<boardname>.dts.  Also the name of imx28-m28evk and imx28-tx28
look a little redundant on "28".
Marek Vasut July 10, 2012, 3:51 p.m. UTC | #6
Dear Shawn Guo,

> On Tue, Jul 10, 2012 at 05:37:15PM +0200, Marek Vasut wrote:
> > > diff --git a/arch/arm/boot/dts/m28evk.dts
> > > b/arch/arm/boot/dts/m28evk.dts
> > 
> > Just a suggestion -- why not name all the imx28-based boards' DTS files
> > "imx28- <board>.dts" ? In this case imx28-m28evk.dts , it'd make it
> > obvious where this board fits.
> 
> Because the name scheme is simply <boardname>.dts rather than
> imx28-<boardname>.dts.  Also the name of imx28-m28evk and imx28-tx28
> look a little redundant on "28".

But at least it's quite consistent and it's easy to locate your board since you 
usually know the cpu type. If you shove in just <boardname>.dts, it'll soon 
become horrible mess.

Best regards,
Marek Vasut
Shawn Guo July 10, 2012, 4:08 p.m. UTC | #7
On Tue, Jul 10, 2012 at 05:51:12PM +0200, Marek Vasut wrote:
> But at least it's quite consistent and it's easy to locate your board since you 
> usually know the cpu type. If you shove in just <boardname>.dts, it'll soon 
> become horrible mess.
> 
Ok, I could send a follow-up patch to rename the files.  But the
compatible string of the board will stay as the board name.
Marek Vasut July 10, 2012, 4:26 p.m. UTC | #8
Dear Shawn Guo,

> On Tue, Jul 10, 2012 at 05:51:12PM +0200, Marek Vasut wrote:
> > But at least it's quite consistent and it's easy to locate your board
> > since you usually know the cpu type. If you shove in just
> > <boardname>.dts, it'll soon become horrible mess.
> 
> Ok, I could send a follow-up patch to rename the files.  But the
> compatible string of the board will stay as the board name.

The compatible string is all right, my concern is just the mess in the file 
names. Look at imx{51,53,6q}, kirkwood, tegra20, ... let's make it nicely at the 
begining, it's just a matter of simple git mv and git commit --amend ;-)

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
index 02e778b..895a072 100644
--- a/arch/arm/boot/dts/imx28.dtsi
+++ b/arch/arm/boot/dts/imx28.dtsi
@@ -232,6 +232,17 @@ 
 					fsl,pull-up = <0>;
 				};
 
+				auart0_2pins_a: auart0-2pins@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x3000 /* MX28_PAD_AUART0_RX__AUART0_RX */
+						0x3010 /* MX28_PAD_AUART0_TX__AUART0_TX */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
 				auart3_pins_a: auart3@0 {
 					reg = <0>;
 					fsl,pinmux-ids = <
diff --git a/arch/arm/boot/dts/m28evk.dts b/arch/arm/boot/dts/m28evk.dts
new file mode 100644
index 0000000..f3acdfa
--- /dev/null
+++ b/arch/arm/boot/dts/m28evk.dts
@@ -0,0 +1,210 @@ 
+/*
+ * Copyright (C) 2012 Marek Vasut <marex@denx.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "imx28.dtsi"
+
+/ {
+	model = "DENX M28EVK";
+	compatible = "denx,m28evk", "fsl,imx28";
+
+	memory {
+		reg = <0x40000000 0x08000000>;
+	};
+
+	apb@80000000 {
+		apbh@80000000 {
+			gpmi-nand@8000c000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
+				status = "okay";
+
+				partition@0 {
+					label = "bootloader";
+					reg = <0x00000000 0x00300000>;
+					read-only;
+				};
+
+				partition@1 {
+					label = "environment";
+					reg = <0x00300000 0x00080000>;
+				};
+
+				partition@2 {
+					label = "redundant-environment";
+					reg = <0x00380000 0x00080000>;
+				};
+
+				partition@3 {
+					label = "kernel";
+					reg = <0x00400000 0x00400000>;
+				};
+
+				partition@4 {
+					label = "filesystem";
+					reg = <0x00800000 0x0f800000>;
+				};
+			};
+
+			ssp0: ssp@80010000 {
+				compatible = "fsl,imx28-mmc";
+				pinctrl-names = "default";
+				pinctrl-0 = <&mmc0_8bit_pins_a
+					     &mmc0_cd_cfg
+					     &mmc0_sck_cfg>;
+				bus-width = <8>;
+				wp-gpios = <&gpio3 10 1>;
+				status = "okay";
+			};
+
+			pinctrl@80018000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&hog_pins_a>;
+
+				hog_pins_a: hog-gpios@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x30a3 /* MX28_PAD_AUART2_CTS__GPIO_3_10 */
+						0x30b3 /* MX28_PAD_AUART2_RTS__GPIO_3_11 */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+
+				lcdif_pins_m28: lcdif-m28@0 {
+					reg = <0>;
+					fsl,pinmux-ids = <
+						0x11e0 /* MX28_PAD_LCD_DOTCLK__LCD_DOTCLK */
+						0x11f0 /* MX28_PAD_LCD_ENABLE__LCD_ENABLE */
+					>;
+					fsl,drive-strength = <0>;
+					fsl,voltage = <1>;
+					fsl,pull-up = <0>;
+				};
+			};
+
+			lcdif@80030000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&lcdif_24bit_pins_a
+					     &lcdif_pins_m28>;
+				status = "okay";
+			};
+
+			can0: can@80032000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&can0_pins_a>;
+				status = "okay";
+			};
+
+			can1: can@80034000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&can1_pins_a>;
+				status = "okay";
+			};
+		};
+
+		apbx@80040000 {
+			saif0: saif@80042000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&saif0_pins_a>;
+				status = "okay";
+			};
+
+			saif1: saif@80046000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&saif1_pins_a>;
+				fsl,saif-master = <&saif0>;
+				status = "okay";
+			};
+
+			i2c0: i2c@80058000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&i2c0_pins_a>;
+				status = "okay";
+
+				sgtl5000: codec@0a {
+					compatible = "fsl,sgtl5000";
+					reg = <0x0a>;
+					VDDA-supply = <&reg_3p3v>;
+					VDDIO-supply = <&reg_3p3v>;
+
+				};
+
+				eeprom: eeprom@51 {
+					compatible = "atmel,24c128";
+					reg = <0x51>;
+					pagesize = <32>;
+				};
+
+				rtc: rtc@68 {
+					compatible = "stm,mt41t62";
+					reg = <0x68>;
+				};
+			};
+
+			duart: serial@80074000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&duart_pins_a>;
+				status = "okay";
+			};
+
+			auart0: serial@8006a000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart0_2pins_a>;
+				status = "okay";
+			};
+
+			auart3: serial@80070000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&auart3_pins_a>;
+				status = "okay";
+			};
+		};
+	};
+
+	ahb@80080000 {
+		mac0: ethernet@800f0000 {
+			phy-mode = "rmii";
+			pinctrl-names = "default";
+			pinctrl-0 = <&mac0_pins_a>;
+			phy-reset-gpios = <&gpio3 11 0>;
+			status = "okay";
+		};
+
+		mac1: ethernet@800f4000 {
+			phy-mode = "rmii";
+			pinctrl-names = "default";
+			pinctrl-0 = <&mac1_pins_a>;
+			status = "okay";
+		};
+	};
+
+	regulators {
+		compatible = "simple-bus";
+
+		reg_3p3v: 3p3v {
+			compatible = "regulator-fixed";
+			regulator-name = "3P3V";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-always-on;
+		};
+	};
+
+	sound {
+		compatible = "fsl,imx28-evk-sgtl5000",
+			     "fsl,mxs-audio-sgtl5000";
+		model = "imx28-evk-sgtl5000";
+		saif-controllers = <&saif0 &saif1>;
+		audio-codec = <&sgtl5000>;
+	};
+};
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
index 7bbb961..d3fc8ba 100644
--- a/arch/arm/mach-mxs/mach-mxs.c
+++ b/arch/arm/mach-mxs/mach-mxs.c
@@ -59,6 +59,23 @@  static struct fb_videomode mx28evk_video_modes[] = {
 	},
 };
 
+static struct fb_videomode m28evk_video_modes[] = {
+	{
+		.name		= "Ampire AM-800480R2TMQW-T01H",
+		.refresh	= 60,
+		.xres		= 800,
+		.yres		= 480,
+		.pixclock	= 30066, /* picosecond (33.26 MHz) */
+		.left_margin	= 0,
+		.right_margin	= 256,
+		.upper_margin	= 0,
+		.lower_margin	= 45,
+		.hsync_len	= 1,
+		.vsync_len	= 1,
+		.sync		= FB_SYNC_DATA_ENABLE_HIGH_ACT,
+	},
+};
+
 static struct mxsfb_platform_data mxsfb_pdata __initdata;
 
 static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = {
@@ -186,15 +203,17 @@  static void __init imx23_evk_init(void)
 	mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
 }
 
-static void __init imx28_evk_init(void)
+static inline void enable_clk_enet_out(void)
 {
-	struct clk *clk;
+	struct clk *clk = clk_get_sys("enet_out", NULL);
 
-	/* Enable fec phy clock */
-	clk = clk_get_sys("enet_out", NULL);
 	if (!IS_ERR(clk))
 		clk_prepare_enable(clk);
+}
 
+static void __init imx28_evk_init(void)
+{
+	enable_clk_enet_out();
 	update_fec_mac_prop(OUI_FSL);
 
 	mxsfb_pdata.mode_list = mx28evk_video_modes;
@@ -203,12 +222,25 @@  static void __init imx28_evk_init(void)
 	mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
 }
 
+static void __init m28evk_init(void)
+{
+	enable_clk_enet_out();
+	update_fec_mac_prop(OUI_DENX);
+
+	mxsfb_pdata.mode_list = m28evk_video_modes;
+	mxsfb_pdata.mode_count = ARRAY_SIZE(m28evk_video_modes);
+	mxsfb_pdata.default_bpp = 16;
+	mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
+}
+
 static void __init mxs_machine_init(void)
 {
 	if (of_machine_is_compatible("fsl,imx28-evk"))
 		imx28_evk_init();
 	else if (of_machine_is_compatible("fsl,imx23-evk"))
 		imx23_evk_init();
+	else if (of_machine_is_compatible("denx,m28evk"))
+		m28evk_init();
 
 	of_platform_populate(NULL, of_default_bus_match_table,
 			     mxs_auxdata_lookup, NULL);
@@ -223,6 +255,7 @@  static const char *imx23_dt_compat[] __initdata = {
 
 static const char *imx28_dt_compat[] __initdata = {
 	"crystalfontz,cfa10036",
+	"denx,m28evk",
 	"fsl,imx28-evk",
 	"fsl,imx28",
 	NULL,