Loading arch/arm/boot/dts/imx28.dtsi +11 −0 Original line number Original line Diff line number Diff line Loading @@ -232,6 +232,17 @@ auart0_pins_a: auart0@0 { fsl,pull-up = <0>; 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 { auart3_pins_a: auart3@0 { reg = <0>; reg = <0>; fsl,pinmux-ids = < fsl,pinmux-ids = < Loading arch/arm/boot/dts/m28evk.dts 0 → 100644 +210 −0 Original line number Original line 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 = <®_3p3v>; VDDIO-supply = <®_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>; }; }; arch/arm/mach-mxs/mach-mxs.c +37 −4 Original line number Original line Diff line number Diff line Loading @@ -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 mxsfb_platform_data mxsfb_pdata __initdata; static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { Loading Loading @@ -186,15 +203,17 @@ static void __init imx23_evk_init(void) mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 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)) if (!IS_ERR(clk)) clk_prepare_enable(clk); clk_prepare_enable(clk); } static void __init imx28_evk_init(void) { enable_clk_enet_out(); update_fec_mac_prop(OUI_FSL); update_fec_mac_prop(OUI_FSL); mxsfb_pdata.mode_list = mx28evk_video_modes; mxsfb_pdata.mode_list = mx28evk_video_modes; Loading @@ -203,12 +222,25 @@ static void __init imx28_evk_init(void) mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 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) static void __init mxs_machine_init(void) { { if (of_machine_is_compatible("fsl,imx28-evk")) if (of_machine_is_compatible("fsl,imx28-evk")) imx28_evk_init(); imx28_evk_init(); else if (of_machine_is_compatible("fsl,imx23-evk")) else if (of_machine_is_compatible("fsl,imx23-evk")) imx23_evk_init(); imx23_evk_init(); else if (of_machine_is_compatible("denx,m28evk")) m28evk_init(); of_platform_populate(NULL, of_default_bus_match_table, of_platform_populate(NULL, of_default_bus_match_table, mxs_auxdata_lookup, NULL); mxs_auxdata_lookup, NULL); Loading @@ -223,6 +255,7 @@ static const char *imx23_dt_compat[] __initdata = { static const char *imx28_dt_compat[] __initdata = { static const char *imx28_dt_compat[] __initdata = { "crystalfontz,cfa10036", "crystalfontz,cfa10036", "denx,m28evk", "fsl,imx28-evk", "fsl,imx28-evk", "fsl,imx28", "fsl,imx28", NULL, NULL, Loading Loading
arch/arm/boot/dts/imx28.dtsi +11 −0 Original line number Original line Diff line number Diff line Loading @@ -232,6 +232,17 @@ auart0_pins_a: auart0@0 { fsl,pull-up = <0>; 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 { auart3_pins_a: auart3@0 { reg = <0>; reg = <0>; fsl,pinmux-ids = < fsl,pinmux-ids = < Loading
arch/arm/boot/dts/m28evk.dts 0 → 100644 +210 −0 Original line number Original line 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 = <®_3p3v>; VDDIO-supply = <®_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>; }; };
arch/arm/mach-mxs/mach-mxs.c +37 −4 Original line number Original line Diff line number Diff line Loading @@ -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 mxsfb_platform_data mxsfb_pdata __initdata; static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { Loading Loading @@ -186,15 +203,17 @@ static void __init imx23_evk_init(void) mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 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)) if (!IS_ERR(clk)) clk_prepare_enable(clk); clk_prepare_enable(clk); } static void __init imx28_evk_init(void) { enable_clk_enet_out(); update_fec_mac_prop(OUI_FSL); update_fec_mac_prop(OUI_FSL); mxsfb_pdata.mode_list = mx28evk_video_modes; mxsfb_pdata.mode_list = mx28evk_video_modes; Loading @@ -203,12 +222,25 @@ static void __init imx28_evk_init(void) mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT; 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) static void __init mxs_machine_init(void) { { if (of_machine_is_compatible("fsl,imx28-evk")) if (of_machine_is_compatible("fsl,imx28-evk")) imx28_evk_init(); imx28_evk_init(); else if (of_machine_is_compatible("fsl,imx23-evk")) else if (of_machine_is_compatible("fsl,imx23-evk")) imx23_evk_init(); imx23_evk_init(); else if (of_machine_is_compatible("denx,m28evk")) m28evk_init(); of_platform_populate(NULL, of_default_bus_match_table, of_platform_populate(NULL, of_default_bus_match_table, mxs_auxdata_lookup, NULL); mxs_auxdata_lookup, NULL); Loading @@ -223,6 +255,7 @@ static const char *imx23_dt_compat[] __initdata = { static const char *imx28_dt_compat[] __initdata = { static const char *imx28_dt_compat[] __initdata = { "crystalfontz,cfa10036", "crystalfontz,cfa10036", "denx,m28evk", "fsl,imx28-evk", "fsl,imx28-evk", "fsl,imx28", "fsl,imx28", NULL, NULL, Loading