From c4bccca659fb4c5443731ac998c6e2a6a52b1674 Mon Sep 17 00:00:00 2001 From: Zoltan HERPAI Date: Mon, 14 Oct 2013 21:22:40 +0000 Subject: [PATCH] mxs: add support for I2SE Duckbill devices Signed-off-by: Michael Heimpold Signed-off-by: Zoltan HERPAI git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38407 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../arch/arm/boot/dts/imx28-duckbill.dts | 118 ++++++++++++++++++ target/linux/mxs/image/Makefile | 3 +- target/linux/mxs/patches/200-duckbill.patch | 57 +++++++++ target/linux/mxs/profiles/02-duckbill.mk | 20 +++ 4 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 target/linux/mxs/files/arch/arm/boot/dts/imx28-duckbill.dts create mode 100644 target/linux/mxs/patches/200-duckbill.patch create mode 100644 target/linux/mxs/profiles/02-duckbill.mk diff --git a/target/linux/mxs/files/arch/arm/boot/dts/imx28-duckbill.dts b/target/linux/mxs/files/arch/arm/boot/dts/imx28-duckbill.dts new file mode 100644 index 0000000000..b102d6200d --- /dev/null +++ b/target/linux/mxs/files/arch/arm/boot/dts/imx28-duckbill.dts @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2013 Michael Heimpold + * + * 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 = "I2SE Duckbill"; + compatible = "i2se,duckbill", "fsl,imx28"; + + memory { + reg = <0x40000000 0x08000000>; + }; + + apb@80000000 { + apbh@80000000 { + 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>; + vmmc-supply = <®_3p3v>; + status = "okay"; + }; + + pinctrl@80018000 { + pinctrl-names = "default"; + pinctrl-0 = <&hog_pins_a>; + + hog_pins_a: hog@0 { + reg = <0>; + fsl,pinmux-ids = < + 0x40d3 /* MX28_PAD_ENET0_RX_CLK__GPIO_4_13, PHY Reset */ + >; + fsl,drive-strength = <0>; + fsl,voltage = <1>; + fsl,pull-up = <0>; + }; + + led_pins_a: led_gpio@0 { + reg = <0>; + fsl,pinmux-ids = < + 0x3003 /* MX28_PAD_AUART0_RX__GPIO_3_0 */ + 0x3013 /* MX28_PAD_AUART0_TX__GPIO_3_1 */ + >; + fsl,drive-strength = <0>; + fsl,voltage = <1>; + fsl,pull-up = <0>; + }; + }; + }; + + apbx@80040000 { + duart: serial@80074000 { + pinctrl-names = "default"; + pinctrl-0 = <&duart_pins_a>; + status = "okay"; + }; + + usbphy0: usbphy@8007c000 { + status = "okay"; + }; + }; + }; + + ahb@80080000 { + usb0: usb@80080000 { + status = "okay"; + }; + + mac0: ethernet@800f0000 { + phy-mode = "rmii"; + pinctrl-names = "default"; + pinctrl-0 = <&mac0_pins_a>; + phy-supply = <®_3p3v>; + phy-reset-gpios = <&gpio4 13 0>; + phy-reset-duration = <100>; + 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; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&led_pins_a>; + + status { + label = "duckbill:green:status"; + gpios = <&gpio3 0 0>; + }; + + failure { + label = "duckbill:red:status"; + gpios = <&gpio3 1 0>; + }; + }; +}; diff --git a/target/linux/mxs/image/Makefile b/target/linux/mxs/image/Makefile index ffbbb815d1..53a51fc604 100644 --- a/target/linux/mxs/image/Makefile +++ b/target/linux/mxs/image/Makefile @@ -9,7 +9,8 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk BOARDS:= \ - imx23-olinuxino + imx23-olinuxino \ + imx28-duckbill define Image/BuildKernel/olinuxino-bootlet cat $(LINUX_DIR)/arch/arm/boot/zImage $(LINUX_DIR)/arch/arm/boot/dts/imx23-olinuxino.dtb > $(STAGING_DIR)/zImage_dtb diff --git a/target/linux/mxs/patches/200-duckbill.patch b/target/linux/mxs/patches/200-duckbill.patch new file mode 100644 index 0000000000..3772e20f22 --- /dev/null +++ b/target/linux/mxs/patches/200-duckbill.patch @@ -0,0 +1,57 @@ +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index f0895c5..3ec78a1 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -131,6 +131,7 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \ + imx28-cfa10037.dtb \ + imx28-cfa10049.dtb \ + imx28-evk.dtb \ ++ imx28-duckbill.dtb \ + imx28-m28evk.dtb \ + imx28-sps1.dtb \ + imx28-tx28.dtb +diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c +index 5b62b64..63916c5 100644 +--- a/arch/arm/mach-mxs/mach-mxs.c ++++ b/arch/arm/mach-mxs/mach-mxs.c +@@ -175,6 +175,7 @@ enum mac_oui { + OUI_FSL, + OUI_DENX, + OUI_CRYSTALFONTZ, ++ OUI_I2SE, + }; + + static void __init update_fec_mac_prop(enum mac_oui oui) +@@ -229,6 +230,11 @@ static void __init update_fec_mac_prop(enum mac_oui oui) + macaddr[1] = 0xb9; + macaddr[2] = 0xe1; + break; ++ case OUI_I2SE: ++ macaddr[0] = 0x00; ++ macaddr[1] = 0x01; ++ macaddr[2] = 0x87; ++ break; + } + val = ocotp[i]; + macaddr[3] = (val >> 16) & 0xff; +@@ -362,6 +368,11 @@ static void __init cfa10037_init(void) + update_fec_mac_prop(OUI_CRYSTALFONTZ); + } + ++static void __init duckbill_init(void) ++{ ++ update_fec_mac_prop(OUI_I2SE); ++} ++ + static void __init mxs_machine_init(void) + { + if (of_machine_is_compatible("fsl,imx28-evk")) +@@ -372,6 +383,8 @@ static void __init mxs_machine_init(void) + cfa10037_init(); + else if (of_machine_is_compatible("crystalfontz,cfa10049")) + cfa10049_init(); ++ else if (of_machine_is_compatible("i2se,duckbill")) ++ duckbill_init(); + + of_platform_populate(NULL, of_default_bus_match_table, + mxs_auxdata_lookup, NULL); diff --git a/target/linux/mxs/profiles/02-duckbill.mk b/target/linux/mxs/profiles/02-duckbill.mk new file mode 100644 index 0000000000..847460ac31 --- /dev/null +++ b/target/linux/mxs/profiles/02-duckbill.mk @@ -0,0 +1,20 @@ +# +# Copyright (C) 2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/duckbill + NAME:=I2SE Duckbill series + DEPENDS:=+@TARGET_ROOTFS_INCLUDE_KERNEL +@TARGET_ROOTFS_INCLUDE_DTB + PACKAGES+= \ + -dnsmasq -firewall -ppp -ip6tables -iptables -6relayd -mtd uboot-envtools \ + kmod-leds-gpio kmod-ledtrig-timer kmod-usb-mxs-phy -kmod-ipt-nathelper +endef + +define Profile/duckbill/Description + I2SE's Duckbill devices +endef + +$(eval $(call Profile,duckbill))