Commit 8fa62e11 authored by Marek Vasut's avatar Marek Vasut Committed by Shawn Guo
Browse files

ARM: mxs: convert m28evk board to device tree



Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
parent 3dba2596
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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 = <
+210 −0
Original line number Diff line number Diff line
/*
 * 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 = "denx,m28evk-sgtl5000",
			     "fsl,mxs-audio-sgtl5000";
		model = "m28evk-sgtl5000";
		saif-controllers = <&saif0 &saif1>;
		audio-codec = <&sgtl5000>;
	};
};
+37 −4
Original line number Diff line number Diff line
@@ -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,