diff options
author | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
---|---|---|
committer | ToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp> | 2020-03-30 09:24:26 +0900 |
commit | 5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (patch) | |
tree | b4bb18dcd1487dbf1ea8127e5671b7bb2eded033 /bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28 | |
parent | 706ad73eb02caf8532deaf5d38995bd258725cb8 (diff) |
agl-basesystem
Diffstat (limited to 'bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28')
60 files changed, 9829 insertions, 0 deletions
diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0001-ARM-i.MX6-dts-Add-initial-support-for-cm-fx6.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0001-ARM-i.MX6-dts-Add-initial-support-for-cm-fx6.patch new file mode 100644 index 00000000..1156b835 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0001-ARM-i.MX6-dts-Add-initial-support-for-cm-fx6.patch @@ -0,0 +1,399 @@ +From af4b4f2854d6223ba2f1235400f8e8dac660a6a2 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 15 May 2014 17:18:11 +0300 +Subject: [PATCH 01/59] ARM: i.MX6: dts: Add initial support for cm-fx6 + +Add initial support for cm-fx6 module. + +This patch configures: +1) serial console +2) hearbeat led +3) FreeScale NIC +4) pcie +5) Intel I210 NIC +6) wif/bt +7) sata + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 368 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 368 insertions(+) + create mode 100644 arch/arm/boot/dts/imx6q-cm-fx6.dts + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +new file mode 100644 +index 0000000..1f06d95 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -0,0 +1,368 @@ ++/* ++* Copyright 2013 CompuLab Ltd. ++* ++* Author: Valentin Raevsky <valentin@compulab.co.il> ++* ++* 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 "imx6q.dtsi" ++ ++/ { ++ model = "CompuLab CM-FX6"; ++ compatible = "compulab,cm-fx6", "fsl,imx6q"; ++ ++ memory { ++ reg = <0x10000000 0x80000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ heartbeat-led { ++ label = "Heartbeat"; ++ gpios = <&gpio2 31 0>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for mmc */ ++ reg_3p3v: 3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "3P3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ /* regulator for usb otg */ ++ reg_usb_otg_vbus: usb_otg_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_otg_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio3 22 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator for usb hub1 */ ++ reg_usb_h1_vbus: usb_h1_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_h1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio7 8 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator1 for wifi/bt */ ++ awnh387_npoweron: regulator-awnh387-npoweron { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-npoweron"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio7 12 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator2 for wifi/bt */ ++ awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-wifi-nreset"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 16 0>; ++ startup-delay-us = <10000>; ++ }; ++ }; ++}; ++ ++&iomuxc { ++ imx6q-cm-fx6 { ++ /* pins for eth0 */ ++ pinctrl_enet: enetgrp { ++ fsl,pins = < ++ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 ++ MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 ++ MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 ++ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 ++ MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 ++ MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8 ++ >; ++ }; ++ ++ /* pins for spi */ ++ pinctrl_ecspi1: ecspi1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 ++ MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 ++ MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 ++ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 ++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 ++ >; ++ }; ++ ++ /* pins for nand */ ++ pinctrl_gpmi_nand: gpminandgrp { ++ fsl,pins = < ++ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 ++ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 ++ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 ++ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 ++ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 ++ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 ++ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 ++ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 ++ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 ++ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 ++ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 ++ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 ++ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 ++ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 ++ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 ++ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 ++ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 ++ >; ++ }; ++ ++ /* pins for i2c1 */ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 ++ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for i2c2 */ ++ pinctrl_i2c2: i2c2grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 ++ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for i2c3 */ ++ pinctrl_i2c3: i2c3grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 ++ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for console */ ++ pinctrl_uart4: uart4grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 ++ >; ++ }; ++ ++ /* pins for usb hub1 */ ++ pinctrl_usbh1: usbh1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 ++ >; ++ }; ++ ++ /* pins for usb otg */ ++ pinctrl_usbotg: usbotggrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 ++ >; ++ }; ++ ++ /* pins for wifi/bt */ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 ++ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 ++ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 ++ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 ++ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 ++ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 ++ >; ++ }; ++ ++ /* pins for mmc */ ++ pinctrl_usdhc3: usdhc3grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 ++ >; ++ }; ++ }; ++}; ++ ++/* spi */ ++&ecspi1 { ++ fsl,spi-num-chipselects = <2>; ++ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ecspi1>; ++ status = "okay"; ++ ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "st,m25px16", "st,m25p"; ++ spi-max-frequency = <20000000>; ++ reg = <0>; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0xc0000>; ++ }; ++ ++ partition@c0000 { ++ label = "uboot environment"; ++ reg = <0xc0000 0x40000>; ++ }; ++ ++ partition@100000 { ++ label = "reserved"; ++ reg = <0x100000 0x100000>; ++ }; ++ }; ++}; ++ ++/* eth0 */ ++&fec { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet>; ++ phy-mode = "rgmii"; ++ status = "okay"; ++}; ++ ++/* nand */ ++&gpmi { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpmi_nand>; ++ status = "okay"; ++}; ++ ++/* i2c1 */ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ status = "okay"; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ rtc@56 { ++ compatible = "emmicro,em3027"; ++ reg = <0x56>; ++ }; ++}; ++ ++/* i2c2 */ ++&i2c2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c2>; ++ status = "okay"; ++}; ++ ++/* i2c3 */ ++&i2c3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c3>; ++ status = "okay"; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++}; ++ ++/* eth1 */ ++&pcie { ++ reset-gpio = <&gpio1 26 0>; ++ status = "okay"; ++}; ++ ++/* sata */ ++&sata { ++ status = "okay"; ++}; ++ ++/* rear serial console */ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart2_2>; ++ fsl,dte-mode; ++ fsl,uart-has-rtscts; ++ dma-names = "rx", "tx"; ++ dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; ++ status = "okay"; ++}; ++ ++/* console */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart4>; ++ status = "okay"; ++}; ++ ++/* usb otg */ ++&usbotg { ++ vbus-supply = <®_usb_otg_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbotg>; ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++/* usb hub1 */ ++&usbh1 { ++ vbus-supply = <®_usb_h1_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbh1>; ++ status = "okay"; ++}; ++ ++/* wifi/bt */ ++&usdhc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc1>; ++ non-removable; ++ vmmc-supply = <&awnh387_npoweron>; ++ vmmc_aux-supply = <&awnh387_wifi_nreset>; ++ status = "okay"; ++}; ++ ++/* mmc */ ++&usdhc3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc3>; ++ vmmc-supply = <®_3p3v>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0002-ARM-i.MX6-cm-fx6-Add-defconfig.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0002-ARM-i.MX6-cm-fx6-Add-defconfig.patch new file mode 100644 index 00000000..44281463 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0002-ARM-i.MX6-cm-fx6-Add-defconfig.patch @@ -0,0 +1,456 @@ +From 591aecd36eb5e5eaf189bfce36db616425c00959 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 15 May 2014 17:25:07 +0300 +Subject: [PATCH 02/59] ARM: i.MX6: cm-fx6: Add defconfig + +Add default configuration file for the cm-fx6 module. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/configs/cm_fx6_defconfig | 434 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 434 insertions(+) + create mode 100644 arch/arm/configs/cm_fx6_defconfig + +diff --git a/arch/arm/configs/cm_fx6_defconfig b/arch/arm/configs/cm_fx6_defconfig +new file mode 100644 +index 0000000..92c3da1 +--- /dev/null ++++ b/arch/arm/configs/cm_fx6_defconfig +@@ -0,0 +1,434 @@ ++CONFIG_KERNEL_LZO=y ++CONFIG_SYSVIPC=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_LOG_BUF_SHIFT=18 ++CONFIG_CGROUPS=y ++CONFIG_RELAY=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EXPERT=y ++CONFIG_PERF_EVENTS=y ++# CONFIG_SLUB_DEBUG is not set ++# CONFIG_COMPAT_BRK is not set ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++# CONFIG_BLK_DEV_BSG is not set ++CONFIG_GPIO_PCA953X=y ++CONFIG_ARCH_MXC=y ++CONFIG_MXC_DEBUG_BOARD=y ++CONFIG_MACH_IMX51_DT=y ++CONFIG_MACH_EUKREA_CPUIMX51SD=y ++CONFIG_SOC_IMX53=y ++CONFIG_SOC_IMX6Q=y ++CONFIG_SOC_IMX6SL=y ++CONFIG_SOC_VF610=y ++# CONFIG_SWP_EMULATE is not set ++CONFIG_PCI=y ++CONFIG_PCI_IMX6=y ++CONFIG_SMP=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_PREEMPT=y ++CONFIG_AEABI=y ++# CONFIG_OABI_COMPAT is not set ++CONFIG_HIGHMEM=y ++CONFIG_CMDLINE="noinitrd console=ttymxc0,115200" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_ARM_IMX6_CPUFREQ=y ++CONFIG_CPU_IDLE=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_BINFMT_MISC=m ++CONFIG_PM_RUNTIME=y ++CONFIG_PM_DEBUG=y ++CONFIG_PM_TEST_SUSPEND=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_INET=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++# CONFIG_INET_XFRM_MODE_TRANSPORT is not set ++# CONFIG_INET_XFRM_MODE_TUNNEL is not set ++# CONFIG_INET_XFRM_MODE_BEET is not set ++# CONFIG_INET_LRO is not set ++CONFIG_IPV6=y ++CONFIG_NETFILTER=y ++CONFIG_NETFILTER_DEBUG=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=y ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=y ++CONFIG_IP_NF_TARGET_REJECT=y ++CONFIG_IP_NF_TARGET_ULOG=m ++CONFIG_NF_NAT_IPV4=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_CAN=y ++CONFIG_CAN_FLEXCAN=y ++CONFIG_CFG80211=y ++CONFIG_CFG80211_WEXT=y ++CONFIG_MAC80211=y ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++# CONFIG_STANDALONE is not set ++CONFIG_CMA=y ++CONFIG_CMA_SIZE_MBYTES=320 ++CONFIG_IMX_WEIM=y ++CONFIG_CONNECTOR=y ++CONFIG_MTD=y ++CONFIG_MTD_CMDLINE_PARTS=y ++CONFIG_MTD_BLOCK=y ++CONFIG_MTD_CFI=y ++CONFIG_MTD_JEDECPROBE=y ++CONFIG_MTD_CFI_INTELEXT=y ++CONFIG_MTD_CFI_AMDSTD=y ++CONFIG_MTD_CFI_STAA=y ++CONFIG_MTD_PHYSMAP_OF=y ++CONFIG_MTD_DATAFLASH=y ++CONFIG_MTD_M25P80=y ++CONFIG_MTD_SST25L=y ++CONFIG_MTD_NAND=y ++CONFIG_MTD_NAND_GPMI_NAND=y ++CONFIG_MTD_NAND_MXC=y ++CONFIG_MTD_UBI=y ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_SIZE=65536 ++CONFIG_EEPROM_AT24=y ++CONFIG_EEPROM_AT25=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_SCSI_MULTI_LUN=y ++CONFIG_SCSI_CONSTANTS=y ++CONFIG_SCSI_LOGGING=y ++CONFIG_SCSI_SCAN_ASYNC=y ++# CONFIG_SCSI_LOWLEVEL is not set ++CONFIG_ATA=y ++CONFIG_SATA_AHCI_PLATFORM=y ++CONFIG_AHCI_IMX=y ++CONFIG_PATA_IMX=y ++CONFIG_NETDEVICES=y ++CONFIG_TUN=m ++# CONFIG_NET_VENDOR_BROADCOM is not set ++CONFIG_CS89x0=y ++CONFIG_CS89x0_PLATFORM=y ++# CONFIG_NET_VENDOR_FARADAY is not set ++CONFIG_IGB=m ++# CONFIG_NET_VENDOR_MARVELL is not set ++# CONFIG_NET_VENDOR_MICREL is not set ++# CONFIG_NET_VENDOR_MICROCHIP is not set ++# CONFIG_NET_VENDOR_NATSEMI is not set ++# CONFIG_NET_VENDOR_SEEQ is not set ++CONFIG_SMC91X=y ++CONFIG_SMC911X=y ++CONFIG_SMSC911X=y ++# CONFIG_NET_VENDOR_STMICRO is not set ++CONFIG_ATH_CARDS=y ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_SDIO=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_EVDEV=y ++CONFIG_INPUT_EVBUG=m ++CONFIG_KEYBOARD_GPIO=y ++CONFIG_KEYBOARD_IMX=y ++CONFIG_MOUSE_PS2=m ++CONFIG_MOUSE_PS2_ELANTECH=y ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_EGALAX=y ++CONFIG_TOUCHSCREEN_ELAN=y ++CONFIG_TOUCHSCREEN_MAX11801=y ++CONFIG_TOUCHSCREEN_MC13783=y ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_MMA8450=y ++CONFIG_INPUT_ISL29023=y ++CONFIG_SERIO_SERPORT=m ++CONFIG_VT_HW_CONSOLE_BINDING=y ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_IMX=y ++CONFIG_SERIAL_IMX_CONSOLE=y ++CONFIG_SERIAL_FSL_LPUART=y ++CONFIG_SERIAL_FSL_LPUART_CONSOLE=y ++CONFIG_FSL_OTP=y ++CONFIG_MXS_VIIM=y ++# CONFIG_I2C_COMPAT is not set ++CONFIG_I2C_CHARDEV=y ++# CONFIG_I2C_HELPER_AUTO is not set ++CONFIG_I2C_ALGOPCF=m ++CONFIG_I2C_ALGOPCA=m ++CONFIG_I2C_IMX=y ++CONFIG_SPI=y ++CONFIG_SPI_IMX=y ++CONFIG_GPIO_SYSFS=y ++CONFIG_POWER_SUPPLY=y ++CONFIG_SABRESD_MAX8903=y ++CONFIG_IMX6_USB_CHARGER=y ++CONFIG_SENSORS_MAX17135=y ++CONFIG_SENSORS_MAG3110=y ++CONFIG_THERMAL=y ++CONFIG_CPU_THERMAL=y ++CONFIG_IMX_THERMAL=y ++CONFIG_DEVICE_THERMAL=y ++CONFIG_WATCHDOG=y ++CONFIG_IMX2_WDT=y ++CONFIG_MFD_DA9052_I2C=y ++CONFIG_MFD_MC13XXX_SPI=y ++CONFIG_MFD_MC13XXX_I2C=y ++CONFIG_MFD_MAX17135=y ++CONFIG_MFD_SI476X_CORE=y ++CONFIG_REGULATOR=y ++CONFIG_REGULATOR_FIXED_VOLTAGE=y ++CONFIG_REGULATOR_DA9052=y ++CONFIG_REGULATOR_ANATOP=y ++CONFIG_REGULATOR_MC13783=y ++CONFIG_REGULATOR_MC13892=y ++CONFIG_REGULATOR_MAX17135=y ++CONFIG_REGULATOR_PFUZE100=y ++CONFIG_MEDIA_SUPPORT=y ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_VIDEO_V4L2_INT_DEVICE=y ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_MXC_OUTPUT=y ++CONFIG_VIDEO_MXC_CAPTURE=m ++CONFIG_VIDEO_MXC_CSI_CAMERA=m ++CONFIG_MXC_CAMERA_OV5640=m ++CONFIG_MXC_CAMERA_OV5642=m ++CONFIG_MXC_CAMERA_OV5640_MIPI=m ++CONFIG_MXC_TVIN_ADV7180=m ++CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m ++CONFIG_VIDEO_MXC_IPU_OUTPUT=y ++CONFIG_VIDEO_MXC_PXP_V4L2=y ++CONFIG_SOC_CAMERA=y ++CONFIG_VIDEO_MX3=y ++CONFIG_RADIO_SI476X=y ++CONFIG_SOC_CAMERA_OV2640=y ++CONFIG_DRM=y ++CONFIG_DRM_VIVANTE=y ++CONFIG_FB=y ++CONFIG_FB_MXS=y ++CONFIG_BACKLIGHT_LCD_SUPPORT=y ++CONFIG_LCD_CLASS_DEVICE=y ++CONFIG_LCD_L4F00242T03=y ++CONFIG_LCD_PLATFORM=y ++CONFIG_BACKLIGHT_CLASS_DEVICE=y ++CONFIG_BACKLIGHT_PWM=y ++CONFIG_FB_MXC_SYNC_PANEL=y ++CONFIG_FB_MXC_LDB=y ++CONFIG_FB_MXC_MIPI_DSI=y ++CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y ++CONFIG_FB_MXC_HDMI=y ++CONFIG_FB_MXC_EINK_PANEL=y ++CONFIG_FB_MXS_SII902X=y ++CONFIG_HANNSTAR_CABC=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++CONFIG_LOGO=y ++CONFIG_SOUND=y ++CONFIG_SND=y ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_SOC=y ++CONFIG_SND_IMX_SOC=y ++CONFIG_SND_SOC_EUKREA_TLV320=y ++CONFIG_SND_SOC_IMX_CS42888=y ++CONFIG_SND_SOC_IMX_WM8962=y ++CONFIG_SND_SOC_IMX_SGTL5000=y ++CONFIG_SND_SOC_IMX_SPDIF=y ++CONFIG_SND_SOC_IMX_MC13783=y ++CONFIG_SND_SOC_IMX_HDMI=y ++CONFIG_SND_SOC_IMX_SI476X=y ++CONFIG_USB=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_STORAGE=y ++CONFIG_USB_CHIPIDEA=y ++CONFIG_USB_CHIPIDEA_UDC=y ++CONFIG_USB_CHIPIDEA_HOST=y ++CONFIG_USB_PHY=y ++CONFIG_NOP_USB_XCEIV=y ++CONFIG_USB_MXS_PHY=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_ZERO=m ++CONFIG_USB_ETH=m ++CONFIG_USB_MASS_STORAGE=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_MMC=y ++CONFIG_MMC_UNSAFE_RESUME=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SDHCI_ESDHC_IMX=y ++CONFIG_MXC_IPU=y ++CONFIG_MXC_GPU_VIV=y ++CONFIG_MXC_ASRC=y ++CONFIG_MXC_MIPI_CSI2=y ++CONFIG_MXC_MLB150=m ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGERS=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_INTF_DEV_UIE_EMUL=y ++CONFIG_RTC_DRV_MC13XXX=y ++CONFIG_RTC_DRV_MXC=y ++CONFIG_RTC_DRV_SNVS=y ++CONFIG_DMADEVICES=y ++CONFIG_MXC_PXP_V2=y ++CONFIG_IMX_SDMA=y ++CONFIG_MXS_DMA=y ++CONFIG_STAGING=y ++CONFIG_COMMON_CLK_DEBUG=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_PWM=y ++CONFIG_PWM_IMX=y ++CONFIG_EXT2_FS=y ++CONFIG_EXT2_FS_XATTR=y ++CONFIG_EXT2_FS_POSIX_ACL=y ++CONFIG_EXT2_FS_SECURITY=y ++CONFIG_EXT3_FS=y ++CONFIG_EXT3_FS_POSIX_ACL=y ++CONFIG_EXT3_FS_SECURITY=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_QUOTA=y ++CONFIG_QUOTA_NETLINK_INTERFACE=y ++# CONFIG_PRINT_QUOTA_WARNING is not set ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=m ++CONFIG_VFAT_FS=y ++CONFIG_TMPFS=y ++CONFIG_JFFS2_FS=y ++CONFIG_UBIFS_FS=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_ROOT_NFS=y ++CONFIG_NLS_DEFAULT="cp437" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=y ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_UTF8=y ++CONFIG_MAGIC_SYSRQ=y ++# CONFIG_SCHED_DEBUG is not set ++# CONFIG_DEBUG_BUGVERBOSE is not set ++# CONFIG_FTRACE is not set ++CONFIG_SECURITYFS=y ++CONFIG_CRYPTO_USER=y ++CONFIG_CRYPTO_TEST=m ++CONFIG_CRYPTO_CCM=y ++CONFIG_CRYPTO_GCM=y ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=y ++CONFIG_CRYPTO_ECB=y ++CONFIG_CRYPTO_LRW=y ++CONFIG_CRYPTO_XTS=y ++CONFIG_CRYPTO_MD4=y ++CONFIG_CRYPTO_MD5=y ++CONFIG_CRYPTO_MICHAEL_MIC=y ++CONFIG_CRYPTO_RMD128=y ++CONFIG_CRYPTO_RMD160=y ++CONFIG_CRYPTO_RMD256=y ++CONFIG_CRYPTO_RMD320=y ++CONFIG_CRYPTO_SHA1=y ++CONFIG_CRYPTO_SHA256=y ++CONFIG_CRYPTO_SHA512=y ++CONFIG_CRYPTO_TGR192=y ++CONFIG_CRYPTO_WP512=y ++CONFIG_CRYPTO_BLOWFISH=y ++CONFIG_CRYPTO_CAMELLIA=y ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_TWOFISH=y ++# CONFIG_CRYPTO_ANSI_CPRNG is not set ++CONFIG_CRYPTO_DEV_FSL_CAAM=y ++CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y ++CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y ++CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y ++CONFIG_CRC_CCITT=m ++CONFIG_CRC_T10DIF=y ++CONFIG_CRC7=m ++CONFIG_LIBCRC32C=m +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0003-igb-Enable-random-mac-address.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0003-igb-Enable-random-mac-address.patch new file mode 100644 index 00000000..7fb766b5 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0003-igb-Enable-random-mac-address.patch @@ -0,0 +1,32 @@ +From 0a691facfb253b42cdaeaedd77477d13c6fa99f8 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 15 May 2014 17:26:30 +0300 +Subject: [PATCH 03/59] igb: Enable random mac address + +Enable random mac address in order to let the driver up +if eeprom values are incorrect. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + drivers/net/ethernet/intel/igb/igb_main.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c +index 206e79d..2472835 100644 +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -2387,6 +2387,11 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + if (hw->mac.ops.read_mac_addr(hw)) + dev_err(&pdev->dev, "NVM Read Error\n"); + ++ if (!is_valid_ether_addr(hw->mac.addr)) { ++ dev_info(&pdev->dev, "Random MAC Address\n"); ++ random_ether_addr(hw->mac.addr); ++ } ++ + memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len); + + if (!is_valid_ether_addr(netdev->dev_addr)) { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0004-ARM-i.MX6-cm-fx6-update-defconfig.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0004-ARM-i.MX6-cm-fx6-update-defconfig.patch new file mode 100644 index 00000000..d9c90b0b --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0004-ARM-i.MX6-cm-fx6-update-defconfig.patch @@ -0,0 +1,27 @@ +From f02b927b88856dde0ec988705e6445159bb272ae Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 22 Jun 2014 18:03:27 +0300 +Subject: [PATCH 04/59] ARM: i.MX6: cm-fx6: update defconfig + +Enable EM3027 RTC + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/configs/cm_fx6_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/configs/cm_fx6_defconfig b/arch/arm/configs/cm_fx6_defconfig +index 92c3da1..eb6d9cb 100644 +--- a/arch/arm/configs/cm_fx6_defconfig ++++ b/arch/arm/configs/cm_fx6_defconfig +@@ -347,6 +347,7 @@ CONFIG_LEDS_TRIGGERS=y + CONFIG_LEDS_TRIGGER_GPIO=y + CONFIG_RTC_CLASS=y + CONFIG_RTC_INTF_DEV_UIE_EMUL=y ++CONFIG_RTC_DRV_EM3027=y + CONFIG_RTC_DRV_MC13XXX=y + CONFIG_RTC_DRV_MXC=y + CONFIG_RTC_DRV_SNVS=y +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0005-ARM-i.MX6-dts-add-HDMI-and-DVI-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0005-ARM-i.MX6-dts-add-HDMI-and-DVI-support.patch new file mode 100644 index 00000000..8d133e40 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0005-ARM-i.MX6-dts-add-HDMI-and-DVI-support.patch @@ -0,0 +1,101 @@ +From 80e3270f42e72dc01f8c2235fbdaf5fa94dd6fce Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 23 Jun 2014 13:53:35 +0300 +Subject: [PATCH 05/59] ARM: i.MX6: dts: add HDMI and DVI support + +Add HDMI and DVI support on IPU1 and IPU2, define two frame buffers. +Enable starting X with fbdev. +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 65 +++++++++++++++++++++++++++++++++++- + 1 file changed, 64 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 1f06d95..018c3b1 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -86,6 +86,44 @@ + startup-delay-us = <10000>; + }; + }; ++ ++ aliases { ++ mxcfb0 = &mxcfb1; ++ mxcfb1 = &mxcfb2; ++ }; ++ ++ mxcfb1: fb@0 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "hdmi"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <24>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ mxcfb2: fb@1 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "lcd"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <24>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ lcd@0 { ++ compatible = "fsl,lcd"; ++ ipu_id = <0>; ++ disp_id = <0>; ++ default_ifmt = "RGB24"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ipu1_1>; ++ status = "okay"; ++ }; ++ + }; + + &iomuxc { +@@ -287,7 +325,7 @@ + &i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c2>; +- status = "okay"; ++ /* status = "okay"; */ + }; + + /* i2c3 */ +@@ -366,3 +404,28 @@ + vmmc-supply = <®_3p3v>; + status = "okay"; + }; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; ++ ++&hdmi_core { ++ ipu_id = <1>; ++ disp_id = <0>; ++ status = "okay"; ++}; ++ ++&hdmi_video { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; ++ fsl,hdcp; ++ status = "okay"; ++}; ++ ++&hdmi_audio { ++/* status = "okay"; */ ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0006-ARM-i.MX6-dts-add-HDMI-Audio-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0006-ARM-i.MX6-dts-add-HDMI-Audio-support.patch new file mode 100644 index 00000000..a31a9771 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0006-ARM-i.MX6-dts-add-HDMI-Audio-support.patch @@ -0,0 +1,40 @@ +From 608c9ed0c20fe1258b8982e3ce452482aa1c002e Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 23 Jun 2014 15:29:21 +0300 +Subject: [PATCH 06/59] ARM: i.MX6: dts: add HDMI-Audio support + +Add HDMI-Audio support. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 018c3b1..76b4b0c 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -92,6 +92,13 @@ + mxcfb1 = &mxcfb2; + }; + ++ sound-hdmi { ++ compatible = "fsl,imx6q-audio-hdmi", ++ "fsl,imx-audio-hdmi"; ++ model = "imx-audio-hdmi"; ++ hdmi-controller = <&hdmi_audio>; ++ }; ++ + mxcfb1: fb@0 { + compatible = "fsl,mxc_sdc_fb"; + disp_dev = "hdmi"; +@@ -427,5 +434,5 @@ + }; + + &hdmi_audio { +-/* status = "okay"; */ ++ status = "okay"; + }; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0007-ARM-i.MX6-dts-add-SPDIF-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0007-ARM-i.MX6-dts-add-SPDIF-support.patch new file mode 100644 index 00000000..24e53615 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0007-ARM-i.MX6-dts-add-SPDIF-support.patch @@ -0,0 +1,69 @@ +From b0e655dbaddb94c4b7c73c00140b43fb0b1ecd36 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 23 Jun 2014 16:30:18 +0300 +Subject: [PATCH 07/59] ARM: i.MX6: dts: add SPDIF support + +Add SPDIF support. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 76b4b0c..3f73b83 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -99,6 +99,15 @@ + hdmi-controller = <&hdmi_audio>; + }; + ++ sound-spdif { ++ compatible = "fsl,imx-audio-spdif", ++ "fsl,imx-sabreauto-spdif"; ++ model = "imx-spdif"; ++ spdif-controller = <&spdif>; ++ spdif-out; ++ spdif-in; ++ }; ++ + mxcfb1: fb@0 { + compatible = "fsl,mxc_sdc_fb"; + disp_dev = "hdmi"; +@@ -153,7 +162,6 @@ + MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 + MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 + MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 +- MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8 + >; + }; + +@@ -260,6 +268,15 @@ + MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 + >; + }; ++ ++ /* pins for spdif */ ++ pinctrl_spdif: spdifgrp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 ++ MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 ++ >; ++ }; ++ + }; + }; + +@@ -436,3 +453,9 @@ + &hdmi_audio { + status = "okay"; + }; ++ ++&spdif { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_spdif>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0008-ARM-i.MX6-dts-add-Power-Button.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0008-ARM-i.MX6-dts-add-Power-Button.patch new file mode 100644 index 00000000..d463399d --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0008-ARM-i.MX6-dts-add-Power-Button.patch @@ -0,0 +1,36 @@ +From a15ad25075d0d78f4462521260902c0f03d6a343 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 24 Jun 2014 15:35:52 +0300 +Subject: [PATCH 08/59] ARM: i.MX6: dts: add "Power Button" + +Add "Power Button" by means of GPIO + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 3f73b83..0abb116 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -87,6 +87,16 @@ + }; + }; + ++ gpio-keys { ++ compatible = "gpio-keys"; ++ power { ++ label = "Power Button"; ++ gpios = <&gpio1 29 1>; ++ linux,code = <116>; /* KEY_POWER */ ++ gpio-key,wakeup; ++ }; ++ }; ++ + aliases { + mxcfb0 = &mxcfb1; + mxcfb1 = &mxcfb2; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0009-ARM-i.MX6-dts-Enable-uart2-as-a-serial-console.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0009-ARM-i.MX6-dts-Enable-uart2-as-a-serial-console.patch new file mode 100644 index 00000000..cf06c29e --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0009-ARM-i.MX6-dts-Enable-uart2-as-a-serial-console.patch @@ -0,0 +1,50 @@ +From 0d82c1831d3fe3cf53e6b8d0435ff6bd621e07d2 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 10:42:20 +0300 +Subject: [PATCH 09/59] ARM: i.MX6: dts: Enable uart2 as a serial console + +Enable ttymxc1 for use as a serial console: +1) Add the correct uart2 pinmux configuration. +2) Disable uart2 dte mode. + It allows running 'getty' and 'login' on the ttymxc1. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 0abb116..16cefe0 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -287,6 +287,16 @@ + >; + }; + ++ /* pins for uart2 */ ++ pinctrl_uart2: uart2grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 ++ >; ++ }; ++ + }; + }; + +@@ -389,8 +399,8 @@ + /* rear serial console */ + &uart2 { + pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart2_2>; +- fsl,dte-mode; ++ pinctrl-0 = <&pinctrl_uart2>; ++ /* fsl,dte-mode; */ + fsl,uart-has-rtscts; + dma-names = "rx", "tx"; + dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0010-ARM-i.MX6-dts-add-pcie-power-reset-gpio-definition.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0010-ARM-i.MX6-dts-add-pcie-power-reset-gpio-definition.patch new file mode 100644 index 00000000..e055a3c7 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0010-ARM-i.MX6-dts-add-pcie-power-reset-gpio-definition.patch @@ -0,0 +1,44 @@ +From 11f421d3b4a9f4b1d256fa6bc6b6b9c313cf1b93 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 10:51:44 +0300 +Subject: [PATCH 10/59] ARM: i.MX6: dts: add pcie power/reset gpio definition + +Add pcie power/reset gpio definition. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 16cefe0..592db30 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -297,6 +297,13 @@ + >; + }; + ++ /* pins for pcie */ ++ pinctrl_pcie: pciegrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 ++ MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 ++ >; ++ }; + }; + }; + +@@ -387,7 +394,10 @@ + + /* eth1 */ + &pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pcie>; + reset-gpio = <&gpio1 26 0>; ++ power-on-gpio = <&gpio2 24 0>; + status = "okay"; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0011-ARM-i.MX6-dts-add-onboard-SSD-pin-configuration.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0011-ARM-i.MX6-dts-add-onboard-SSD-pin-configuration.patch new file mode 100644 index 00000000..37b49495 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0011-ARM-i.MX6-dts-add-onboard-SSD-pin-configuration.patch @@ -0,0 +1,46 @@ +From 811721a51deec0f751d98ba438d763c4b9d1f736 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 10:53:32 +0300 +Subject: [PATCH 11/59] ARM: i.MX6: dts: add onboard SSD pin configuration + +Add onboard SSD pin configuration. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 592db30..0dfffa9 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -153,6 +153,26 @@ + }; + + &iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>; ++ ++ hog { ++ pinctrl_hog: hoggrp { ++ fsl,pins = < ++ /* SATA PWR */ ++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 ++ MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 ++ MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 ++ MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 ++ /* SATA CTRL */ ++ MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 ++ MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 ++ MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 ++ MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 ++ >; ++ }; ++ }; ++ + imx6q-cm-fx6 { + /* pins for eth0 */ + pinctrl_enet: enetgrp { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0012-ARM-i.MX6-dts-add-onboard-SSD-power-up-sequence.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0012-ARM-i.MX6-dts-add-onboard-SSD-power-up-sequence.patch new file mode 100644 index 00000000..e2e8fd28 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0012-ARM-i.MX6-dts-add-onboard-SSD-power-up-sequence.patch @@ -0,0 +1,92 @@ +From bf5a6721257ec96c1626f295851014b373a3a20a Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 10:54:43 +0300 +Subject: [PATCH 12/59] ARM: i.MX6: dts: add onboard SSD power up sequence + +Add onboard SSD power up sequence. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 66 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 0dfffa9..286b03e 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -85,6 +85,72 @@ + gpio = <&gpio6 16 0>; + startup-delay-us = <10000>; + }; ++ ++ reg_sata_phy_slp: sata_phy_slp { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_phy_slp"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 23 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ }; ++ ++ reg_sata_nrstdly: sata_nrstdly { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nrstdly"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 6 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_phy_slp>; ++ }; ++ ++ reg_sata_pwren: sata_pwren { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_pwren"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio1 28 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nrstdly>; ++ }; ++ ++ reg_sata_nstandby1: sata_nstandby1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby1"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 20 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_pwren>; ++ }; ++ ++ reg_sata_nstandby2: sata_nstandby2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby2"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio5 2 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nstandby1>; ++ }; ++ ++ reg_sata_ldo_en: sata_ldo_en { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_ldo_en"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 16 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ regulator-boot-on; ++ vin-supply = <®_sata_nstandby2>; ++ }; + }; + + gpio-keys { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0013-ARM-i.MX6-dts-add-audio-mux-pinmux-configuration.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0013-ARM-i.MX6-dts-add-audio-mux-pinmux-configuration.patch new file mode 100644 index 00000000..e09502f9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0013-ARM-i.MX6-dts-add-audio-mux-pinmux-configuration.patch @@ -0,0 +1,47 @@ +From 6a962cb469afddc96a37dce883af88a29a53a30c Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 10:57:39 +0300 +Subject: [PATCH 13/59] ARM: i.MX6: dts: add audio mux pinmux configuration + +Add audio mux pinmux configuration and enable audio mux. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 286b03e..776e0d8 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -373,6 +373,17 @@ + >; + }; + ++ /* pins for audmux */ ++ pinctrl_audmux: audmuxgrp { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 ++ MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 ++ MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 ++ MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 ++ MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 ++ >; ++ }; ++ + /* pins for uart2 */ + pinctrl_uart2: uart2grp { + fsl,pins = < +@@ -575,3 +586,9 @@ + pinctrl-0 = <&pinctrl_spdif>; + status = "okay"; + }; ++ ++&audmux { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_audmux>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0014-ARM-i.MX6-dts-add-analog-audio-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0014-ARM-i.MX6-dts-add-analog-audio-support.patch new file mode 100644 index 00000000..511298fd --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0014-ARM-i.MX6-dts-add-analog-audio-support.patch @@ -0,0 +1,67 @@ +From 0afe8320732c2609015af4c0b474cede18f81f24 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 11:02:28 +0300 +Subject: [PATCH 14/59] ARM: i.MX6: dts: add analog audio support + +1) Add i2c analog audion device node definition. +2) Add wm8731 codec node definition. +3) Enable ssi2 in master mode. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 776e0d8..9f5da43 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -168,6 +168,15 @@ + mxcfb1 = &mxcfb2; + }; + ++ sound { ++ compatible = "fsl,imx6q-cm-fx6-wm8731", ++ "fsl,imx-audio-wm8731"; ++ model = "wm8731-audio"; ++ ssi-controller = <&ssi2>; ++ audio-codec = <&codec>; ++ audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; ++ }; ++ + sound-hdmi { + compatible = "fsl,imx6q-audio-hdmi", + "fsl,imx-audio-hdmi"; +@@ -487,6 +496,17 @@ + reg = <0x50>; + pagesize = <16>; + }; ++ ++ codec: wm8731@1a { ++ compatible = "wlf,wm8731"; ++ reg = <0x1a>; ++ clocks = <&clks 173>, <&clks 158>; ++ clock-names = "pll4", "imx-ssi.1"; ++ AVDD-supply = <&pu_dummy>; ++ HPVDD-supply = <&pu_dummy>; ++ DCVDD-supply = <&pu_dummy>; ++ DBVDD-supply = <&pu_dummy>; ++ }; + }; + + /* eth1 */ +@@ -556,6 +576,11 @@ + status = "okay"; + }; + ++&ssi2 { ++ fsl,mode = "i2s-master"; ++ status = "okay"; ++}; ++ + &mxcfb1 { + status = "okay"; + }; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0015-ARM-i.MX6-ASoC-add-imx-wm8731-machine-driver.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0015-ARM-i.MX6-ASoC-add-imx-wm8731-machine-driver.patch new file mode 100644 index 00000000..f3d4befd --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0015-ARM-i.MX6-ASoC-add-imx-wm8731-machine-driver.patch @@ -0,0 +1,573 @@ +From 5fbe55d2945782fee3f3238f20a8dcd0b9ba630c Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 20 Jul 2014 11:10:12 +0300 +Subject: [PATCH 15/59] ARM: i.MX6: ASoC: add imx-wm8731 machine driver + +This is the initial imx-wm8731 device-tree-only machine driver working with +fsl_ssi driver. Works in the slave mode. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + sound/soc/fsl/Kconfig | 12 ++ + sound/soc/fsl/Makefile | 2 + + sound/soc/fsl/imx-wm8731.c | 505 ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 519 insertions(+) + create mode 100644 sound/soc/fsl/imx-wm8731.c + +diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig +index 573dabb..bb229da 100644 +--- a/sound/soc/fsl/Kconfig ++++ b/sound/soc/fsl/Kconfig +@@ -252,6 +252,18 @@ config SND_SOC_IMX_CS42888 + Say Y if you want to add support for SoC audio on an i.MX board with + a cs42888 codec. + ++config SND_SOC_IMX_WM8731 ++ tristate "SoC Audio support for i.MX boards with wm8731" ++ depends on OF && I2C ++ select SND_SOC_WM8731 ++ select SND_SOC_IMX_PCM_DMA ++ select SND_SOC_IMX_AUDMUX ++ select SND_SOC_FSL_SSI ++ select SND_SOC_FSL_UTILS ++ help ++ Say Y if you want to add support for SoC audio on an i.MX board with ++ a wm8731 codec. ++ + config SND_SOC_IMX_WM8962 + tristate "SoC Audio support for i.MX boards with wm8962" + depends on OF && I2C +diff --git a/sound/soc/fsl/Makefile b/sound/soc/fsl/Makefile +index 144cd69..65f8e6f 100644 +--- a/sound/soc/fsl/Makefile ++++ b/sound/soc/fsl/Makefile +@@ -55,6 +55,7 @@ snd-soc-mx27vis-aic32x4-objs := mx27vis-aic32x4.o + snd-soc-wm1133-ev1-objs := wm1133-ev1.o + snd-soc-imx-cs42888-objs := imx-cs42888.o + snd-soc-imx-sgtl5000-objs := imx-sgtl5000.o ++snd-soc-imx-wm8731-objs := imx-wm8731.o + snd-soc-imx-wm8962-objs := imx-wm8962.o + snd-soc-imx-spdif-objs := imx-spdif.o + snd-soc-imx-mc13783-objs := imx-mc13783.o +@@ -69,6 +70,7 @@ obj-$(CONFIG_SND_MXC_SOC_WM1133_EV1) += snd-soc-wm1133-ev1.o + obj-$(CONFIG_SND_SOC_IMX_CS42888) += snd-soc-imx-cs42888.o + obj-$(CONFIG_SND_SOC_IMX_SGTL5000) += snd-soc-imx-sgtl5000.o + obj-$(CONFIG_SND_SOC_IMX_WM8962) += snd-soc-imx-wm8962.o ++obj-$(CONFIG_SND_SOC_IMX_WM8731) += snd-soc-imx-wm8731.o + obj-$(CONFIG_SND_SOC_IMX_SPDIF) += snd-soc-imx-spdif.o + obj-$(CONFIG_SND_SOC_IMX_MC13783) += snd-soc-imx-mc13783.o + obj-$(CONFIG_SND_SOC_IMX_HDMI) += snd-soc-imx-hdmi.o +diff --git a/sound/soc/fsl/imx-wm8731.c b/sound/soc/fsl/imx-wm8731.c +new file mode 100644 +index 0000000..ba1363f +--- /dev/null ++++ b/sound/soc/fsl/imx-wm8731.c +@@ -0,0 +1,505 @@ ++/* ++ * Copyright (C) 2014 Freescale Semiconductor, Inc. ++ * ++ * Based on imx-sgtl5000.c ++ * Copyright (C) 2012 Freescale Semiconductor, Inc. ++ * Copyright (C) 2012 Linaro Ltd. ++ * ++ * 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 ++ */ ++ ++#include <linux/module.h> ++#include <linux/of_platform.h> ++#include <linux/of_i2c.h> ++#include <linux/of_gpio.h> ++#include <linux/slab.h> ++#include <linux/gpio.h> ++#include <linux/clk.h> ++#include <sound/soc.h> ++#include <sound/jack.h> ++#include <sound/pcm_params.h> ++#include <sound/soc-dapm.h> ++#include <linux/pinctrl/consumer.h> ++ ++#include "../codecs/wm8731.h" ++#include "imx-audmux.h" ++#include "imx-ssi.h" ++ ++#define DAI_NAME_SIZE 32 ++ ++struct imx_wm8731_data { ++ struct snd_soc_dai_link dai; ++ struct snd_soc_card card; ++ char codec_dai_name[DAI_NAME_SIZE]; ++ char platform_name[DAI_NAME_SIZE]; ++ struct i2c_client *codec_dev; ++ /* audio_clocking_data */ ++ struct clk *pll; ++ struct clk *clock_root; ++ long sysclk; ++ long current_rate; ++ /* platfor data */ ++ unsigned int ssi_num; ++ unsigned int src_port; ++ unsigned int ext_port; ++}; ++ ++static int imx_wm8731_init(struct snd_soc_pcm_runtime *rtd); ++static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params); ++static void imx_hifi_shutdown(struct snd_pcm_substream *substream); ++ ++struct imx_priv { ++ struct platform_device *pdev; ++ struct imx_wm8731_data *data; ++}; ++ ++static struct imx_priv card_priv; ++ ++static struct snd_soc_ops imx_hifi_ops = { ++ .shutdown = imx_hifi_shutdown, ++ .hw_params = imx_hifi_hw_params_slv_mode, ++}; ++ ++/* imx card dapm widgets */ ++static const struct snd_soc_dapm_widget imx_dapm_widgets[] = { ++ SND_SOC_DAPM_HP("Headphone Jack", NULL), ++ SND_SOC_DAPM_SPK("Ext Spk", NULL), ++ SND_SOC_DAPM_LINE("Line Jack", NULL), ++ SND_SOC_DAPM_MIC("Mic Jack", NULL), ++}; ++ ++/* imx machine connections to the codec pins */ ++static const struct snd_soc_dapm_route audio_map[] = { ++ { "Headphone Jack", NULL, "LHPOUT" }, ++ { "Headphone Jack", NULL, "RHPOUT" }, ++ ++ { "Ext Spk", NULL, "LOUT" }, ++ { "Ext Spk", NULL, "ROUT" }, ++ ++ { "LLINEIN", NULL, "Line Jack" }, ++ { "RLINEIN", NULL, "Line Jack" }, ++ ++ { "MICIN", NULL, "Mic Bias" }, ++ { "Mic Bias", NULL, "Mic Jack"}, ++}; ++ ++static int wm8731_slv_mode_init(struct imx_wm8731_data *data) ++{ ++ struct clk *new_parent; ++ struct clk *ssi_clk; ++ struct i2c_client *codec_dev = data->codec_dev; ++ ++ new_parent = devm_clk_get(&codec_dev->dev, "pll4"); ++ if (IS_ERR(new_parent)) { ++ pr_err("Could not get \"pll4\" clock \n"); ++ return PTR_ERR(new_parent); ++ } ++ ++ ssi_clk = devm_clk_get(&codec_dev->dev, "imx-ssi.1"); ++ if (IS_ERR(ssi_clk)) { ++ pr_err("Could not get \"imx-ssi.1\" clock \n"); ++ return PTR_ERR(ssi_clk); ++ } ++ ++ clk_set_parent(ssi_clk, new_parent); ++ ++ data->pll = new_parent; ++ data->clock_root = ssi_clk; ++ data->current_rate = 0; ++ ++ data->sysclk = 0; ++ ++ return 0; ++} ++ ++static int wm8731_slv_mode_clock_enable(int enable, struct imx_wm8731_data *data) ++{ ++ long pll_rate; ++ long rate_req; ++ long rate_avail; ++ ++ if (!enable) ++ return 0; ++ ++ if (data->sysclk == data->current_rate) ++ return 0; ++ ++ switch (data->sysclk) { ++ case 11289600: ++ pll_rate = 632217600; ++ break; ++ ++ case 12288000: ++ pll_rate = 688128000; ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ rate_req = pll_rate; ++ rate_avail = clk_round_rate(data->pll, rate_req); ++ clk_set_rate(data->pll, rate_avail); ++ ++ rate_req = data->sysclk; ++ rate_avail = clk_round_rate(data->clock_root, ++ rate_req); ++ clk_set_rate(data->clock_root, rate_avail); ++ ++ pr_info("%s: \"imx-ssi.1\" rate = %ld (= %ld)\n", ++ __func__, rate_avail, rate_req); ++ ++ data->current_rate = data->sysclk; ++ ++ return 0; ++} ++ ++static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; ++ struct snd_soc_dai *codec_dai = rtd->codec_dai; ++ struct snd_soc_card *card = codec_dai->codec->card; ++ struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); ++ ++ u32 dai_format, pll_out; ++ snd_pcm_format_t sample_format; ++ unsigned int channels; ++ unsigned int tx_mask, rx_mask; ++ unsigned int sampling_rate; ++ unsigned int div_2, div_psr, div_pm; ++ int ret; ++ ++ sampling_rate = params_rate(params); ++ sample_format = params_format(params); ++ ++ channels = params_channels(params); ++ printk("%s:%s sampling rate = %u channels = %u \n", __FUNCTION__, ++ (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? "Playback" : "Capture"), ++ sampling_rate, channels); ++ ++ /* set CPU DAI configuration */ ++ switch (sampling_rate) { ++ case 8000: ++ case 32000: ++ case 48000: ++ case 96000: ++ data->sysclk = 12288000; ++ break; ++ ++ case 44100: ++ case 88200: ++ data->sysclk = 11289600; ++ break; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ wm8731_slv_mode_clock_enable(1,data); ++ ++ dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_IF | ++ SND_SOC_DAIFMT_CBS_CFS; ++ ++ ret = snd_soc_dai_set_fmt(cpu_dai, dai_format); ++ if (ret < 0) ++ return ret; ++ ++ /* set i.MX active slot mask */ ++ /* S[TR]CCR:DC */ ++ tx_mask = ~((1 << channels) - 1); ++ rx_mask = tx_mask; ++ snd_soc_dai_set_tdm_slot(cpu_dai, tx_mask, rx_mask, 2, 32); ++ ++ /* ++ * SSI sysclk divider: ++ * div_2: /1 or /2 ++ * div_psr: /1 or /8 ++ * div_pm: /1 .. /256 ++ */ ++ div_2 = 0; ++ div_psr = 0; ++ switch (sampling_rate) { ++ case 8000: ++ // 1x1x12 ++ div_pm = 11; ++ break; ++ case 32000: ++ // 1x1x3 ++ div_pm = 2; ++ break; ++ case 48000: ++ // 1x1x2 ++ div_pm = 1; ++ break; ++ case 96000: ++ // 1x1x1 ++ div_pm = 0; ++ break; ++ case 44100: ++ // 1x1x2 ++ div_pm = 1; ++ break; ++ case 88200: ++ // 1x1x1 ++ div_pm = 0; ++ break; ++ default: ++ return -EINVAL; ++ } ++ ++ /* sync mode: a single clock controls both playback and capture */ ++ snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_2, (div_2 ? SSI_STCCR_DIV2 : 0)); ++ snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_PSR, (div_psr ? SSI_STCCR_PSR : 0)); ++ snd_soc_dai_set_clkdiv(cpu_dai, IMX_SSI_TX_DIV_PM, div_pm); ++ ++ /* set codec DAI configuration */ ++ dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBS_CFS; ++ ++ ret = snd_soc_dai_set_fmt(codec_dai, dai_format); ++ if (ret < 0) ++ return ret; ++ ++ ret = snd_soc_dai_set_sysclk(codec_dai, ++ WM8731_SYSCLK_MCLK, ++ data->sysclk, ++ SND_SOC_CLOCK_IN); ++ ++ if (ret < 0) { ++ pr_err("Failed to set codec master clock to %u: %d \n", ++ data->sysclk, ret); ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static void imx_hifi_shutdown(struct snd_pcm_substream *substream) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *codec_dai = rtd->codec_dai; ++ struct snd_soc_card *card = codec_dai->codec->card; ++ struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); ++ ++ if (!codec_dai->active) ++ wm8731_slv_mode_clock_enable(0,data); ++ ++ return; ++} ++ ++static int imx_wm8731_init(struct snd_soc_pcm_runtime *rtd) ++{ ++ int ret = 0; ++ struct snd_soc_codec *codec = rtd->codec; ++ ++ /* Add imx specific widgets */ ++ ret = snd_soc_dapm_new_controls(&codec->dapm, imx_dapm_widgets, ++ ARRAY_SIZE(imx_dapm_widgets)); ++ if (ret) ++ goto out_retcode; ++ ++ /* Set up imx specific audio path audio_map */ ++ ret = snd_soc_dapm_add_routes(&codec->dapm, audio_map, ARRAY_SIZE(audio_map)); ++ if (ret) ++ goto out_retcode; ++ ++ ret = snd_soc_dapm_enable_pin(&codec->dapm, "Headphone Jack"); ++ if (ret) ++ goto out_retcode; ++ ++ ret = snd_soc_dapm_nc_pin(&codec->dapm, "Ext Spk"); ++ if (ret) ++ goto out_retcode; ++ ++out_retcode: ++ ++ if (ret) ++ pr_err("%s: failed with error code: %d \n", __FUNCTION__, ret); ++ else ++ pr_info("%s: success \n", __FUNCTION__); ++ ++ return ret; ++} ++ ++/** ++ * Configure AUDMUX interconnection between ++ * _slave (CPU side) and _master (codec size) ++ * ++ * When SSI operates in master mode, 5-wire interconnect with ++ * audio codec is required: ++ * TXC - BCLK ++ * TXD - DAC data ++ * RXD - ADC data ++ * TXFS - {DAC|ADC}LRC, i.e. word clock ++ * RXC - MCLK, i.e. oversampling clock ++ * Audmux is operated in asynchronous mode to enable 6-wire ++ * interface (as opposed to 4-wire interface in sync mode). ++ */ ++static int imx_audmux_config_slv_mode(int _slave, int _master) ++{ ++ unsigned int ptcr, pdcr; ++ int slave = _slave - 1; ++ int master = _master - 1; ++ ++ ptcr = IMX_AUDMUX_V2_PTCR_SYN | ++ IMX_AUDMUX_V2_PTCR_TFSDIR | ++ IMX_AUDMUX_V2_PTCR_TFSEL(slave) | ++ IMX_AUDMUX_V2_PTCR_RCLKDIR | ++ IMX_AUDMUX_V2_PTCR_RCSEL(slave | 0x8) | ++ IMX_AUDMUX_V2_PTCR_TCLKDIR | ++ IMX_AUDMUX_V2_PTCR_TCSEL(slave); ++ ++ pdcr = IMX_AUDMUX_V2_PDCR_RXDSEL(slave); ++ imx_audmux_v2_configure_port(master, ptcr, pdcr); ++ ptcr = ptcr & ~IMX_AUDMUX_V2_PTCR_SYN; ++ imx_audmux_v2_configure_port(master, ptcr, pdcr); ++ ++ ptcr = IMX_AUDMUX_V2_PTCR_SYN | ++ IMX_AUDMUX_V2_PTCR_RCLKDIR | ++ IMX_AUDMUX_V2_PTCR_RCSEL(master | 0x8) | ++ IMX_AUDMUX_V2_PTCR_TCLKDIR | ++ IMX_AUDMUX_V2_PTCR_TCSEL(master); ++ ++ pdcr = IMX_AUDMUX_V2_PDCR_RXDSEL(master); ++ imx_audmux_v2_configure_port(slave, ptcr, pdcr); ++ ptcr = ptcr & ~IMX_AUDMUX_V2_PTCR_SYN; ++ imx_audmux_v2_configure_port(slave, ptcr, pdcr); ++ ++ return 0; ++} ++ ++static int imx_wm8731_probe(struct platform_device *pdev) ++{ ++ struct device_node *ssi_np, *codec_np; ++ struct platform_device *ssi_pdev; ++ struct imx_priv *priv = &card_priv; ++ struct i2c_client *codec_dev; ++ struct imx_wm8731_data *data; ++ int ret; ++ ++ priv->pdev = pdev; ++ ++ ssi_np = of_parse_phandle(pdev->dev.of_node, "ssi-controller", 0); ++ codec_np = of_parse_phandle(pdev->dev.of_node, "audio-codec", 0); ++ if (!ssi_np || !codec_np) { ++ dev_err(&pdev->dev, "phandle missing or invalid\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ ssi_pdev = of_find_device_by_node(ssi_np); ++ if (!ssi_pdev) { ++ dev_err(&pdev->dev, "failed to find SSI platform device\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ codec_dev = of_find_i2c_device_by_node(codec_np); ++ if (!codec_dev || !codec_dev->driver) { ++ dev_err(&pdev->dev, "failed to find codec platform device\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); ++ if (!data) { ++ ret = -ENOMEM; ++ goto fail; ++ } ++ ++ card_priv.data = data; ++ ++ data->codec_dev = codec_dev; ++ ++ data->dai.name = "HiFi"; ++ data->dai.stream_name = "HiFi"; ++ data->dai.codec_dai_name = "wm8731-hifi"; ++ data->dai.codec_of_node = codec_np; ++ data->dai.cpu_dai_name = dev_name(&ssi_pdev->dev); ++ data->dai.platform_of_node = ssi_np; ++ data->dai.ops = &imx_hifi_ops; ++ data->dai.init = &imx_wm8731_init; ++ ++ data->ssi_num = 2; /* 1-based */ ++ data->src_port = 2; ++ data->ext_port = 4; ++ ++ imx_audmux_config_slv_mode(data->src_port, data->ext_port); ++ ++ /* Slave Mode Init */ ++ wm8731_slv_mode_init(data); ++ ++ data->card.dev = &pdev->dev; ++ ret = snd_soc_of_parse_card_name(&data->card, "model"); ++ if (ret) ++ goto fail; ++ ++ ret = snd_soc_of_parse_audio_routing(&data->card, "audio-routing"); ++ if (ret) ++ goto fail; ++ ++ data->card.num_links = 1; ++ data->card.dai_link = &data->dai; ++ ++ data->card.dapm_widgets = imx_dapm_widgets; ++ data->card.num_dapm_widgets = ARRAY_SIZE(imx_dapm_widgets); ++ ++ platform_set_drvdata(pdev, &data->card); ++ snd_soc_card_set_drvdata(&data->card, data); ++ ++ ret = snd_soc_register_card(&data->card); ++ if (ret) { ++ dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret); ++ goto fail; ++ } ++ ++ return 0; ++ ++fail: ++ ++ if (ssi_np) ++ of_node_put(ssi_np); ++ ++ if (codec_np) ++ of_node_put(codec_np); ++ ++ return ret; ++} ++ ++static int imx_wm8731_remove(struct platform_device *pdev) ++{ ++ struct snd_soc_card *card = platform_get_drvdata(pdev); ++ snd_soc_unregister_card(card); ++ ++ return 0; ++} ++ ++static const struct of_device_id imx_wm8731_dt_ids[] = { ++ { .compatible = "fsl,imx-audio-wm8731", }, ++ { /* sentinel */ } ++}; ++MODULE_DEVICE_TABLE(of, imx_wm8731_dt_ids); ++ ++static struct platform_driver imx_wm8731_driver = { ++ .driver = { ++ .name = "imx-wm8731", ++ .owner = THIS_MODULE, ++ .of_match_table = imx_wm8731_dt_ids, ++ }, ++ .probe = imx_wm8731_probe, ++ .remove = imx_wm8731_remove, ++}; ++module_platform_driver(imx_wm8731_driver); ++ ++MODULE_AUTHOR("Freescale Semiconductor, Inc."); ++MODULE_DESCRIPTION("Freescale i.MX WM8731 ASoC machine driver"); ++MODULE_LICENSE("GPL v2"); ++MODULE_ALIAS("platform:imx-wm8731"); +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0016-ARM-i.MX6-ASoC-add-imx-wm8731-master-mode-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0016-ARM-i.MX6-ASoC-add-imx-wm8731-master-mode-support.patch new file mode 100644 index 00000000..ae67161a --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0016-ARM-i.MX6-ASoC-add-imx-wm8731-master-mode-support.patch @@ -0,0 +1,335 @@ +From 4c7271dbe9a5fb21e049b07fffb78a933f59382b Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 21 Jul 2014 17:17:32 +0300 +Subject: [PATCH 16/59] ARM: i.MX6: ASoC: add imx-wm8731 master mode support + +Add imx-wm8731 master mode support. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 8 +- + sound/soc/fsl/imx-wm8731.c | 212 +++++++++++++++++++++++++++++++++--- + 2 files changed, 203 insertions(+), 17 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 9f5da43..050795b 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -173,6 +173,8 @@ + "fsl,imx-audio-wm8731"; + model = "wm8731-audio"; + ssi-controller = <&ssi2>; ++ src-port = <2>; ++ ext-port = <4>; + audio-codec = <&codec>; + audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; + }; +@@ -390,6 +392,8 @@ + MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 + MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 + MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 ++ /* master mode pin */ ++ MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 + >; + }; + +@@ -500,8 +504,8 @@ + codec: wm8731@1a { + compatible = "wlf,wm8731"; + reg = <0x1a>; +- clocks = <&clks 173>, <&clks 158>; +- clock-names = "pll4", "imx-ssi.1"; ++ clocks = <&clks 173>, <&clks 158>, <&clks 201>, <&clks 200>; ++ clock-names = "pll4", "imx-ssi.1", "cko", "cko2"; + AVDD-supply = <&pu_dummy>; + HPVDD-supply = <&pu_dummy>; + DCVDD-supply = <&pu_dummy>; +diff --git a/sound/soc/fsl/imx-wm8731.c b/sound/soc/fsl/imx-wm8731.c +index ba1363f..72b75ad 100644 +--- a/sound/soc/fsl/imx-wm8731.c ++++ b/sound/soc/fsl/imx-wm8731.c +@@ -31,6 +31,7 @@ + #include "imx-ssi.h" + + #define DAI_NAME_SIZE 32 ++#define WM8731_MCLK_FREQ (24000000 / 2) + + struct imx_wm8731_data { + struct snd_soc_dai_link dai; +@@ -43,10 +44,8 @@ struct imx_wm8731_data { + struct clk *clock_root; + long sysclk; + long current_rate; +- /* platfor data */ +- unsigned int ssi_num; +- unsigned int src_port; +- unsigned int ext_port; ++ /* apis */ ++ int (*clock_enable)(int enable,struct imx_wm8731_data *data); + }; + + static int imx_wm8731_init(struct snd_soc_pcm_runtime *rtd); +@@ -63,7 +62,6 @@ static struct imx_priv card_priv; + + static struct snd_soc_ops imx_hifi_ops = { + .shutdown = imx_hifi_shutdown, +- .hw_params = imx_hifi_hw_params_slv_mode, + }; + + /* imx card dapm widgets */ +@@ -160,6 +158,78 @@ static int wm8731_slv_mode_clock_enable(int enable, struct imx_wm8731_data *data + return 0; + } + ++static int imx_hifi_startup_slv_mode(struct snd_pcm_substream *substream) ++{ ++ /* ++ * As SSI's sys clock rate depends on sampling rate, ++ * the clock enabling code is moved to imx_hifi_hw_params(). ++ */ ++ return 0; ++} ++ ++static int wm8731_mst_mode_init(struct imx_wm8731_data *data) ++{ ++ long rate; ++ struct clk *new_parent; ++ struct clk *ssi_clk; ++ struct i2c_client *codec_dev = data->codec_dev; ++ ++ new_parent = devm_clk_get(&codec_dev->dev, "cko2"); ++ if (IS_ERR(new_parent)) { ++ pr_err("Could not get \"cko2\" clock \n"); ++ return PTR_ERR(new_parent); ++ } ++ ++ ssi_clk = devm_clk_get(&codec_dev->dev, "cko"); ++ if (IS_ERR(ssi_clk)) { ++ pr_err("Could not get \"cko\" clock \n"); ++ return PTR_ERR(ssi_clk); ++ } ++ ++ rate = clk_round_rate(new_parent, WM8731_MCLK_FREQ); ++ clk_set_rate(new_parent, rate); ++ ++ clk_set_parent(ssi_clk, new_parent); ++ ++ rate = clk_round_rate(ssi_clk, WM8731_MCLK_FREQ); ++ clk_set_rate(ssi_clk, rate); ++ ++ pr_info("%s: \"CLKO\" rate = %ld (= %d)\n", ++ __func__, rate, WM8731_MCLK_FREQ); ++ ++ data->pll = new_parent; ++ data->clock_root = ssi_clk; ++ data->sysclk = rate; ++ ++ return 0; ++} ++ ++static int wm8731_mst_mode_clock_enable(int enable, struct imx_wm8731_data *data) ++{ ++ struct clk *clko = data->clock_root; ++ ++ if (enable) ++ clk_enable(clko); ++ else ++ clk_disable(clko); ++ ++ return 0; ++} ++ ++static int imx_hifi_startup_mst_mode(struct snd_pcm_substream *substream) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *codec_dai = rtd->codec_dai; ++ struct snd_soc_card *card = codec_dai->codec->card; ++ struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); ++ ++ if (!codec_dai->active) ++ data->clock_enable(1,data); ++ ++ return 0; ++} ++ ++ + static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) + { +@@ -169,7 +239,7 @@ static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, + struct snd_soc_card *card = codec_dai->codec->card; + struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); + +- u32 dai_format, pll_out; ++ u32 dai_format; + snd_pcm_format_t sample_format; + unsigned int channels; + unsigned int tx_mask, rx_mask; +@@ -282,6 +352,63 @@ static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, + return 0; + } + ++static int imx_hifi_hw_params_mst_mode(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; ++ struct snd_soc_dai *codec_dai = rtd->codec_dai; ++ struct snd_soc_card *card = codec_dai->codec->card; ++ struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); ++ u32 dai_format; ++ unsigned int channels; ++ unsigned int tx_mask, rx_mask; ++ unsigned int sampling_rate; ++ int ret; ++ ++ ++ sampling_rate = params_rate(params); ++ channels = params_channels(params); ++ pr_debug("%s:%s sampling rate = %u channels = %u \n", __FUNCTION__, ++ (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? "Playback" : "Capture"), ++ sampling_rate, channels); ++ ++ /* set cpu DAI configuration */ ++ dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_IF | ++ SND_SOC_DAIFMT_CBM_CFM; ++ ++ ret = snd_soc_dai_set_fmt(cpu_dai, dai_format); ++ if (ret < 0) ++ return ret; ++ ++ /* set i.MX active slot mask */ ++ /* S[TR]CCR:DC */ ++ tx_mask = ~((1 << channels) - 1); ++ rx_mask = tx_mask; ++ snd_soc_dai_set_tdm_slot(cpu_dai, tx_mask, rx_mask, 2, 32); ++ ++ /* set codec DAI configuration */ ++ dai_format = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBM_CFM; ++ ++ ret = snd_soc_dai_set_fmt(codec_dai, dai_format); ++ if (ret < 0) ++ return ret; ++ ++ ret = snd_soc_dai_set_sysclk(codec_dai, ++ WM8731_SYSCLK_MCLK, ++ data->sysclk, ++ SND_SOC_CLOCK_IN); ++ ++ if (ret < 0) { ++ pr_err("Failed to set codec master clock to %u: %d \n", ++ data->sysclk, ret); ++ return ret; ++ } ++ ++ return 0; ++} ++ + static void imx_hifi_shutdown(struct snd_pcm_substream *substream) + { + struct snd_soc_pcm_runtime *rtd = substream->private_data; +@@ -290,7 +417,7 @@ static void imx_hifi_shutdown(struct snd_pcm_substream *substream) + struct imx_wm8731_data *data = snd_soc_card_get_drvdata(card); + + if (!codec_dai->active) +- wm8731_slv_mode_clock_enable(0,data); ++ data->clock_enable(0,data); + + return; + } +@@ -376,6 +503,27 @@ static int imx_audmux_config_slv_mode(int _slave, int _master) + return 0; + } + ++static int imx_audmux_config_mst_mode(int _slave, int _master) ++{ ++ unsigned int ptcr, pdcr; ++ int slave = _slave - 1; ++ int master = _master - 1; ++ ++ ptcr = IMX_AUDMUX_V2_PTCR_SYN; ++ ptcr |= IMX_AUDMUX_V2_PTCR_TFSDIR | ++ IMX_AUDMUX_V2_PTCR_TFSEL(master) | ++ IMX_AUDMUX_V2_PTCR_TCLKDIR | ++ IMX_AUDMUX_V2_PTCR_TCSEL(master); ++ pdcr = IMX_AUDMUX_V2_PDCR_RXDSEL(master); ++ imx_audmux_v2_configure_port(slave, ptcr, pdcr); ++ ++ ptcr = IMX_AUDMUX_V2_PTCR_SYN; ++ pdcr = IMX_AUDMUX_V2_PDCR_RXDSEL(slave); ++ imx_audmux_v2_configure_port(master, ptcr, pdcr); ++ ++ return 0; ++} ++ + static int imx_wm8731_probe(struct platform_device *pdev) + { + struct device_node *ssi_np, *codec_np; +@@ -383,6 +531,10 @@ static int imx_wm8731_probe(struct platform_device *pdev) + struct imx_priv *priv = &card_priv; + struct i2c_client *codec_dev; + struct imx_wm8731_data *data; ++ unsigned int src_port, ext_port; ++ unsigned int ssi_mode; ++ const char *ssi_mode_str; ++ + int ret; + + priv->pdev = pdev; +@@ -428,14 +580,44 @@ static int imx_wm8731_probe(struct platform_device *pdev) + data->dai.ops = &imx_hifi_ops; + data->dai.init = &imx_wm8731_init; + +- data->ssi_num = 2; /* 1-based */ +- data->src_port = 2; +- data->ext_port = 4; +- +- imx_audmux_config_slv_mode(data->src_port, data->ext_port); +- +- /* Slave Mode Init */ +- wm8731_slv_mode_init(data); ++ ret = of_property_read_u32(pdev->dev.of_node, "src-port", &src_port); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to get \"src-port\" value\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ ret = of_property_read_u32(pdev->dev.of_node, "ext-port", &ext_port); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to get \"ext-port\" value\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ ret = of_property_read_string(ssi_np, "fsl,mode", &ssi_mode_str); ++ if (ret) { ++ dev_err(&pdev->dev, "failed to get \"fsl,mode\" value\n"); ++ ret = -EINVAL; ++ goto fail; ++ } ++ ++ ssi_mode = strcmp(ssi_mode_str, "i2s-master"); ++ ++ if (ssi_mode) { ++ /* Master Mode */ ++ imx_audmux_config_mst_mode(src_port, ext_port); ++ wm8731_mst_mode_init(data); ++ data->clock_enable = wm8731_mst_mode_clock_enable; ++ imx_hifi_ops.hw_params = imx_hifi_hw_params_mst_mode; ++ imx_hifi_ops.startup = imx_hifi_startup_mst_mode; ++ } else { ++ /* Slave Mode */ ++ imx_audmux_config_slv_mode(src_port, ext_port); ++ wm8731_slv_mode_init(data); ++ data->clock_enable = wm8731_slv_mode_clock_enable; ++ imx_hifi_ops.hw_params = imx_hifi_hw_params_slv_mode; ++ imx_hifi_ops.startup = imx_hifi_startup_slv_mode; ++ } + + data->card.dev = &pdev->dev; + ret = snd_soc_of_parse_card_name(&data->card, "model"); +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0017-ARM-i.MX6-dts-enable-v4l2-output.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0017-ARM-i.MX6-dts-enable-v4l2-output.patch new file mode 100644 index 00000000..21cbbc30 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0017-ARM-i.MX6-dts-enable-v4l2-output.patch @@ -0,0 +1,31 @@ +From 7b953812d9804bbce9f2b8f21ca5e72229272eb6 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 24 Jul 2014 16:11:29 +0300 +Subject: [PATCH 17/59] ARM: i.MX6: dts: enable v4l2 output + +Enable v4l2 output. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 050795b..2e04224 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -227,6 +227,11 @@ + status = "okay"; + }; + ++ v4l2_out { ++ compatible = "fsl,mxc_v4l2_output"; ++ status = "okay"; ++ }; ++ + }; + + &iomuxc { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0018-ARM-i.MX6-dts-some-small-changes-in-the-dts-file.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0018-ARM-i.MX6-dts-some-small-changes-in-the-dts-file.patch new file mode 100644 index 00000000..328ac9b9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0018-ARM-i.MX6-dts-some-small-changes-in-the-dts-file.patch @@ -0,0 +1,52 @@ +From 7cadcbd1a95de480f3412c56f6a3567ba213091a Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 31 Jul 2014 16:27:38 +0300 +Subject: [PATCH 18/59] ARM: i.MX6: dts: some small changes in the dts file + +1) Fixed the color depth value for both frame buffers. +2) Added a missing OTG pinmux definition. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 2e04224..1613c32 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -200,7 +200,7 @@ + disp_dev = "hdmi"; + interface_pix_fmt = "RGB24"; + mode_str ="1920x1080M@60"; +- default_bpp = <24>; ++ default_bpp = <32>; + int_clk = <0>; + late_init = <0>; + status = "disabled"; +@@ -211,12 +211,13 @@ + disp_dev = "lcd"; + interface_pix_fmt = "RGB24"; + mode_str ="1920x1080M@60"; +- default_bpp = <24>; ++ default_bpp = <32>; + int_clk = <0>; + late_init = <0>; + status = "disabled"; + }; + ++ + lcd@0 { + compatible = "fsl,lcd"; + ipu_id = <0>; +@@ -354,6 +355,7 @@ + pinctrl_usbotg: usbotggrp { + fsl,pins = < + MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 ++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 + >; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0019-igb-Define-the-device-mac-address-in-device-tree.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0019-igb-Define-the-device-mac-address-in-device-tree.patch new file mode 100644 index 00000000..39702bff --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0019-igb-Define-the-device-mac-address-in-device-tree.patch @@ -0,0 +1,79 @@ +From da2c6c15b0db7f361b0db50b93b0d2df98ad81a4 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 5 Aug 2014 15:04:44 +0300 +Subject: [PATCH 19/59] igb: Define the device mac address in device tree + +1) Define the device mac address node in the device tree. +2) Make the driver read the mac address from the device tree node. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 6 ++++++ + drivers/net/ethernet/intel/igb/igb_main.c | 27 +++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 1613c32..0e2558f 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -233,6 +233,12 @@ + status = "okay"; + }; + ++ eth@pcie { ++ compatible = "intel,i211"; ++ local-mac-address = [00 1C 1D 1E 1F 20]; ++ status = "okay"; ++ }; ++ + }; + + &iomuxc { +diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c +index 2472835..5f93765 100644 +--- a/drivers/net/ethernet/intel/igb/igb_main.c ++++ b/drivers/net/ethernet/intel/igb/igb_main.c +@@ -2185,6 +2185,30 @@ static s32 igb_init_i2c(struct igb_adapter *adapter) + return status; + } + ++ ++/** ++ * igb_read_mac_addr_dts - Read mac addres from the device tree ++ * blob ++ * @adapter: pointer to adapter structure ++ **/ ++static void igb_read_mac_addr_dts(struct e1000_hw *hw) ++{ ++ struct device_node *dn; ++ const uint8_t *mac; ++ ++ dn = of_find_compatible_node(NULL, NULL, "intel,i211"); ++ ++ if (!dn) ++ return; ++ ++ mac = of_get_property(dn, "local-mac-address", NULL); ++ ++ if (mac) ++ memcpy(hw->mac.addr, mac, ETH_ALEN); ++ ++ return; ++} ++ + /** + * igb_probe - Device Initialization Routine + * @pdev: PCI device information struct +@@ -2387,6 +2411,9 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) + if (hw->mac.ops.read_mac_addr(hw)) + dev_err(&pdev->dev, "NVM Read Error\n"); + ++ if (!is_valid_ether_addr(hw->mac.addr)) ++ igb_read_mac_addr_dts(hw); ++ + if (!is_valid_ether_addr(hw->mac.addr)) { + dev_info(&pdev->dev, "Random MAC Address\n"); + random_ether_addr(hw->mac.addr); +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0020-ARM-i.MX6-cm-fx6-update-defconfig.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0020-ARM-i.MX6-cm-fx6-update-defconfig.patch new file mode 100644 index 00000000..2a455067 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0020-ARM-i.MX6-cm-fx6-update-defconfig.patch @@ -0,0 +1,87 @@ +From 764be38216e273b22671b1f4d2babb47e0dc1d74 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 5 Aug 2014 15:39:32 +0300 +Subject: [PATCH 20/59] ARM: i.MX6: cm-fx6: update defconfig + +Enable: +1) Analog audio +2) MRVL bluetooth +3) SATA AHCI +4) USB OTG +5) Board revision + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/configs/cm_fx6_defconfig | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/arch/arm/configs/cm_fx6_defconfig b/arch/arm/configs/cm_fx6_defconfig +index eb6d9cb..210062b 100644 +--- a/arch/arm/configs/cm_fx6_defconfig ++++ b/arch/arm/configs/cm_fx6_defconfig +@@ -26,6 +26,7 @@ CONFIG_SOC_IMX53=y + CONFIG_SOC_IMX6Q=y + CONFIG_SOC_IMX6SL=y + CONFIG_SOC_VF610=y ++CONFIG_MACH_CM_FX6=y + # CONFIG_SWP_EMULATE is not set + CONFIG_PCI=y + CONFIG_PCI_IMX6=y +@@ -137,6 +138,9 @@ CONFIG_VLAN_8021Q=m + CONFIG_VLAN_8021Q_GVRP=y + CONFIG_CAN=y + CONFIG_CAN_FLEXCAN=y ++CONFIG_BT=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m + CONFIG_CFG80211=y + CONFIG_CFG80211_WEXT=y + CONFIG_MAC80211=y +@@ -176,6 +180,7 @@ CONFIG_SCSI_LOGGING=y + CONFIG_SCSI_SCAN_ASYNC=y + # CONFIG_SCSI_LOWLEVEL is not set + CONFIG_ATA=y ++CONFIG_SATA_AHCI=y + CONFIG_SATA_AHCI_PLATFORM=y + CONFIG_AHCI_IMX=y + CONFIG_PATA_IMX=y +@@ -251,6 +256,7 @@ CONFIG_MFD_MC13XXX_I2C=y + CONFIG_MFD_MAX17135=y + CONFIG_MFD_SI476X_CORE=y + CONFIG_REGULATOR=y ++CONFIG_REGULATOR_DUMMY=y + CONFIG_REGULATOR_FIXED_VOLTAGE=y + CONFIG_REGULATOR_DA9052=y + CONFIG_REGULATOR_ANATOP=y +@@ -310,6 +316,7 @@ CONFIG_SND_SOC=y + CONFIG_SND_IMX_SOC=y + CONFIG_SND_SOC_EUKREA_TLV320=y + CONFIG_SND_SOC_IMX_CS42888=y ++CONFIG_SND_SOC_IMX_WM8731=y + CONFIG_SND_SOC_IMX_WM8962=y + CONFIG_SND_SOC_IMX_SGTL5000=y + CONFIG_SND_SOC_IMX_SPDIF=y +@@ -317,7 +324,10 @@ CONFIG_SND_SOC_IMX_MC13783=y + CONFIG_SND_SOC_IMX_HDMI=y + CONFIG_SND_SOC_IMX_SI476X=y + CONFIG_USB=y ++CONFIG_USB_OTG=y + CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_MXC=y ++CONFIG_USB_EHCI_HCD_PLATFORM=y + CONFIG_USB_STORAGE=y + CONFIG_USB_CHIPIDEA=y + CONFIG_USB_CHIPIDEA_UDC=y +@@ -326,7 +336,9 @@ CONFIG_USB_PHY=y + CONFIG_NOP_USB_XCEIV=y + CONFIG_USB_MXS_PHY=y + CONFIG_USB_GADGET=y ++CONFIG_USB_FSL_USB2=y + CONFIG_USB_ZERO=m ++CONFIG_USB_AUDIO=m + CONFIG_USB_ETH=m + CONFIG_USB_MASS_STORAGE=m + CONFIG_USB_G_SERIAL=m +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0021-ARM-i.MX6-dts-refactoring-the-cm-fx6-device-tree-fil.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0021-ARM-i.MX6-dts-refactoring-the-cm-fx6-device-tree-fil.patch new file mode 100644 index 00000000..4bfa1bda --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0021-ARM-i.MX6-dts-refactoring-the-cm-fx6-device-tree-fil.patch @@ -0,0 +1,1112 @@ +From a2cdd3f7524d4336e5a704d42b85503a7ab3f543 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 7 Aug 2014 15:30:03 +0300 +Subject: [PATCH 21/59] ARM: i.MX6: dts: refactoring the cm-fx6 device tree + file. + +Separate the staff that belongs to SB-FX6 and SB-FX6m boards. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 880 ++++++++++++++++------------------ + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 23 + + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 83 ++++ + 3 files changed, 516 insertions(+), 470 deletions(-) + create mode 100644 arch/arm/boot/dts/imx6q-sbc-fx6.dts + create mode 100644 arch/arm/boot/dts/imx6q-sbc-fx6m.dts + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index 0e2558f..fa32c57 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -15,158 +15,147 @@ + #include "imx6q.dtsi" + + / { +- model = "CompuLab CM-FX6"; +- compatible = "compulab,cm-fx6", "fsl,imx6q"; +- +- memory { +- reg = <0x10000000 0x80000000>; +- }; +- +- leds { +- compatible = "gpio-leds"; +- +- heartbeat-led { +- label = "Heartbeat"; +- gpios = <&gpio2 31 0>; +- linux,default-trigger = "heartbeat"; +- }; +- }; +- +- regulators { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <0>; +- +- /* regulator for mmc */ +- reg_3p3v: 3p3v { +- compatible = "regulator-fixed"; +- regulator-name = "3P3V"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- regulator-always-on; +- }; +- +- /* regulator for usb otg */ +- reg_usb_otg_vbus: usb_otg_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_otg_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio3 22 0>; +- enable-active-high; +- }; +- +- /* regulator for usb hub1 */ +- reg_usb_h1_vbus: usb_h1_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_h1_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio7 8 0>; +- enable-active-high; +- }; +- +- /* regulator1 for wifi/bt */ +- awnh387_npoweron: regulator-awnh387-npoweron { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-npoweron"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio7 12 0>; +- enable-active-high; +- }; +- +- /* regulator2 for wifi/bt */ +- awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-wifi-nreset"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio6 16 0>; +- startup-delay-us = <10000>; +- }; +- +- reg_sata_phy_slp: sata_phy_slp { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_phy_slp"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio3 23 0>; +- startup-delay-us = <100>; +- enable-active-high; +- }; +- +- reg_sata_nrstdly: sata_nrstdly { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nrstdly"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio6 6 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_phy_slp>; +- }; +- +- reg_sata_pwren: sata_pwren { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_pwren"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio1 28 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_nrstdly>; +- }; +- +- reg_sata_nstandby1: sata_nstandby1 { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nstandby1"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio3 20 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_pwren>; +- }; +- +- reg_sata_nstandby2: sata_nstandby2 { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nstandby2"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio5 2 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_nstandby1>; +- }; +- +- reg_sata_ldo_en: sata_ldo_en { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_ldo_en"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio2 16 0>; +- startup-delay-us = <100>; +- enable-active-high; +- regulator-boot-on; +- vin-supply = <®_sata_nstandby2>; +- }; +- }; +- +- gpio-keys { +- compatible = "gpio-keys"; +- power { +- label = "Power Button"; +- gpios = <&gpio1 29 1>; +- linux,code = <116>; /* KEY_POWER */ +- gpio-key,wakeup; ++ model = "CompuLab CM-FX6"; ++ compatible = "compulab,cm-fx6", "fsl,imx6q"; ++ ++ memory { ++ reg = <0x10000000 0x80000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ heartbeat-led { ++ label = "Heartbeat"; ++ gpios = <&gpio2 31 0>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for mmc */ ++ reg_3p3v: 3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "3P3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ /* regulator for usb otg */ ++ reg_usb_otg_vbus: usb_otg_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_otg_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio3 22 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator for usb hub1 */ ++ reg_usb_h1_vbus: usb_h1_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_h1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio7 8 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator1 for wifi/bt */ ++ awnh387_npoweron: regulator-awnh387-npoweron { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-npoweron"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio7 12 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator2 for wifi/bt */ ++ awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-wifi-nreset"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 16 0>; ++ startup-delay-us = <10000>; ++ }; ++ ++ reg_sata_phy_slp: sata_phy_slp { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_phy_slp"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 23 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ }; ++ ++ reg_sata_nrstdly: sata_nrstdly { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nrstdly"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 6 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_phy_slp>; ++ }; ++ ++ reg_sata_pwren: sata_pwren { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_pwren"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio1 28 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nrstdly>; ++ }; ++ ++ reg_sata_nstandby1: sata_nstandby1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby1"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 20 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_pwren>; ++ }; ++ ++ reg_sata_nstandby2: sata_nstandby2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby2"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio5 2 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nstandby1>; ++ }; ++ ++ reg_sata_ldo_en: sata_ldo_en { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_ldo_en"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 16 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ regulator-boot-on; ++ vin-supply = <®_sata_nstandby2>; ++ }; + }; +- }; + +- aliases { +- mxcfb0 = &mxcfb1; +- mxcfb1 = &mxcfb2; +- }; ++ aliases { ++ mxcfb0 = &mxcfb1; ++ mxcfb1 = &mxcfb2; ++ }; + + sound { + compatible = "fsl,imx6q-cm-fx6-wm8731", +@@ -179,66 +168,58 @@ + audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; + }; + +- sound-hdmi { +- compatible = "fsl,imx6q-audio-hdmi", +- "fsl,imx-audio-hdmi"; +- model = "imx-audio-hdmi"; +- hdmi-controller = <&hdmi_audio>; +- }; +- +- sound-spdif { +- compatible = "fsl,imx-audio-spdif", +- "fsl,imx-sabreauto-spdif"; +- model = "imx-spdif"; +- spdif-controller = <&spdif>; +- spdif-out; +- spdif-in; +- }; +- +- mxcfb1: fb@0 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "hdmi"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- mxcfb2: fb@1 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "lcd"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- +- lcd@0 { +- compatible = "fsl,lcd"; +- ipu_id = <0>; +- disp_id = <0>; +- default_ifmt = "RGB24"; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ipu1_1>; +- status = "okay"; +- }; ++ sound-hdmi { ++ compatible = "fsl,imx6q-audio-hdmi", ++ "fsl,imx-audio-hdmi"; ++ model = "imx-audio-hdmi"; ++ hdmi-controller = <&hdmi_audio>; ++ }; + +- v4l2_out { +- compatible = "fsl,mxc_v4l2_output"; +- status = "okay"; +- }; ++ sound-spdif { ++ compatible = "fsl,imx-audio-spdif", ++ "fsl,imx-sabreauto-spdif"; ++ model = "imx-spdif"; ++ spdif-controller = <&spdif>; ++ spdif-out; ++ spdif-in; ++ }; + +- eth@pcie { +- compatible = "intel,i211"; +- local-mac-address = [00 1C 1D 1E 1F 20]; +- status = "okay"; +- }; ++ mxcfb1: fb@0 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "hdmi"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ mxcfb2: fb@1 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "lcd"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ lcd@0 { ++ compatible = "fsl,lcd"; ++ ipu_id = <0>; ++ disp_id = <0>; ++ default_ifmt = "RGB24"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ipu1_1>; ++ status = "okay"; ++ }; + ++ v4l2_out { ++ compatible = "fsl,mxc_v4l2_output"; ++ status = "okay"; ++ }; + }; + + &iomuxc { +@@ -258,261 +239,240 @@ + MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 + MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 + MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 ++ /* POWER_BUTTON */ ++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 + >; + }; + }; + +- imx6q-cm-fx6 { +- /* pins for eth0 */ +- pinctrl_enet: enetgrp { +- fsl,pins = < +- MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 +- MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 +- MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 +- MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 +- MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 +- MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 +- MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 +- MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 +- MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 +- MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 +- MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 +- MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 +- MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 +- MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 +- MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 +- >; +- }; ++ imx6q-cm-fx6 { ++ /* pins for eth0 */ ++ pinctrl_enet: enetgrp { ++ fsl,pins = < ++ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 ++ MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 ++ MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 ++ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 ++ MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 ++ >; ++ }; + +- /* pins for spi */ +- pinctrl_ecspi1: ecspi1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 +- MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 +- MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 +- MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 +- MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 +- >; +- }; +- +- /* pins for nand */ +- pinctrl_gpmi_nand: gpminandgrp { +- fsl,pins = < +- MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 +- MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 +- MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 +- MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 +- MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 +- MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 +- MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 +- MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 +- MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 +- MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 +- MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 +- MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 +- MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 +- MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 +- MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 +- MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 +- MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 +- >; +- }; +- +- /* pins for i2c1 */ +- pinctrl_i2c1: i2c1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 +- MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 +- >; +- }; ++ /* pins for spi */ ++ pinctrl_ecspi1: ecspi1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 ++ MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 ++ MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 ++ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 ++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 ++ >; ++ }; ++ ++ /* pins for nand */ ++ pinctrl_gpmi_nand: gpminandgrp { ++ fsl,pins = < ++ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 ++ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 ++ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 ++ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 ++ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 ++ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 ++ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 ++ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 ++ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 ++ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 ++ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 ++ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 ++ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 ++ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 ++ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 ++ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 ++ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 ++ >; ++ }; ++ ++ /* pins for i2c1 */ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 ++ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 ++ >; ++ }; + +- /* pins for i2c2 */ +- pinctrl_i2c2: i2c2grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 +- MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 +- >; +- }; ++ /* pins for i2c2 */ ++ pinctrl_i2c2: i2c2grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 ++ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 ++ >; ++ }; + +- /* pins for i2c3 */ +- pinctrl_i2c3: i2c3grp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 +- MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for console */ +- pinctrl_uart4: uart4grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 +- MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 +- >; +- }; ++ /* pins for i2c3 */ ++ pinctrl_i2c3: i2c3grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 ++ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for console */ ++ pinctrl_uart4: uart4grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 ++ >; ++ }; + +- /* pins for usb hub1 */ +- pinctrl_usbh1: usbh1grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 +- >; +- }; ++ /* pins for usb hub1 */ ++ pinctrl_usbh1: usbh1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 ++ >; ++ }; + +- /* pins for usb otg */ +- pinctrl_usbotg: usbotggrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 +- MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 +- >; +- }; +- +- /* pins for wifi/bt */ +- pinctrl_usdhc1: usdhc1grp { +- fsl,pins = < +- MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 +- MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 +- MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 +- MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 +- MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 +- MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 +- >; +- }; +- +- /* pins for mmc */ +- pinctrl_usdhc3: usdhc3grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 +- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 +- MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 +- MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 +- MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 +- MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 +- >; +- }; +- +- /* pins for spdif */ +- pinctrl_spdif: spdifgrp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 +- MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 +- >; +- }; +- +- /* pins for audmux */ +- pinctrl_audmux: audmuxgrp { +- fsl,pins = < +- MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 +- MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 +- MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 +- MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 +- MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 +- /* master mode pin */ +- MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 +- >; +- }; ++ /* pins for usb otg */ ++ pinctrl_usbotg: usbotggrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 ++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 ++ >; ++ }; + +- /* pins for uart2 */ +- pinctrl_uart2: uart2grp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1 +- MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1 +- MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1 +- MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 +- >; +- }; ++ /* pins for wifi/bt */ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 ++ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 ++ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 ++ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 ++ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 ++ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 ++ >; ++ }; ++ ++ /* pins for mmc */ ++ pinctrl_usdhc3: usdhc3grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 ++ >; ++ }; ++ ++ /* pins for spdif */ ++ pinctrl_spdif: spdifgrp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 ++ MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 ++ >; ++ }; + +- /* pins for pcie */ +- pinctrl_pcie: pciegrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 +- MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 +- >; +- }; +- }; ++ /* pins for audmux */ ++ pinctrl_audmux: audmuxgrp { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 ++ MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 ++ MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 ++ MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 ++ MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 ++ /* master mode pin */ ++ MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 ++ >; ++ }; ++ }; + }; + + /* spi */ + &ecspi1 { +- fsl,spi-num-chipselects = <2>; +- cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ecspi1>; +- status = "okay"; +- +- flash: m25p80@0 { +- #address-cells = <1>; +- #size-cells = <1>; +- compatible = "st,m25px16", "st,m25p"; +- spi-max-frequency = <20000000>; +- reg = <0>; +- +- partition@0 { +- label = "uboot"; +- reg = <0x0 0xc0000>; +- }; +- +- partition@c0000 { +- label = "uboot environment"; +- reg = <0xc0000 0x40000>; +- }; +- +- partition@100000 { +- label = "reserved"; +- reg = <0x100000 0x100000>; +- }; +- }; ++ fsl,spi-num-chipselects = <2>; ++ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ecspi1>; ++ status = "okay"; ++ ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "st,m25px16", "st,m25p"; ++ spi-max-frequency = <20000000>; ++ reg = <0>; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0xc0000>; ++ }; ++ ++ partition@c0000 { ++ label = "uboot environment"; ++ reg = <0xc0000 0x40000>; ++ }; ++ ++ partition@100000 { ++ label = "reserved"; ++ reg = <0x100000 0x100000>; ++ }; ++ }; + }; + + /* eth0 */ + &fec { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_enet>; +- phy-mode = "rgmii"; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet>; ++ phy-mode = "rgmii"; ++ status = "okay"; + }; + + /* nand */ + &gpmi { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_gpmi_nand>; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpmi_nand>; ++ status = "okay"; + }; + + /* i2c1 */ + &i2c1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c1>; +- status = "okay"; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; +- +- rtc@56 { +- compatible = "emmicro,em3027"; +- reg = <0x56>; +- }; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ status = "okay"; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; + }; + + /* i2c2 */ +-&i2c2 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c2>; +- /* status = "okay"; */ ++&i2c2 { /* to be removed */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c2>; ++ /* status = "okay"; */ + }; + + /* i2c3 */ + &i2c3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c3>; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c3>; ++ status = "okay"; + +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; + + codec: wm8731@1a { + compatible = "wlf,wm8731"; +@@ -526,71 +486,51 @@ + }; + }; + +-/* eth1 */ +-&pcie { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_pcie>; +- reset-gpio = <&gpio1 26 0>; +- power-on-gpio = <&gpio2 24 0>; +- status = "okay"; +-}; +- + /* sata */ + &sata { +- status = "okay"; +-}; +- +-/* rear serial console */ +-&uart2 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart2>; +- /* fsl,dte-mode; */ +- fsl,uart-has-rtscts; +- dma-names = "rx", "tx"; +- dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; +- status = "okay"; ++ status = "okay"; + }; + + /* console */ + &uart4 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart4>; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart4>; ++ status = "okay"; + }; + + /* usb otg */ + &usbotg { +- vbus-supply = <®_usb_otg_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbotg>; +- dr_mode = "otg"; +- status = "okay"; ++ vbus-supply = <®_usb_otg_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbotg>; ++ dr_mode = "otg"; ++ status = "okay"; + }; + + /* usb hub1 */ + &usbh1 { +- vbus-supply = <®_usb_h1_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbh1>; +- status = "okay"; ++ vbus-supply = <®_usb_h1_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbh1>; ++ status = "okay"; + }; + + /* wifi/bt */ + &usdhc1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc1>; +- non-removable; +- vmmc-supply = <&awnh387_npoweron>; +- vmmc_aux-supply = <&awnh387_wifi_nreset>; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc1>; ++ non-removable; ++ vmmc-supply = <&awnh387_npoweron>; ++ vmmc_aux-supply = <&awnh387_wifi_nreset>; ++ status = "okay"; + }; + + /* mmc */ + &usdhc3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc3>; +- vmmc-supply = <®_3p3v>; +- status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc3>; ++ vmmc-supply = <®_3p3v>; ++ status = "okay"; + }; + + &ssi2 { +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +new file mode 100644 +index 0000000..5d3c7da +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -0,0 +1,23 @@ ++/* ++* Copyright 2014 CompuLab Ltd. ++* ++* Author: Valentin Raevsky <valentin@compulab.co.il> ++* ++* 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 ++*/ ++ ++#include "imx6q-cm-fx6.dts" ++ ++/ { ++ model = "CompuLab CM-FX6 on SBC-FX6"; ++ compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; ++}; ++ ++&pcie { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +new file mode 100644 +index 0000000..0e76f02 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -0,0 +1,83 @@ ++/* ++* Copyright 2014 CompuLab Ltd. ++* ++* Author: Valentin Raevsky <valentin@compulab.co.il> ++* ++* 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 ++*/ ++ ++#include "imx6q-cm-fx6.dts" ++ ++/ { ++ model = "CompuLab CM-FX6 on SBC-FX6m"; ++ compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6q"; ++ ++ eth@pcie { ++ compatible = "intel,i211"; ++ local-mac-address = [FF FF FF FF FF FF]; ++ status = "okay"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ power { ++ label = "Power Button"; ++ gpios = <&gpio1 29 1>; ++ linux,code = <116>; /* KEY_POWER */ ++ gpio-key,wakeup; ++ }; ++ }; ++}; ++ ++&iomuxc { ++ imx6q-sb-fx6m { ++ /* pins for uart2 */ ++ pinctrl_uart2: uart2grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 ++ >; ++ }; ++ ++ /* pins for pcie */ ++ pinctrl_pcie: pciegrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 ++ MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 ++ >; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ rtc@56 { ++ compatible = "emmicro,em3027"; ++ reg = <0x56>; ++ }; ++}; ++ ++&pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pcie>; ++ reset-gpio = <&gpio1 26 0>; ++ power-on-gpio = <&gpio2 24 0>; ++ status = "okay"; ++}; ++ ++/* rear serial console */ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart2>; ++ /* fsl,dte-mode; */ ++ fsl,uart-has-rtscts; ++ dma-names = "rx", "tx"; ++ dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0022-ARM-i.MX6-dts-refactoring-of-the-cm-fx6-device-tree-.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0022-ARM-i.MX6-dts-refactoring-of-the-cm-fx6-device-tree-.patch new file mode 100644 index 00000000..f9986338 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0022-ARM-i.MX6-dts-refactoring-of-the-cm-fx6-device-tree-.patch @@ -0,0 +1,1422 @@ +From 0597ee45b5a7b0491977b7b91745c24a0406783f Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 12 Aug 2014 17:46:23 +0300 +Subject: [PATCH 22/59] ARM: i.MX6: dts: refactoring of the cm-fx6 device tree + files. + +Refactoring device tree files: +1) Utilite: ++ imx6q.dtsi ++ imx6q-sb-fx6x.dtsi ++ imx6q-sb-fx6m.dtsi ++ imx6q-cm-fx6.dtsi += imx6q-sbc-fx6m.dts + +2) CM-FX6-EVAL: ++ imx6q.dtsi ++ imx6q-sb-fx6x.dtsi ++ imx6q-sb-fx6.dtsi ++ imx6q-cm-fx6.dtsi += imx6q-sbc-fx6.dts + +3) CM-FX6 Module: ++ imx6q.dtsi ++ imx6q-cm-fx6.dtsi += imx6q-cm-fx6.dts + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 582 +--------------------------------- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 531 +++++++++++++++++++++++++++++++ + arch/arm/boot/dts/imx6q-sb-fx6.dtsi | 14 + + arch/arm/boot/dts/imx6q-sb-fx6m.dtsi | 32 ++ + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 75 +++++ + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 8 +- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 38 +-- + 7 files changed, 677 insertions(+), 603 deletions(-) + create mode 100644 arch/arm/boot/dts/imx6q-cm-fx6.dtsi + create mode 100644 arch/arm/boot/dts/imx6q-sb-fx6.dtsi + create mode 100644 arch/arm/boot/dts/imx6q-sb-fx6m.dtsi + create mode 100644 arch/arm/boot/dts/imx6q-sb-fx6x.dtsi + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index fa32c57..a0e423b 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -1,576 +1,20 @@ + /* +-* Copyright 2013 CompuLab Ltd. +-* +-* Author: Valentin Raevsky <valentin@compulab.co.il> +-* +-* 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 +-*/ ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 "imx6q.dtsi" ++#include "imx6q-cm-fx6.dtsi" + + / { + model = "CompuLab CM-FX6"; + compatible = "compulab,cm-fx6", "fsl,imx6q"; +- +- memory { +- reg = <0x10000000 0x80000000>; +- }; +- +- leds { +- compatible = "gpio-leds"; +- heartbeat-led { +- label = "Heartbeat"; +- gpios = <&gpio2 31 0>; +- linux,default-trigger = "heartbeat"; +- }; +- }; +- +- regulators { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <0>; +- +- /* regulator for mmc */ +- reg_3p3v: 3p3v { +- compatible = "regulator-fixed"; +- regulator-name = "3P3V"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- regulator-always-on; +- }; +- +- /* regulator for usb otg */ +- reg_usb_otg_vbus: usb_otg_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_otg_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio3 22 0>; +- enable-active-high; +- }; +- +- /* regulator for usb hub1 */ +- reg_usb_h1_vbus: usb_h1_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_h1_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio7 8 0>; +- enable-active-high; +- }; +- +- /* regulator1 for wifi/bt */ +- awnh387_npoweron: regulator-awnh387-npoweron { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-npoweron"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio7 12 0>; +- enable-active-high; +- }; +- +- /* regulator2 for wifi/bt */ +- awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-wifi-nreset"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio6 16 0>; +- startup-delay-us = <10000>; +- }; +- +- reg_sata_phy_slp: sata_phy_slp { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_phy_slp"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio3 23 0>; +- startup-delay-us = <100>; +- enable-active-high; +- }; +- +- reg_sata_nrstdly: sata_nrstdly { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nrstdly"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio6 6 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_phy_slp>; +- }; +- +- reg_sata_pwren: sata_pwren { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_pwren"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio1 28 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_nrstdly>; +- }; +- +- reg_sata_nstandby1: sata_nstandby1 { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nstandby1"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio3 20 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_pwren>; +- }; +- +- reg_sata_nstandby2: sata_nstandby2 { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_nstandby2"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio5 2 0>; +- startup-delay-us = <100>; +- enable-active-high; +- vin-supply = <®_sata_nstandby1>; +- }; +- +- reg_sata_ldo_en: sata_ldo_en { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_ldo_en"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio2 16 0>; +- startup-delay-us = <100>; +- enable-active-high; +- regulator-boot-on; +- vin-supply = <®_sata_nstandby2>; +- }; +- }; +- +- aliases { +- mxcfb0 = &mxcfb1; +- mxcfb1 = &mxcfb2; +- }; +- +- sound { +- compatible = "fsl,imx6q-cm-fx6-wm8731", +- "fsl,imx-audio-wm8731"; +- model = "wm8731-audio"; +- ssi-controller = <&ssi2>; +- src-port = <2>; +- ext-port = <4>; +- audio-codec = <&codec>; +- audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; +- }; +- +- sound-hdmi { +- compatible = "fsl,imx6q-audio-hdmi", +- "fsl,imx-audio-hdmi"; +- model = "imx-audio-hdmi"; +- hdmi-controller = <&hdmi_audio>; +- }; +- +- sound-spdif { +- compatible = "fsl,imx-audio-spdif", +- "fsl,imx-sabreauto-spdif"; +- model = "imx-spdif"; +- spdif-controller = <&spdif>; +- spdif-out; +- spdif-in; +- }; +- +- mxcfb1: fb@0 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "hdmi"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- mxcfb2: fb@1 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "lcd"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- lcd@0 { +- compatible = "fsl,lcd"; +- ipu_id = <0>; +- disp_id = <0>; +- default_ifmt = "RGB24"; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ipu1_1>; +- status = "okay"; +- }; +- +- v4l2_out { +- compatible = "fsl,mxc_v4l2_output"; +- status = "okay"; +- }; +-}; +- +-&iomuxc { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hog>; +- +- hog { +- pinctrl_hog: hoggrp { +- fsl,pins = < +- /* SATA PWR */ +- MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 +- MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 +- MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 +- MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 +- /* SATA CTRL */ +- MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 +- MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 +- MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 +- MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 +- /* POWER_BUTTON */ +- MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 +- >; +- }; +- }; +- +- imx6q-cm-fx6 { +- /* pins for eth0 */ +- pinctrl_enet: enetgrp { +- fsl,pins = < +- MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 +- MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 +- MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 +- MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 +- MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 +- MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 +- MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 +- MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 +- MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 +- MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 +- MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 +- MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 +- MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 +- MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 +- MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 +- >; +- }; +- +- /* pins for spi */ +- pinctrl_ecspi1: ecspi1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 +- MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 +- MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 +- MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 +- MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 +- >; +- }; +- +- /* pins for nand */ +- pinctrl_gpmi_nand: gpminandgrp { +- fsl,pins = < +- MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 +- MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 +- MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 +- MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 +- MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 +- MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 +- MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 +- MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 +- MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 +- MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 +- MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 +- MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 +- MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 +- MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 +- MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 +- MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 +- MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 +- >; +- }; +- +- /* pins for i2c1 */ +- pinctrl_i2c1: i2c1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 +- MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for i2c2 */ +- pinctrl_i2c2: i2c2grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 +- MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for i2c3 */ +- pinctrl_i2c3: i2c3grp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 +- MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for console */ +- pinctrl_uart4: uart4grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 +- MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 +- >; +- }; +- +- /* pins for usb hub1 */ +- pinctrl_usbh1: usbh1grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 +- >; +- }; +- +- /* pins for usb otg */ +- pinctrl_usbotg: usbotggrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 +- MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 +- >; +- }; +- +- /* pins for wifi/bt */ +- pinctrl_usdhc1: usdhc1grp { +- fsl,pins = < +- MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 +- MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 +- MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 +- MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 +- MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 +- MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 +- >; +- }; +- +- /* pins for mmc */ +- pinctrl_usdhc3: usdhc3grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 +- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 +- MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 +- MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 +- MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 +- MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 +- >; +- }; +- +- /* pins for spdif */ +- pinctrl_spdif: spdifgrp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 +- MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 +- >; +- }; +- +- /* pins for audmux */ +- pinctrl_audmux: audmuxgrp { +- fsl,pins = < +- MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 +- MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 +- MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 +- MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 +- MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 +- /* master mode pin */ +- MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 +- >; +- }; +- }; +-}; +- +-/* spi */ +-&ecspi1 { +- fsl,spi-num-chipselects = <2>; +- cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ecspi1>; +- status = "okay"; +- +- flash: m25p80@0 { +- #address-cells = <1>; +- #size-cells = <1>; +- compatible = "st,m25px16", "st,m25p"; +- spi-max-frequency = <20000000>; +- reg = <0>; +- +- partition@0 { +- label = "uboot"; +- reg = <0x0 0xc0000>; +- }; +- +- partition@c0000 { +- label = "uboot environment"; +- reg = <0xc0000 0x40000>; +- }; +- +- partition@100000 { +- label = "reserved"; +- reg = <0x100000 0x100000>; +- }; +- }; +-}; +- +-/* eth0 */ +-&fec { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_enet>; +- phy-mode = "rgmii"; +- status = "okay"; +-}; +- +-/* nand */ +-&gpmi { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_gpmi_nand>; +- status = "okay"; +-}; +- +-/* i2c1 */ +-&i2c1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c1>; +- status = "okay"; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; +-}; +- +-/* i2c2 */ +-&i2c2 { /* to be removed */ +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c2>; +- /* status = "okay"; */ +-}; +- +-/* i2c3 */ +-&i2c3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c3>; +- status = "okay"; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; +- +- codec: wm8731@1a { +- compatible = "wlf,wm8731"; +- reg = <0x1a>; +- clocks = <&clks 173>, <&clks 158>, <&clks 201>, <&clks 200>; +- clock-names = "pll4", "imx-ssi.1", "cko", "cko2"; +- AVDD-supply = <&pu_dummy>; +- HPVDD-supply = <&pu_dummy>; +- DCVDD-supply = <&pu_dummy>; +- DBVDD-supply = <&pu_dummy>; +- }; +-}; +- +-/* sata */ +-&sata { +- status = "okay"; +-}; +- +-/* console */ +-&uart4 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart4>; +- status = "okay"; +-}; +- +-/* usb otg */ +-&usbotg { +- vbus-supply = <®_usb_otg_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbotg>; +- dr_mode = "otg"; +- status = "okay"; +-}; +- +-/* usb hub1 */ +-&usbh1 { +- vbus-supply = <®_usb_h1_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbh1>; +- status = "okay"; +-}; +- +-/* wifi/bt */ +-&usdhc1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc1>; +- non-removable; +- vmmc-supply = <&awnh387_npoweron>; +- vmmc_aux-supply = <&awnh387_wifi_nreset>; +- status = "okay"; +-}; +- +-/* mmc */ +-&usdhc3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc3>; +- vmmc-supply = <®_3p3v>; +- status = "okay"; +-}; +- +-&ssi2 { +- fsl,mode = "i2s-master"; +- status = "okay"; +-}; +- +-&mxcfb1 { +- status = "okay"; +-}; +- +-&mxcfb2 { +- status = "okay"; +-}; +- +-&hdmi_core { +- ipu_id = <1>; +- disp_id = <0>; +- status = "okay"; +-}; +- +-&hdmi_video { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; +- fsl,hdcp; +- status = "okay"; +-}; +- +-&hdmi_audio { +- status = "okay"; +-}; +- +-&spdif { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_spdif>; +- status = "okay"; +-}; +- +-&audmux { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_audmux>; +- status = "okay"; +-}; ++}; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +new file mode 100644 +index 0000000..0aa4461 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -0,0 +1,531 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++#include "imx6q.dtsi" ++ ++/ { ++ memory { ++ reg = <0x10000000 0x80000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ heartbeat-led { ++ label = "Heartbeat"; ++ gpios = <&gpio2 31 0>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for usb otg */ ++ reg_usb_otg_vbus: usb_otg_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_otg_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio3 22 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator for usb hub1 */ ++ reg_usb_h1_vbus: usb_h1_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_h1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio7 8 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator1 for wifi/bt */ ++ awnh387_npoweron: regulator-awnh387-npoweron { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-npoweron"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio7 12 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator2 for wifi/bt */ ++ awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-wifi-nreset"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 16 0>; ++ startup-delay-us = <10000>; ++ }; ++ ++ reg_sata_phy_slp: sata_phy_slp { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_phy_slp"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 23 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ }; ++ ++ reg_sata_nrstdly: sata_nrstdly { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nrstdly"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 6 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_phy_slp>; ++ }; ++ ++ reg_sata_pwren: sata_pwren { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_pwren"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio1 28 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nrstdly>; ++ }; ++ ++ reg_sata_nstandby1: sata_nstandby1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby1"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio3 20 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_pwren>; ++ }; ++ ++ reg_sata_nstandby2: sata_nstandby2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_nstandby2"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio5 2 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ vin-supply = <®_sata_nstandby1>; ++ }; ++ ++ reg_sata_ldo_en: sata_ldo_en { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_ldo_en"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 16 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ regulator-boot-on; ++ vin-supply = <®_sata_nstandby2>; ++ }; ++ }; ++ ++ aliases { ++ mxcfb0 = &mxcfb1; ++ mxcfb1 = &mxcfb2; ++ }; ++ ++ sound { ++ compatible = "fsl,imx6q-cm-fx6-wm8731", ++ "fsl,imx-audio-wm8731"; ++ model = "wm8731-audio"; ++ ssi-controller = <&ssi2>; ++ src-port = <2>; ++ ext-port = <4>; ++ audio-codec = <&codec>; ++ audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; ++ }; ++ ++ sound-hdmi { ++ compatible = "fsl,imx6q-audio-hdmi", ++ "fsl,imx-audio-hdmi"; ++ model = "imx-audio-hdmi"; ++ hdmi-controller = <&hdmi_audio>; ++ }; ++ ++ sound-spdif { ++ compatible = "fsl,imx-audio-spdif", ++ "fsl,imx-sabreauto-spdif"; ++ model = "imx-spdif"; ++ spdif-controller = <&spdif>; ++ spdif-out; ++ spdif-in; ++ }; ++ ++ mxcfb1: fb@0 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "hdmi"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ mxcfb2: fb@1 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "lcd"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ lcd@0 { ++ compatible = "fsl,lcd"; ++ ipu_id = <0>; ++ disp_id = <0>; ++ default_ifmt = "RGB24"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ipu1_1>; ++ status = "okay"; ++ }; ++ ++ v4l2_out { ++ compatible = "fsl,mxc_v4l2_output"; ++ status = "okay"; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>; ++ ++ hog { ++ pinctrl_hog: hoggrp { ++ fsl,pins = < ++ /* SATA PWR */ ++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 ++ MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 ++ MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 ++ MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 ++ /* SATA CTRL */ ++ MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 ++ MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 ++ MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 ++ MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 ++ /* POWER_BUTTON */ ++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 ++ >; ++ }; ++ }; ++ ++ imx6q-cm-fx6 { ++ /* pins for eth0 */ ++ pinctrl_enet: enetgrp { ++ fsl,pins = < ++ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 ++ MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 ++ MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 ++ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 ++ MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 ++ >; ++ }; ++ ++ /* pins for spi */ ++ pinctrl_ecspi1: ecspi1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 ++ MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 ++ MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 ++ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 ++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 ++ >; ++ }; ++ ++ /* pins for nand */ ++ pinctrl_gpmi_nand: gpminandgrp { ++ fsl,pins = < ++ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 ++ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 ++ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 ++ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 ++ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 ++ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 ++ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 ++ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 ++ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 ++ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 ++ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 ++ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 ++ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 ++ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 ++ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 ++ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 ++ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 ++ >; ++ }; ++ ++ /* pins for i2c2 */ ++ pinctrl_i2c2: i2c2grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 ++ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for i2c3 */ ++ pinctrl_i2c3: i2c3grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 ++ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for console */ ++ pinctrl_uart4: uart4grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 ++ >; ++ }; ++ ++ /* pins for usb hub1 */ ++ pinctrl_usbh1: usbh1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 ++ >; ++ }; ++ ++ /* pins for usb otg */ ++ pinctrl_usbotg: usbotggrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 ++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 ++ >; ++ }; ++ ++ /* pins for wifi/bt */ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 ++ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 ++ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 ++ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 ++ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 ++ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 ++ >; ++ }; ++ ++ /* pins for pcie */ ++ pinctrl_pcie: pciegrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 ++ MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 ++ >; ++ }; ++ ++ /* pins for spdif */ ++ pinctrl_spdif: spdifgrp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 ++ MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 ++ >; ++ }; ++ ++ /* pins for audmux */ ++ pinctrl_audmux: audmuxgrp { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 ++ MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 ++ MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 ++ MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 ++ MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 ++ /* master mode pin */ ++ MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 ++ >; ++ }; ++ }; ++}; ++ ++/* spi */ ++&ecspi1 { ++ fsl,spi-num-chipselects = <2>; ++ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ecspi1>; ++ status = "okay"; ++ ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "st,m25px16", "st,m25p"; ++ spi-max-frequency = <20000000>; ++ reg = <0>; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0xc0000>; ++ }; ++ ++ partition@c0000 { ++ label = "uboot environment"; ++ reg = <0xc0000 0x40000>; ++ }; ++ ++ partition@100000 { ++ label = "reserved"; ++ reg = <0x100000 0x100000>; ++ }; ++ }; ++}; ++ ++/* eth0 */ ++&fec { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet>; ++ phy-mode = "rgmii"; ++ status = "okay"; ++}; ++ ++/* nand */ ++&gpmi { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpmi_nand>; ++ status = "okay"; ++}; ++ ++/* i2c3 */ ++&i2c3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c3>; ++ status = "okay"; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ codec: wm8731@1a { ++ compatible = "wlf,wm8731"; ++ reg = <0x1a>; ++ clocks = <&clks 173>, <&clks 158>, <&clks 201>, <&clks 200>; ++ clock-names = "pll4", "imx-ssi.1", "cko", "cko2"; ++ AVDD-supply = <&pu_dummy>; ++ HPVDD-supply = <&pu_dummy>; ++ DCVDD-supply = <&pu_dummy>; ++ DBVDD-supply = <&pu_dummy>; ++ }; ++}; ++ ++&pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pcie>; ++ reset-gpio = <&gpio1 26 0>; ++ power-on-gpio = <&gpio2 24 0>; ++ status = "okay"; ++}; ++ ++/* sata */ ++&sata { ++ status = "okay"; ++}; ++ ++/* console */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart4>; ++ status = "okay"; ++}; ++ ++/* usb otg */ ++&usbotg { ++ vbus-supply = <®_usb_otg_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbotg>; ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++/* usb hub1 */ ++&usbh1 { ++ vbus-supply = <®_usb_h1_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbh1>; ++ status = "okay"; ++}; ++ ++/* wifi/bt */ ++&usdhc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc1>; ++ non-removable; ++ vmmc-supply = <&awnh387_npoweron>; ++ vmmc_aux-supply = <&awnh387_wifi_nreset>; ++ status = "okay"; ++}; ++ ++&ssi2 { ++ fsl,mode = "i2s-master"; ++ status = "okay"; ++}; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; ++ ++&hdmi_core { ++ ipu_id = <1>; ++ disp_id = <0>; ++ status = "okay"; ++}; ++ ++&hdmi_video { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; ++ fsl,hdcp; ++ status = "okay"; ++}; ++ ++&hdmi_audio { ++ status = "okay"; ++}; ++ ++&spdif { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_spdif>; ++ status = "okay"; ++}; ++ ++&audmux { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_audmux>; ++ status = "okay"; ++}; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +new file mode 100644 +index 0000000..acfc572 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +@@ -0,0 +1,14 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++#include "imx6q-sb-fx6x.dtsi" +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +new file mode 100644 +index 0000000..5a488f8 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +@@ -0,0 +1,32 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++#include "imx6q-sb-fx6x.dtsi" ++ ++/ { ++ eth@pcie { ++ compatible = "intel,i211"; ++ local-mac-address = [FF FF FF FF FF FF]; ++ status = "okay"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ power { ++ label = "Power Button"; ++ gpios = <&gpio1 29 1>; ++ linux,code = <116>; /* KEY_POWER */ ++ gpio-key,wakeup; ++ }; ++ }; ++}; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +new file mode 100644 +index 0000000..9f67b3e +--- /dev/null ++++ b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +@@ -0,0 +1,75 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++#include "imx6q.dtsi" ++ ++/ { ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for mmc */ ++ reg_3p3v: 3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "3P3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ }; ++ ++}; ++ ++&iomuxc { ++ imx6q-sb-fx6x { ++ /* pins for i2c1 */ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 ++ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for mmc */ ++ pinctrl_usdhc3: usdhc3grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 ++ >; ++ }; ++ }; ++}; ++ ++/* i2c1 */ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++}; ++ ++/* mmc */ ++&usdhc3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc3>; ++ vmmc-supply = <®_3p3v>; ++ status = "disabled"; ++}; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 5d3c7da..33e4f33 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -11,13 +11,15 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q-cm-fx6.dts" ++/dts-v1/; ++#include "imx6q-sb-fx6x.dtsi" ++#include "imx6q-cm-fx6.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; + }; + +-&pcie { ++&usdhc3 { + status = "okay"; +-}; ++}; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 0e76f02..2282250 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -11,31 +11,18 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q-cm-fx6.dts" ++/dts-v1/; ++#include "imx6q-sb-fx6m.dtsi" ++#include "imx6q-cm-fx6.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6m"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6q"; + +- eth@pcie { +- compatible = "intel,i211"; +- local-mac-address = [FF FF FF FF FF FF]; +- status = "okay"; +- }; +- +- gpio-keys { +- compatible = "gpio-keys"; +- power { +- label = "Power Button"; +- gpios = <&gpio1 29 1>; +- linux,code = <116>; /* KEY_POWER */ +- gpio-key,wakeup; +- }; +- }; + }; + + &iomuxc { +- imx6q-sb-fx6m { ++ imx6q-sbc-fx6m { + /* pins for uart2 */ + pinctrl_uart2: uart2grp { + fsl,pins = < +@@ -45,17 +32,10 @@ + MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 + >; + }; +- +- /* pins for pcie */ +- pinctrl_pcie: pciegrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 +- MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 +- >; +- }; + }; + }; + ++ + &i2c1 { + rtc@56 { + compatible = "emmicro,em3027"; +@@ -63,11 +43,7 @@ + }; + }; + +-&pcie { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_pcie>; +- reset-gpio = <&gpio1 26 0>; +- power-on-gpio = <&gpio2 24 0>; ++&usdhc3 { + status = "okay"; + }; + +@@ -80,4 +56,4 @@ + dma-names = "rx", "tx"; + dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; + status = "okay"; +-}; ++}; +\ No newline at end of file +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0023-ARM-i.MX6-dts-pcie-power-on-gpio-to-a-fixed-regulato.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0023-ARM-i.MX6-dts-pcie-power-on-gpio-to-a-fixed-regulato.patch new file mode 100644 index 00000000..89162e24 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0023-ARM-i.MX6-dts-pcie-power-on-gpio-to-a-fixed-regulato.patch @@ -0,0 +1,46 @@ +From dbd1cd2da1f43bde17e66b95128533d1658ece09 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 20 Aug 2014 14:48:09 +0300 +Subject: [PATCH 23/59] ARM: i.MX6: dts: pcie power-on-gpio to a fixed + regulator + +Define pcie power-on-gpio as a fixed regulator. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 0aa4461..27f9567 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -42,6 +42,16 @@ + enable-active-high; + }; + ++ /* regulator1 for pcie power-on-gpio */ ++ pcie_power_on_gpio: regulator-pcie-power-on-gpio { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-pcie-power-on-gpio"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 24 0>; ++ enable-active-high; ++ }; ++ + /* regulator for usb hub1 */ + reg_usb_h1_vbus: usb_h1_vbus { + compatible = "regulator-fixed"; +@@ -445,7 +455,7 @@ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_pcie>; + reset-gpio = <&gpio1 26 0>; +- power-on-gpio = <&gpio2 24 0>; ++ vdd-supply = <&pcie_power_on_gpio>; + status = "okay"; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0024-ARM-i.MX6-dts-add-i2c1-status-okay.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0024-ARM-i.MX6-dts-add-i2c1-status-okay.patch new file mode 100644 index 00000000..cead2acc --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0024-ARM-i.MX6-dts-add-i2c1-status-okay.patch @@ -0,0 +1,45 @@ +From 84e2c9793f9240cec297eef8bb38978aade1fbb1 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 20 Aug 2014 15:15:38 +0300 +Subject: [PATCH 24/59] ARM: i.MX6: dts: add i2c1 status okay + +Restore the i2c1 bus staus that has been deleted while refactoring. +It was the reason why em3027 stoped working. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 4 ++++ + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 33e4f33..6f6ad33 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -20,6 +20,10 @@ + compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; + }; + ++&i2c1 { ++ status = "okay"; ++}; ++ + &usdhc3 { + status = "okay"; + }; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 2282250..cf2a0eb 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -37,6 +37,7 @@ + + + &i2c1 { ++ status = "okay"; + rtc@56 { + compatible = "emmicro,em3027"; + reg = <0x56>; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0025-ARM-i.MX6-dts-add-local-mac-address-field-for-fec.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0025-ARM-i.MX6-dts-add-local-mac-address-field-for-fec.patch new file mode 100644 index 00000000..1295ded9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0025-ARM-i.MX6-dts-add-local-mac-address-field-for-fec.patch @@ -0,0 +1,28 @@ +From b223d8ffc36e39f88c1b9014ca6bbaecd9022508 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 3 Sep 2014 10:48:29 +0300 +Subject: [PATCH 25/59] ARM: i.MX6: dts: add local-mac-address field for fec. + +Add local-mac-address field for fec. +The board U-Boot is in charge to fill this field with a correct value. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6qdl.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi +index 732f2d2..f4f3de3 100644 +--- a/arch/arm/boot/dts/imx6qdl.dtsi ++++ b/arch/arm/boot/dts/imx6qdl.dtsi +@@ -944,6 +944,7 @@ + <&clks IMX6QDL_CLK_ENET>, + <&clks IMX6QDL_CLK_ENET_REF>; + clock-names = "ipg", "ahb", "ptp"; ++ local-mac-address = [FF FF FF FF FF FF]; + status = "disabled"; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0026-ARM-mxs-change-usb-phy-test-clock-gating.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0026-ARM-mxs-change-usb-phy-test-clock-gating.patch new file mode 100644 index 00000000..2a2436e2 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0026-ARM-mxs-change-usb-phy-test-clock-gating.patch @@ -0,0 +1,36 @@ +From e7e09deee3c3ac74e3d429cf8af2effade1152c7 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 28 Dec 2014 15:05:21 +0200 +Subject: [PATCH 26/59] ARM: mxs: change usb phy test clock gating. + +This change proposes to invert test clock gating. +This solution has fixed usb hub suspend resume loop issue. +--- + drivers/usb/phy/phy-mxs-usb.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/phy/phy-mxs-usb.c b/drivers/usb/phy/phy-mxs-usb.c +index 97556b5..fffa67d 100644 +--- a/drivers/usb/phy/phy-mxs-usb.c ++++ b/drivers/usb/phy/phy-mxs-usb.c +@@ -239,7 +239,7 @@ static void __mxs_phy_disconnect_line(struct mxs_phy *mxs_phy, bool disconnect) + + if (disconnect) + writel_relaxed(BM_USBPHY_DEBUG_CLKGATE, +- base + HW_USBPHY_DEBUG_CLR); ++ base + HW_USBPHY_DEBUG_SET); + + if (mxs_phy->port_id == 0) { + reg = disconnect ? ANADIG_USB1_LOOPBACK_SET +@@ -257,7 +257,7 @@ static void __mxs_phy_disconnect_line(struct mxs_phy *mxs_phy, bool disconnect) + + if (!disconnect) + writel_relaxed(BM_USBPHY_DEBUG_CLKGATE, +- base + HW_USBPHY_DEBUG_SET); ++ base + HW_USBPHY_DEBUG_CLR); + + /* Delay some time, and let Linestate be SE0 for controller */ + if (disconnect) +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0027-ARM-i.MX6-dts-fix-the-cm-fx6-operation-points.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0027-ARM-i.MX6-dts-fix-the-cm-fx6-operation-points.patch new file mode 100644 index 00000000..8f77c7e1 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0027-ARM-i.MX6-dts-fix-the-cm-fx6-operation-points.patch @@ -0,0 +1,51 @@ +From 246fc4a1169a2ef6fa2582e72bdf3d9c9dc451c2 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 30 Dec 2014 13:55:58 +0200 +Subject: [PATCH 27/59] ARM: i.MX6: dts: fix the cm-fx6 operation points. + +Fix the cm-fx6 operation points. Remove settings for 1.2GHz. +The current ldo settings do not allow 1.2GHz cpu frequency. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 27f9567..12eed61 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -380,6 +380,23 @@ + }; + }; + ++&cpu0 { ++ operating-points = < ++ /* kHz uV */ ++ 996000 1250000 ++ 852000 1250000 ++ 792000 1150000 ++ 396000 975000 ++ >; ++ fsl,soc-operating-points = < ++ /* ARM kHz SOC-PU uV */ ++ 996000 1250000 ++ 852000 1250000 ++ 792000 1175000 ++ 396000 1175000 ++ >; ++}; ++ + /* spi */ + &ecspi1 { + fsl,spi-num-chipselects = <2>; +@@ -538,4 +555,4 @@ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_audmux>; + status = "okay"; +-}; +\ No newline at end of file ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0028-ARM-i.MX6-ASoC-fix-build-warnings-and-update-include.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0028-ARM-i.MX6-ASoC-fix-build-warnings-and-update-include.patch new file mode 100644 index 00000000..df9102d9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0028-ARM-i.MX6-ASoC-fix-build-warnings-and-update-include.patch @@ -0,0 +1,71 @@ +From 4e0f406df2399be8984a6b774669ec1181153a37 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 5 Jan 2015 10:34:13 +0200 +Subject: [PATCH 28/59] ARM: i.MX6: ASoC: fix build warnings and update + includes + +Fix build warnings and update includes. + +sound/soc/fsl/imx-wm8731.c: In function 'imx_hifi_hw_params_slv_mode': +sound/soc/fsl/imx-wm8731.c:357:3: warning: format '%u' expects type 'unsigned int', but argument 2 has type 'long int' +sound/soc/fsl/imx-wm8731.c: In function 'imx_hifi_hw_params_mst_mode': +sound/soc/fsl/imx-wm8731.c:414:3: warning: format '%u' expects type 'unsigned int', but argument 2 has type 'long int' + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + sound/soc/fsl/imx-wm8731.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +diff --git a/sound/soc/fsl/imx-wm8731.c b/sound/soc/fsl/imx-wm8731.c +index 72b75ad..c0833cf 100644 +--- a/sound/soc/fsl/imx-wm8731.c ++++ b/sound/soc/fsl/imx-wm8731.c +@@ -14,17 +14,12 @@ + */ + + #include <linux/module.h> ++#include <linux/of.h> + #include <linux/of_platform.h> + #include <linux/of_i2c.h> +-#include <linux/of_gpio.h> +-#include <linux/slab.h> +-#include <linux/gpio.h> + #include <linux/clk.h> + #include <sound/soc.h> +-#include <sound/jack.h> + #include <sound/pcm_params.h> +-#include <sound/soc-dapm.h> +-#include <linux/pinctrl/consumer.h> + + #include "../codecs/wm8731.h" + #include "imx-audmux.h" +@@ -344,7 +339,7 @@ static int imx_hifi_hw_params_slv_mode(struct snd_pcm_substream *substream, + SND_SOC_CLOCK_IN); + + if (ret < 0) { +- pr_err("Failed to set codec master clock to %u: %d \n", ++ pr_err("Failed to set codec master clock to %lu: %d \n", + data->sysclk, ret); + return ret; + } +@@ -401,7 +396,7 @@ static int imx_hifi_hw_params_mst_mode(struct snd_pcm_substream *substream, + SND_SOC_CLOCK_IN); + + if (ret < 0) { +- pr_err("Failed to set codec master clock to %u: %d \n", ++ pr_err("Failed to set codec master clock to %lu: %d \n", + data->sysclk, ret); + return ret; + } +@@ -555,7 +550,7 @@ static int imx_wm8731_probe(struct platform_device *pdev) + } + + codec_dev = of_find_i2c_device_by_node(codec_np); +- if (!codec_dev || !codec_dev->driver) { ++ if (!codec_dev) { + dev_err(&pdev->dev, "failed to find codec platform device\n"); + ret = -EINVAL; + goto fail; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0029-ARM-i.MX6-dts-change-issd-gpio-order.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0029-ARM-i.MX6-dts-change-issd-gpio-order.patch new file mode 100644 index 00000000..4076dfa1 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0029-ARM-i.MX6-dts-change-issd-gpio-order.patch @@ -0,0 +1,67 @@ +From 0c263e8ce8ff9a47bc336ed10d7144d7f673ed05 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 15 Jan 2015 13:52:37 +0200 +Subject: [PATCH 29/59] ARM: i.MX6: dts: change issd gpio order + +Change the order in which GPIOs are toggled in SATA init sequence to +accomodate both SanDisk and Phison SSDs. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 12eed61..dd91190 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -82,6 +82,16 @@ + startup-delay-us = <10000>; + }; + ++ reg_sata_ldo_en: sata_ldo_en { ++ compatible = "regulator-fixed"; ++ regulator-name = "cm_fx6_sata_ldo_en"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 16 0>; ++ startup-delay-us = <100>; ++ enable-active-high; ++ }; ++ + reg_sata_phy_slp: sata_phy_slp { + compatible = "regulator-fixed"; + regulator-name = "cm_fx6_sata_phy_slp"; +@@ -90,6 +100,7 @@ + gpio = <&gpio3 23 0>; + startup-delay-us = <100>; + enable-active-high; ++ vin-supply = <®_sata_ldo_en>; + }; + + reg_sata_nrstdly: sata_nrstdly { +@@ -133,20 +144,10 @@ + gpio = <&gpio5 2 0>; + startup-delay-us = <100>; + enable-active-high; ++ regulator-boot-on; + vin-supply = <®_sata_nstandby1>; + }; + +- reg_sata_ldo_en: sata_ldo_en { +- compatible = "regulator-fixed"; +- regulator-name = "cm_fx6_sata_ldo_en"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio2 16 0>; +- startup-delay-us = <100>; +- enable-active-high; +- regulator-boot-on; +- vin-supply = <®_sata_nstandby2>; +- }; + }; + + aliases { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0030-ARM-i.MX6-dts-add-missing-WiFi-BT-pinmuxes.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0030-ARM-i.MX6-dts-add-missing-WiFi-BT-pinmuxes.patch new file mode 100644 index 00000000..4aeabcdc --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0030-ARM-i.MX6-dts-add-missing-WiFi-BT-pinmuxes.patch @@ -0,0 +1,30 @@ +From 5fd7676d1ed0b1147d17304fe93f6e65df824fe3 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Tue, 27 Jan 2015 15:54:24 +0200 +Subject: [PATCH 30/59] ARM: i.MX6: dts: add missing WiFi/BT pinmuxes + +Set a correct mux mode for both: +WLAN_BT_nPD and WLAN_BT_nRESET. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index dd91190..3b1a046 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -239,6 +239,9 @@ + MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 + /* POWER_BUTTON */ + MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 ++ /* WIFI_PWR_RST */ ++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 ++ MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x80000000 + >; + }; + }; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0031-ARM-i.MX6-cm-fx6-enable-i2cmux-in-defconfig.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0031-ARM-i.MX6-cm-fx6-enable-i2cmux-in-defconfig.patch new file mode 100644 index 00000000..08ac85dc --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0031-ARM-i.MX6-cm-fx6-enable-i2cmux-in-defconfig.patch @@ -0,0 +1,29 @@ +From 9c4cc9ad875d6dbbf099b3eb3cf145e8e32c8fa1 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 12 Feb 2015 13:41:56 +0200 +Subject: [PATCH 31/59] ARM: i.MX6: cm-fx6: enable i2cmux in defconfig + +Enable i2cmux in defconfig. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/configs/cm_fx6_defconfig | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/configs/cm_fx6_defconfig b/arch/arm/configs/cm_fx6_defconfig +index 210062b..7d753ae 100644 +--- a/arch/arm/configs/cm_fx6_defconfig ++++ b/arch/arm/configs/cm_fx6_defconfig +@@ -232,6 +232,9 @@ CONFIG_FSL_OTP=y + CONFIG_MXS_VIIM=y + # CONFIG_I2C_COMPAT is not set + CONFIG_I2C_CHARDEV=y ++CONFIG_I2C_MUX=y ++CONFIG_I2C_MUX_GPIO=y ++CONFIG_I2C_MUX_PCA954x=y + # CONFIG_I2C_HELPER_AUTO is not set + CONFIG_I2C_ALGOPCF=m + CONFIG_I2C_ALGOPCA=m +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0032-ARM-i.MX6-sb-fx6m-Fix-uart1-rts-cts-flow-control.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0032-ARM-i.MX6-sb-fx6m-Fix-uart1-rts-cts-flow-control.patch new file mode 100644 index 00000000..1d1fd3da --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0032-ARM-i.MX6-sb-fx6m-Fix-uart1-rts-cts-flow-control.patch @@ -0,0 +1,53 @@ +From 071b13a32ba25d50adf4f552e71339edce00e1f9 Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Feb 2015 15:54:13 +0200 +Subject: [PATCH 32/59] ARM: i.MX6: sb-fx6m: Fix uart1 rts/cts flow control + +According to the board schematics uart1 works in DCE mode only. +Remove the DCEDTE mode flag in the uart1 properties. + +Set a correct value in the IOMUXC_UART2_UART_RTS_B_SELECT_INPUT register. +This value lets connect RTS_B pad to ipp_uart_rts_b when UART is in DCE mode. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: removed remnant include from previous patch +version] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index cf2a0eb..8afb83d 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -19,6 +19,14 @@ + model = "CompuLab CM-FX6 on SBC-FX6m"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6q"; + ++ iomux_uart2: pinmux@20E0924 { ++ compatible = "pinctrl-single"; ++ reg = <0x20E0000 0x924>; /* Single register */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ pinctrl-single,register-width = <32>; ++ pinctrl-single,function-mask = <0x4>; ++ }; + }; + + &iomuxc { +@@ -52,9 +60,6 @@ + &uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart2>; +- /* fsl,dte-mode; */ + fsl,uart-has-rtscts; +- dma-names = "rx", "tx"; +- dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; + status = "okay"; +-}; +\ No newline at end of file ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0033-ARM-i.MX6-dts-add-i2cmux-support-for-SBC-FX6-boards.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0033-ARM-i.MX6-dts-add-i2cmux-support-for-SBC-FX6-boards.patch new file mode 100644 index 00000000..e6c21a4e --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0033-ARM-i.MX6-dts-add-i2cmux-support-for-SBC-FX6-boards.patch @@ -0,0 +1,172 @@ +From 38a739ee4a93cbf436a4d3dfbe9f9fc729177392 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 18 Feb 2015 18:25:23 +0200 +Subject: [PATCH 33/59] ARM: i.MX6: dts: add i2cmux support for SBC-FX6 boards + +Add i2cmux support for SBC-FX6 boards. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sb-fx6.dtsi | 50 +++++++++++++++++++++++++++++++++- + arch/arm/boot/dts/imx6q-sb-fx6m.dtsi | 36 ++++++++++++++++++++++++ + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 6 +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 2 +- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 5 ---- + 5 files changed, 87 insertions(+), 12 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +index acfc572..fc4f347a 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +@@ -11,4 +11,52 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q-sb-fx6x.dtsi" +\ No newline at end of file ++#include "imx6q-sb-fx6x.dtsi" ++ ++/ { ++ i2cmux { ++ compatible = "i2c-mux-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mux-gpios = <&gpio1 2 0>; ++ i2c-parent = <&i2c1>; ++ ++ i2c@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ pca9555@26 { ++ compatible = "nxp,pca9555"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ reg = <0x26>; ++ }; ++ ++ hx8526@4a { ++ compatible = "himax,himax_ts"; ++ reg = <0x4a>; ++ gpio_intr = <&gpio1 4 0>; ++ }; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ }; ++ ++ i2c@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ dvi: edid@50 { ++ compatible = "fsl,imx6-hdmi-i2c"; ++ reg = <0x50>; ++ }; ++ }; ++ ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +index 5a488f8..a6cc8dd 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +@@ -29,4 +29,40 @@ + gpio-key,wakeup; + }; + }; ++ ++ i2cmux { ++ compatible = "i2c-mux-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mux-gpios = <&gpio1 2 0>; ++ i2c-parent = <&i2c1>; ++ ++ i2c@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ rtc@56 { ++ compatible = "emmicro,em3027"; ++ reg = <0x56>; ++ }; ++ }; ++ ++ i2c@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ dvi: edid@50 { ++ compatible = "fsl,imx6-hdmi-i2c"; ++ reg = <0x50>; ++ }; ++ }; ++ }; + }; +\ No newline at end of file +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +index 9f67b3e..ae70c87 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +@@ -59,11 +59,7 @@ + &i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c1>; +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; ++ status = "disabled"; + }; + + /* mmc */ +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 6f6ad33..4bba196 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -12,7 +12,7 @@ + */ + + /dts-v1/; +-#include "imx6q-sb-fx6x.dtsi" ++#include "imx6q-sb-fx6.dtsi" + #include "imx6q-cm-fx6.dtsi" + + / { +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 8afb83d..31d0e8c 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -43,13 +43,8 @@ + }; + }; + +- + &i2c1 { + status = "okay"; +- rtc@56 { +- compatible = "emmicro,em3027"; +- reg = <0x56>; +- }; + }; + + &usdhc3 { +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0034-ARM-i.MX6-dts-add-dvi-edid-GPIOs.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0034-ARM-i.MX6-dts-add-dvi-edid-GPIOs.patch new file mode 100644 index 00000000..f5e3b09c --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0034-ARM-i.MX6-dts-add-dvi-edid-GPIOs.patch @@ -0,0 +1,46 @@ +From 23349ee1dfee32db88d3a493fc7c8aaeb8e72868 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 12 Feb 2015 13:49:31 +0200 +Subject: [PATCH 34/59] ARM: i.MX6: dts: add dvi edid GPIOs + +Add dvi edid GPIOs. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +index ae70c87..41237c7 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +@@ -32,6 +32,9 @@ + }; + + &iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>, <&pinctrl_dvi0>; ++ + imx6q-sb-fx6x { + /* pins for i2c1 */ + pinctrl_i2c1: i2c1grp { +@@ -52,6 +55,16 @@ + MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 + >; + }; ++ ++ /* pins for dvi/ts */ ++ pinctrl_dvi0: dvi0grp { ++ fsl,pins = < ++ /* DVI_DDC_SEL */ ++ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 ++ /* SB-FX6 Himax TS PENDOWN or SB-FX6m DVI HPD */ ++ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000 ++ >; ++ }; + }; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0035-video-mxc-IPUv3-fb-restore-sync-bits.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0035-video-mxc-IPUv3-fb-restore-sync-bits.patch new file mode 100644 index 00000000..45712e58 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0035-video-mxc-IPUv3-fb-restore-sync-bits.patch @@ -0,0 +1,114 @@ +From db8c584359449958872973912001bd845438c487 Mon Sep 17 00:00:00 2001 +From: Dmitry Lifshitz <lifshitz@compulab.co.il> +Date: Thu, 12 Feb 2015 16:59:53 +0200 +Subject: [PATCH 35/59] video: mxc: IPUv3 fb: restore sync bits + +Freescale framebuffer driver uses some driver-specific +proprietary bits in the sync field (like pixel clock polarity). + +Xorg driver discards unknown sync bits in the fb_var_screeninfo +structure. As the results of dropping the proprietary sync bits +some displays shows various artifacts. + +Fix the bug by hacking mxcfb_set_par() callback. + +Before applying new var parameters, try to find a match in the mode +list, skipping proprietary sync bits (FB_MXC_SYNC_MASK). + +If the entry is found, copy its FB_MXC_SYNC_MASK bits. + +Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il> +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + drivers/video/mxc/mxc_ipuv3_fb.c | 38 ++++++++++++++++++++++++++++++++++++++ + include/linux/mxcfb.h | 11 +++++++++++ + 2 files changed, 49 insertions(+) + +diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c +index 1fbfc9d..d24241a 100644 +--- a/drivers/video/mxc/mxc_ipuv3_fb.c ++++ b/drivers/video/mxc/mxc_ipuv3_fb.c +@@ -428,6 +428,28 @@ static bool mxcfb_need_to_set_par(struct fb_info *fbi) + sizeof(struct fb_var_screeninfo)); + } + ++static struct fb_videomode *mxc_match_mode(const struct fb_var_screeninfo *var, ++ struct list_head *head) ++{ ++ struct list_head *pos; ++ struct fb_modelist *modelist; ++ struct fb_videomode *m, mode; ++ ++ fb_var_to_videomode(&mode, var); ++ list_for_each(pos, head) { ++ modelist = list_entry(pos, struct fb_modelist, list); ++ m = &modelist->mode; ++ ++ mode.sync &= ~FB_MXC_SYNC_MASK; ++ mode.sync |= m->sync & FB_MXC_SYNC_MASK; ++ ++ if (fb_mode_is_equal(m, &mode)) ++ return m; ++ } ++ ++ return NULL; ++} ++ + /* + * Set framebuffer parameters and change the operating mode. + * +@@ -583,6 +605,7 @@ static int mxcfb_set_par(struct fb_info *fbi) + + if (!mxc_fbi->overlay) { + uint32_t out_pixel_fmt; ++ struct fb_videomode *sync_mode; + + memset(&sig_cfg, 0, sizeof(sig_cfg)); + if (fbi->var.vmode & FB_VMODE_INTERLACED) +@@ -596,6 +619,21 @@ static int mxcfb_set_par(struct fb_info *fbi) + sig_cfg.Hsync_pol = true; + if (fbi->var.sync & FB_SYNC_VERT_HIGH_ACT) + sig_cfg.Vsync_pol = true; ++ ++ /* ++ * Try to find matching all parameters, except ++ * FB_MXC_SYNC_MASK bits in the .sync field. ++ */ ++ sync_mode = mxc_match_mode(&fbi->var, &fbi->modelist); ++ /* ++ * If entry exists in the mode list and FB_MXC_SYNC_MASK ++ * bits are empty in the fbi->var.sync (most probably cleared ++ * by the user space application) then copy it from the found ++ * mode list entry. ++ */ ++ if (sync_mode && !(fbi->var.sync & FB_MXC_SYNC_MASK)) ++ fbi->var.sync = sync_mode->sync; ++ + if (!(fbi->var.sync & FB_SYNC_CLK_LAT_FALL)) + sig_cfg.clk_pol = true; + if (fbi->var.sync & FB_SYNC_DATA_INVERT) +diff --git a/include/linux/mxcfb.h b/include/linux/mxcfb.h +index 67db5ee..e63aa2c 100644 +--- a/include/linux/mxcfb.h ++++ b/include/linux/mxcfb.h +@@ -23,6 +23,17 @@ + + #include <uapi/linux/mxcfb.h> + ++#define FB_SYNC_OE_LOW_ACT 0x80000000 ++#define FB_SYNC_CLK_LAT_FALL 0x40000000 ++#define FB_SYNC_DATA_INVERT 0x20000000 ++#define FB_SYNC_CLK_IDLE_EN 0x10000000 ++#define FB_SYNC_SHARP_MODE 0x08000000 ++#define FB_SYNC_SWAP_RGB 0x04000000 ++ ++#define FB_MXC_SYNC_MASK (FB_SYNC_OE_LOW_ACT | FB_SYNC_CLK_LAT_FALL | \ ++ FB_SYNC_DATA_INVERT | FB_SYNC_CLK_IDLE_EN | \ ++ FB_SYNC_SHARP_MODE | FB_SYNC_SWAP_RGB) ++ + extern struct fb_videomode mxcfb_modedb[]; + extern int mxcfb_modedb_sz; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0036-ARM-i.MX6-dts-add-backlight-support-for-SBC-FX6-boar.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0036-ARM-i.MX6-dts-add-backlight-support-for-SBC-FX6-boar.patch new file mode 100644 index 00000000..12216fc0 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0036-ARM-i.MX6-dts-add-backlight-support-for-SBC-FX6-boar.patch @@ -0,0 +1,48 @@ +From ed1cec186cd961a9d910bfc4817b925173a0081d Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 18 Feb 2015 18:48:26 +0200 +Subject: [PATCH 36/59] ARM: i.MX6: dts: add backlight support for SBC-FX6 + boards + +Add backlight support for SBC-FX6 boards. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 4bba196..5febb69 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -18,6 +18,14 @@ + / { + model = "CompuLab CM-FX6 on SBC-FX6"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; ++ ++ backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pwm3 0 5000000>; ++ brightness-levels = <0 4 8 16 32 64 128 255>; ++ default-brightness-level = <7>; ++ }; ++ + }; + + &i2c1 { +@@ -26,4 +34,10 @@ + + &usdhc3 { + status = "okay"; +-}; +\ No newline at end of file ++}; ++ ++&pwm3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pwm3_1>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0037-ARM-i.MX6-dts-rearrangement-of-the-frame-buffers-def.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0037-ARM-i.MX6-dts-rearrangement-of-the-frame-buffers-def.patch new file mode 100644 index 00000000..523ab659 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0037-ARM-i.MX6-dts-rearrangement-of-the-frame-buffers-def.patch @@ -0,0 +1,70 @@ +From fbf61cbe1472b3c719b7cd67c03c0736096dbeb1 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 18 Feb 2015 18:53:01 +0200 +Subject: [PATCH 37/59] ARM: i.MX6: dts: rearrangement of the frame buffers + definitions + +Add a correct frame buffers' definitions +with regard to the board configuration. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 8 -------- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 8 ++++++++ + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 8 ++++++++ + 3 files changed, 16 insertions(+), 8 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 3b1a046..7d39f50 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -524,14 +524,6 @@ + status = "okay"; + }; + +-&mxcfb1 { +- status = "okay"; +-}; +- +-&mxcfb2 { +- status = "okay"; +-}; +- + &hdmi_core { + ipu_id = <1>; + disp_id = <0>; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 5febb69..8e7432d 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -41,3 +41,11 @@ + pinctrl-0 = <&pinctrl_pwm3_1>; + status = "okay"; + }; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 31d0e8c..0005eca 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -58,3 +58,11 @@ + fsl,uart-has-rtscts; + status = "okay"; + }; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0038-ARM-i.MX6-iomux-raise-DSE-for-display-signals.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0038-ARM-i.MX6-iomux-raise-DSE-for-display-signals.patch new file mode 100644 index 00000000..f2c5823d --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0038-ARM-i.MX6-iomux-raise-DSE-for-display-signals.patch @@ -0,0 +1,73 @@ +From 18d516509c4acc54d0d8b6ce3019d721db81334a Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 11 Feb 2015 18:15:42 +0200 +Subject: [PATCH 38/59] ARM: i.MX6: iomux: raise DSE for display signals + +While drive strength of display signals is configured for 120 Ohm, some +displays exhibit artifacts. +Typical drive strength should be around 50 Ohm. +To fix the the visual artifacts, we raise the drive strength to 48 Ohm. + +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 36 ++++++++++++++++++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 7d39f50..9a956ac 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -210,7 +210,7 @@ + disp_id = <0>; + default_ifmt = "RGB24"; + pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ipu1_1>; ++ pinctrl-0 = <&pinctrl_ipu1_lcd>; + status = "okay"; + }; + +@@ -268,6 +268,40 @@ + >; + }; + ++ pinctrl_ipu1_lcd: ipu1grp-lcd { ++ fsl,pins = < ++ MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x38 ++ MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x38 ++ MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x38 ++ MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x38 ++ MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04 0x80000028 ++ MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x38 ++ MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x38 ++ MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x38 ++ MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x38 ++ MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x38 ++ MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x38 ++ MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x38 ++ MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x38 ++ MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x38 ++ MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x38 ++ MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x38 ++ MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x38 ++ MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x38 ++ MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x38 ++ MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x38 ++ MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x38 ++ MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x38 ++ MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x38 ++ MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x38 ++ MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x38 ++ MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x38 ++ MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x38 ++ MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x38 ++ MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x38 ++ >; ++ }; ++ + /* pins for spi */ + pinctrl_ecspi1: ecspi1grp { + fsl,pins = < +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0039-ARM-i.MX6-cm-fx6-add-video-mode-for-KD050C-WVGA.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0039-ARM-i.MX6-cm-fx6-add-video-mode-for-KD050C-WVGA.patch new file mode 100644 index 00000000..a5afa7e2 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0039-ARM-i.MX6-cm-fx6-add-video-mode-for-KD050C-WVGA.patch @@ -0,0 +1,46 @@ +From 9cc3784253ae0104f22cdd487e6d4065b3308f0b Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 12 Feb 2015 16:54:04 +0200 +Subject: [PATCH 39/59] ARM: i.MX6: cm-fx6: add video mode for KD050C-WVGA + +Add video mode for KD050C-WVGA, update the lcdif_modedb with +the correct parameters for KD050C-WVGA. +Change mode string for second frame buffer. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 1 + + drivers/video/mxc/mxc_lcdif.c | 6 ++++++ + 2 files changed, 7 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 8e7432d..63f91a6 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -47,5 +47,6 @@ + }; + + &mxcfb2 { ++ mode_str ="KD050C-WVGA"; + status = "okay"; + }; +diff --git a/drivers/video/mxc/mxc_lcdif.c b/drivers/video/mxc/mxc_lcdif.c +index d635edd..ae6ac42 100644 +--- a/drivers/video/mxc/mxc_lcdif.c ++++ b/drivers/video/mxc/mxc_lcdif.c +@@ -48,6 +48,12 @@ static struct fb_videomode lcdif_modedb[] = { + FB_SYNC_CLK_LAT_FALL, + FB_VMODE_NONINTERLACED, + 0,}, ++ { ++ /* 800x480 @ 60 Hz , pixel clk @ 32MHz */ ++ "KD050C-WVGA", 60, 800, 480, 30000, 40, 40, 13, 29, 48, 3, ++ FB_SYNC_CLK_LAT_FALL, ++ FB_VMODE_NONINTERLACED, ++ 0,}, + }; + static int lcdif_modedb_sz = ARRAY_SIZE(lcdif_modedb); + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0040-ARM-i.MX6-cm-fx6-refactor-the-cm-fx6-iomux.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0040-ARM-i.MX6-cm-fx6-refactor-the-cm-fx6-iomux.patch new file mode 100644 index 00000000..727512cc --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0040-ARM-i.MX6-cm-fx6-refactor-the-cm-fx6-iomux.patch @@ -0,0 +1,54 @@ +From e3f8a9bf6c298da7919353e364e0873425005033 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 19 Feb 2015 15:45:07 +0200 +Subject: [PATCH 40/59] ARM: i.MX6: cm-fx6: refactor the cm-fx6 iomux + +Move Marvell Power On and Reset GPIOs into a separate group. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 9a956ac..412e03b 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -239,9 +239,6 @@ + MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 + /* POWER_BUTTON */ + MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 +- /* WIFI_PWR_RST */ +- MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 +- MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x80000000 + >; + }; + }; +@@ -387,6 +384,15 @@ + >; + }; + ++ /* pins for wifi/bt */ ++ pinctrl_mrvl1: mrvl1grp { ++ fsl,pins = < ++ /* WIFI_PWR_RST */ ++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 ++ MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x80000000 ++ >; ++ }; ++ + /* pins for pcie */ + pinctrl_pcie: pciegrp { + fsl,pins = < +@@ -546,7 +552,7 @@ + /* wifi/bt */ + &usdhc1 { + pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc1>; ++ pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_mrvl1>; + non-removable; + vmmc-supply = <&awnh387_npoweron>; + vmmc_aux-supply = <&awnh387_wifi_nreset>; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0041-ARM-i.MX6-dts-gpmi-separate-kernel-and-rootfs.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0041-ARM-i.MX6-dts-gpmi-separate-kernel-and-rootfs.patch new file mode 100644 index 00000000..11d563c9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0041-ARM-i.MX6-dts-gpmi-separate-kernel-and-rootfs.patch @@ -0,0 +1,37 @@ +From 590ff97539070fb89f25337e8123495920f17433 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 15 Jan 2015 12:52:56 +0200 +Subject: [PATCH 41/59] ARM: i.MX6: dts: gpmi: separate kernel and rootfs + +Make separate partitions for kernel and root filesystem on the NAND +flash. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 412e03b..5ca8993 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -486,6 +486,16 @@ + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_gpmi_nand>; + status = "okay"; ++ ++ partition@0 { ++ label = "linux"; ++ reg = <0x0 0x800000>; ++ }; ++ ++ partition@800000 { ++ label = "rootfs"; ++ reg = < 0x800000 0x0>; ++ }; + }; + + /* i2c3 */ +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0042-ARM-dts-cm-fx6-enable-can-bus.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0042-ARM-dts-cm-fx6-enable-can-bus.patch new file mode 100644 index 00000000..0dccbaa1 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0042-ARM-dts-cm-fx6-enable-can-bus.patch @@ -0,0 +1,29 @@ +From 6c5e8a2dc899ae44e3ae1007ec1a1be4c6cb0f86 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 26 Feb 2015 16:45:42 +0200 +Subject: [PATCH 42/59] ARM: dts: cm-fx6: enable can bus + +Enable can bus. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 63f91a6..2432f34 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -50,3 +50,9 @@ + mode_str ="KD050C-WVGA"; + status = "okay"; + }; ++ ++&flexcan1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flexcan1_1>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0043-ARM-dts-cm-fx6-add-tsc2046-touchscreen-support.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0043-ARM-dts-cm-fx6-add-tsc2046-touchscreen-support.patch new file mode 100644 index 00000000..98eb30d5 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0043-ARM-dts-cm-fx6-add-tsc2046-touchscreen-support.patch @@ -0,0 +1,85 @@ +From 5439887f65973766007f69f56277bfc7bd50494f Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 25 Feb 2015 20:18:34 +0200 +Subject: [PATCH 43/59] ARM: dts: cm-fx6: add tsc2046 touchscreen support + +Add tsc2046 touchscreen support. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 45 +++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 5ca8993..704ef4b 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -148,6 +148,13 @@ + vin-supply = <®_sata_nstandby1>; + }; + ++ tsc2046reg: tsc2046-reg { ++ compatible = "regulator-fixed"; ++ regulator-name = "tsc2046-reg"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ + }; + + aliases { +@@ -393,6 +400,14 @@ + >; + }; + ++ /* pins for tsc2046 pendown */ ++ pinctrl_tsc2046: tsc2046grp { ++ fsl,pins = < ++ /* tsc2046 PENDOWN */ ++ MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x80000000 ++ >; ++ }; ++ + /* pins for pcie */ + pinctrl_pcie: pciegrp { + fsl,pins = < +@@ -471,6 +486,36 @@ + reg = <0x100000 0x100000>; + }; + }; ++ ++ /* touch controller */ ++ touch: tsc2046@1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_tsc2046>; ++ ++ compatible = "ti,tsc2046"; ++ vcc-supply = <&tsc2046reg>; ++ ++ reg = <1>; /* CS1 */ ++ spi-max-frequency = <1500000>; ++ ++ interrupt-parent = <&gpio2>; ++ interrupts = <15 0>; ++ pendown-gpio = <&gpio2 15 0>; ++ ++ ti,x-min = /bits/ 16 <0x0>; ++ ti,x-max = /bits/ 16 <0x0fff>; ++ ti,y-min = /bits/ 16 <0x0>; ++ ti,y-max = /bits/ 16 <0x0fff>; ++ ++ ti,x-plate-ohms = /bits/ 16 <180>; ++ ti,pressure-max = /bits/ 16 <255>; ++ ++ ti,debounce-max = /bits/ 16 <30>; ++ ti,debounce-tol = /bits/ 16 <10>; ++ ti,debounce-rep = /bits/ 16 <1>; ++ ++ linux,wakeup; ++ }; + }; + + /* eth0 */ +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0044-ARM-i.MX6-sb-fx6x-refactoring-of-the-usdhc3-definiti.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0044-ARM-i.MX6-sb-fx6x-refactoring-of-the-usdhc3-definiti.patch new file mode 100644 index 00000000..964db0e9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0044-ARM-i.MX6-sb-fx6x-refactoring-of-the-usdhc3-definiti.patch @@ -0,0 +1,84 @@ +From 6773725e718bd458147b9e66fa1b9edb95f8dd91 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 5 Mar 2015 09:59:32 +0200 +Subject: [PATCH 44/59] ARM: i.MX6: sb-fx6x: refactoring of the usdhc3 + definition + +Add uhs pinctrl state for usdhc3. +This is needed for supporting ultra high speed cards. + +Add cd/wp definitions. +Add a missing property no-1-8-v. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 32 ++++++++++++++++++++++++++++++-- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 1 + + 2 files changed, 31 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +index 41237c7..372a3c1 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +@@ -53,6 +53,30 @@ + MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 + MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 + MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 ++ MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x80000000 ++ MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 ++ >; ++ }; ++ ++ pinctrl_usdhc3_100mhz: usdhc3grp-100mhz { /* 100Mhz */ ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170B9 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100B9 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B9 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B9 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B9 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B9 ++ >; ++ }; ++ ++ pinctrl_usdhc3_200mhz: usdhc3grp-200mhz { /* 200Mhz */ ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170F9 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100F9 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9 + >; + }; + +@@ -77,8 +101,12 @@ + + /* mmc */ + &usdhc3 { +- pinctrl-names = "default"; ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; + pinctrl-0 = <&pinctrl_usdhc3>; ++ pinctrl-1 = <&pinctrl_usdhc3_100mhz>; ++ pinctrl-2 = <&pinctrl_usdhc3_200mhz>; ++ cd-gpios = <&gpio7 1 0>; ++ no-1-8-v; + vmmc-supply = <®_3p3v>; + status = "disabled"; +-}; +\ No newline at end of file ++}; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 2432f34..cd5c011 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -33,6 +33,7 @@ + }; + + &usdhc3 { ++ wp-gpios = <&gpio7 0 0>; + status = "okay"; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0045-ARM-i.MX6-cm-fx6-fix-up-incorrect-compatibilities.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0045-ARM-i.MX6-cm-fx6-fix-up-incorrect-compatibilities.patch new file mode 100644 index 00000000..4a523346 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0045-ARM-i.MX6-cm-fx6-fix-up-incorrect-compatibilities.patch @@ -0,0 +1,47 @@ +From 706e2109599bd2ac09114b5064bc75140e928f2c Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 18 Mar 2015 14:30:49 +0200 +Subject: [PATCH 45/59] ARM: i.MX6: cm-fx6: fix up incorrect compatibilities + +Fix up incorrect compatibilities. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 704ef4b..8175cee 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -163,8 +163,7 @@ + }; + + sound { +- compatible = "fsl,imx6q-cm-fx6-wm8731", +- "fsl,imx-audio-wm8731"; ++ compatible = "fsl,imx-audio-wm8731"; + model = "wm8731-audio"; + ssi-controller = <&ssi2>; + src-port = <2>; +@@ -174,15 +173,13 @@ + }; + + sound-hdmi { +- compatible = "fsl,imx6q-audio-hdmi", +- "fsl,imx-audio-hdmi"; ++ compatible = "fsl,imx-audio-hdmi"; + model = "imx-audio-hdmi"; + hdmi-controller = <&hdmi_audio>; + }; + + sound-spdif { +- compatible = "fsl,imx-audio-spdif", +- "fsl,imx-sabreauto-spdif"; ++ compatible = "fsl,imx-audio-spdif"; + model = "imx-spdif"; + spdif-controller = <&spdif>; + spdif-out; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0046-ARM-i.MX6-dts-fix-include-file-order.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0046-ARM-i.MX6-dts-fix-include-file-order.patch new file mode 100644 index 00000000..bfd151b3 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0046-ARM-i.MX6-dts-fix-include-file-order.patch @@ -0,0 +1,129 @@ +From 1ba89a208ecf8096a1b9a0fd1867d4227e04a1e8 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Sun, 22 Mar 2015 11:15:08 +0200 +Subject: [PATCH 46/59] ARM: i.MX6: dts: fix include file order + +Fix include file order. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dts | 3 ++- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 2 -- + arch/arm/boot/dts/imx6q-sb-fx6.dtsi | 2 -- + arch/arm/boot/dts/imx6q-sb-fx6m.dtsi | 4 +--- + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 2 -- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 4 +++- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 4 +++- + 7 files changed, 9 insertions(+), 12 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts +index a0e423b..14c2d6a 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts +@@ -12,9 +12,10 @@ + */ + + /dts-v1/; ++#include "imx6q.dtsi" + #include "imx6q-cm-fx6.dtsi" + + / { + model = "CompuLab CM-FX6"; + compatible = "compulab,cm-fx6", "fsl,imx6q"; +-}; +\ No newline at end of file ++}; +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index 8175cee..f53d94e 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -11,8 +11,6 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q.dtsi" +- + / { + memory { + reg = <0x10000000 0x80000000>; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +index fc4f347a..4d030f9 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +@@ -11,8 +11,6 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q-sb-fx6x.dtsi" +- + / { + i2cmux { + compatible = "i2c-mux-gpio"; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +index a6cc8dd..5e6c859 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +@@ -11,8 +11,6 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q-sb-fx6x.dtsi" +- + / { + eth@pcie { + compatible = "intel,i211"; +@@ -65,4 +63,4 @@ + }; + }; + }; +-}; +\ No newline at end of file ++}; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +index 372a3c1..01f73ae 100644 +--- a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi ++++ b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +@@ -11,8 +11,6 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-#include "imx6q.dtsi" +- + / { + regulators { + compatible = "simple-bus"; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index cd5c011..84a6d23 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -12,8 +12,10 @@ + */ + + /dts-v1/; +-#include "imx6q-sb-fx6.dtsi" ++#include "imx6q.dtsi" + #include "imx6q-cm-fx6.dtsi" ++#include "imx6q-sb-fx6x.dtsi" ++#include "imx6q-sb-fx6.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6"; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 0005eca..817da28 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -12,8 +12,10 @@ + */ + + /dts-v1/; +-#include "imx6q-sb-fx6m.dtsi" ++#include "imx6q.dtsi" + #include "imx6q-cm-fx6.dtsi" ++#include "imx6q-sb-fx6x.dtsi" ++#include "imx6q-sb-fx6m.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6m"; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0047-ARM-i.MX6-dts-rename-the-sb-fx6-board-files.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0047-ARM-i.MX6-dts-rename-the-sb-fx6-board-files.patch new file mode 100644 index 00000000..74f249a9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0047-ARM-i.MX6-dts-rename-the-sb-fx6-board-files.patch @@ -0,0 +1,570 @@ +From feeb12eb1567043d60246cceb805a28d82d2c78e Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Mar 2015 09:50:04 +0200 +Subject: [PATCH 47/59] ARM: i.MX6: dts: rename the sb-fx6 board files + +In preparation for DL/S support addition, we rename the files to better +describe the content and reuse the same DT code. +Rename the sb-fx6 board files' names + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: added a bit more descriptive commit message] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sb-fx6.dtsi | 60 ----------------- + arch/arm/boot/dts/imx6q-sb-fx6m.dtsi | 66 ------------------- + arch/arm/boot/dts/imx6q-sb-fx6x.dtsi | 110 -------------------------------- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 4 +- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 4 +- + arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi | 60 +++++++++++++++++ + arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi | 66 +++++++++++++++++++ + arch/arm/boot/dts/imx6qdl-sb-fx6x.dtsi | 110 ++++++++++++++++++++++++++++++++ + 8 files changed, 240 insertions(+), 240 deletions(-) + delete mode 100644 arch/arm/boot/dts/imx6q-sb-fx6.dtsi + delete mode 100644 arch/arm/boot/dts/imx6q-sb-fx6m.dtsi + delete mode 100644 arch/arm/boot/dts/imx6q-sb-fx6x.dtsi + create mode 100644 arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi + create mode 100644 arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi + create mode 100644 arch/arm/boot/dts/imx6qdl-sb-fx6x.dtsi + +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6.dtsi +deleted file mode 100644 +index 4d030f9..0000000 +--- a/arch/arm/boot/dts/imx6q-sb-fx6.dtsi ++++ /dev/null +@@ -1,60 +0,0 @@ +-/* +- * Copyright 2014 CompuLab Ltd. +- * +- * Author: Valentin Raevsky <valentin@compulab.co.il> +- * +- * 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 +- */ +- +-/ { +- i2cmux { +- compatible = "i2c-mux-gpio"; +- #address-cells = <1>; +- #size-cells = <0>; +- mux-gpios = <&gpio1 2 0>; +- i2c-parent = <&i2c1>; +- +- i2c@0 { +- reg = <0>; +- #address-cells = <1>; +- #size-cells = <0>; +- +- pca9555@26 { +- compatible = "nxp,pca9555"; +- gpio-controller; +- #gpio-cells = <2>; +- reg = <0x26>; +- }; +- +- hx8526@4a { +- compatible = "himax,himax_ts"; +- reg = <0x4a>; +- gpio_intr = <&gpio1 4 0>; +- }; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; +- +- }; +- +- i2c@1 { +- reg = <1>; +- #address-cells = <1>; +- #size-cells = <0>; +- +- dvi: edid@50 { +- compatible = "fsl,imx6-hdmi-i2c"; +- reg = <0x50>; +- }; +- }; +- +- }; +-}; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi +deleted file mode 100644 +index 5e6c859..0000000 +--- a/arch/arm/boot/dts/imx6q-sb-fx6m.dtsi ++++ /dev/null +@@ -1,66 +0,0 @@ +-/* +- * Copyright 2014 CompuLab Ltd. +- * +- * Author: Valentin Raevsky <valentin@compulab.co.il> +- * +- * 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 +- */ +- +-/ { +- eth@pcie { +- compatible = "intel,i211"; +- local-mac-address = [FF FF FF FF FF FF]; +- status = "okay"; +- }; +- +- gpio-keys { +- compatible = "gpio-keys"; +- power { +- label = "Power Button"; +- gpios = <&gpio1 29 1>; +- linux,code = <116>; /* KEY_POWER */ +- gpio-key,wakeup; +- }; +- }; +- +- i2cmux { +- compatible = "i2c-mux-gpio"; +- #address-cells = <1>; +- #size-cells = <0>; +- mux-gpios = <&gpio1 2 0>; +- i2c-parent = <&i2c1>; +- +- i2c@0 { +- reg = <0>; +- #address-cells = <1>; +- #size-cells = <0>; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; +- }; +- +- rtc@56 { +- compatible = "emmicro,em3027"; +- reg = <0x56>; +- }; +- }; +- +- i2c@1 { +- reg = <1>; +- #address-cells = <1>; +- #size-cells = <0>; +- +- dvi: edid@50 { +- compatible = "fsl,imx6-hdmi-i2c"; +- reg = <0x50>; +- }; +- }; +- }; +-}; +diff --git a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi +deleted file mode 100644 +index 01f73ae..0000000 +--- a/arch/arm/boot/dts/imx6q-sb-fx6x.dtsi ++++ /dev/null +@@ -1,110 +0,0 @@ +-/* +- * Copyright 2014 CompuLab Ltd. +- * +- * Author: Valentin Raevsky <valentin@compulab.co.il> +- * +- * 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 +- */ +- +-/ { +- regulators { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <0>; +- +- /* regulator for mmc */ +- reg_3p3v: 3p3v { +- compatible = "regulator-fixed"; +- regulator-name = "3P3V"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- regulator-always-on; +- }; +- }; +- +-}; +- +-&iomuxc { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hog>, <&pinctrl_dvi0>; +- +- imx6q-sb-fx6x { +- /* pins for i2c1 */ +- pinctrl_i2c1: i2c1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 +- MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for mmc */ +- pinctrl_usdhc3: usdhc3grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 +- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 +- MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 +- MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 +- MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 +- MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 +- MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x80000000 +- MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 +- >; +- }; +- +- pinctrl_usdhc3_100mhz: usdhc3grp-100mhz { /* 100Mhz */ +- fsl,pins = < +- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170B9 +- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100B9 +- MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B9 +- MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B9 +- MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B9 +- MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B9 +- >; +- }; +- +- pinctrl_usdhc3_200mhz: usdhc3grp-200mhz { /* 200Mhz */ +- fsl,pins = < +- MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170F9 +- MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100F9 +- MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9 +- MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9 +- MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9 +- MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9 +- >; +- }; +- +- /* pins for dvi/ts */ +- pinctrl_dvi0: dvi0grp { +- fsl,pins = < +- /* DVI_DDC_SEL */ +- MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 +- /* SB-FX6 Himax TS PENDOWN or SB-FX6m DVI HPD */ +- MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000 +- >; +- }; +- }; +-}; +- +-/* i2c1 */ +-&i2c1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c1>; +- status = "disabled"; +-}; +- +-/* mmc */ +-&usdhc3 { +- pinctrl-names = "default", "state_100mhz", "state_200mhz"; +- pinctrl-0 = <&pinctrl_usdhc3>; +- pinctrl-1 = <&pinctrl_usdhc3_100mhz>; +- pinctrl-2 = <&pinctrl_usdhc3_200mhz>; +- cd-gpios = <&gpio7 1 0>; +- no-1-8-v; +- vmmc-supply = <®_3p3v>; +- status = "disabled"; +-}; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 84a6d23..9d31d15 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -14,8 +14,8 @@ + /dts-v1/; + #include "imx6q.dtsi" + #include "imx6q-cm-fx6.dtsi" +-#include "imx6q-sb-fx6x.dtsi" +-#include "imx6q-sb-fx6.dtsi" ++#include "imx6qdl-sb-fx6x.dtsi" ++#include "imx6qdl-sb-fx6.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6"; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 817da28..a98f1a2 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -14,8 +14,8 @@ + /dts-v1/; + #include "imx6q.dtsi" + #include "imx6q-cm-fx6.dtsi" +-#include "imx6q-sb-fx6x.dtsi" +-#include "imx6q-sb-fx6m.dtsi" ++#include "imx6qdl-sb-fx6x.dtsi" ++#include "imx6qdl-sb-fx6m.dtsi" + + / { + model = "CompuLab CM-FX6 on SBC-FX6m"; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +new file mode 100644 +index 0000000..4d030f9 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +@@ -0,0 +1,60 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++/ { ++ i2cmux { ++ compatible = "i2c-mux-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mux-gpios = <&gpio1 2 0>; ++ i2c-parent = <&i2c1>; ++ ++ i2c@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ pca9555@26 { ++ compatible = "nxp,pca9555"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ reg = <0x26>; ++ }; ++ ++ hx8526@4a { ++ compatible = "himax,himax_ts"; ++ reg = <0x4a>; ++ gpio_intr = <&gpio1 4 0>; ++ }; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ }; ++ ++ i2c@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ dvi: edid@50 { ++ compatible = "fsl,imx6-hdmi-i2c"; ++ reg = <0x50>; ++ }; ++ }; ++ ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi +new file mode 100644 +index 0000000..5e6c859 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi +@@ -0,0 +1,66 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++/ { ++ eth@pcie { ++ compatible = "intel,i211"; ++ local-mac-address = [FF FF FF FF FF FF]; ++ status = "okay"; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ power { ++ label = "Power Button"; ++ gpios = <&gpio1 29 1>; ++ linux,code = <116>; /* KEY_POWER */ ++ gpio-key,wakeup; ++ }; ++ }; ++ ++ i2cmux { ++ compatible = "i2c-mux-gpio"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mux-gpios = <&gpio1 2 0>; ++ i2c-parent = <&i2c1>; ++ ++ i2c@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ rtc@56 { ++ compatible = "emmicro,em3027"; ++ reg = <0x56>; ++ }; ++ }; ++ ++ i2c@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ dvi: edid@50 { ++ compatible = "fsl,imx6-hdmi-i2c"; ++ reg = <0x50>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6x.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6x.dtsi +new file mode 100644 +index 0000000..01f73ae +--- /dev/null ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6x.dtsi +@@ -0,0 +1,110 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++/ { ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for mmc */ ++ reg_3p3v: 3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "3P3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ }; ++ ++}; ++ ++&iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>, <&pinctrl_dvi0>; ++ ++ imx6q-sb-fx6x { ++ /* pins for i2c1 */ ++ pinctrl_i2c1: i2c1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 ++ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for mmc */ ++ pinctrl_usdhc3: usdhc3grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 ++ MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x80000000 ++ MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 ++ >; ++ }; ++ ++ pinctrl_usdhc3_100mhz: usdhc3grp-100mhz { /* 100Mhz */ ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170B9 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100B9 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170B9 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170B9 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170B9 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170B9 ++ >; ++ }; ++ ++ pinctrl_usdhc3_200mhz: usdhc3grp-200mhz { /* 200Mhz */ ++ fsl,pins = < ++ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170F9 ++ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100F9 ++ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170F9 ++ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170F9 ++ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170F9 ++ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170F9 ++ >; ++ }; ++ ++ /* pins for dvi/ts */ ++ pinctrl_dvi0: dvi0grp { ++ fsl,pins = < ++ /* DVI_DDC_SEL */ ++ MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 ++ /* SB-FX6 Himax TS PENDOWN or SB-FX6m DVI HPD */ ++ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000 ++ >; ++ }; ++ }; ++}; ++ ++/* i2c1 */ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1>; ++ status = "disabled"; ++}; ++ ++/* mmc */ ++&usdhc3 { ++ pinctrl-names = "default", "state_100mhz", "state_200mhz"; ++ pinctrl-0 = <&pinctrl_usdhc3>; ++ pinctrl-1 = <&pinctrl_usdhc3_100mhz>; ++ pinctrl-2 = <&pinctrl_usdhc3_200mhz>; ++ cd-gpios = <&gpio7 1 0>; ++ no-1-8-v; ++ vmmc-supply = <®_3p3v>; ++ status = "disabled"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0048-ARM-i.MX6-dts-refactor-the-sbc-fx6-target-files.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0048-ARM-i.MX6-dts-refactor-the-sbc-fx6-target-files.patch new file mode 100644 index 00000000..cfa79baf --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0048-ARM-i.MX6-dts-refactor-the-sbc-fx6-target-files.patch @@ -0,0 +1,243 @@ +From a19b8fff6f84ecf1199be3b0a97325a0cab437c5 Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Mar 2015 09:59:54 +0200 +Subject: [PATCH 48/59] ARM: i.MX6: dts: refactor the sbc-fx6 target files + +In preparation for DL/S support addition, we move the common code +to dtsi files for better reuse of the same DT code. +Refactor the sbc-fx6 target files. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: added a bit more descriptive commit message] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6.dts | 42 ++-------------------------- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 47 -------------------------------- + arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi | 37 +++++++++++++++++++++++++ + arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi | 47 ++++++++++++++++++++++++++++++++ + 4 files changed, 86 insertions(+), 87 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6.dts b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +index 9d31d15..1234fb3 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6.dts +@@ -18,44 +18,6 @@ + #include "imx6qdl-sb-fx6.dtsi" + + / { +- model = "CompuLab CM-FX6 on SBC-FX6"; +- compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; +- +- backlight { +- compatible = "pwm-backlight"; +- pwms = <&pwm3 0 5000000>; +- brightness-levels = <0 4 8 16 32 64 128 255>; +- default-brightness-level = <7>; +- }; +- +-}; +- +-&i2c1 { +- status = "okay"; +-}; +- +-&usdhc3 { +- wp-gpios = <&gpio7 0 0>; +- status = "okay"; +-}; +- +-&pwm3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_pwm3_1>; +- status = "okay"; +-}; +- +-&mxcfb1 { +- status = "okay"; +-}; +- +-&mxcfb2 { +- mode_str ="KD050C-WVGA"; +- status = "okay"; +-}; +- +-&flexcan1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_flexcan1_1>; +- status = "okay"; ++ model = "CompuLab CM-FX6 on SBC-FX6"; ++ compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6q"; + }; +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index a98f1a2..19bf948 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -20,51 +20,4 @@ + / { + model = "CompuLab CM-FX6 on SBC-FX6m"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6q"; +- +- iomux_uart2: pinmux@20E0924 { +- compatible = "pinctrl-single"; +- reg = <0x20E0000 0x924>; /* Single register */ +- #address-cells = <1>; +- #size-cells = <0>; +- pinctrl-single,register-width = <32>; +- pinctrl-single,function-mask = <0x4>; +- }; +-}; +- +-&iomuxc { +- imx6q-sbc-fx6m { +- /* pins for uart2 */ +- pinctrl_uart2: uart2grp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1 +- MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1 +- MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1 +- MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 +- >; +- }; +- }; +-}; +- +-&i2c1 { +- status = "okay"; +-}; +- +-&usdhc3 { +- status = "okay"; +-}; +- +-/* rear serial console */ +-&uart2 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart2>; +- fsl,uart-has-rtscts; +- status = "okay"; +-}; +- +-&mxcfb1 { +- status = "okay"; +-}; +- +-&mxcfb2 { +- status = "okay"; + }; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +index 4d030f9..129e88e 100644 +--- a/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +@@ -12,6 +12,13 @@ + */ + + / { ++ backlight { ++ compatible = "pwm-backlight"; ++ pwms = <&pwm3 0 5000000>; ++ brightness-levels = <0 4 8 16 32 64 128 255>; ++ default-brightness-level = <7>; ++ }; ++ + i2cmux { + compatible = "i2c-mux-gpio"; + #address-cells = <1>; +@@ -58,3 +65,33 @@ + + }; + }; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&usdhc3 { ++ wp-gpios = <&gpio7 0 0>; ++ status = "okay"; ++}; ++ ++&pwm3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pwm3_1>; ++ status = "okay"; ++}; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ mode_str ="KD050C-WVGA"; ++ status = "okay"; ++}; ++ ++&flexcan1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flexcan1_1>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi +index 5e6c859..5394364 100644 +--- a/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6m.dtsi +@@ -12,6 +12,15 @@ + */ + + / { ++ iomux_uart2: pinmux@20E0924 { ++ compatible = "pinctrl-single"; ++ reg = <0x20E0000 0x924>; /* Single register */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ pinctrl-single,register-width = <32>; ++ pinctrl-single,function-mask = <0x4>; ++ }; ++ + eth@pcie { + compatible = "intel,i211"; + local-mac-address = [FF FF FF FF FF FF]; +@@ -64,3 +73,41 @@ + }; + }; + }; ++ ++&iomuxc { ++ imx6q-sbc-fx6m { ++ /* pins for uart2 */ ++ pinctrl_uart2: uart2grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1 ++ MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1 ++ >; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ status = "okay"; ++}; ++ ++&usdhc3 { ++ status = "okay"; ++}; ++ ++/* rear serial console */ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart2>; ++ fsl,uart-has-rtscts; ++ status = "okay"; ++}; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0049-ARM-i.MX6-cm-fx6-separate-DL-and-Quad-stuff.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0049-ARM-i.MX6-cm-fx6-separate-DL-and-Quad-stuff.patch new file mode 100644 index 00000000..0fd11090 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0049-ARM-i.MX6-cm-fx6-separate-DL-and-Quad-stuff.patch @@ -0,0 +1,1182 @@ +From ae49df750fb2a10cf04fca9854d5faa5f1a3d5a0 Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Mar 2015 10:12:35 +0200 +Subject: [PATCH 49/59] ARM: i.MX6: cm-fx6: separate DL and Quad stuff + +Break down the cm-fx6 file into two files in order to +separate DL and Quad supported features. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: fix available memory size and +rename "dl" to "qdl"] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-cm-fx6.dtsi | 553 +------------------------------ + arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi | 573 +++++++++++++++++++++++++++++++++ + 2 files changed, 575 insertions(+), 551 deletions(-) + create mode 100644 arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi + +diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +index f53d94e..3a10e5e 100644 +--- a/arch/arm/boot/dts/imx6q-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6q-cm-fx6.dtsi +@@ -11,75 +11,14 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + +-/ { +- memory { +- reg = <0x10000000 0x80000000>; +- }; +- +- leds { +- compatible = "gpio-leds"; +- heartbeat-led { +- label = "Heartbeat"; +- gpios = <&gpio2 31 0>; +- linux,default-trigger = "heartbeat"; +- }; +- }; ++#include "imx6qdl-cm-fx6.dtsi" + ++/ { + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + +- /* regulator for usb otg */ +- reg_usb_otg_vbus: usb_otg_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_otg_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio3 22 0>; +- enable-active-high; +- }; +- +- /* regulator1 for pcie power-on-gpio */ +- pcie_power_on_gpio: regulator-pcie-power-on-gpio { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-pcie-power-on-gpio"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio2 24 0>; +- enable-active-high; +- }; +- +- /* regulator for usb hub1 */ +- reg_usb_h1_vbus: usb_h1_vbus { +- compatible = "regulator-fixed"; +- regulator-name = "usb_h1_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- gpio = <&gpio7 8 0>; +- enable-active-high; +- }; +- +- /* regulator1 for wifi/bt */ +- awnh387_npoweron: regulator-awnh387-npoweron { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-npoweron"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio7 12 0>; +- enable-active-high; +- }; +- +- /* regulator2 for wifi/bt */ +- awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { +- compatible = "regulator-fixed"; +- regulator-name = "regulator-awnh387-wifi-nreset"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- gpio = <&gpio6 16 0>; +- startup-delay-us = <10000>; +- }; +- + reg_sata_ldo_en: sata_ldo_en { + compatible = "regulator-fixed"; + regulator-name = "cm_fx6_sata_ldo_en"; +@@ -146,499 +85,11 @@ + vin-supply = <®_sata_nstandby1>; + }; + +- tsc2046reg: tsc2046-reg { +- compatible = "regulator-fixed"; +- regulator-name = "tsc2046-reg"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- }; +- +- }; +- +- aliases { +- mxcfb0 = &mxcfb1; +- mxcfb1 = &mxcfb2; +- }; +- +- sound { +- compatible = "fsl,imx-audio-wm8731"; +- model = "wm8731-audio"; +- ssi-controller = <&ssi2>; +- src-port = <2>; +- ext-port = <4>; +- audio-codec = <&codec>; +- audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; +- }; +- +- sound-hdmi { +- compatible = "fsl,imx-audio-hdmi"; +- model = "imx-audio-hdmi"; +- hdmi-controller = <&hdmi_audio>; +- }; +- +- sound-spdif { +- compatible = "fsl,imx-audio-spdif"; +- model = "imx-spdif"; +- spdif-controller = <&spdif>; +- spdif-out; +- spdif-in; +- }; +- +- mxcfb1: fb@0 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "hdmi"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- mxcfb2: fb@1 { +- compatible = "fsl,mxc_sdc_fb"; +- disp_dev = "lcd"; +- interface_pix_fmt = "RGB24"; +- mode_str ="1920x1080M@60"; +- default_bpp = <32>; +- int_clk = <0>; +- late_init = <0>; +- status = "disabled"; +- }; +- +- lcd@0 { +- compatible = "fsl,lcd"; +- ipu_id = <0>; +- disp_id = <0>; +- default_ifmt = "RGB24"; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ipu1_lcd>; +- status = "okay"; +- }; +- +- v4l2_out { +- compatible = "fsl,mxc_v4l2_output"; +- status = "okay"; +- }; +-}; +- +-&iomuxc { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hog>; +- +- hog { +- pinctrl_hog: hoggrp { +- fsl,pins = < +- /* SATA PWR */ +- MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 +- MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 +- MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 +- MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 +- /* SATA CTRL */ +- MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 +- MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 +- MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 +- MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 +- /* POWER_BUTTON */ +- MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 +- >; +- }; +- }; +- +- imx6q-cm-fx6 { +- /* pins for eth0 */ +- pinctrl_enet: enetgrp { +- fsl,pins = < +- MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 +- MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 +- MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 +- MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 +- MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 +- MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 +- MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 +- MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 +- MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 +- MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 +- MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 +- MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 +- MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 +- MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 +- MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 +- >; +- }; +- +- pinctrl_ipu1_lcd: ipu1grp-lcd { +- fsl,pins = < +- MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x38 +- MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x38 +- MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x38 +- MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x38 +- MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04 0x80000028 +- MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x38 +- MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x38 +- MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x38 +- MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x38 +- MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x38 +- MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x38 +- MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x38 +- MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x38 +- MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x38 +- MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x38 +- MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x38 +- MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x38 +- MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x38 +- MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x38 +- MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x38 +- MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x38 +- MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x38 +- MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x38 +- MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x38 +- MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x38 +- MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x38 +- MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x38 +- MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x38 +- MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x38 +- >; +- }; +- +- /* pins for spi */ +- pinctrl_ecspi1: ecspi1grp { +- fsl,pins = < +- MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 +- MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 +- MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 +- MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 +- MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 +- >; +- }; +- +- /* pins for nand */ +- pinctrl_gpmi_nand: gpminandgrp { +- fsl,pins = < +- MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 +- MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 +- MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 +- MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 +- MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 +- MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 +- MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 +- MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 +- MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 +- MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 +- MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 +- MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 +- MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 +- MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 +- MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 +- MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 +- MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 +- >; +- }; +- +- /* pins for i2c2 */ +- pinctrl_i2c2: i2c2grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 +- MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for i2c3 */ +- pinctrl_i2c3: i2c3grp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 +- MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 +- >; +- }; +- +- /* pins for console */ +- pinctrl_uart4: uart4grp { +- fsl,pins = < +- MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 +- MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 +- >; +- }; +- +- /* pins for usb hub1 */ +- pinctrl_usbh1: usbh1grp { +- fsl,pins = < +- MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 +- >; +- }; +- +- /* pins for usb otg */ +- pinctrl_usbotg: usbotggrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 +- MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 +- >; +- }; +- +- /* pins for wifi/bt */ +- pinctrl_usdhc1: usdhc1grp { +- fsl,pins = < +- MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 +- MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 +- MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 +- MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 +- MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 +- MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 +- >; +- }; +- +- /* pins for wifi/bt */ +- pinctrl_mrvl1: mrvl1grp { +- fsl,pins = < +- /* WIFI_PWR_RST */ +- MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 +- MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x80000000 +- >; +- }; +- +- /* pins for tsc2046 pendown */ +- pinctrl_tsc2046: tsc2046grp { +- fsl,pins = < +- /* tsc2046 PENDOWN */ +- MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x80000000 +- >; +- }; +- +- /* pins for pcie */ +- pinctrl_pcie: pciegrp { +- fsl,pins = < +- MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 +- MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 +- >; +- }; +- +- /* pins for spdif */ +- pinctrl_spdif: spdifgrp { +- fsl,pins = < +- MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 +- MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 +- >; +- }; +- +- /* pins for audmux */ +- pinctrl_audmux: audmuxgrp { +- fsl,pins = < +- MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 +- MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 +- MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 +- MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 +- MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 +- /* master mode pin */ +- MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 +- >; +- }; +- }; +-}; +- +-&cpu0 { +- operating-points = < +- /* kHz uV */ +- 996000 1250000 +- 852000 1250000 +- 792000 1150000 +- 396000 975000 +- >; +- fsl,soc-operating-points = < +- /* ARM kHz SOC-PU uV */ +- 996000 1250000 +- 852000 1250000 +- 792000 1175000 +- 396000 1175000 +- >; +-}; +- +-/* spi */ +-&ecspi1 { +- fsl,spi-num-chipselects = <2>; +- cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_ecspi1>; +- status = "okay"; +- +- flash: m25p80@0 { +- #address-cells = <1>; +- #size-cells = <1>; +- compatible = "st,m25px16", "st,m25p"; +- spi-max-frequency = <20000000>; +- reg = <0>; +- +- partition@0 { +- label = "uboot"; +- reg = <0x0 0xc0000>; +- }; +- +- partition@c0000 { +- label = "uboot environment"; +- reg = <0xc0000 0x40000>; +- }; +- +- partition@100000 { +- label = "reserved"; +- reg = <0x100000 0x100000>; +- }; +- }; +- +- /* touch controller */ +- touch: tsc2046@1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_tsc2046>; +- +- compatible = "ti,tsc2046"; +- vcc-supply = <&tsc2046reg>; +- +- reg = <1>; /* CS1 */ +- spi-max-frequency = <1500000>; +- +- interrupt-parent = <&gpio2>; +- interrupts = <15 0>; +- pendown-gpio = <&gpio2 15 0>; +- +- ti,x-min = /bits/ 16 <0x0>; +- ti,x-max = /bits/ 16 <0x0fff>; +- ti,y-min = /bits/ 16 <0x0>; +- ti,y-max = /bits/ 16 <0x0fff>; +- +- ti,x-plate-ohms = /bits/ 16 <180>; +- ti,pressure-max = /bits/ 16 <255>; +- +- ti,debounce-max = /bits/ 16 <30>; +- ti,debounce-tol = /bits/ 16 <10>; +- ti,debounce-rep = /bits/ 16 <1>; +- +- linux,wakeup; +- }; +-}; +- +-/* eth0 */ +-&fec { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_enet>; +- phy-mode = "rgmii"; +- status = "okay"; +-}; +- +-/* nand */ +-&gpmi { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_gpmi_nand>; +- status = "okay"; +- +- partition@0 { +- label = "linux"; +- reg = <0x0 0x800000>; +- }; +- +- partition@800000 { +- label = "rootfs"; +- reg = < 0x800000 0x0>; +- }; +-}; +- +-/* i2c3 */ +-&i2c3 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_i2c3>; +- status = "okay"; +- +- eeprom@50 { +- compatible = "at24,24c02"; +- reg = <0x50>; +- pagesize = <16>; + }; + +- codec: wm8731@1a { +- compatible = "wlf,wm8731"; +- reg = <0x1a>; +- clocks = <&clks 173>, <&clks 158>, <&clks 201>, <&clks 200>; +- clock-names = "pll4", "imx-ssi.1", "cko", "cko2"; +- AVDD-supply = <&pu_dummy>; +- HPVDD-supply = <&pu_dummy>; +- DCVDD-supply = <&pu_dummy>; +- DBVDD-supply = <&pu_dummy>; +- }; +-}; +- +-&pcie { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_pcie>; +- reset-gpio = <&gpio1 26 0>; +- vdd-supply = <&pcie_power_on_gpio>; +- status = "okay"; + }; + + /* sata */ + &sata { + status = "okay"; + }; +- +-/* console */ +-&uart4 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_uart4>; +- status = "okay"; +-}; +- +-/* usb otg */ +-&usbotg { +- vbus-supply = <®_usb_otg_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbotg>; +- dr_mode = "otg"; +- status = "okay"; +-}; +- +-/* usb hub1 */ +-&usbh1 { +- vbus-supply = <®_usb_h1_vbus>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usbh1>; +- status = "okay"; +-}; +- +-/* wifi/bt */ +-&usdhc1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_mrvl1>; +- non-removable; +- vmmc-supply = <&awnh387_npoweron>; +- vmmc_aux-supply = <&awnh387_wifi_nreset>; +- status = "okay"; +-}; +- +-&ssi2 { +- fsl,mode = "i2s-master"; +- status = "okay"; +-}; +- +-&hdmi_core { +- ipu_id = <1>; +- disp_id = <0>; +- status = "okay"; +-}; +- +-&hdmi_video { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; +- fsl,hdcp; +- status = "okay"; +-}; +- +-&hdmi_audio { +- status = "okay"; +-}; +- +-&spdif { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_spdif>; +- status = "okay"; +-}; +- +-&audmux { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_audmux>; +- status = "okay"; +-}; +diff --git a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +new file mode 100644 +index 0000000..31086b7 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +@@ -0,0 +1,573 @@ ++/* ++ * Copyright 2014 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 ++ */ ++ ++/ { ++ memory { ++ reg = <0x10000000 0x20000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ heartbeat-led { ++ label = "Heartbeat"; ++ gpios = <&gpio2 31 0>; ++ linux,default-trigger = "heartbeat"; ++ }; ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* regulator for usb otg */ ++ reg_usb_otg_vbus: usb_otg_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_otg_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio3 22 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator1 for pcie power-on-gpio */ ++ pcie_power_on_gpio: regulator-pcie-power-on-gpio { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-pcie-power-on-gpio"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio2 24 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator for usb hub1 */ ++ reg_usb_h1_vbus: usb_h1_vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb_h1_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ gpio = <&gpio7 8 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator1 for wifi/bt */ ++ awnh387_npoweron: regulator-awnh387-npoweron { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-npoweron"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio7 12 0>; ++ enable-active-high; ++ }; ++ ++ /* regulator2 for wifi/bt */ ++ awnh387_wifi_nreset: regulator-awnh387-wifi-nreset { ++ compatible = "regulator-fixed"; ++ regulator-name = "regulator-awnh387-wifi-nreset"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&gpio6 16 0>; ++ startup-delay-us = <10000>; ++ }; ++ ++ tsc2046reg: tsc2046-reg { ++ compatible = "regulator-fixed"; ++ regulator-name = "tsc2046-reg"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ }; ++ ++ aliases { ++ mxcfb0 = &mxcfb1; ++ mxcfb1 = &mxcfb2; ++ }; ++ ++ sound { ++ compatible = "fsl,imx-audio-wm8731"; ++ model = "wm8731-audio"; ++ ssi-controller = <&ssi2>; ++ src-port = <2>; ++ ext-port = <4>; ++ audio-codec = <&codec>; ++ audio-routing = "LOUT", "ROUT", "LLINEIN", "RLINEIN"; ++ }; ++ ++ sound-hdmi { ++ compatible = "fsl,imx-audio-hdmi"; ++ model = "imx-audio-hdmi"; ++ hdmi-controller = <&hdmi_audio>; ++ }; ++ ++ sound-spdif { ++ compatible = "fsl,imx-audio-spdif"; ++ model = "imx-spdif"; ++ spdif-controller = <&spdif>; ++ spdif-out; ++ spdif-in; ++ }; ++ ++ mxcfb1: fb@0 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "hdmi"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ mxcfb2: fb@1 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "lcd"; ++ interface_pix_fmt = "RGB24"; ++ mode_str ="1920x1080M@60"; ++ default_bpp = <32>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ lcd@0 { ++ compatible = "fsl,lcd"; ++ ipu_id = <0>; ++ disp_id = <0>; ++ default_ifmt = "RGB24"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ipu1_lcd>; ++ status = "okay"; ++ }; ++ ++ v4l2_out { ++ compatible = "fsl,mxc_v4l2_output"; ++ status = "okay"; ++ }; ++}; ++ ++&iomuxc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hog>; ++ ++ hog { ++ pinctrl_hog: hoggrp { ++ fsl,pins = < ++ /* SATA PWR */ ++ MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 ++ MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 ++ MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 ++ MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 ++ /* SATA CTRL */ ++ MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 ++ MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 ++ MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x80000000 ++ MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x80000000 ++ /* POWER_BUTTON */ ++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 ++ >; ++ }; ++ }; ++ ++ imx6q-cm-fx6 { ++ /* pins for eth0 */ ++ pinctrl_enet: enetgrp { ++ fsl,pins = < ++ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0 ++ MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 ++ MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 ++ MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 ++ MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 ++ MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 ++ MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 ++ >; ++ }; ++ ++ pinctrl_ipu1_lcd: ipu1grp-lcd { ++ fsl,pins = < ++ MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x38 ++ MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x38 ++ MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x38 ++ MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x38 ++ MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04 0x80000028 ++ MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x38 ++ MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x38 ++ MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x38 ++ MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x38 ++ MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x38 ++ MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x38 ++ MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x38 ++ MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x38 ++ MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x38 ++ MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x38 ++ MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x38 ++ MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x38 ++ MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x38 ++ MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x38 ++ MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x38 ++ MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x38 ++ MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x38 ++ MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x38 ++ MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x38 ++ MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x38 ++ MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x38 ++ MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x38 ++ MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x38 ++ MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x38 ++ >; ++ }; ++ ++ /* pins for spi */ ++ pinctrl_ecspi1: ecspi1grp { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1 ++ MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1 ++ MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1 ++ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1 ++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1 ++ >; ++ }; ++ ++ /* pins for nand */ ++ pinctrl_gpmi_nand: gpminandgrp { ++ fsl,pins = < ++ MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1 ++ MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1 ++ MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1 ++ MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000 ++ MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1 ++ MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1 ++ MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1 ++ MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1 ++ MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1 ++ MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1 ++ MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1 ++ MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1 ++ MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1 ++ MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1 ++ MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1 ++ MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1 ++ MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1 ++ >; ++ }; ++ ++ /* pins for i2c2 */ ++ pinctrl_i2c2: i2c2grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1 ++ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for i2c3 */ ++ pinctrl_i2c3: i2c3grp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 ++ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ /* pins for console */ ++ pinctrl_uart4: uart4grp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1 ++ MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1 ++ >; ++ }; ++ ++ /* pins for usb hub1 */ ++ pinctrl_usbh1: usbh1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000 ++ >; ++ }; ++ ++ /* pins for usb otg */ ++ pinctrl_usbotg: usbotggrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 ++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 ++ >; ++ }; ++ ++ /* pins for wifi/bt */ ++ pinctrl_usdhc1: usdhc1grp { ++ fsl,pins = < ++ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17071 ++ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10071 ++ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071 ++ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071 ++ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071 ++ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071 ++ >; ++ }; ++ ++ /* pins for wifi/bt */ ++ pinctrl_mrvl1: mrvl1grp { ++ fsl,pins = < ++ /* WIFI_PWR_RST */ ++ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000 ++ MX6QDL_PAD_NANDF_CS3__GPIO6_IO16 0x80000000 ++ >; ++ }; ++ ++ /* pins for tsc2046 pendown */ ++ pinctrl_tsc2046: tsc2046grp { ++ fsl,pins = < ++ /* tsc2046 PENDOWN */ ++ MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x80000000 ++ >; ++ }; ++ ++ /* pins for pcie */ ++ pinctrl_pcie: pciegrp { ++ fsl,pins = < ++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 ++ MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000 ++ >; ++ }; ++ ++ /* pins for spdif */ ++ pinctrl_spdif: spdifgrp { ++ fsl,pins = < ++ MX6QDL_PAD_GPIO_16__SPDIF_IN 0x1b0b0 ++ MX6QDL_PAD_GPIO_19__SPDIF_OUT 0x1b0b0 ++ >; ++ }; ++ ++ /* pins for audmux */ ++ pinctrl_audmux: audmuxgrp { ++ fsl,pins = < ++ MX6QDL_PAD_SD2_CMD__AUD4_RXC 0x17059 ++ MX6QDL_PAD_SD2_DAT0__AUD4_RXD 0x17059 ++ MX6QDL_PAD_SD2_DAT3__AUD4_TXC 0x17059 ++ MX6QDL_PAD_SD2_DAT2__AUD4_TXD 0x17059 ++ MX6QDL_PAD_SD2_DAT1__AUD4_TXFS 0x17059 ++ /* master mode pin */ ++ MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 ++ >; ++ }; ++ }; ++}; ++ ++&cpu0 { ++ operating-points = < ++ /* kHz uV */ ++ 996000 1250000 ++ 852000 1250000 ++ 792000 1150000 ++ 396000 975000 ++ >; ++ fsl,soc-operating-points = < ++ /* ARM kHz SOC-PU uV */ ++ 996000 1250000 ++ 852000 1250000 ++ 792000 1175000 ++ 396000 1175000 ++ >; ++}; ++ ++/* spi */ ++&ecspi1 { ++ fsl,spi-num-chipselects = <2>; ++ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ecspi1>; ++ status = "okay"; ++ ++ flash: m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "st,m25px16", "st,m25p"; ++ spi-max-frequency = <20000000>; ++ reg = <0>; ++ ++ partition@0 { ++ label = "uboot"; ++ reg = <0x0 0xc0000>; ++ }; ++ ++ partition@c0000 { ++ label = "uboot environment"; ++ reg = <0xc0000 0x40000>; ++ }; ++ ++ partition@100000 { ++ label = "reserved"; ++ reg = <0x100000 0x100000>; ++ }; ++ }; ++ ++ /* touch controller */ ++ touch: tsc2046@1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_tsc2046>; ++ ++ compatible = "ti,tsc2046"; ++ vcc-supply = <&tsc2046reg>; ++ ++ reg = <1>; /* CS1 */ ++ spi-max-frequency = <1500000>; ++ ++ interrupt-parent = <&gpio2>; ++ interrupts = <15 0>; ++ pendown-gpio = <&gpio2 15 0>; ++ ++ ti,x-min = /bits/ 16 <0x0>; ++ ti,x-max = /bits/ 16 <0x0fff>; ++ ti,y-min = /bits/ 16 <0x0>; ++ ti,y-max = /bits/ 16 <0x0fff>; ++ ++ ti,x-plate-ohms = /bits/ 16 <180>; ++ ti,pressure-max = /bits/ 16 <255>; ++ ++ ti,debounce-max = /bits/ 16 <30>; ++ ti,debounce-tol = /bits/ 16 <10>; ++ ti,debounce-rep = /bits/ 16 <1>; ++ ++ linux,wakeup; ++ }; ++}; ++ ++/* eth0 */ ++&fec { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_enet>; ++ phy-mode = "rgmii"; ++ status = "okay"; ++}; ++ ++/* nand */ ++&gpmi { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpmi_nand>; ++ status = "okay"; ++ ++ partition@0 { ++ label = "linux"; ++ reg = <0x0 0x800000>; ++ }; ++ ++ partition@800000 { ++ label = "rootfs"; ++ reg = < 0x800000 0x0>; ++ }; ++}; ++ ++/* i2c3 */ ++&i2c3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c3>; ++ status = "okay"; ++ ++ eeprom@50 { ++ compatible = "at24,24c02"; ++ reg = <0x50>; ++ pagesize = <16>; ++ }; ++ ++ codec: wm8731@1a { ++ compatible = "wlf,wm8731"; ++ reg = <0x1a>; ++ clocks = <&clks 173>, <&clks 158>, <&clks 201>, <&clks 200>; ++ clock-names = "pll4", "imx-ssi.1", "cko", "cko2"; ++ AVDD-supply = <&pu_dummy>; ++ HPVDD-supply = <&pu_dummy>; ++ DCVDD-supply = <&pu_dummy>; ++ DBVDD-supply = <&pu_dummy>; ++ }; ++}; ++ ++&pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pcie>; ++ reset-gpio = <&gpio1 26 0>; ++ vdd-supply = <&pcie_power_on_gpio>; ++ status = "okay"; ++}; ++ ++/* console */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart4>; ++ status = "okay"; ++}; ++ ++/* usb otg */ ++&usbotg { ++ vbus-supply = <®_usb_otg_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbotg>; ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++/* usb hub1 */ ++&usbh1 { ++ vbus-supply = <®_usb_h1_vbus>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usbh1>; ++ status = "okay"; ++}; ++ ++/* wifi/bt */ ++&usdhc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_mrvl1>; ++ non-removable; ++ vmmc-supply = <&awnh387_npoweron>; ++ vmmc_aux-supply = <&awnh387_wifi_nreset>; ++ status = "okay"; ++}; ++ ++&ssi2 { ++ fsl,mode = "i2s-master"; ++ status = "okay"; ++}; ++ ++&hdmi_core { ++ ipu_id = <1>; ++ disp_id = <0>; ++ status = "okay"; ++}; ++ ++&hdmi_video { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; ++ fsl,hdcp; ++ status = "okay"; ++}; ++ ++&hdmi_audio { ++ status = "okay"; ++}; ++ ++&spdif { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_spdif>; ++ status = "okay"; ++}; ++ ++&audmux { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_audmux>; ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0050-ARM-i.MX6-dts-add-initial-support-for-cm-fx6-DL-S.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0050-ARM-i.MX6-dts-add-initial-support-for-cm-fx6-DL-S.patch new file mode 100644 index 00000000..7c3da0ce --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0050-ARM-i.MX6-dts-add-initial-support-for-cm-fx6-DL-S.patch @@ -0,0 +1,53 @@ +From 7f9cb189d94d973ce8f8211794fc3cb20171ed1a Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Mar 2015 10:15:50 +0200 +Subject: [PATCH 50/59] ARM: i.MX6: dts: add initial support for cm-fx6 DL/S + +Add initial support for cm-fx6 DL/S modules. + +This patch configures: +1) serial console +2) hearbeat led +3) FreeScale NIC +4) pcie +5) Intel I210 NIC +6) Analog audio wm8731-audio + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: fix dtsi file name as per previous patch] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6dl-cm-fx6.dts | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + create mode 100644 arch/arm/boot/dts/imx6dl-cm-fx6.dts + +diff --git a/arch/arm/boot/dts/imx6dl-cm-fx6.dts b/arch/arm/boot/dts/imx6dl-cm-fx6.dts +new file mode 100644 +index 0000000..d33d14c +--- /dev/null ++++ b/arch/arm/boot/dts/imx6dl-cm-fx6.dts +@@ -0,0 +1,21 @@ ++/* ++ * Copyright 2015 CompuLab Ltd. ++ * ++ * Author: Valentin Raevsky <valentin@compulab.co.il> ++ * ++ * 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 "imx6dl.dtsi" ++#include "imx6qdl-cm-fx6.dtsi" ++ ++/ { ++ model = "CompuLab CM-FX6"; ++ compatible = "compulab,cm-fx6", "fsl,imx6dl"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0051-ARM-i.MX6-dts-add-board-files-for-sbc-fx6-DL-S.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0051-ARM-i.MX6-dts-add-board-files-for-sbc-fx6-DL-S.patch new file mode 100644 index 00000000..d727345f --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0051-ARM-i.MX6-dts-add-board-files-for-sbc-fx6-DL-S.patch @@ -0,0 +1,78 @@ +From d979cd240d5aae4344c705524d05dbe5792695b4 Mon Sep 17 00:00:00 2001 +From: Igor Grinberg <grinberg@compulab.co.il> +Date: Mon, 23 Mar 2015 10:21:26 +0200 +Subject: [PATCH 51/59] ARM: i.MX6: dts: add board files for sbc-fx6 DL/S + +Add board files for sbc-fx6 DL/S modules and Utilite Value. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +[grinberg@compulab.co.il: fix dtsi files names as per previous patches] +Signed-off-by: Igor Grinberg <grinberg@compulab.co.il> +--- + arch/arm/boot/dts/imx6dl-sbc-fx6.dts | 23 +++++++++++++++++++++++ + arch/arm/boot/dts/imx6dl-sbc-fx6m.dts | 23 +++++++++++++++++++++++ + 2 files changed, 46 insertions(+) + create mode 100644 arch/arm/boot/dts/imx6dl-sbc-fx6.dts + create mode 100644 arch/arm/boot/dts/imx6dl-sbc-fx6m.dts + +diff --git a/arch/arm/boot/dts/imx6dl-sbc-fx6.dts b/arch/arm/boot/dts/imx6dl-sbc-fx6.dts +new file mode 100644 +index 0000000..723b654 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6dl-sbc-fx6.dts +@@ -0,0 +1,23 @@ ++/* ++* Copyright 2015 CompuLab Ltd. ++* ++* Author: Valentin Raevsky <valentin@compulab.co.il> ++* ++* 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 "imx6dl.dtsi" ++#include "imx6qdl-cm-fx6.dtsi" ++#include "imx6qdl-sb-fx6x.dtsi" ++#include "imx6qdl-sb-fx6.dtsi" ++ ++/ { ++ model = "CompuLab CM-FX6 on SBC-FX6"; ++ compatible = "compulab,cm-fx6", "compulab,sbc-fx6", "fsl,imx6dl"; ++}; +diff --git a/arch/arm/boot/dts/imx6dl-sbc-fx6m.dts b/arch/arm/boot/dts/imx6dl-sbc-fx6m.dts +new file mode 100644 +index 0000000..f66b177 +--- /dev/null ++++ b/arch/arm/boot/dts/imx6dl-sbc-fx6m.dts +@@ -0,0 +1,23 @@ ++/* ++* Copyright 2015 CompuLab Ltd. ++* ++* Author: Valentin Raevsky <valentin@compulab.co.il> ++* ++* 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 "imx6dl.dtsi" ++#include "imx6qdl-cm-fx6.dtsi" ++#include "imx6qdl-sb-fx6x.dtsi" ++#include "imx6qdl-sb-fx6m.dtsi" ++ ++/ { ++ model = "CompuLab CM-FX6 on SBC-FX6m"; ++ compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6dl"; ++}; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0052-ARM-dts-cm-fx6-add-build-targets-for-cm-fx6-flavour-.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0052-ARM-dts-cm-fx6-add-build-targets-for-cm-fx6-flavour-.patch new file mode 100644 index 00000000..e219233b --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0052-ARM-dts-cm-fx6-add-build-targets-for-cm-fx6-flavour-.patch @@ -0,0 +1,55 @@ +From 82c104998b3e0c8c55c3ddab4d41d8a012e40307 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 23 Mar 2015 11:47:54 +0200 +Subject: [PATCH 52/59] ARM: dts: cm-fx6: add build targets for cm-fx6 flavour + boards. + +Add build targets for cm-fx6 flavour boards. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> + +Conflicts: + + arch/arm/boot/dts/Makefile + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/Makefile | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 699bf8f..0d6813e 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -153,6 +153,7 @@ dtb-$(CONFIG_ARCH_MXC) += \ + imx53-mba53.dtb \ + imx53-qsb.dtb \ + imx53-smd.dtb \ ++ imx6dl-cm-fx6.dtb \ + imx6dl-cubox-i.dtb \ + imx6dl-hummingboard.dtb \ + imx6dl-sabreauto.dtb \ +@@ -164,8 +165,11 @@ dtb-$(CONFIG_ARCH_MXC) += \ + imx6dl-sabresd-ldo.dtb \ + imx6dl-sabresd-pf200.dtb \ + imx6dl-sabresd-hdcp.dtb \ ++ imx6dl-sbc-fx6.dtb \ ++ imx6dl-sbc-fx6m.dtb \ + imx6dl-wandboard.dtb \ + imx6q-arm2.dtb \ ++ imx6q-cm-fx6.dtb \ + imx6q-cubox-i.dtb \ + imx6q-phytec-pbab01.dtb \ + imx6q-sabreauto.dtb \ +@@ -179,6 +183,8 @@ dtb-$(CONFIG_ARCH_MXC) += \ + imx6q-sabresd-uart.dtb \ + imx6q-sabresd-hdcp.dtb \ + imx6q-sabresd-ldo.dtb \ ++ imx6q-sbc-fx6.dtb \ ++ imx6q-sbc-fx6m.dtb \ + imx6q-sbc6x.dtb \ + imx6q-udoo.dtb \ + imx6q-wandboard.dtb \ +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0053-ARM-dts-cm-fx6-change-the-hdmi_core-ipu-connection.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0053-ARM-dts-cm-fx6-change-the-hdmi_core-ipu-connection.patch new file mode 100644 index 00000000..493463e3 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0053-ARM-dts-cm-fx6-change-the-hdmi_core-ipu-connection.patch @@ -0,0 +1,47 @@ +From b59a9dad52a2c53b9921d2e8ecb98dd92ee0bd6b Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 25 Mar 2015 17:39:07 +0200 +Subject: [PATCH 53/59] ARM: dts: cm-fx6: change the hdmi_core ipu connection + +Change the hdmi_core ipu connection in order to +allow using the second IPU on quad SBC-FX6 boards with ldb devices. +SBC-FX6m boards still use an IPU per port. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6q-sbc-fx6m.dts | 6 ++++++ + arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi | 4 ++-- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +index 19bf948..dd8c1c0 100644 +--- a/arch/arm/boot/dts/imx6q-sbc-fx6m.dts ++++ b/arch/arm/boot/dts/imx6q-sbc-fx6m.dts +@@ -21,3 +21,9 @@ + model = "CompuLab CM-FX6 on SBC-FX6m"; + compatible = "compulab,cm-fx6", "compulab,sbc-fx6m", "fsl,imx6q"; + }; ++ ++&hdmi_core { ++ ipu_id = <1>; ++ disp_id = <0>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +index 31086b7..4f02e30 100644 +--- a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +@@ -544,8 +544,8 @@ + }; + + &hdmi_core { +- ipu_id = <1>; +- disp_id = <0>; ++ ipu_id = <0>; ++ disp_id = <1>; + status = "okay"; + }; + +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0054-ARM-i.MX6-dts-add-ldb-support-for-SBC-FX6-boards.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0054-ARM-i.MX6-dts-add-ldb-support-for-SBC-FX6-boards.patch new file mode 100644 index 00000000..1ac22288 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0054-ARM-i.MX6-dts-add-ldb-support-for-SBC-FX6-boards.patch @@ -0,0 +1,90 @@ +From e8ab6bcb80954c1b7874c288375defe73242458d Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Wed, 25 Mar 2015 17:55:09 +0200 +Subject: [PATCH 54/59] ARM: i.MX6: dts: add ldb support for SBC-FX6 boards + +Add ldb support for SBC-FX6 boards. +LVDS1/0 ports of the SBC-FX6 are configured. +LVDS0 - IPU1:DISP0 - fb3 +LVDS1 - IPU1:DISP1 - fb5 + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi | 24 ++++++++++++++++++++++++ + arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi | 18 ++++++++++++++++++ + 2 files changed, 42 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +index 4f02e30..d17a4d1 100644 +--- a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +@@ -92,6 +92,8 @@ + aliases { + mxcfb0 = &mxcfb1; + mxcfb1 = &mxcfb2; ++ mxcfb2 = &mxcfb3; ++ mxcfb3 = &mxcfb4; + }; + + sound { +@@ -140,6 +142,28 @@ + status = "disabled"; + }; + ++ mxcfb3: fb@2 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "ldb"; ++ interface_pix_fmt = "RGB666"; ++ mode_str ="1366x768M-18@60"; ++ default_bpp = <16>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ ++ mxcfb4: fb@3 { ++ compatible = "fsl,mxc_sdc_fb"; ++ disp_dev = "ldb"; ++ interface_pix_fmt = "RGB666"; ++ mode_str ="1280x800M-18@60"; ++ default_bpp = <16>; ++ int_clk = <0>; ++ late_init = <0>; ++ status = "disabled"; ++ }; ++ + lcd@0 { + compatible = "fsl,lcd"; + ipu_id = <0>; +diff --git a/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +index 129e88e..85836d7 100644 +--- a/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-sb-fx6.dtsi +@@ -90,6 +90,24 @@ + status = "okay"; + }; + ++&mxcfb3 { ++ status = "okay"; ++}; ++ ++&mxcfb4 { ++ status = "okay"; ++}; ++ ++&ldb { ++ ipu_id = <1>; ++ disp_id = <0>; ++ ext_ref = <1>; ++ mode = "sep0"; ++ sec_ipu_id = <1>; ++ sec_disp_id = <1>; ++ status = "okay"; ++}; ++ + &flexcan1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_flexcan1_1>; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0055-ARM-dts-cm-fx6-IOMUXC_GPR1-6-7-to-set-correct-values.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0055-ARM-dts-cm-fx6-IOMUXC_GPR1-6-7-to-set-correct-values.patch new file mode 100644 index 00000000..7abbf958 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0055-ARM-dts-cm-fx6-IOMUXC_GPR1-6-7-to-set-correct-values.patch @@ -0,0 +1,47 @@ +From 8aa5e04aeeb40323b6f7615b500058c02115d17f Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Mon, 30 Mar 2015 11:29:07 +0300 +Subject: [PATCH 55/59] ARM: dts: cm-fx6: IOMUXC_GPR1/6/7 to set correct + values + +Add IOMUXC_GPR1/6/7 registers to the iomux default pinctrl group. +The IOMUXC_GPR1 register must have default value in order to let the SoC boot up after a warm reboot. +IOMUXC_GPR6/7 registers must have a correct value for the ipu QoS priority. +Otherwise the SoC reports on: +1) the interrupt that is a result of a time out error during a read access via DIx. +2) a new frame starts before the previous end-of-frame event. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +index d17a4d1..cff8d4e 100644 +--- a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +@@ -11,6 +11,10 @@ + * http://www.gnu.org/copyleft/gpl.html + */ + ++#define MX6QDL_GPR1 0x04 0x04 0x000 0x0 0x0 ++#define MX6QDL_GPR6 0x18 0x18 0x000 0x0 0x0 ++#define MX6QDL_GPR7 0x1c 0x1c 0x000 0x0 0x0 ++ + / { + memory { + reg = <0x10000000 0x20000000>; +@@ -187,6 +191,10 @@ + hog { + pinctrl_hog: hoggrp { + fsl,pins = < ++ MX6QDL_GPR1 0x48400005 ++ /* ipu3 QoS */ ++ MX6QDL_GPR6 0x007f007f ++ MX6QDL_GPR7 0x007f007f + /* SATA PWR */ + MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 + MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x80000000 +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0056-i2c-fix-i2c_of-include.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0056-i2c-fix-i2c_of-include.patch new file mode 100644 index 00000000..9e78f041 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0056-i2c-fix-i2c_of-include.patch @@ -0,0 +1,30 @@ +From cdf878ae149301273767ed4f5052def1529c6cfa Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 9 Apr 2015 13:27:01 +0300 +Subject: [PATCH 56/59] i2c: fix i2c_of include + +The OF helpers have been moved to the core. +As a result the i2c_of.h does not exist anymore. +Fix i2c_of include with respect to the latest core implementation. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + sound/soc/fsl/imx-wm8731.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/soc/fsl/imx-wm8731.c b/sound/soc/fsl/imx-wm8731.c +index c0833cf..7248042 100644 +--- a/sound/soc/fsl/imx-wm8731.c ++++ b/sound/soc/fsl/imx-wm8731.c +@@ -16,7 +16,7 @@ + #include <linux/module.h> + #include <linux/of.h> + #include <linux/of_platform.h> +-#include <linux/of_i2c.h> ++#include <linux/i2c.h> + #include <linux/clk.h> + #include <sound/soc.h> + #include <sound/pcm_params.h> +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0057-ARM-dts-cm-fx6-fix-missing-defines.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0057-ARM-dts-cm-fx6-fix-missing-defines.patch new file mode 100644 index 00000000..30ed8bf9 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0057-ARM-dts-cm-fx6-fix-missing-defines.patch @@ -0,0 +1,66 @@ +From 9388d08644b2397682db8d5cfce894e42e128999 Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 9 Apr 2015 13:30:42 +0300 +Subject: [PATCH 57/59] ARM: dts: cm-fx6: fix missing defines + +Fix missing defines that have been changed since 3.10.17 + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi | 26 +++++++++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +index cff8d4e..e8f80bc 100644 +--- a/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi ++++ b/arch/arm/boot/dts/imx6qdl-cm-fx6.dtsi +@@ -182,6 +182,10 @@ + compatible = "fsl,mxc_v4l2_output"; + status = "okay"; + }; ++ ++ pu_dummy: pudummy_reg { ++ compatible = "fsl,imx6-dummy-pureg"; /* only used in ldo-bypass */ ++ }; + }; + + &iomuxc { +@@ -397,6 +401,26 @@ + MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x17059 + >; + }; ++ ++ pinctrl_hdmi_hdcp: hdmihdcpgrp { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_COL3__HDMI_TX_DDC_SCL 0x4001b8b1 ++ MX6QDL_PAD_KEY_ROW3__HDMI_TX_DDC_SDA 0x4001b8b1 ++ >; ++ }; ++ ++ pinctrl_pwm3_1: pwm3grp-1 { ++ fsl,pins = < ++ MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 ++ >; ++ }; ++ ++ pinctrl_flexcan1_1: flexcan1grp-1 { ++ fsl,pins = < ++ MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000 ++ MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX 0x80000000 ++ >; ++ }; + }; + }; + +@@ -583,7 +607,7 @@ + + &hdmi_video { + pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hdmi_hdcp_1>; ++ pinctrl-0 = <&pinctrl_hdmi_hdcp>; + fsl,hdcp; + status = "okay"; + }; +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0058-imx6-hdmi-add-missing-definition.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0058-imx6-hdmi-add-missing-definition.patch new file mode 100644 index 00000000..9caceb04 --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0058-imx6-hdmi-add-missing-definition.patch @@ -0,0 +1,27 @@ +From 3cb466070695ae9586aa52d668976c590f66008c Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 9 Apr 2015 14:01:38 +0300 +Subject: [PATCH 58/59] imx6: hdmi: add missing definition + +IMX6Q_GPR3_HDMI_MUX_CTL_SHIFT + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + include/linux/mfd/syscon/imx6q-iomuxc-gpr.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h +index f6515b5..a5f996f 100644 +--- a/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h ++++ b/include/linux/mfd/syscon/imx6q-iomuxc-gpr.h +@@ -215,6 +215,7 @@ + #define IMX6Q_GPR3_MIPI_MUX_CTL_IPU1_DI1 (0x1 << 4) + #define IMX6Q_GPR3_MIPI_MUX_CTL_IPU2_DI0 (0x2 << 4) + #define IMX6Q_GPR3_MIPI_MUX_CTL_IPU2_DI1 (0x3 << 4) ++#define IMX6Q_GPR3_HDMI_MUX_CTL_SHIFT 2 + #define IMX6Q_GPR3_HDMI_MUX_CTL_MASK (0x3 << 2) + #define IMX6Q_GPR3_HDMI_MUX_CTL_IPU1_DI0 (0x0 << 2) + #define IMX6Q_GPR3_HDMI_MUX_CTL_IPU1_DI1 (0x1 << 2) +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0059-ARM-i.MX6-cm-fx6-update-defconfig.patch b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0059-ARM-i.MX6-cm-fx6-update-defconfig.patch new file mode 100644 index 00000000..80f9fe0e --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/0059-ARM-i.MX6-cm-fx6-update-defconfig.patch @@ -0,0 +1,211 @@ +From 2a61f4133182c9c5b63ceb9f73cbc9bbc758c29a Mon Sep 17 00:00:00 2001 +From: Valentin Raevsky <valentin@compulab.co.il> +Date: Thu, 16 Apr 2015 14:55:42 +0300 +Subject: [PATCH 59/59] ARM: i.MX6: cm-fx6: update defconfig + +Update the cm_fx6_defconfig with respect to +the kernel release after applying the 3.10.17 patches. + +Signed-off-by: Valentin Raevsky <valentin@compulab.co.il> +--- + arch/arm/configs/cm_fx6_defconfig | 55 ++++++++++++++++--------------------- + 1 file changed, 24 insertions(+), 31 deletions(-) + +diff --git a/arch/arm/configs/cm_fx6_defconfig b/arch/arm/configs/cm_fx6_defconfig +index 7d753ae..a247438 100644 +--- a/arch/arm/configs/cm_fx6_defconfig ++++ b/arch/arm/configs/cm_fx6_defconfig +@@ -1,3 +1,4 @@ ++CONFIG_LOCALVERSION="-cm-fx6" + CONFIG_KERNEL_LZO=y + CONFIG_SYSVIPC=y + CONFIG_NO_HZ=y +@@ -25,8 +26,8 @@ CONFIG_MACH_EUKREA_CPUIMX51SD=y + CONFIG_SOC_IMX53=y + CONFIG_SOC_IMX6Q=y + CONFIG_SOC_IMX6SL=y ++CONFIG_SOC_IMX6SX=y + CONFIG_SOC_VF610=y +-CONFIG_MACH_CM_FX6=y + # CONFIG_SWP_EMULATE is not set + CONFIG_PCI=y + CONFIG_PCI_IMX6=y +@@ -34,16 +35,16 @@ CONFIG_SMP=y + CONFIG_VMSPLIT_2G=y + CONFIG_PREEMPT=y + CONFIG_AEABI=y +-# CONFIG_OABI_COMPAT is not set + CONFIG_HIGHMEM=y +-CONFIG_CMDLINE="noinitrd console=ttymxc0,115200" ++CONFIG_CMA=y ++CONFIG_CMDLINE="console=ttymxc3,115200 root=/dev/mmcblk0p1 rootwait" + CONFIG_CPU_FREQ=y + CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y + CONFIG_CPU_FREQ_GOV_POWERSAVE=y + CONFIG_CPU_FREQ_GOV_USERSPACE=y + CONFIG_CPU_FREQ_GOV_ONDEMAND=y + CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +-CONFIG_ARM_IMX6_CPUFREQ=y ++CONFIG_ARM_IMX6Q_CPUFREQ=y + CONFIG_CPU_IDLE=y + CONFIG_VFP=y + CONFIG_NEON=y +@@ -147,8 +148,6 @@ CONFIG_MAC80211=y + CONFIG_DEVTMPFS=y + CONFIG_DEVTMPFS_MOUNT=y + # CONFIG_STANDALONE is not set +-CONFIG_CMA=y +-CONFIG_CMA_SIZE_MBYTES=320 + CONFIG_IMX_WEIM=y + CONFIG_CONNECTOR=y + CONFIG_MTD=y +@@ -161,7 +160,6 @@ CONFIG_MTD_CFI_AMDSTD=y + CONFIG_MTD_CFI_STAA=y + CONFIG_MTD_PHYSMAP_OF=y + CONFIG_MTD_DATAFLASH=y +-CONFIG_MTD_M25P80=y + CONFIG_MTD_SST25L=y + CONFIG_MTD_NAND=y + CONFIG_MTD_NAND_GPMI_NAND=y +@@ -221,7 +219,6 @@ CONFIG_INPUT_MISC=y + CONFIG_INPUT_MMA8450=y + CONFIG_INPUT_ISL29023=y + CONFIG_SERIO_SERPORT=m +-CONFIG_VT_HW_CONSOLE_BINDING=y + # CONFIG_LEGACY_PTYS is not set + # CONFIG_DEVKMEM is not set + CONFIG_SERIAL_IMX=y +@@ -229,10 +226,8 @@ CONFIG_SERIAL_IMX_CONSOLE=y + CONFIG_SERIAL_FSL_LPUART=y + CONFIG_SERIAL_FSL_LPUART_CONSOLE=y + CONFIG_FSL_OTP=y +-CONFIG_MXS_VIIM=y + # CONFIG_I2C_COMPAT is not set + CONFIG_I2C_CHARDEV=y +-CONFIG_I2C_MUX=y + CONFIG_I2C_MUX_GPIO=y + CONFIG_I2C_MUX_PCA954x=y + # CONFIG_I2C_HELPER_AUTO is not set +@@ -259,24 +254,21 @@ CONFIG_MFD_MC13XXX_I2C=y + CONFIG_MFD_MAX17135=y + CONFIG_MFD_SI476X_CORE=y + CONFIG_REGULATOR=y +-CONFIG_REGULATOR_DUMMY=y + CONFIG_REGULATOR_FIXED_VOLTAGE=y +-CONFIG_REGULATOR_DA9052=y + CONFIG_REGULATOR_ANATOP=y ++CONFIG_REGULATOR_DA9052=y ++CONFIG_REGULATOR_MAX17135=y + CONFIG_REGULATOR_MC13783=y + CONFIG_REGULATOR_MC13892=y +-CONFIG_REGULATOR_MAX17135=y + CONFIG_REGULATOR_PFUZE100=y + CONFIG_MEDIA_SUPPORT=y + CONFIG_MEDIA_CAMERA_SUPPORT=y + CONFIG_MEDIA_RADIO_SUPPORT=y +-CONFIG_VIDEO_V4L2_INT_DEVICE=y + CONFIG_MEDIA_USB_SUPPORT=y + CONFIG_USB_VIDEO_CLASS=m + CONFIG_V4L_PLATFORM_DRIVERS=y + CONFIG_VIDEO_MXC_OUTPUT=y + CONFIG_VIDEO_MXC_CAPTURE=m +-CONFIG_VIDEO_MXC_CSI_CAMERA=m + CONFIG_MXC_CAMERA_OV5640=m + CONFIG_MXC_CAMERA_OV5642=m + CONFIG_MXC_CAMERA_OV5640_MIPI=m +@@ -284,13 +276,13 @@ CONFIG_MXC_TVIN_ADV7180=m + CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m + CONFIG_VIDEO_MXC_IPU_OUTPUT=y + CONFIG_VIDEO_MXC_PXP_V4L2=y ++CONFIG_VIDEO_MXC_CSI_CAMERA=m + CONFIG_SOC_CAMERA=y + CONFIG_VIDEO_MX3=y + CONFIG_RADIO_SI476X=y + CONFIG_SOC_CAMERA_OV2640=y + CONFIG_DRM=y + CONFIG_DRM_VIVANTE=y +-CONFIG_FB=y + CONFIG_FB_MXS=y + CONFIG_BACKLIGHT_LCD_SUPPORT=y + CONFIG_LCD_CLASS_DEVICE=y +@@ -307,25 +299,20 @@ CONFIG_FB_MXC_EINK_PANEL=y + CONFIG_FB_MXS_SII902X=y + CONFIG_HANNSTAR_CABC=y + CONFIG_FRAMEBUFFER_CONSOLE=y +-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +-CONFIG_FONTS=y +-CONFIG_FONT_8x8=y +-CONFIG_FONT_8x16=y + CONFIG_LOGO=y + CONFIG_SOUND=y + CONFIG_SND=y + CONFIG_SND_USB_AUDIO=m + CONFIG_SND_SOC=y ++CONFIG_SND_SOC_FSL_ASRC=y ++CONFIG_SND_SOC_FSL_SAI=y ++CONFIG_SND_SOC_FSL_SSI=y ++CONFIG_SND_SOC_FSL_ESAI=y ++CONFIG_SND_SOC_IMX_AUDMUX=y + CONFIG_SND_IMX_SOC=y +-CONFIG_SND_SOC_EUKREA_TLV320=y +-CONFIG_SND_SOC_IMX_CS42888=y +-CONFIG_SND_SOC_IMX_WM8731=y +-CONFIG_SND_SOC_IMX_WM8962=y +-CONFIG_SND_SOC_IMX_SGTL5000=y + CONFIG_SND_SOC_IMX_SPDIF=y +-CONFIG_SND_SOC_IMX_MC13783=y + CONFIG_SND_SOC_IMX_HDMI=y +-CONFIG_SND_SOC_IMX_SI476X=y ++CONFIG_SND_SOC_CS42XX8_I2C=y + CONFIG_USB=y + CONFIG_USB_OTG=y + CONFIG_USB_EHCI_HCD=y +@@ -335,7 +322,6 @@ CONFIG_USB_STORAGE=y + CONFIG_USB_CHIPIDEA=y + CONFIG_USB_CHIPIDEA_UDC=y + CONFIG_USB_CHIPIDEA_HOST=y +-CONFIG_USB_PHY=y + CONFIG_NOP_USB_XCEIV=y + CONFIG_USB_MXS_PHY=y + CONFIG_USB_GADGET=y +@@ -352,7 +338,6 @@ CONFIG_MMC_SDHCI_PLTFM=y + CONFIG_MMC_SDHCI_ESDHC_IMX=y + CONFIG_MXC_IPU=y + CONFIG_MXC_GPU_VIV=y +-CONFIG_MXC_ASRC=y + CONFIG_MXC_MIPI_CSI2=y + CONFIG_MXC_MLB150=m + CONFIG_NEW_LEDS=y +@@ -371,7 +356,13 @@ CONFIG_MXC_PXP_V2=y + CONFIG_IMX_SDMA=y + CONFIG_MXS_DMA=y + CONFIG_STAGING=y +-CONFIG_COMMON_CLK_DEBUG=y ++CONFIG_DRM_IMX=y ++CONFIG_DRM_IMX_FB_HELPER=y ++CONFIG_DRM_IMX_PARALLEL_DISPLAY=y ++CONFIG_DRM_IMX_LDB=y ++CONFIG_DRM_IMX_IPUV3_CORE=y ++CONFIG_DRM_IMX_IPUV3=y ++CONFIG_DRM_IMX_HDMI=y + # CONFIG_IOMMU_SUPPORT is not set + CONFIG_PWM=y + CONFIG_PWM_IMX=y +@@ -416,7 +407,6 @@ CONFIG_MAGIC_SYSRQ=y + CONFIG_SECURITYFS=y + CONFIG_CRYPTO_USER=y + CONFIG_CRYPTO_TEST=m +-CONFIG_CRYPTO_CCM=y + CONFIG_CRYPTO_GCM=y + CONFIG_CRYPTO_CBC=y + CONFIG_CRYPTO_CTS=y +@@ -448,3 +438,6 @@ CONFIG_CRC_CCITT=m + CONFIG_CRC_T10DIF=y + CONFIG_CRC7=m + CONFIG_LIBCRC32C=m ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y +-- +1.7.9.5 + diff --git a/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/defconfig b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/defconfig new file mode 100644 index 00000000..a247438e --- /dev/null +++ b/bsp/meta-freescale-3rdparty/recipes-kernel/linux/linux-compulab-3.14.28/defconfig @@ -0,0 +1,443 @@ +CONFIG_LOCALVERSION="-cm-fx6" +CONFIG_KERNEL_LZO=y +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EXPERT=y +CONFIG_PERF_EVENTS=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_GPIO_PCA953X=y +CONFIG_ARCH_MXC=y +CONFIG_MXC_DEBUG_BOARD=y +CONFIG_MACH_IMX51_DT=y +CONFIG_MACH_EUKREA_CPUIMX51SD=y +CONFIG_SOC_IMX53=y +CONFIG_SOC_IMX6Q=y +CONFIG_SOC_IMX6SL=y +CONFIG_SOC_IMX6SX=y +CONFIG_SOC_VF610=y +# CONFIG_SWP_EMULATE is not set +CONFIG_PCI=y +CONFIG_PCI_IMX6=y +CONFIG_SMP=y +CONFIG_VMSPLIT_2G=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_HIGHMEM=y +CONFIG_CMA=y +CONFIG_CMDLINE="console=ttymxc3,115200 root=/dev/mmcblk0p1 rootwait" +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_ARM_IMX6Q_CPUFREQ=y +CONFIG_CPU_IDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_BINFMT_MISC=m +CONFIG_PM_RUNTIME=y +CONFIG_PM_DEBUG=y +CONFIG_PM_TEST_SUSPEND=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_IPV6=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_DEBUG=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT_IPV4=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_CAN=y +CONFIG_CAN_FLEXCAN=y +CONFIG_BT=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_IMX_WEIM=y +CONFIG_CONNECTOR=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_GPMI_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_AHCI_IMX=y +CONFIG_PATA_IMX=y +CONFIG_NETDEVICES=y +CONFIG_TUN=m +# CONFIG_NET_VENDOR_BROADCOM is not set +CONFIG_CS89x0=y +CONFIG_CS89x0_PLATFORM=y +# CONFIG_NET_VENDOR_FARADAY is not set +CONFIG_IGB=m +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_SEEQ is not set +CONFIG_SMC91X=y +CONFIG_SMC911X=y +CONFIG_SMSC911X=y +# CONFIG_NET_VENDOR_STMICRO is not set +CONFIG_ATH_CARDS=y +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_EVBUG=m +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_EGALAX=y +CONFIG_TOUCHSCREEN_ELAN=y +CONFIG_TOUCHSCREEN_MAX11801=y +CONFIG_TOUCHSCREEN_MC13783=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=y +CONFIG_INPUT_ISL29023=y +CONFIG_SERIO_SERPORT=m +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_FSL_LPUART=y +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_FSL_OTP=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX_GPIO=y +CONFIG_I2C_MUX_PCA954x=y +# CONFIG_I2C_HELPER_AUTO is not set +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_SUPPLY=y +CONFIG_SABRESD_MAX8903=y +CONFIG_IMX6_USB_CHARGER=y +CONFIG_SENSORS_MAX17135=y +CONFIG_SENSORS_MAG3110=y +CONFIG_THERMAL=y +CONFIG_CPU_THERMAL=y +CONFIG_IMX_THERMAL=y +CONFIG_DEVICE_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_MC13XXX_SPI=y +CONFIG_MFD_MC13XXX_I2C=y +CONFIG_MFD_MAX17135=y +CONFIG_MFD_SI476X_CORE=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_ANATOP=y +CONFIG_REGULATOR_DA9052=y +CONFIG_REGULATOR_MAX17135=y +CONFIG_REGULATOR_MC13783=y +CONFIG_REGULATOR_MC13892=y +CONFIG_REGULATOR_PFUZE100=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_MXC_OUTPUT=y +CONFIG_VIDEO_MXC_CAPTURE=m +CONFIG_MXC_CAMERA_OV5640=m +CONFIG_MXC_CAMERA_OV5642=m +CONFIG_MXC_CAMERA_OV5640_MIPI=m +CONFIG_MXC_TVIN_ADV7180=m +CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m +CONFIG_VIDEO_MXC_IPU_OUTPUT=y +CONFIG_VIDEO_MXC_PXP_V4L2=y +CONFIG_VIDEO_MXC_CSI_CAMERA=m +CONFIG_SOC_CAMERA=y +CONFIG_VIDEO_MX3=y +CONFIG_RADIO_SI476X=y +CONFIG_SOC_CAMERA_OV2640=y +CONFIG_DRM=y +CONFIG_DRM_VIVANTE=y +CONFIG_FB_MXS=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_LCD_L4F00242T03=y +CONFIG_LCD_PLATFORM=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_FB_MXC_SYNC_PANEL=y +CONFIG_FB_MXC_LDB=y +CONFIG_FB_MXC_MIPI_DSI=y +CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y +CONFIG_FB_MXC_HDMI=y +CONFIG_FB_MXC_EINK_PANEL=y +CONFIG_FB_MXS_SII902X=y +CONFIG_HANNSTAR_CABC=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_SOC=y +CONFIG_SND_SOC_FSL_ASRC=y +CONFIG_SND_SOC_FSL_SAI=y +CONFIG_SND_SOC_FSL_SSI=y +CONFIG_SND_SOC_FSL_ESAI=y +CONFIG_SND_SOC_IMX_AUDMUX=y +CONFIG_SND_IMX_SOC=y +CONFIG_SND_SOC_IMX_SPDIF=y +CONFIG_SND_SOC_IMX_HDMI=y +CONFIG_SND_SOC_CS42XX8_I2C=y +CONFIG_USB=y +CONFIG_USB_OTG=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_MXS_PHY=y +CONFIG_USB_GADGET=y +CONFIG_USB_FSL_USB2=y +CONFIG_USB_ZERO=m +CONFIG_USB_AUDIO=m +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_MMC=y +CONFIG_MMC_UNSAFE_RESUME=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MXC_IPU=y +CONFIG_MXC_GPU_VIV=y +CONFIG_MXC_MIPI_CSI2=y +CONFIG_MXC_MLB150=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_EM3027=y +CONFIG_RTC_DRV_MC13XXX=y +CONFIG_RTC_DRV_MXC=y +CONFIG_RTC_DRV_SNVS=y +CONFIG_DMADEVICES=y +CONFIG_MXC_PXP_V2=y +CONFIG_IMX_SDMA=y +CONFIG_MXS_DMA=y +CONFIG_STAGING=y +CONFIG_DRM_IMX=y +CONFIG_DRM_IMX_FB_HELPER=y +CONFIG_DRM_IMX_PARALLEL_DISPLAY=y +CONFIG_DRM_IMX_LDB=y +CONFIG_DRM_IMX_IPUV3_CORE=y +CONFIG_DRM_IMX_IPUV3=y +CONFIG_DRM_IMX_HDMI=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_PWM=y +CONFIG_PWM_IMX=y +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_UTF8=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_FTRACE is not set +CONFIG_SECURITYFS=y +CONFIG_CRYPTO_USER=y +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=y +CONFIG_CRYPTO_XTS=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +CONFIG_CRYPTO_RMD128=y +CONFIG_CRYPTO_RMD160=y +CONFIG_CRYPTO_RMD256=y +CONFIG_CRYPTO_RMD320=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_TGR192=y +CONFIG_CRYPTO_WP512=y +CONFIG_CRYPTO_BLOWFISH=y +CONFIG_CRYPTO_CAMELLIA=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_TWOFISH=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DEV_FSL_CAAM=y +CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y +CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=y +CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=y +CONFIG_CRC_CCITT=m +CONFIG_CRC_T10DIF=y +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y |