diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2016-06-19 23:31:38 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2016-06-19 23:31:52 +0200 |
commit | 0dc6006d7b1acfbba6790287cc3afbf34f14ef6a (patch) | |
tree | f4a7d85a1c441e9559f4d13d3d11abf376404446 /target/arm | |
parent | a6d2c6d3270fdcff05a873c33fed5ceade300b8e (diff) |
linux: update to 3.14.72, add working solidrun patch
Diffstat (limited to 'target/arm')
-rw-r--r-- | target/arm/bcm28xx/patches/4.1.26/0001-raspberry-pi-github.patch (renamed from target/arm/bcm28xx/patches/4.1.24/0001-raspberry-pi-github.patch) | 0 | ||||
-rw-r--r-- | target/arm/kernel/solidrun-imx6 | 1 | ||||
-rw-r--r-- | target/arm/solidrun-imx6/patches/3.14.69/0001-cec-hdmi.patch | 133 | ||||
-rw-r--r-- | target/arm/solidrun-imx6/patches/3.14.72/0001-solidrun-imx6.patch | 696919 | ||||
-rw-r--r-- | target/arm/solidrun-imx6/patches/4.1.26/0001-xbian.patch (renamed from target/arm/solidrun-imx6/patches/4.1.24/0001-xbian.patch) | 0 | ||||
-rw-r--r-- | target/arm/solidrun-imx6/patches/4.1.26/0002-rt.patch (renamed from target/arm/solidrun-imx6/patches/4.1.24/0002-rt.patch) | 0 |
6 files changed, 696920 insertions, 133 deletions
diff --git a/target/arm/bcm28xx/patches/4.1.24/0001-raspberry-pi-github.patch b/target/arm/bcm28xx/patches/4.1.26/0001-raspberry-pi-github.patch index 6f9089b88..6f9089b88 100644 --- a/target/arm/bcm28xx/patches/4.1.24/0001-raspberry-pi-github.patch +++ b/target/arm/bcm28xx/patches/4.1.26/0001-raspberry-pi-github.patch diff --git a/target/arm/kernel/solidrun-imx6 b/target/arm/kernel/solidrun-imx6 index 874ed9183..093090111 100644 --- a/target/arm/kernel/solidrun-imx6 +++ b/target/arm/kernel/solidrun-imx6 @@ -9,5 +9,6 @@ CONFIG_LOCAL_TIMERS=y CONFIG_MXC_DEBUG_BOARD=y CONFIG_KUSER_HELPERS=y CONFIG_PCI_IMX6=y +CONFIG_PM_SLEEP=y CONFIG_ATAGS=y CONFIG_CMDLINE_FORCE=y diff --git a/target/arm/solidrun-imx6/patches/3.14.69/0001-cec-hdmi.patch b/target/arm/solidrun-imx6/patches/3.14.69/0001-cec-hdmi.patch deleted file mode 100644 index 6fbc80b00..000000000 --- a/target/arm/solidrun-imx6/patches/3.14.69/0001-cec-hdmi.patch +++ /dev/null @@ -1,133 +0,0 @@ -diff -Nur linux-3.14.45.orig/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c linux-3.14.45/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c ---- linux-3.14.45.orig/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c 2015-07-16 01:45:57.033999867 -0500 -+++ linux-3.14.45/drivers/mxc/hdmi-cec/mxc_hdmi-cec.c 2015-07-16 01:44:12.826000821 -0500 -@@ -67,7 +67,6 @@ - u8 msg_len; - int tx_answer; - u16 latest_cec_stat; -- u8 link_status; - spinlock_t irq_lock; - struct delayed_work hdmi_cec_work; - struct mutex lock; -@@ -83,8 +82,6 @@ - - static LIST_HEAD(head); - --static int hdmi_cec_ready = 0; --static int hdmi_cec_started; - static int hdmi_cec_major; - static struct class *hdmi_cec_class; - static struct hdmi_cec_priv hdmi_cec_data; -@@ -98,7 +95,6 @@ - struct hdmi_cec_priv *hdmi_cec = data; - u16 cec_stat = 0; - unsigned long flags; -- u8 phy_stat0; - irqreturn_t ret = IRQ_HANDLED; - - spin_lock_irqsave(&hdmi_cec->irq_lock, flags); -@@ -107,7 +103,6 @@ - - cec_stat = hdmi_readb(HDMI_IH_CEC_STAT0); - hdmi_writeb(cec_stat, HDMI_IH_CEC_STAT0); -- phy_stat0 = hdmi_readb(HDMI_PHY_STAT0) & 0x02; - - if ((cec_stat & (HDMI_IH_CEC_STAT0_ERROR_INIT | \ - HDMI_IH_CEC_STAT0_NACK | HDMI_IH_CEC_STAT0_EOM | \ -@@ -115,14 +110,7 @@ - ret = IRQ_NONE; - cec_stat = 0; - } -- if (hdmi_cec->link_status ^ phy_stat0) { -- /* HPD value changed */ -- hdmi_cec->link_status = phy_stat0; -- if (hdmi_cec->link_status) -- cec_stat |= 0x80; /* Connected */ -- else -- cec_stat |= 0x100; /* Disconnected */ -- } -+ - pr_debug("HDMI CEC interrupt received\n"); - hdmi_cec->latest_cec_stat = cec_stat ; - -@@ -315,7 +303,7 @@ - mutex_unlock(&hdmi_cec_data.lock); - return -EACCES; - } -- /* Ensure that there is only one writer who is the only listener of tx_cec_queue */ -+ /* Ensure that there is only one writer who is the unique listener of tx_cec_queue */ - if (hdmi_cec_data.tx_answer != CEC_TX_AVAIL) { - mutex_unlock(&hdmi_cec_data.lock); - return -EBUSY; -@@ -363,9 +351,6 @@ - { - u8 val; - -- if (!hdmi_cec_ready || hdmi_cec_started) -- return; -- - val = hdmi_readb(HDMI_MC_CLKDIS); - val &= ~HDMI_MC_CLKDIS_CECCLK_DISABLE; - hdmi_writeb(val, HDMI_MC_CLKDIS); -@@ -377,12 +362,7 @@ - val = HDMI_IH_CEC_STAT0_WAKEUP | HDMI_IH_CEC_STAT0_ERROR_FOLL | HDMI_IH_CEC_STAT0_ARB_LOST; - hdmi_writeb(val, HDMI_CEC_MASK); - hdmi_writeb(val, HDMI_IH_MUTE_CEC_STAT0); -- hdmi_cec_data.link_status = hdmi_readb(HDMI_PHY_STAT0) & 0x02; -- mutex_lock(&hdmi_cec_data.lock); - hdmi_cec_data.cec_state = true; -- mutex_unlock(&hdmi_cec_data.lock); -- -- hdmi_cec_started = 1; - } - EXPORT_SYMBOL(hdmi_cec_start_device); - -@@ -390,9 +370,6 @@ - { - u8 val; - -- if (!hdmi_cec_ready || !hdmi_cec_started) -- return; -- - hdmi_writeb(0x10, HDMI_CEC_CTRL); - val = HDMI_IH_CEC_STAT0_WAKEUP | HDMI_IH_CEC_STAT0_ERROR_FOLL | HDMI_IH_CEC_STAT0_ERROR_INIT | HDMI_IH_CEC_STAT0_ARB_LOST | \ - HDMI_IH_CEC_STAT0_NACK | HDMI_IH_CEC_STAT0_EOM | HDMI_IH_CEC_STAT0_DONE; -@@ -402,11 +379,7 @@ - val = hdmi_readb(HDMI_MC_CLKDIS); - val |= HDMI_MC_CLKDIS_CECCLK_DISABLE; - hdmi_writeb(val, HDMI_MC_CLKDIS); -- mutex_lock(&hdmi_cec_data.lock); - hdmi_cec_data.cec_state = false; -- mutex_unlock(&hdmi_cec_data.lock); -- -- hdmi_cec_started = 0; - } - EXPORT_SYMBOL(hdmi_cec_stop_device); - -@@ -481,11 +454,18 @@ - */ - static int hdmi_cec_release(struct inode *inode, struct file *filp) - { -+ struct hdmi_cec_event *event, *tmp_event; - mutex_lock(&hdmi_cec_data.lock); - if (open_count) { - open_count = 0; - hdmi_cec_data.cec_state = false; - hdmi_cec_data.Logical_address = 15; -+ -+ /* Flush eventual events which have not been read by user space */ -+ list_for_each_entry_safe(event, tmp_event, &head, list) { -+ list_del(&event->list); -+ vfree(event); -+ } - } - mutex_unlock(&hdmi_cec_data.lock); - -@@ -580,7 +560,6 @@ - INIT_DELAYED_WORK(&hdmi_cec_data.hdmi_cec_work, mxc_hdmi_cec_worker); - - dev_info(&pdev->dev, "HDMI CEC initialized\n"); -- hdmi_cec_ready = 1; - goto out; - - err_out_class: diff --git a/target/arm/solidrun-imx6/patches/3.14.72/0001-solidrun-imx6.patch b/target/arm/solidrun-imx6/patches/3.14.72/0001-solidrun-imx6.patch new file mode 100644 index 000000000..3e6393cb2 --- /dev/null +++ b/target/arm/solidrun-imx6/patches/3.14.72/0001-solidrun-imx6.patch @@ -0,0 +1,696919 @@ +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-cm-fx6.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-cm-fx6.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-cm-fx6.dts 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-cm-fx6.dts 2016-06-19 22:11:55.009158180 +0200 +@@ -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"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-cubox-i.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-cubox-i.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-cubox-i.dts 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-cubox-i.dts 2016-06-19 22:11:55.009158180 +0200 +@@ -1,5 +1,43 @@ + /* + * Copyright (C) 2014 Russell King ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License. ++ * ++ * This file is distributed in the hope that it will be useful ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. + */ + /dts-v1/; + +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl.dtsi linux-3.14.72/arch/arm/boot/dts/imx6dl.dtsi +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl.dtsi 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl.dtsi 2016-06-19 22:11:55.009158180 +0200 +@@ -8,6 +8,7 @@ + * + */ + ++#include <dt-bindings/interrupt-controller/irq.h> + #include "imx6dl-pinfunc.h" + #include "imx6qdl.dtsi" + +@@ -16,11 +17,37 @@ + #address-cells = <1>; + #size-cells = <0>; + +- cpu@0 { ++ cpu0: cpu@0 { + compatible = "arm,cortex-a9"; + device_type = "cpu"; + reg = <0>; + next-level-cache = <&L2>; ++ operating-points = < ++ /* kHz uV */ ++ 996000 1275000 ++ 792000 1175000 ++ 396000 1175000 ++ >; ++ fsl,soc-operating-points = < ++ /* ARM kHz SOC-PU uV */ ++ 996000 1175000 ++ 792000 1175000 ++ 396000 1175000 ++ >; ++ clock-latency = <61036>; /* two CLK32 periods */ ++ clocks = <&clks IMX6QDL_CLK_ARM>, ++ <&clks IMX6QDL_CLK_PLL2_PFD2_396M>, ++ <&clks IMX6QDL_CLK_STEP>, ++ <&clks IMX6QDL_CLK_PLL1_SW>, ++ <&clks IMX6QDL_CLK_PLL1_SYS>, ++ <&clks IMX6QDL_PLL1_BYPASS>, ++ <&clks IMX6QDL_CLK_PLL1>, ++ <&clks IMX6QDL_PLL1_BYPASS_SRC> ; ++ clock-names = "arm", "pll2_pfd2_396m", "step", ++ "pll1_sw", "pll1_sys", "pll1_bypass", "pll1", "pll1_bypass_src"; ++ arm-supply = <®_arm>; ++ pu-supply = <®_pu>; ++ soc-supply = <®_soc>; + }; + + cpu@1 { +@@ -32,40 +59,117 @@ + }; + + soc { +- ocram: sram@00900000 { ++ busfreq { ++ compatible = "fsl,imx6_busfreq"; ++ clocks = <&clks IMX6QDL_CLK_PLL2_BUS>, <&clks IMX6QDL_CLK_PLL2_PFD2_396M>, ++ <&clks IMX6QDL_CLK_PLL2_198M>, <&clks IMX6QDL_CLK_ARM>, ++ <&clks IMX6QDL_CLK_PLL3_USB_OTG>, <&clks IMX6QDL_CLK_PERIPH>, ++ <&clks IMX6QDL_CLK_PERIPH_PRE>, <&clks IMX6QDL_CLK_PERIPH_CLK2>, ++ <&clks IMX6QDL_CLK_PERIPH_CLK2_SEL>, <&clks IMX6QDL_CLK_OSC>, ++ <&clks IMX6QDL_CLK_AXI_ALT_SEL>, <&clks IMX6QDL_CLK_AXI_SEL> , ++ <&clks IMX6QDL_CLK_PLL3_PFD1_540M>; ++ clock-names = "pll2_bus", "pll2_pfd2_396m", "pll2_198m", "arm", "pll3_usb_otg", "periph", ++ "periph_pre", "periph_clk2", "periph_clk2_sel", "osc", "axi_alt_sel", "axi_sel", "pll3_pfd1_540m"; ++ interrupts = <0 107 0x04>, <0 112 0x4>; ++ interrupt-names = "irq_busfreq_0", "irq_busfreq_1"; ++ fsl,max_ddr_freq = <400000000>; ++ }; ++ ++ gpu@00130000 { ++ compatible = "fsl,imx6dl-gpu", "fsl,imx6q-gpu"; ++ reg = <0x00130000 0x4000>, <0x00134000 0x4000>, ++ <0x0 0x0>; ++ reg-names = "iobase_3d", "iobase_2d", ++ "phys_baseaddr"; ++ interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>, ++ <0 10 IRQ_TYPE_LEVEL_HIGH>; ++ interrupt-names = "irq_3d", "irq_2d"; ++ clocks = <&clks IMX6QDL_CLK_OPENVG_AXI>, <&clks IMX6QDL_CLK_GPU3D_AXI>, ++ <&clks IMX6QDL_CLK_GPU2D_CORE>, <&clks IMX6QDL_CLK_GPU3D_CORE>, ++ <&clks IMX6QDL_CLK_DUMMY>; ++ clock-names = "gpu2d_axi_clk", "gpu3d_axi_clk", ++ "gpu2d_clk", "gpu3d_clk", ++ "gpu3d_shader_clk"; ++ resets = <&src 0>, <&src 3>; ++ reset-names = "gpu3d", "gpu2d"; ++ power-domains = <&gpc 1>; ++ }; ++ ++ ocrams: sram@00900000 { ++ compatible = "fsl,lpm-sram"; ++ reg = <0x00900000 0x4000>; ++ clocks = <&clks IMX6QDL_CLK_OCRAM>; ++ }; ++ ++ ocrams_ddr: sram@00904000 { ++ compatible = "fsl,ddr-lpm-sram"; ++ reg = <0x00904000 0x1000>; ++ clocks = <&clks IMX6QDL_CLK_OCRAM>; ++ }; ++ ++ ocram: sram@00905000 { + compatible = "mmio-sram"; +- reg = <0x00900000 0x20000>; +- clocks = <&clks 142>; ++ reg = <0x00905000 0x1B000>; ++ clocks = <&clks IMX6QDL_CLK_OCRAM>; + }; + + aips1: aips-bus@02000000 { ++ vpu@02040000 { ++ iramsize = <0>; ++ }; ++ + iomuxc: iomuxc@020e0000 { + compatible = "fsl,imx6dl-iomuxc"; + }; + ++ dcic2: dcic@020e8000 { ++ clocks = <&clks IMX6QDL_CLK_DCIC1 >, ++ <&clks IMX6QDL_CLK_DCIC2>; /* DCIC2 depend on DCIC1 clock in imx6dl*/ ++ clock-names = "dcic", "disp-axi"; ++ }; ++ + pxp: pxp@020f0000 { ++ compatible = "fsl,imx6dl-pxp-dma"; + reg = <0x020f0000 0x4000>; +- interrupts = <0 98 0x04>; ++ interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clks IMX6QDL_CLK_IPU2>, <&clks IMX6QDL_CLK_DUMMY>; ++ clock-names = "pxp-axi", "disp-axi"; ++ status = "disabled"; + }; + + epdc: epdc@020f4000 { ++ compatible = "fsl,imx6dl-epdc"; + reg = <0x020f4000 0x4000>; +- interrupts = <0 97 0x04>; ++ interrupts = <0 97 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clks IMX6QDL_CLK_IPU2>, <&clks IMX6QDL_CLK_IPU2_DI1>; ++ clock-names = "epdc_axi", "epdc_pix"; ++ status = "disabled"; + }; + + lcdif: lcdif@020f8000 { + reg = <0x020f8000 0x4000>; +- interrupts = <0 39 0x04>; ++ interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; + }; + }; + + aips2: aips-bus@02100000 { ++ mipi_dsi: mipi@021e0000 { ++ compatible = "fsl,imx6dl-mipi-dsi"; ++ reg = <0x021e0000 0x4000>; ++ interrupts = <0 102 0x04>; ++ gpr = <&gpr>; ++ clocks = <&clks IMX6QDL_CLK_HSI_TX>, <&clks IMX6QDL_CLK_VIDEO_27M>; ++ clock-names = "mipi_pllref_clk", "mipi_cfg_clk"; ++ status = "disabled"; ++ }; ++ + i2c4: i2c@021f8000 { + #address-cells = <1>; + #size-cells = <0>; +- compatible = "fsl,imx1-i2c"; ++ compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; + reg = <0x021f8000 0x4000>; +- interrupts = <0 35 0x04>; ++ interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&clks IMX6DL_CLK_I2C4>; + status = "disabled"; + }; + }; +@@ -73,18 +177,18 @@ + }; + + &ldb { +- clocks = <&clks 33>, <&clks 34>, +- <&clks 39>, <&clks 40>, +- <&clks 135>, <&clks 136>; +- clock-names = "di0_pll", "di1_pll", +- "di0_sel", "di1_sel", +- "di0", "di1"; +- +- lvds-channel@0 { +- crtcs = <&ipu1 0>, <&ipu1 1>; +- }; ++ compatible = "fsl,imx6dl-ldb", "fsl,imx53-ldb"; + +- lvds-channel@1 { +- crtcs = <&ipu1 0>, <&ipu1 1>; +- }; ++ clocks = <&clks IMX6QDL_CLK_LDB_DI0>, <&clks IMX6QDL_CLK_LDB_DI1>, ++ <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>, ++ <&clks IMX6QDL_CLK_IPU2_DI0_SEL>, ++ <&clks IMX6QDL_CLK_LDB_DI0_DIV_3_5>, <&clks IMX6QDL_CLK_LDB_DI1_DIV_3_5>, ++ <&clks IMX6QDL_CLK_LDB_DI0_DIV_7>, <&clks IMX6QDL_CLK_LDB_DI1_DIV_7>, ++ <&clks IMX6QDL_CLK_LDB_DI0_DIV_SEL>, <&clks IMX6QDL_CLK_LDB_DI1_DIV_SEL>; ++ clock-names = "ldb_di0", "ldb_di1", ++ "di0_sel", "di1_sel", ++ "di2_sel", ++ "ldb_di0_div_3_5", "ldb_di1_div_3_5", ++ "ldb_di0_div_7", "ldb_di1_div_7", ++ "ldb_di0_div_sel", "ldb_di1_div_sel"; + }; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-hummingboard2.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-hummingboard2.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-hummingboard2.dts 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-hummingboard2.dts 2016-06-19 22:11:55.009158180 +0200 +@@ -0,0 +1,52 @@ ++/* ++ * Device Tree file for SolidRun HummingBoard2 ++ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com> ++ * Based on work by Russell King ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License. ++ * ++ * This file is distributed in the hope that it will be useful ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++/dts-v1/; ++ ++#include "imx6dl.dtsi" ++#include "imx6qdl-hummingboard2.dtsi" ++ ++/ { ++ model = "SolidRun HummingBoard2 Solo/DualLite"; ++ compatible = "solidrun,hummingboard2/dl", "fsl,imx6dl"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-hummingboard.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-hummingboard.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-hummingboard.dts 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-hummingboard.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -1,163 +1,51 @@ + /* +- * Copyright (C) 2013,2014 Russell King ++ * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com) ++ * Based on dt work by Russell King ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License. ++ * ++ * This file is distributed in the hope that it will be useful ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. + */ + /dts-v1/; + + #include "imx6dl.dtsi" +-#include "imx6qdl-microsom.dtsi" +-#include "imx6qdl-microsom-ar8035.dtsi" ++#include "imx6qdl-hummingboard.dtsi" + + / { +- model = "SolidRun HummingBoard DL/Solo"; +- compatible = "solidrun,hummingboard", "fsl,imx6dl"; +- +- ir_recv: ir-receiver { +- compatible = "gpio-ir-receiver"; +- gpios = <&gpio1 2 1>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_gpio1_2>; +- }; +- +- regulators { +- compatible = "simple-bus"; +- +- reg_3p3v: 3p3v { +- compatible = "regulator-fixed"; +- regulator-name = "3P3V"; +- regulator-min-microvolt = <3300000>; +- regulator-max-microvolt = <3300000>; +- regulator-always-on; +- }; +- +- reg_usbh1_vbus: usb-h1-vbus { +- compatible = "regulator-fixed"; +- enable-active-high; +- gpio = <&gpio1 0 0>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_usbh1_vbus>; +- regulator-name = "usb_h1_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- }; +- +- reg_usbotg_vbus: usb-otg-vbus { +- compatible = "regulator-fixed"; +- enable-active-high; +- gpio = <&gpio3 22 0>; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_usbotg_vbus>; +- regulator-name = "usb_otg_vbus"; +- regulator-min-microvolt = <5000000>; +- regulator-max-microvolt = <5000000>; +- }; +- }; +- +- sound-spdif { +- compatible = "fsl,imx-audio-spdif"; +- model = "imx-spdif"; +- /* IMX6 doesn't implement this yet */ +- spdif-controller = <&spdif>; +- spdif-out; +- }; +-}; +- +-&can1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_flexcan1>; +- status = "okay"; +-}; +- +-&i2c1 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_i2c1>; +- +- /* +- * Not fitted on Carrier-1 board... yet +- status = "okay"; +- +- rtc: pcf8523@68 { +- compatible = "nxp,pcf8523"; +- reg = <0x68>; +- }; +- */ +-}; +- +-&iomuxc { +- hummingboard { +- pinctrl_hummingboard_flexcan1: hummingboard-flexcan1 { +- fsl,pins = < +- MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000 +- MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000 +- >; +- }; +- +- pinctrl_hummingboard_gpio1_2: hummingboard-gpio1_2 { +- fsl,pins = < +- MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 +- >; +- }; +- +- pinctrl_hummingboard_i2c1: hummingboard-i2c1 { +- fsl,pins = < +- MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1 +- MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1 +- >; +- }; +- +- pinctrl_hummingboard_spdif: hummingboard-spdif { +- fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>; +- }; +- +- pinctrl_hummingboard_usbh1_vbus: hummingboard-usbh1-vbus { +- fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>; +- }; +- +- pinctrl_hummingboard_usbotg_vbus: hummingboard-usbotg-vbus { +- fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>; +- }; +- +- pinctrl_hummingboard_usdhc2_aux: hummingboard-usdhc2-aux { +- fsl,pins = < +- MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071 +- >; +- }; +- +- pinctrl_hummingboard_usdhc2: hummingboard-usdhc2 { +- fsl,pins = < +- MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059 +- MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059 +- MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059 +- MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059 +- MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059 +- MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059 +- >; +- }; +- }; +-}; +- +-&spdif { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_hummingboard_spdif>; +- status = "okay"; +-}; +- +-&usbh1 { +- vbus-supply = <®_usbh1_vbus>; +- status = "okay"; +-}; +- +-&usbotg { +- vbus-supply = <®_usbotg_vbus>; +- status = "okay"; +-}; +- +-&usdhc2 { +- pinctrl-names = "default"; +- pinctrl-0 = < +- &pinctrl_hummingboard_usdhc2_aux +- &pinctrl_hummingboard_usdhc2 +- >; +- vmmc-supply = <®_3p3v>; +- cd-gpios = <&gpio1 4 0>; +- status = "okay"; ++ model = "SolidRun HummingBoard Solo/DualLite"; ++ compatible = "solidrun,hummingboard/dl", "fsl,imx6dl"; + }; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-pinfunc.h linux-3.14.72/arch/arm/boot/dts/imx6dl-pinfunc.h +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-pinfunc.h 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-pinfunc.h 2016-06-19 22:11:55.013158022 +0200 +@@ -755,6 +755,7 @@ + #define MX6QDL_PAD_GPIO_5__I2C3_SCL 0x230 0x600 0x878 0x6 0x2 + #define MX6QDL_PAD_GPIO_5__ARM_EVENTI 0x230 0x600 0x000 0x7 0x0 + #define MX6QDL_PAD_GPIO_6__ESAI_TX_CLK 0x234 0x604 0x840 0x0 0x1 ++#define MX6QDL_PAD_GPIO_6__ENET_IRQ 0x234 0x604 0x03c 0x11 0xff000609 + #define MX6QDL_PAD_GPIO_6__I2C3_SDA 0x234 0x604 0x87c 0x2 0x2 + #define MX6QDL_PAD_GPIO_6__GPIO1_IO06 0x234 0x604 0x000 0x5 0x0 + #define MX6QDL_PAD_GPIO_6__SD2_LCTL 0x234 0x604 0x000 0x6 0x0 +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto.dts 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -15,3 +15,21 @@ + model = "Freescale i.MX6 DualLite/Solo SABRE Automotive Board"; + compatible = "fsl,imx6dl-sabreauto", "fsl,imx6dl"; + }; ++ ++&ldb { ++ lvds-channel@0 { ++ crtc = "ipu1-di0"; ++ }; ++ ++ lvds-channel@1 { ++ crtc = "ipu1-di1"; ++ }; ++}; ++ ++&mxcfb1 { ++ status = "okay"; ++}; ++ ++&mxcfb2 { ++ status = "okay"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-ecspi.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-ecspi.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-ecspi.dts 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-ecspi.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -0,0 +1,39 @@ ++/* ++ * Copyright (C) 2014 Freescale Semiconductor, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include "imx6dl-sabreauto.dts" ++ ++&ecspi1 { ++ pinctrl-assert-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++}; ++ ++&flexcan2 { ++ /* max7310_c on i2c3 is gone */ ++ status = "disabled"; ++}; ++ ++&i2c3 { ++ /* pin conflict with ecspi1 */ ++ status = "disabled"; ++}; ++ ++&uart3 { ++ /* the uart3 depends on the i2c3, so disable it too. */ ++ status = "disabled"; ++}; ++ ++&usbh1 { ++ /* max7310_b on i2c3 is gone */ ++ status = "disabled"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-flexcan1.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-flexcan1.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-flexcan1.dts 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-flexcan1.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -0,0 +1,18 @@ ++/* ++ * Copyright (C) 2013 Freescale Semiconductor, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include "imx6dl-sabreauto.dts" ++ ++&flexcan1{ ++ status = "okay"; ++}; ++ ++&fec { ++ /* pin conflict with flexcan1 */ ++ status = "disabled"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-gpmi-weim.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-gpmi-weim.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabreauto-gpmi-weim.dts 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-sabreauto-gpmi-weim.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -0,0 +1,48 @@ ++/* ++ * Copyright (C) 2014 Freescale Semiconductor, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include "imx6dl-sabreauto.dts" ++ ++&ecspi1 { ++ /* pin conflict with weim */ ++ status = "disabled"; ++}; ++ ++&flexcan2 { ++ /* max7310_c on i2c3 is gone */ ++ status = "disabled"; ++}; ++ ++&gpmi { ++ status = "okay"; ++}; ++ ++&i2c3 { ++ /* pin conflict with weim */ ++ status = "disabled"; ++}; ++ ++&uart3 { ++ /* pin conflict with gpmi and weim */ ++ status = "disabled"; ++}; ++ ++&usbh1 { ++ /* max7310_b on i2c3 is gone */ ++ status = "disabled"; ++}; ++ ++&usbotg { ++ dr_mode = "peripheral"; ++ status = "okay"; ++}; ++ ++&weim { ++ pinctrl-assert-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++}; +diff -Nur linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabresd.dts linux-3.14.72/arch/arm/boot/dts/imx6dl-sabresd.dts +--- linux-3.14.72.orig/arch/arm/boot/dts/imx6dl-sabresd.dts 2016-06-08 02:22:20.000000000 +0200 ++++ linux-3.14.72/arch/arm/boot/dts/imx6dl-sabresd.dts 2016-06-19 22:11:55.013158022 +0200 +@@ -15,3 +15,138 @@ + model = "Freescale i.MX6 DualLite SABRE Smart Device Board"; + compatible = "fsl,imx6dl-sabresd", "fsl,imx6dl"; + }; ++ ++&battery { ++ offset-charger = <1485>; ++ offset-discharger = <1464>; ++ offset-usb-charger = <1285>; ++}; ++ ++&iomuxc { ++ epdc { ++ pinctrl_epdc_0: epdcgrp-0 { ++ fsl,pins = < ++ MX6QDL_PAD_EIM_A16__EPDC_DATA00 0x80000000 ++ MX6QDL_PAD_EIM_DA10__EPDC_DATA01 0x80000000 ++ MX6QDL_PAD_EIM_DA12__EPDC_DATA02 0x80000000 ++ MX6QDL_PAD_EIM_DA11__EPDC_DATA03 0x80000000 ++ MX6QDL_PAD_EIM_LBA__EPDC_DATA04 0x80000000 ++ MX6QDL_PAD_EIM_EB2__EPDC_DATA05 0x80000000 ++ MX6QDL_PAD_EIM_CS0__EPDC_DATA06 0x80000000 ++ MX6QDL_PAD_EIM_RW__EPDC_DATA07 0x80000000 ++ MX6QDL_PAD_EIM_A21__EPDC_GDCLK 0x80000000 ++ MX6QDL_PAD_EIM_A22__EPDC_GDSP 0x80000000 ++ MX6QDL_PAD_EIM_A23__EPDC_GDOE 0x80000000 ++ MX6QDL_PAD_EIM_A24__EPDC_GDRL 0x80000000 ++ MX6QDL_PAD_EIM_D31__EPDC_SDCLK_P 0x80000000 ++ MX6QDL_PAD_EIM_D27__EPDC_SDOE 0x80000000 ++ MX6QDL_PAD_EIM_DA1__EPDC_SDLE 0x80000000 ++ MX6QDL_PAD_EIM_EB1__EPDC_SDSHR 0x80000000 ++ MX6QDL_PAD_EIM_DA2__EPDC_BDR0 0x80000000 ++ MX6QDL_PAD_EIM_DA4__EPDC_SDCE0 0x80000000 ++ MX6QDL_PAD_EIM_DA5__EPDC_SDCE1 0x80000000 ++ MX6QDL_PAD_EIM_DA6__EPDC_SDCE2 0x80000000 ++ >; ++ }; ++ }; ++}; ++ ++&epdc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_epdc_0>; ++ V3P3-supply = <&V3P3_reg>; ++ VCOM-supply = <&VCOM_reg>; ++ DISPLAY-supply = <&DISPLAY_reg>; ++ status = "okay"; ++}; ++ ++&i2c3 { ++ max17135@48 { ++ compatible = "maxim,max17135"; ++ reg = <0x48>; ++ vneg_pwrup = <1>; ++ gvee_pwrup = <1>; ++ vpos_pwrup = <2>; ++ gvdd_pwrup = <1>; ++ gvdd_pwrdn = <1>; ++ vpos_pwrdn = <2>; ++ gvee_pwrdn = <1>; ++ vneg_pwrdn = <1>; ++ SENSOR-supply = <®_sensor>; ++ gpio_pmic_pwrgood = <&gpio2 21 0>; ++ gpio_pmic_vcom_ctrl = <&gpio3 17 0>; ++ gpio_pmic_wakeup = <&gpio3 20 0>; ++ gpio_pmic_v3p3 = <&gpio2 20 0>; ++ gpio_pmic_intr = <&gpio2 25 0>; ++ ++ regulators { ++ DISPLAY_reg: DISPLAY { ++ regulator-name = "DISPLAY"; ++ }; ++ ++ GVDD_reg: GVDD { ++ /* 20v */ ++ regulator-name = "GVDD"; ++ }; ++ ++ GVEE_reg: GVEE { ++ /* -22v */ ++ regulator-name = "GVEE"; ++ }; ++ ++ HVINN_reg: HVINN { ++ /* -22v */ ++ regulator-name = "HVINN"; ++ }; ++ ++ HVINP_reg: HVINP { ++ /* 20v */ ++ regulator-name = "HVINP"; ++ }; ++ ++ VCOM_reg: VCOM { ++ regulator-name = "VCOM"; ++ /* 2's-compliment, -4325 |