* [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines
@ 2014-01-29 0:03 Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 2/3] linux-cubox-i: add customized kernel Carlos Rafael Giani
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Carlos Rafael Giani @ 2014-01-29 0:03 UTC (permalink / raw)
To: meta-freescale
This fork includes MXC SPL support for the SolidRun CuBox-i and
HummingBoard devices
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
---
recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt | 1 +
recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
create mode 100644 recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
diff --git a/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt b/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
new file mode 100644
index 0000000..3ae0863
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
@@ -0,0 +1 @@
+mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32
diff --git a/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb b/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
new file mode 100644
index 0000000..6fa2ce6
--- /dev/null
+++ b/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
@@ -0,0 +1,27 @@
+require recipes-bsp/u-boot/u-boot.inc
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://Licenses/README;md5=bc069111b5e5b1ed8bed98ae73b596ec"
+
+PROVIDES += "u-boot"
+
+PV = "v2013.10+git${SRCPV}"
+
+SRCREV = "920ea0f20276614e11961924b1990b6c922c8d0e"
+SRC_URI = " \
+ git://github.com/rabeeh/u-boot-imx6.git;branch=imx6 \
+ file://uEnv.txt \
+ "
+
+S = "${WORKDIR}/git"
+
+UENV_FILENAME ?= "uEnv-${MACHINE}.txt"
+
+deploy_uenv () {
+ install ${WORKDIR}/uEnv.txt ${DEPLOYDIR}/${UENV_FILENAME}
+}
+
+do_deploy[postfuncs] += "deploy_uenv"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE = "cubox-i"
--
1.8.5.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [meta-fsl-arm-extra][PATCH v5 2/3] linux-cubox-i: add customized kernel
2014-01-29 0:03 [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Carlos Rafael Giani
@ 2014-01-29 0:03 ` Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config Carlos Rafael Giani
2014-01-29 11:43 ` [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Daiane Angolini
2 siblings, 0 replies; 5+ messages in thread
From: Carlos Rafael Giani @ 2014-01-29 0:03 UTC (permalink / raw)
To: meta-freescale
This kernel is based on linux-imx 3.0.35, and adds patches for
CuBox-i and HummingBoard support
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
---
...fix-memset-related-crashes-caused-by-rece.patch | 259 +++++++++++++++
.../0003-ARM-7670-1-fix-the-memset-fix.patch | 87 +++++
...6-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | 43 +++
...0005-ENGR00271359-Add-Multi-touch-support.patch | 98 ++++++
.../0006-Add-support-for-DVI-monitors.patch | 227 +++++++++++++
...6-board-mx6q_sabresd-Register-SDHC3-first.patch | 38 +++
.../linux/linux-cubox-i-3.0.35/defconfig | 366 +++++++++++++++++++++
...-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | 143 ++++++++
.../fix-install-breakage-for-fw-images.patch | 32 ++
.../mxc_hdmi-dont-require-cea-mode.patch | 25 ++
recipes-kernel/linux/linux-cubox-i_3.0.35.bb | 23 ++
11 files changed, 1341 insertions(+)
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0006-Add-support-for-DVI-monitors.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/defconfig
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/fix-install-breakage-for-fw-images.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i-3.0.35/mxc_hdmi-dont-require-cea-mode.patch
create mode 100644 recipes-kernel/linux/linux-cubox-i_3.0.35.bb
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch
new file mode 100644
index 0000000..4c31e74
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch
@@ -0,0 +1,259 @@
+From 2235b85f1c76d98b5f1e160cbd0a61a84c15e125 Mon Sep 17 00:00:00 2001
+From: Ivan Djelic <ivan.djelic@parrot.com>
+Date: Wed, 6 Mar 2013 20:09:27 +0100
+Subject: [PATCH] ARM: 7668/1: fix memset-related crashes caused by recent GCC
+ (4.7.2) optimizations
+Organization: O.S. Systems Software LTDA.
+
+Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on
+assumptions about the implementation of memset and similar functions.
+The current ARM optimized memset code does not return the value of
+its first argument, as is usually expected from standard implementations.
+
+For instance in the following function:
+
+void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
+{
+ memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter));
+ waiter->magic = waiter;
+ INIT_LIST_HEAD(&waiter->list);
+}
+
+compiled as:
+
+800554d0 <debug_mutex_lock_common>:
+800554d0: e92d4008 push {r3, lr}
+800554d4: e1a00001 mov r0, r1
+800554d8: e3a02010 mov r2, #16 ; 0x10
+800554dc: e3a01011 mov r1, #17 ; 0x11
+800554e0: eb04426e bl 80165ea0 <memset>
+800554e4: e1a03000 mov r3, r0
+800554e8: e583000c str r0, [r3, #12]
+800554ec: e5830000 str r0, [r3]
+800554f0: e5830004 str r0, [r3, #4]
+800554f4: e8bd8008 pop {r3, pc}
+
+GCC assumes memset returns the value of pointer 'waiter' in register r0; causing
+register/memory corruptions.
+
+This patch fixes the return value of the assembly version of memset.
+It adds a 'mov' instruction and merges an additional load+store into
+existing load/store instructions.
+For ease of review, here is a breakdown of the patch into 4 simple steps:
+
+Step 1
+======
+Perform the following substitutions:
+ip -> r8, then
+r0 -> ip,
+and insert 'mov ip, r0' as the first statement of the function.
+At this point, we have a memset() implementation returning the proper result,
+but corrupting r8 on some paths (the ones that were using ip).
+
+Step 2
+======
+Make sure r8 is saved and restored when (! CALGN(1)+0) == 1:
+
+save r8:
+- str lr, [sp, #-4]!
++ stmfd sp!, {r8, lr}
+
+and restore r8 on both exit paths:
+- ldmeqfd sp!, {pc} @ Now <64 bytes to go.
++ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go.
+(...)
+ tst r2, #16
+ stmneia ip!, {r1, r3, r8, lr}
+- ldr lr, [sp], #4
++ ldmfd sp!, {r8, lr}
+
+Step 3
+======
+Make sure r8 is saved and restored when (! CALGN(1)+0) == 0:
+
+save r8:
+- stmfd sp!, {r4-r7, lr}
++ stmfd sp!, {r4-r8, lr}
+
+and restore r8 on both exit paths:
+ bgt 3b
+- ldmeqfd sp!, {r4-r7, pc}
++ ldmeqfd sp!, {r4-r8, pc}
+(...)
+ tst r2, #16
+ stmneia ip!, {r4-r7}
+- ldmfd sp!, {r4-r7, lr}
++ ldmfd sp!, {r4-r8, lr}
+
+Step 4
+======
+Rewrite register list "r4-r7, r8" as "r4-r8".
+
+Upstream-Status: Pending
+
+Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com>
+Reviewed-by: Nicolas Pitre <nico@linaro.org>
+Signed-off-by: Dirk Behme <dirk.behme@gmail.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+(cherry picked from commit 455bd4c430b0c0a361f38e8658a0d6cb469942b5)
+---
+ arch/arm/lib/memset.S | 85 ++++++++++++++++++++++++++-------------------------
+ 1 file changed, 44 insertions(+), 41 deletions(-)
+
+diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
+index 650d592..d912e73 100644
+--- a/arch/arm/lib/memset.S
++++ b/arch/arm/lib/memset.S
+@@ -19,9 +19,9 @@
+ 1: subs r2, r2, #4 @ 1 do we have enough
+ blt 5f @ 1 bytes to align with?
+ cmp r3, #2 @ 1
+- strltb r1, [r0], #1 @ 1
+- strleb r1, [r0], #1 @ 1
+- strb r1, [r0], #1 @ 1
++ strltb r1, [ip], #1 @ 1
++ strleb r1, [ip], #1 @ 1
++ strb r1, [ip], #1 @ 1
+ add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
+ /*
+ * The pointer is now aligned and the length is adjusted. Try doing the
+@@ -29,10 +29,14 @@
+ */
+
+ ENTRY(memset)
+- ands r3, r0, #3 @ 1 unaligned?
++/*
++ * Preserve the contents of r0 for the return value.
++ */
++ mov ip, r0
++ ands r3, ip, #3 @ 1 unaligned?
+ bne 1b @ 1
+ /*
+- * we know that the pointer in r0 is aligned to a word boundary.
++ * we know that the pointer in ip is aligned to a word boundary.
+ */
+ orr r1, r1, r1, lsl #8
+ orr r1, r1, r1, lsl #16
+@@ -43,29 +47,28 @@ ENTRY(memset)
+ #if ! CALGN(1)+0
+
+ /*
+- * We need an extra register for this loop - save the return address and
+- * use the LR
++ * We need 2 extra registers for this loop - use r8 and the LR
+ */
+- str lr, [sp, #-4]!
+- mov ip, r1
++ stmfd sp!, {r8, lr}
++ mov r8, r1
+ mov lr, r1
+
+ 2: subs r2, r2, #64
+- stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time.
+- stmgeia r0!, {r1, r3, ip, lr}
+- stmgeia r0!, {r1, r3, ip, lr}
+- stmgeia r0!, {r1, r3, ip, lr}
++ stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
++ stmgeia ip!, {r1, r3, r8, lr}
++ stmgeia ip!, {r1, r3, r8, lr}
++ stmgeia ip!, {r1, r3, r8, lr}
+ bgt 2b
+- ldmeqfd sp!, {pc} @ Now <64 bytes to go.
++ ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go.
+ /*
+ * No need to correct the count; we're only testing bits from now on
+ */
+ tst r2, #32
+- stmneia r0!, {r1, r3, ip, lr}
+- stmneia r0!, {r1, r3, ip, lr}
++ stmneia ip!, {r1, r3, r8, lr}
++ stmneia ip!, {r1, r3, r8, lr}
+ tst r2, #16
+- stmneia r0!, {r1, r3, ip, lr}
+- ldr lr, [sp], #4
++ stmneia ip!, {r1, r3, r8, lr}
++ ldmfd sp!, {r8, lr}
+
+ #else
+
+@@ -74,54 +77,54 @@ ENTRY(memset)
+ * whole cache lines at once.
+ */
+
+- stmfd sp!, {r4-r7, lr}
++ stmfd sp!, {r4-r8, lr}
+ mov r4, r1
+ mov r5, r1
+ mov r6, r1
+ mov r7, r1
+- mov ip, r1
++ mov r8, r1
+ mov lr, r1
+
+ cmp r2, #96
+- tstgt r0, #31
++ tstgt ip, #31
+ ble 3f
+
+- and ip, r0, #31
+- rsb ip, ip, #32
+- sub r2, r2, ip
+- movs ip, ip, lsl #(32 - 4)
+- stmcsia r0!, {r4, r5, r6, r7}
+- stmmiia r0!, {r4, r5}
+- tst ip, #(1 << 30)
+- mov ip, r1
+- strne r1, [r0], #4
++ and r8, ip, #31
++ rsb r8, r8, #32
++ sub r2, r2, r8
++ movs r8, r8, lsl #(32 - 4)
++ stmcsia ip!, {r4, r5, r6, r7}
++ stmmiia ip!, {r4, r5}
++ tst r8, #(1 << 30)
++ mov r8, r1
++ strne r1, [ip], #4
+
+ 3: subs r2, r2, #64
+- stmgeia r0!, {r1, r3-r7, ip, lr}
+- stmgeia r0!, {r1, r3-r7, ip, lr}
++ stmgeia ip!, {r1, r3-r8, lr}
++ stmgeia ip!, {r1, r3-r8, lr}
+ bgt 3b
+- ldmeqfd sp!, {r4-r7, pc}
++ ldmeqfd sp!, {r4-r8, pc}
+
+ tst r2, #32
+- stmneia r0!, {r1, r3-r7, ip, lr}
++ stmneia ip!, {r1, r3-r8, lr}
+ tst r2, #16
+- stmneia r0!, {r4-r7}
+- ldmfd sp!, {r4-r7, lr}
++ stmneia ip!, {r4-r7}
++ ldmfd sp!, {r4-r8, lr}
+
+ #endif
+
+ 4: tst r2, #8
+- stmneia r0!, {r1, r3}
++ stmneia ip!, {r1, r3}
+ tst r2, #4
+- strne r1, [r0], #4
++ strne r1, [ip], #4
+ /*
+ * When we get here, we've got less than 4 bytes to zero. We
+ * may have an unaligned pointer as well.
+ */
+ 5: tst r2, #2
+- strneb r1, [r0], #1
+- strneb r1, [r0], #1
++ strneb r1, [ip], #1
++ strneb r1, [ip], #1
+ tst r2, #1
+- strneb r1, [r0], #1
++ strneb r1, [ip], #1
+ mov pc, lr
+ ENDPROC(memset)
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch
new file mode 100644
index 0000000..b8d6f53
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch
@@ -0,0 +1,87 @@
+From 2ba23fa6c4128febaaf57fe184420a7111caa237 Mon Sep 17 00:00:00 2001
+From: Nicolas Pitre <nicolas.pitre@linaro.org>
+Date: Tue, 12 Mar 2013 13:00:42 +0100
+Subject: [PATCH] ARM: 7670/1: fix the memset fix
+Organization: O.S. Systems Software LTDA.
+
+Commit 455bd4c430b0 ("ARM: 7668/1: fix memset-related crashes caused by
+recent GCC (4.7.2) optimizations") attempted to fix a compliance issue
+with the memset return value. However the memset itself became broken
+by that patch for misaligned pointers.
+
+This fixes the above by branching over the entry code from the
+misaligned fixup code to avoid reloading the original pointer.
+
+Also, because the function entry alignment is wrong in the Thumb mode
+compilation, that fixup code is moved to the end.
+
+While at it, the entry instructions are slightly reworked to help dual
+issue pipelines.
+
+Upstream-Status: Pending
+
+Signed-off-by: Nicolas Pitre <nico@linaro.org>
+Tested-by: Alexander Holler <holler@ahsoftware.de>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+(cherry picked from commit 418df63adac56841ef6b0f1fcf435bc64d4ed177)
+---
+ arch/arm/lib/memset.S | 33 +++++++++++++--------------------
+ 1 file changed, 13 insertions(+), 20 deletions(-)
+
+diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
+index d912e73..94b0650 100644
+--- a/arch/arm/lib/memset.S
++++ b/arch/arm/lib/memset.S
+@@ -14,31 +14,15 @@
+
+ .text
+ .align 5
+- .word 0
+-
+-1: subs r2, r2, #4 @ 1 do we have enough
+- blt 5f @ 1 bytes to align with?
+- cmp r3, #2 @ 1
+- strltb r1, [ip], #1 @ 1
+- strleb r1, [ip], #1 @ 1
+- strb r1, [ip], #1 @ 1
+- add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
+-/*
+- * The pointer is now aligned and the length is adjusted. Try doing the
+- * memset again.
+- */
+
+ ENTRY(memset)
+-/*
+- * Preserve the contents of r0 for the return value.
+- */
+- mov ip, r0
+- ands r3, ip, #3 @ 1 unaligned?
+- bne 1b @ 1
++ ands r3, r0, #3 @ 1 unaligned?
++ mov ip, r0 @ preserve r0 as return value
++ bne 6f @ 1
+ /*
+ * we know that the pointer in ip is aligned to a word boundary.
+ */
+- orr r1, r1, r1, lsl #8
++1: orr r1, r1, r1, lsl #8
+ orr r1, r1, r1, lsl #16
+ mov r3, r1
+ cmp r2, #16
+@@ -127,4 +111,13 @@ ENTRY(memset)
+ tst r2, #1
+ strneb r1, [ip], #1
+ mov pc, lr
++
++6: subs r2, r2, #4 @ 1 do we have enough
++ blt 5b @ 1 bytes to align with?
++ cmp r3, #2 @ 1
++ strltb r1, [ip], #1 @ 1
++ strleb r1, [ip], #1 @ 1
++ strb r1, [ip], #1 @ 1
++ add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
++ b 1b
+ ENDPROC(memset)
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch
new file mode 100644
index 0000000..7316351
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch
@@ -0,0 +1,43 @@
+From d8601292ae25e0af47aa4486055221ab44113f0e Mon Sep 17 00:00:00 2001
+From: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com>
+Date: Mon, 15 Jul 2013 15:34:54 -0500
+Subject: [PATCH] ENGR00271136 Fix build break when CONFIG_CLK_DEBUG is
+ disabled
+Organization: O.S. Systems Software LTDA.
+
+clk structure member name is defined only when CONFIG_CLK_DEBUG is enabled.
+Hence need to encapsulate the code with this config.
+
+Patch received from imx community:
+https://community.freescale.com/thread/308482
+
+Upstream-Status: Pending
+
+Signed-off-by: xiongweihuang
+Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com>
+---
+ arch/arm/plat-mxc/clock.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c
+index 93347eb..1aa2664 100755
+--- a/arch/arm/plat-mxc/clock.c
++++ b/arch/arm/plat-mxc/clock.c
+@@ -58,12 +58,12 @@ static void __clk_disable(struct clk *clk)
+ {
+ if (clk == NULL || IS_ERR(clk))
+ return;
+-
++#ifdef CONFIG_CLK_DEBUG
+ if (!clk->usecount) {
+ WARN(1, "clock enable/disable mismatch! clk %s\n", clk->name);
+ return;
+ }
+-
++#endif
+ if (!(--clk->usecount)) {
+ if (clk->disable)
+ clk->disable(clk);
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch
new file mode 100644
index 0000000..cb20198
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch
@@ -0,0 +1,98 @@
+From 538f4bb2f7a51f267395550a5be9f0ab2e426712 Mon Sep 17 00:00:00 2001
+From: Erik Boto <erik.boto@pelagicore.com>
+Date: Tue, 16 Jul 2013 12:06:05 -0500
+Subject: [PATCH] ENGR00271359 Add Multi-touch support
+Organization: O.S. Systems Software LTDA.
+
+The previous behavior of the driver did not work properly with Qt5
+QtQuick multi touch-point gestures, due to how touch-points are
+reported when removing a touch-point. My interpretation of the
+available documentation [1] was that the driver should report all
+touch-points between SYN_REPORTs, but it is not explicitly stated so.
+I've found another mail-thread [2] where the creator of the protocol
+states:
+
+"The protocol defines a generic way of sending a variable amount of
+contacts. The contact count is obtained by counting the number of
+non-empty finger packets between SYN_REPORT events."-Henrik Rydberg
+
+I think this verifies my assumption that all touch-points should be
+reported between SYN_REPORTs, otherwise it can not be used to obtain
+the count.
+
+[1] https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt
+[2] http://lists.x.org/archives/xorg-devel/2010-March/006466.html
+
+Upstream-Status: Pending
+
+Signed-off-by: Erik Boto <erik.boto@pelagicore.com>
+Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com>
+(cherry picked from commit 7cba001c5a502680f6dbf902821726779a9c9287)
+---
+ drivers/input/touchscreen/egalax_ts.c | 36 +++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c
+index 0b6cde7..271f820 100644
+--- a/drivers/input/touchscreen/egalax_ts.c
++++ b/drivers/input/touchscreen/egalax_ts.c
+@@ -133,7 +133,6 @@ retry:
+ }
+
+ if (down) {
+- /* should also report old pointers */
+ events[id].valid = valid;
+ events[id].status = down;
+ events[id].x = x;
+@@ -144,23 +143,6 @@ retry:
+ input_report_abs(input_dev, ABS_Y, y);
+ input_event(data->input_dev, EV_KEY, BTN_TOUCH, 1);
+ input_report_abs(input_dev, ABS_PRESSURE, 1);
+-#else
+- for (i = 0; i < MAX_SUPPORT_POINTS; i++) {
+- if (!events[i].valid)
+- continue;
+- dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d",
+- i, valid, x, y);
+-
+- input_report_abs(input_dev,
+- ABS_MT_TRACKING_ID, i);
+- input_report_abs(input_dev,
+- ABS_MT_TOUCH_MAJOR, 1);
+- input_report_abs(input_dev,
+- ABS_MT_POSITION_X, events[i].x);
+- input_report_abs(input_dev,
+- ABS_MT_POSITION_Y, events[i].y);
+- input_mt_sync(input_dev);
+- }
+ #endif
+ } else {
+ dev_dbg(&client->dev, "release id:%d\n", id);
+@@ -176,6 +158,24 @@ retry:
+ #endif
+ }
+
++#ifndef CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH
++ /* report all pointers */
++ for (i = 0; i < MAX_SUPPORT_POINTS; i++) {
++ if (!events[i].valid)
++ continue;
++ dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d",
++ i, valid, x, y);
++ input_report_abs(input_dev,
++ ABS_MT_TRACKING_ID, i);
++ input_report_abs(input_dev,
++ ABS_MT_TOUCH_MAJOR, 1);
++ input_report_abs(input_dev,
++ ABS_MT_POSITION_X, events[i].x);
++ input_report_abs(input_dev,
++ ABS_MT_POSITION_Y, events[i].y);
++ input_mt_sync(input_dev);
++ }
++#endif
+ input_sync(input_dev);
+ return IRQ_HANDLED;
+ }
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0006-Add-support-for-DVI-monitors.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0006-Add-support-for-DVI-monitors.patch
new file mode 100644
index 0000000..00a6b5c
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0006-Add-support-for-DVI-monitors.patch
@@ -0,0 +1,227 @@
+From 3e6441d113f72b412081a2c87f39011e4c253a35 Mon Sep 17 00:00:00 2001
+From: Robert Winkler <robert.winkler@boundarydevices.com>
+Date: Fri, 19 Jul 2013 19:00:41 -0700
+Subject: [PATCH] Add support for DVI monitors
+Organization: O.S. Systems Software LTDA.
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com>
+---
+ arch/arm/plat-mxc/include/mach/mxc_hdmi.h | 7 +++
+ drivers/video/mxc_hdmi.c | 98 +++++++++++++------------------
+ 2 files changed, 49 insertions(+), 56 deletions(-)
+
+diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h
+index 94f7638..af59c62 100644
+--- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h
++++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h
+@@ -605,6 +605,10 @@ enum {
+ HDMI_IH_MUTE_PHY_STAT0_TX_PHY_LOCK = 0x2,
+ HDMI_IH_MUTE_PHY_STAT0_HPD = 0x1,
+
++/* IH and IH_MUTE convenience macro RX_SENSE | HPD*/
++ HDMI_DVI_IH_STAT = 0x3D,
++
++
+ /* IH_AHBDMAAUD_STAT0 field values */
+ HDMI_IH_AHBDMAAUD_STAT0_ERROR = 0x20,
+ HDMI_IH_AHBDMAAUD_STAT0_LOST = 0x10,
+@@ -903,6 +907,9 @@ enum {
+ HDMI_PHY_HPD = 0x02,
+ HDMI_PHY_TX_PHY_LOCK = 0x01,
+
++/* HDMI STAT convenience RX_SENSE | HPD */
++ HDMI_DVI_STAT = 0xF2,
++
+ /* PHY_I2CM_SLAVE_ADDR field values */
+ HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69,
+ HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49,
+diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c
+index c5069aa..544f352 100644
+--- a/drivers/video/mxc_hdmi.c
++++ b/drivers/video/mxc_hdmi.c
+@@ -180,7 +180,6 @@ struct mxc_hdmi {
+ bool dft_mode_set;
+ char *dft_mode_str;
+ int default_bpp;
+- u8 latest_intr_stat;
+ bool irq_enabled;
+ spinlock_t irq_lock;
+ bool phy_enabled;
+@@ -1996,58 +1995,48 @@ static void hotplug_worker(struct work_struct *work)
+ struct delayed_work *delay_work = to_delayed_work(work);
+ struct mxc_hdmi *hdmi =
+ container_of(delay_work, struct mxc_hdmi, hotplug_work);
+- u32 phy_int_stat, phy_int_pol, phy_int_mask;
+- u8 val;
++ u32 hdmi_phy_stat0, hdmi_phy_pol0, hdmi_phy_mask0;
+ unsigned long flags;
+ char event_string[32];
+ char *envp[] = { event_string, NULL };
+
+- phy_int_stat = hdmi->latest_intr_stat;
+- phy_int_pol = hdmi_readb(HDMI_PHY_POL0);
+
+- dev_dbg(&hdmi->pdev->dev, "phy_int_stat=0x%x, phy_int_pol=0x%x\n",
+- phy_int_stat, phy_int_pol);
++ hdmi_phy_stat0 = hdmi_readb(HDMI_PHY_STAT0);
++ hdmi_phy_pol0 = hdmi_readb(HDMI_PHY_POL0);
++
++ dev_dbg(&hdmi->pdev->dev, "hdmi_phy_stat0=0x%x, hdmi_phy_pol0=0x%x\n",
++ hdmi_phy_stat0, hdmi_phy_pol0);
++
++ /* Make HPD intr active low to capture unplug event or
++ * active high to capture plugin event */
++ hdmi_writeb((HDMI_DVI_STAT & ~hdmi_phy_stat0), HDMI_PHY_POL0);
+
+ /* check cable status */
+- if (phy_int_stat & HDMI_IH_PHY_STAT0_HPD) {
+- /* cable connection changes */
+- if (phy_int_pol & HDMI_PHY_HPD) {
+- /* Plugin event */
+- dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n");
+- mxc_hdmi_cable_connected(hdmi);
+-
+- /* Make HPD intr active low to capture unplug event */
+- val = hdmi_readb(HDMI_PHY_POL0);
+- val &= ~HDMI_PHY_HPD;
+- hdmi_writeb(val, HDMI_PHY_POL0);
+-
+- sprintf(event_string, "EVENT=plugin");
+- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp);
++ if (hdmi_phy_stat0 & HDMI_DVI_STAT) {
++ /* Plugin event */
++ dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n");
++ mxc_hdmi_cable_connected(hdmi);
++
++ sprintf(event_string, "EVENT=plugin");
++ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp);
+ #ifdef CONFIG_MXC_HDMI_CEC
+- mxc_hdmi_cec_handle(0x80);
++ mxc_hdmi_cec_handle(0x80);
+ #endif
+- hdmi_set_cable_state(1);
+-
+- } else if (!(phy_int_pol & HDMI_PHY_HPD)) {
+- /* Plugout event */
+- dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n");
+- hdmi_set_cable_state(0);
+- mxc_hdmi_abort_stream();
+- mxc_hdmi_cable_disconnected(hdmi);
++ hdmi_set_cable_state(1);
+
+- /* Make HPD intr active high to capture plugin event */
+- val = hdmi_readb(HDMI_PHY_POL0);
+- val |= HDMI_PHY_HPD;
+- hdmi_writeb(val, HDMI_PHY_POL0);
++ } else {
++ /* Plugout event */
++ dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n");
++ hdmi_set_cable_state(0);
++ mxc_hdmi_abort_stream();
++ mxc_hdmi_cable_disconnected(hdmi);
+
+- sprintf(event_string, "EVENT=plugout");
+- kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp);
++ sprintf(event_string, "EVENT=plugout");
++ kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp);
+ #ifdef CONFIG_MXC_HDMI_CEC
+- mxc_hdmi_cec_handle(0x100);
++ mxc_hdmi_cec_handle(0x100);
+ #endif
+
+- } else
+- dev_dbg(&hdmi->pdev->dev, "EVENT=none?\n");
+ }
+
+ /* Lock here to ensure full powerdown sequence
+@@ -2055,12 +2044,12 @@ static void hotplug_worker(struct work_struct *work)
+ spin_lock_irqsave(&hdmi->irq_lock, flags);
+
+ /* Re-enable HPD interrupts */
+- phy_int_mask = hdmi_readb(HDMI_PHY_MASK0);
+- phy_int_mask &= ~HDMI_PHY_HPD;
+- hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0);
++ hdmi_phy_mask0 = hdmi_readb(HDMI_PHY_MASK0);
++ hdmi_phy_mask0 &= ~HDMI_DVI_STAT;
++ hdmi_writeb(hdmi_phy_mask0, HDMI_PHY_MASK0);
+
+ /* Unmute interrupts */
+- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
++ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0);
+
+ if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK)
+ mxc_hdmi_clear_overflow();
+@@ -2086,7 +2075,7 @@ static void hdcp_hdp_worker(struct work_struct *work)
+ static irqreturn_t mxc_hdmi_hotplug(int irq, void *data)
+ {
+ struct mxc_hdmi *hdmi = data;
+- u8 val, intr_stat;
++ u8 val;
+ unsigned long flags;
+
+ spin_lock_irqsave(&hdmi->irq_lock, flags);
+@@ -2108,25 +2097,22 @@ static irqreturn_t mxc_hdmi_hotplug(int irq, void *data)
+ * HDMI registers.
+ */
+ /* Capture status - used in hotplug_worker ISR */
+- intr_stat = hdmi_readb(HDMI_IH_PHY_STAT0);
+-
+- if (intr_stat & HDMI_IH_PHY_STAT0_HPD) {
++ if (hdmi_readb(HDMI_IH_PHY_STAT0) & HDMI_DVI_IH_STAT) {
+
+ dev_dbg(&hdmi->pdev->dev, "Hotplug interrupt received\n");
+- hdmi->latest_intr_stat = intr_stat;
+
+ /* Mute interrupts until handled */
+
+ val = hdmi_readb(HDMI_IH_MUTE_PHY_STAT0);
+- val |= HDMI_IH_MUTE_PHY_STAT0_HPD;
++ val |= HDMI_DVI_IH_STAT;
+ hdmi_writeb(val, HDMI_IH_MUTE_PHY_STAT0);
+
+ val = hdmi_readb(HDMI_PHY_MASK0);
+- val |= HDMI_PHY_HPD;
++ val |= HDMI_DVI_STAT;
+ hdmi_writeb(val, HDMI_PHY_MASK0);
+
+ /* Clear Hotplug interrupts */
+- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
++ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0);
+
+ schedule_delayed_work(&(hdmi->hotplug_work), msecs_to_jiffies(20));
+ }
+@@ -2282,13 +2268,13 @@ static void mxc_hdmi_fb_registered(struct mxc_hdmi *hdmi)
+ HDMI_PHY_I2CM_CTLINT_ADDR);
+
+ /* enable cable hot plug irq */
+- hdmi_writeb((u8)~HDMI_PHY_HPD, HDMI_PHY_MASK0);
++ hdmi_writeb((u8)~HDMI_DVI_STAT, HDMI_PHY_MASK0);
+
+ /* Clear Hotplug interrupts */
+- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
++ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0);
+
+ /* Unmute interrupts */
+- hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
++ hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0);
+
+ hdmi->fb_reg = true;
+
+@@ -2522,10 +2508,10 @@ static int mxc_hdmi_disp_init(struct mxc_dispdrv_handle *disp,
+
+ /* Configure registers related to HDMI interrupt
+ * generation before registering IRQ. */
+- hdmi_writeb(HDMI_PHY_HPD, HDMI_PHY_POL0);
++ hdmi_writeb(HDMI_DVI_STAT, HDMI_PHY_POL0);
+
+ /* Clear Hotplug interrupts */
+- hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
++ hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0);
+
+ hdmi->nb.notifier_call = mxc_hdmi_fb_event;
+ ret = fb_register_client(&hdmi->nb);
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch
new file mode 100644
index 0000000..d02aa40
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch
@@ -0,0 +1,38 @@
+From cd31abbe08372fa870fac78ae845edd4859f8835 Mon Sep 17 00:00:00 2001
+From: Fabio Estevam <fabio.estevam@freescale.com>
+Date: Sat, 28 Sep 2013 18:46:18 -0300
+Subject: [PATCH] ARM: mach-mx6: board-mx6q_sabresd: Register SDHC3 first
+Organization: O.S. Systems Software LTDA.
+
+On sabresd boards we boot from SDHC3, so let's register it as mmc0.
+
+Currently eMMC is mmc0 and mmc1 can be SDHC3 or SDHC2 (if present).
+
+Registering SDHC3 is safer as we can always find the rootfs.
+
+Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
+---
+ arch/arm/mach-mx6/board-mx6q_sabresd.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c
+index 3f9a845..4e6b323 100644
+--- a/arch/arm/mach-mx6/board-mx6q_sabresd.c
++++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c
+@@ -1847,12 +1847,9 @@ static void __init mx6_sabresd_board_init(void)
+
+ imx6q_add_pm_imx(0, &mx6q_sabresd_pm_data);
+
+- /* Move sd4 to first because sd4 connect to emmc.
+- Mfgtools want emmc is mmcblk0 and other sd card is mmcblk1.
+- */
++ imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data);
+ imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data);
+ imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);
+- imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data);
+ imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata);
+ imx6q_sabresd_init_usb();
+ /* SATA is not supported by MX6DL/Solo */
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/defconfig b/recipes-kernel/linux/linux-cubox-i-3.0.35/defconfig
new file mode 100644
index 0000000..bd0cef0
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/defconfig
@@ -0,0 +1,366 @@
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCALVERSION="-4.1.0+yocto"
+CONFIG_SYSVIPC=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_EMBEDDED=y
+CONFIG_PERF_EVENTS=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MXC=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_ARCH_MX6=y
+CONFIG_FORCE_MAX_ZONEORDER=14
+CONFIG_MACH_MX6Q_ARM2=y
+CONFIG_MACH_MX6Q_SABRELITE=y
+CONFIG_MACH_MX6Q_SABRESD=y
+CONFIG_MACH_MX6Q_SABREAUTO=y
+CONFIG_MACH_MX6Q_HDMIDONGLE=y
+CONFIG_MACH_C1=y
+CONFIG_MACH_CUBOX_I=y
+CONFIG_USB_EHCI_ARC_H1=y
+CONFIG_USB_FSL_ARC_OTG=y
+CONFIG_MXC_PWM=y
+CONFIG_MXC_REBOOT_MFGMODE=y
+CONFIG_CLK_DEBUG=y
+CONFIG_DMA_ZONE_SIZE=184
+# CONFIG_SWP_EMULATE is not set
+CONFIG_ARM_ERRATA_743622=y
+CONFIG_ARM_ERRATA_751472=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_SMP=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_HIGHMEM=y
+CONFIG_COMPACTION=y
+CONFIG_KSM=y
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2 ip=off"
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=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_CPU_FREQ_IMX=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_SUSPEND_DEVICE_TIME_DEBUG=y
+CONFIG_PM_RUNTIME=y
+CONFIG_PM_DEBUG=y
+CONFIG_APM_EMULATION=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_RAW=y
+CONFIG_CAN_BCM=y
+CONFIG_CAN_VCAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HCIBTUSB=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIVHCI=y
+CONFIG_CFG80211=y
+CONFIG_RFKILL=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_MISC_DEVICES=y
+CONFIG_MXS_PERFMON=m
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_ATA=y
+# CONFIG_SATA_PMP is not set
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_NETDEVICES=y
+CONFIG_MICREL_PHY=y
+CONFIG_NET_ETHERNET=y
+CONFIG_SMSC911X=y
+CONFIG_FEC_NAPI=y
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+CONFIG_ATH_COMMON=m
+CONFIG_ATH6KL=m
+CONFIG_BRCMFMAC=y
+CONFIG_HOSTAP=y
+CONFIG_INPUT_POLLDEV=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_EGALAX=y
+CONFIG_TOUCHSCREEN_ELAN=y
+CONFIG_TOUCHSCREEN_MAX11801=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+CONFIG_INPUT_ISL29023=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_FSL_OTP=y
+CONFIG_HW_RANDOM=y
+CONFIG_MXS_VIIM=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_SABRESD_MAX8903=y
+CONFIG_SENSORS_MAX17135=y
+CONFIG_SENSORS_MAG3110=y
+# CONFIG_MXC_MMA8450 is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_WM8994=y
+CONFIG_MFD_PFUZE=y
+CONFIG_MFD_MAX17135=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_MAX17135=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_VIDEO_DEV=y
+CONFIG_IR_GPIO_CIR=y
+# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
+CONFIG_VIDEO_MXC_CAMERA=m
+CONFIG_MXC_CAMERA_OV3640=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV8820_MIPI=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_USB_VIDEO_CLASS=m
+# CONFIG_RADIO_ADAPTERS is not set
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_MIPI_DSI=y
+CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y
+CONFIG_FB_MXC_EINK_PANEL=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_WM8962=y
+CONFIG_SND_SOC_IMX_CS42888=y
+CONFIG_SND_SOC_IMX_SPDIF=y
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_HIDRAW=y
+CONFIG_HID_A4TECH=m
+CONFIG_HID_APPLE=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_LOGITECH=m
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_USB=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG_WHITELIST is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ARC=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=y
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
+CONFIG_USB_SERIAL_ZIO=m
+CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_GADGET=y
+CONFIG_USB_AUDIO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_FILE_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_MXC_OTG=y
+CONFIG_MMC=y
+CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_PCF8523=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_IMX_SDMA=y
+CONFIG_MXC_IPU=y
+# CONFIG_MXC_HMP4E is not set
+# CONFIG_MXC_HWEVENT is not set
+CONFIG_MXC_ASRC=y
+CONFIG_MXC_MLB150=m
+CONFIG_MXC_GPU_VIV=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT4_FS=y
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=y
+CONFIG_CUSE=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_JFFS2_FS=y
+CONFIG_UBIFS_FS=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_ROOT_NFS=y
+CONFIG_CIFS=y
+CONFIG_CIFS_STATS=y
+CONFIG_CIFS_STATS2=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+CONFIG_PARTITION_ADVANCED=y
+CONFIG_EFI_PARTITION=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_UTF8=m
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_FS=y
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_XTS=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
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch
new file mode 100644
index 0000000..0a20b3f
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch
@@ -0,0 +1,143 @@
+From 149545df26169d257b144ff78934ce9cb5b6818b Mon Sep 17 00:00:00 2001
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Sat, 19 Oct 2013 10:55:11 -0300
+Subject: [PATCH] epdc: Rename mxcfb_epdc_kernel.h to mxc_epdc.h
+Organization: O.S. Systems Software LTDA.
+
+This allow for forward compatibility with imx-test >= 3.10.9-1.0.0.
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+---
+ drivers/video/mxc/mxc_epdc_fb.c | 2 +-
+ include/linux/mxcfb_epdc.h | 49 +++++++++++++++++++++++++++++++++++++++
+ include/linux/mxcfb_epdc_kernel.h | 49 ---------------------------------------
+ 3 files changed, 50 insertions(+), 50 deletions(-)
+ create mode 100644 include/linux/mxcfb_epdc.h
+ delete mode 100644 include/linux/mxcfb_epdc_kernel.h
+
+diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c
+index 4103498..b3ef8ea 100644
+--- a/drivers/video/mxc/mxc_epdc_fb.c
++++ b/drivers/video/mxc/mxc_epdc_fb.c
+@@ -43,7 +43,7 @@
+ #include <linux/dmaengine.h>
+ #include <linux/pxp_dma.h>
+ #include <linux/mxcfb.h>
+-#include <linux/mxcfb_epdc_kernel.h>
++#include <linux/mxcfb_epdc.h>
+ #include <linux/gpio.h>
+ #include <linux/regulator/driver.h>
+ #include <linux/fsl_devices.h>
+diff --git a/include/linux/mxcfb_epdc.h b/include/linux/mxcfb_epdc.h
+new file mode 100644
+index 0000000..06fea6f
+--- /dev/null
++++ b/include/linux/mxcfb_epdc.h
+@@ -0,0 +1,49 @@
++/*
++ * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved.
++ *
++ * This program 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, or
++ * (at your option) any later version.
++ *
++ * This program 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.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ */
++#ifndef _MXCFB_EPDC_KERNEL
++#define _MXCFB_EPDC_KERNEL
++
++void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes,
++ struct fb_info *info);
++int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info);
++int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info);
++int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data,
++ struct fb_info *info);
++int mxc_epdc_fb_wait_update_complete(
++ struct mxcfb_update_marker_data *marker_data,
++ struct fb_info *info);
++int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay,
++ struct fb_info *info);
++int mxc_epdc_get_pwrdown_delay(struct fb_info *info);
++int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info);
++
++void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes,
++ struct fb_info *info);
++int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info);
++int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info);
++int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data,
++ struct fb_info *info);
++int mxc_spdc_fb_wait_update_complete(
++ struct mxcfb_update_marker_data *marker_data,
++ struct fb_info *info);
++int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay,
++ struct fb_info *info);
++int mxc_spdc_get_pwrdown_delay(struct fb_info *info);
++int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info);
++#endif
+diff --git a/include/linux/mxcfb_epdc_kernel.h b/include/linux/mxcfb_epdc_kernel.h
+deleted file mode 100644
+index 06fea6f..0000000
+--- a/include/linux/mxcfb_epdc_kernel.h
++++ /dev/null
+@@ -1,49 +0,0 @@
+-/*
+- * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved.
+- *
+- * This program 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, or
+- * (at your option) any later version.
+- *
+- * This program 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.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+- *
+- */
+-#ifndef _MXCFB_EPDC_KERNEL
+-#define _MXCFB_EPDC_KERNEL
+-
+-void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes,
+- struct fb_info *info);
+-int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info);
+-int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info);
+-int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data,
+- struct fb_info *info);
+-int mxc_epdc_fb_wait_update_complete(
+- struct mxcfb_update_marker_data *marker_data,
+- struct fb_info *info);
+-int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay,
+- struct fb_info *info);
+-int mxc_epdc_get_pwrdown_delay(struct fb_info *info);
+-int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info);
+-
+-void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes,
+- struct fb_info *info);
+-int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info);
+-int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info);
+-int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data,
+- struct fb_info *info);
+-int mxc_spdc_fb_wait_update_complete(
+- struct mxcfb_update_marker_data *marker_data,
+- struct fb_info *info);
+-int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay,
+- struct fb_info *info);
+-int mxc_spdc_get_pwrdown_delay(struct fb_info *info);
+-int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info);
+-#endif
+--
+1.8.4.rc3
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/fix-install-breakage-for-fw-images.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/fix-install-breakage-for-fw-images.patch
new file mode 100644
index 0000000..86d4c37
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/fix-install-breakage-for-fw-images.patch
@@ -0,0 +1,32 @@
+From f6a15304bc2730ba091eb747c413d4ef4124565e Mon Sep 17 00:00:00 2001
+From: Denys Dmytriyenko <denys at ti.com>
+Date: Mon, 5 Mar 2012 16:34:53 -0500
+Subject: [PATCH] Makefile.fwinst: fix install breakage for FW images residing
+ in firmware/ dir
+
+This fixes below error found on some distros (Gentoo and Fedora):
+*** No rule to make target `lib/firmware/./', needed by `lib/firmware/ti_3410.fw'. Stop.
+
+Upstream-Status: Pending
+
+Signed-off-by: Denys Dmytriyenko <denys at ti.com>
+---
+ scripts/Makefile.fwinst | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/scripts/Makefile.fwinst b/scripts/Makefile.fwinst
+index 6bf8e87..4d908d1 100644
+--- a/scripts/Makefile.fwinst
++++ b/scripts/Makefile.fwinst
+@@ -27,7 +27,7 @@ endif
+ installed-mod-fw := $(addprefix $(INSTALL_FW_PATH)/,$(mod-fw))
+
+ installed-fw := $(addprefix $(INSTALL_FW_PATH)/,$(fw-shipped-all))
+-installed-fw-dirs := $(sort $(dir $(installed-fw))) $(INSTALL_FW_PATH)/.
++installed-fw-dirs := $(sort $(dir $(installed-fw))) $(INSTALL_FW_PATH)/./
+
+ # Workaround for make < 3.81, where .SECONDEXPANSION doesn't work.
+ PHONY += $(INSTALL_FW_PATH)/$$(%) install-all-dirs
+--
+1.7.8.5
+
diff --git a/recipes-kernel/linux/linux-cubox-i-3.0.35/mxc_hdmi-dont-require-cea-mode.patch b/recipes-kernel/linux/linux-cubox-i-3.0.35/mxc_hdmi-dont-require-cea-mode.patch
new file mode 100644
index 0000000..99d7f0c
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i-3.0.35/mxc_hdmi-dont-require-cea-mode.patch
@@ -0,0 +1,25 @@
+This fixes problems with DVI monitors connected to the HDMI port
+via a DVI <-> HDMI cable. With dvi monitors, the list of CEA modes
+is always zero, preventing modes higher than 1024x768 to be used.
+This patch disables the CEA mode check.
+
+Upstream-Status: Pending
+
+diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c
+index 544f352..fa67128 100644
+--- a/drivers/video/mxc_hdmi.c
++++ b/drivers/video/mxc_hdmi.c
+@@ -1804,10 +1804,10 @@ static void mxc_hdmi_edid_rebuild_modelist(struct mxc_hdmi *hdmi)
+ */
+ mode = &hdmi->fbi->monspecs.modedb[i];
+
+- if (!(mode->vmode & FB_VMODE_INTERLACED) &&
+- (mxc_edid_mode_to_vic(mode) != 0)) {
++ if (!(mode->vmode & FB_VMODE_INTERLACED)) {
++ int vic = mxc_edid_mode_to_vic(mode);
+
+- dev_dbg(&hdmi->pdev->dev, "Added mode %d:", i);
++ dev_dbg(&hdmi->pdev->dev, "%s: Added mode %d(VIC %u):", __func__, i, vic);
+ dev_dbg(&hdmi->pdev->dev,
+ "xres = %d, yres = %d, freq = %d, vmode = %d, flag = %d\n",
+ hdmi->fbi->monspecs.modedb[i].xres,
diff --git a/recipes-kernel/linux/linux-cubox-i_3.0.35.bb b/recipes-kernel/linux/linux-cubox-i_3.0.35.bb
new file mode 100644
index 0000000..49b1fe2
--- /dev/null
+++ b/recipes-kernel/linux/linux-cubox-i_3.0.35.bb
@@ -0,0 +1,23 @@
+include recipes-kernel/linux/linux-imx.inc
+
+SRCREV = "be699c6777f376b5f28e60d8d65942ac94b39908"
+LOCALVERSION = "-4.1.0-cubox-i+yocto"
+SRCBRANCH ?= "imx_3.0.35_4.1.0"
+
+# The added patches are the ones from linux-imx 3.0.35 , with exception of these which
+# are already included in the kernel repository:
+# drm-vivante-Add-00-sufix-in-returned-bus-Id.patch
+# 0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch
+SRC_URI = "git://github.com/SolidRun/linux-imx6.git;branch=${SRCBRANCH} \
+ file://defconfig \
+ file://epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch \
+ file://0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch \
+ file://0003-ARM-7670-1-fix-the-memset-fix.patch \
+ file://0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch \
+ file://0005-ENGR00271359-Add-Multi-touch-support.patch \
+ file://0006-Add-support-for-DVI-monitors.patch \
+ file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch \
+ file://mxc_hdmi-dont-require-cea-mode.patch \
+ file://fix-install-breakage-for-fw-images.patch"
+
+COMPATIBLE_MACHINE = "(cubox-i)"
--
1.8.5.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config
2014-01-29 0:03 [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 2/3] linux-cubox-i: add customized kernel Carlos Rafael Giani
@ 2014-01-29 0:03 ` Carlos Rafael Giani
2014-01-29 19:59 ` Otavio Salvador
2014-01-29 11:43 ` [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Daiane Angolini
2 siblings, 1 reply; 5+ messages in thread
From: Carlos Rafael Giani @ 2014-01-29 0:03 UTC (permalink / raw)
To: meta-freescale
The new cubox-i machine config produces images that can be used for
all CuBox-i and HummingBoard devices (u-boot SPL autodetects the platform)
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
---
conf/machine/cubox-i.conf | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
create mode 100644 conf/machine/cubox-i.conf
diff --git a/conf/machine/cubox-i.conf b/conf/machine/cubox-i.conf
new file mode 100644
index 0000000..e13f1c0
--- /dev/null
+++ b/conf/machine/cubox-i.conf
@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: SolidRun CuBox-i
+#@SOC: i.MX6 Q/DL/S
+#@DESCRIPTION: Machine configuration for SolidRun CuBox-i and HummingBoard machines
+#@MAINTAINER: Carlos Rafael Giani <dv@pseudoterminal.org>
+
+# Machine config for the SolidRun CuBox-i and HummingBoard machines.
+# They all use the same machine config, since the u-boot SPL autodetects the
+# machine type upon booting. SOC_FAMILY includes all SoCs from all of these machines
+# to let recipes include firmware etc. for all of these SoCs.
+
+require conf/machine/include/imx6sabresd-common.inc
+
+SOC_FAMILY = "mx6:mx6s:mx6dl:mx6q"
+
+PREFERRED_PROVIDER_u-boot = "u-boot-cubox-i"
+PREFERRED_PROVIDER_virtual/kernel = "linux-cubox-i"
+
+UBOOT_MAKE_TARGET = ""
+UBOOT_SUFFIX = "img"
+UBOOT_ENTRYPOINT = "0x10800000"
+UBOOT_CONFIG ??= "sd"
+UBOOT_CONFIG[sd] = "mx6_cubox-i_config,sdcard"
+UENV_FILENAME = "uEnv-${MACHINE}.txt"
+SPL_BINARY = "SPL"
+
+BOOT_SCRIPTS = "${UENV_FILENAME}:uEnv.txt"
+
+MACHINE_FEATURES += "alsa bluetooth irda serial usbhost wifi"
--
1.8.5.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines
2014-01-29 0:03 [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 2/3] linux-cubox-i: add customized kernel Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config Carlos Rafael Giani
@ 2014-01-29 11:43 ` Daiane Angolini
2 siblings, 0 replies; 5+ messages in thread
From: Daiane Angolini @ 2014-01-29 11:43 UTC (permalink / raw)
To: Carlos Rafael Giani, meta-freescale
On 28-01-2014 22:03, Carlos Rafael Giani wrote:
> This fork includes MXC SPL support for the SolidRun CuBox-i and
> HummingBoard devices
I think you're close to get this board included in meta-fsl-arm-extra,
Carlos.
As soon as your patches are applied, and you have your board in, could
you, please, update the release notes
(https://github.com/Freescale/Documentation) on master to include:
* you board in BSP Scope
* your kernel, please, add a description of your provider
* your u-boot, please, add a description of your provider
* your board name in this list
http://freescale.github.io/doc/release-notes/1.5/index.html#mx6
Please, contact me directly if you need help.
The complete document will be reviewed and reworked by me at release (I
mean, before April)
Thanks in advance,
Daiane
>
> Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
> ---
> recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt | 1 +
> recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb | 27 +++++++++++++++++++++++++++
> 2 files changed, 28 insertions(+)
> create mode 100644 recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
> create mode 100644 recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
>
> diff --git a/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt b/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
> new file mode 100644
> index 0000000..3ae0863
> --- /dev/null
> +++ b/recipes-bsp/u-boot/u-boot-cubox-i/uEnv.txt
> @@ -0,0 +1 @@
> +mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32
> diff --git a/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb b/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
> new file mode 100644
> index 0000000..6fa2ce6
> --- /dev/null
> +++ b/recipes-bsp/u-boot/u-boot-cubox-i_2013.10.bb
> @@ -0,0 +1,27 @@
> +require recipes-bsp/u-boot/u-boot.inc
> +
> +LICENSE = "GPLv2+"
> +LIC_FILES_CHKSUM = "file://Licenses/README;md5=bc069111b5e5b1ed8bed98ae73b596ec"
> +
> +PROVIDES += "u-boot"
> +
> +PV = "v2013.10+git${SRCPV}"
> +
> +SRCREV = "920ea0f20276614e11961924b1990b6c922c8d0e"
> +SRC_URI = " \
> + git://github.com/rabeeh/u-boot-imx6.git;branch=imx6 \
> + file://uEnv.txt \
> + "
> +
> +S = "${WORKDIR}/git"
> +
> +UENV_FILENAME ?= "uEnv-${MACHINE}.txt"
> +
> +deploy_uenv () {
> + install ${WORKDIR}/uEnv.txt ${DEPLOYDIR}/${UENV_FILENAME}
> +}
> +
> +do_deploy[postfuncs] += "deploy_uenv"
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +COMPATIBLE_MACHINE = "cubox-i"
>
--
Daiane
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config Carlos Rafael Giani
@ 2014-01-29 19:59 ` Otavio Salvador
0 siblings, 0 replies; 5+ messages in thread
From: Otavio Salvador @ 2014-01-29 19:59 UTC (permalink / raw)
To: Carlos Rafael Giani; +Cc: meta-freescale@yoctoproject.org
Hello Carlos,
On Tue, Jan 28, 2014 at 10:03 PM, Carlos Rafael Giani
<dv@pseudoterminal.org> wrote:
> The new cubox-i machine config produces images that can be used for
> all CuBox-i and HummingBoard devices (u-boot SPL autodetects the platform)
>
> Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
Thanks for all your work on this. I merged the patches and the board
is now included. As Daiane said, please include it in our release
notes repository so it is properly documented. The source code can be
found at:
http://github.com/Freescale/Documentation
please let us know if you need any help with it.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-29 19:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-29 0:03 [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 2/3] linux-cubox-i: add customized kernel Carlos Rafael Giani
2014-01-29 0:03 ` [meta-fsl-arm-extra][PATCH v5 3/3] cubox-i: add machine config Carlos Rafael Giani
2014-01-29 19:59 ` Otavio Salvador
2014-01-29 11:43 ` [meta-fsl-arm-extra][PATCH v5 1/3] u-boot-cubox-i: add u-boot fork for cubox-i machines Daiane Angolini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.