diff options
Diffstat (limited to 'meta-architech-extras/recipes/linux')
10 files changed, 1004 insertions, 0 deletions
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch new file mode 100644 index 0000000..abc02c9 --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 503daf4789dd23e4dc1e16c256de0c163fc2bf87 Mon Sep 17 00:00:00 2001 | ||
2 | From: Markus Trippelsdorf <markus@trippelsdorf.de> | ||
3 | Date: Wed, 4 Apr 2012 10:45:27 +0200 | ||
4 | Subject: [PATCH] perf tools: Fix getrusage() related build failure on glibc | ||
5 | trunk | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | Organization: O.S. Systems Software LTDA. | ||
10 | |||
11 | On a system running glibc trunk perf doesn't build: | ||
12 | |||
13 | CC builtin-sched.o | ||
14 | builtin-sched.c: In function ‘get_cpu_usage_nsec_parent’: builtin-sched.c:399:16: error: storage size of ‘ru’ isn’t known builtin-sched.c:403:2: error: implicit declaration of function ‘getrusage’ [-Werror=implicit-function-declaration] | ||
15 | [...] | ||
16 | |||
17 | Fix it by including sys/resource.h. | ||
18 | |||
19 | Upstream-Status: Pending | ||
20 | |||
21 | Signed-off-by: Markus Trippelsdorf <markus@trippelsdorf.de> | ||
22 | Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> | ||
23 | Link: http://lkml.kernel.org/r/20120404084527.GA294@x4 | ||
24 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
25 | --- | ||
26 | tools/perf/builtin-sched.c | 1 + | ||
27 | 1 file changed, 1 insertion(+) | ||
28 | |||
29 | diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c | ||
30 | index dcfe887..3632c2f 100644 | ||
31 | --- a/tools/perf/builtin-sched.c | ||
32 | +++ b/tools/perf/builtin-sched.c | ||
33 | @@ -14,6 +14,7 @@ | ||
34 | #include "util/debug.h" | ||
35 | |||
36 | #include <sys/prctl.h> | ||
37 | +#include <sys/resource.h> | ||
38 | |||
39 | #include <semaphore.h> | ||
40 | #include <pthread.h> | ||
41 | -- | ||
42 | 1.8.4.rc3 | ||
43 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch b/meta-architech-extras/recipes/linux/linux-imx-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/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch | |||
@@ -0,0 +1,259 @@ | |||
1 | From 2235b85f1c76d98b5f1e160cbd0a61a84c15e125 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ivan Djelic <ivan.djelic@parrot.com> | ||
3 | Date: Wed, 6 Mar 2013 20:09:27 +0100 | ||
4 | Subject: [PATCH] ARM: 7668/1: fix memset-related crashes caused by recent GCC | ||
5 | (4.7.2) optimizations | ||
6 | Organization: O.S. Systems Software LTDA. | ||
7 | |||
8 | Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on | ||
9 | assumptions about the implementation of memset and similar functions. | ||
10 | The current ARM optimized memset code does not return the value of | ||
11 | its first argument, as is usually expected from standard implementations. | ||
12 | |||
13 | For instance in the following function: | ||
14 | |||
15 | void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) | ||
16 | { | ||
17 | memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter)); | ||
18 | waiter->magic = waiter; | ||
19 | INIT_LIST_HEAD(&waiter->list); | ||
20 | } | ||
21 | |||
22 | compiled as: | ||
23 | |||
24 | 800554d0 <debug_mutex_lock_common>: | ||
25 | 800554d0: e92d4008 push {r3, lr} | ||
26 | 800554d4: e1a00001 mov r0, r1 | ||
27 | 800554d8: e3a02010 mov r2, #16 ; 0x10 | ||
28 | 800554dc: e3a01011 mov r1, #17 ; 0x11 | ||
29 | 800554e0: eb04426e bl 80165ea0 <memset> | ||
30 | 800554e4: e1a03000 mov r3, r0 | ||
31 | 800554e8: e583000c str r0, [r3, #12] | ||
32 | 800554ec: e5830000 str r0, [r3] | ||
33 | 800554f0: e5830004 str r0, [r3, #4] | ||
34 | 800554f4: e8bd8008 pop {r3, pc} | ||
35 | |||
36 | GCC assumes memset returns the value of pointer 'waiter' in register r0; causing | ||
37 | register/memory corruptions. | ||
38 | |||
39 | This patch fixes the return value of the assembly version of memset. | ||
40 | It adds a 'mov' instruction and merges an additional load+store into | ||
41 | existing load/store instructions. | ||
42 | For ease of review, here is a breakdown of the patch into 4 simple steps: | ||
43 | |||
44 | Step 1 | ||
45 | ====== | ||
46 | Perform the following substitutions: | ||
47 | ip -> r8, then | ||
48 | r0 -> ip, | ||
49 | and insert 'mov ip, r0' as the first statement of the function. | ||
50 | At this point, we have a memset() implementation returning the proper result, | ||
51 | but corrupting r8 on some paths (the ones that were using ip). | ||
52 | |||
53 | Step 2 | ||
54 | ====== | ||
55 | Make sure r8 is saved and restored when (! CALGN(1)+0) == 1: | ||
56 | |||
57 | save r8: | ||
58 | - str lr, [sp, #-4]! | ||
59 | + stmfd sp!, {r8, lr} | ||
60 | |||
61 | and restore r8 on both exit paths: | ||
62 | - ldmeqfd sp!, {pc} @ Now <64 bytes to go. | ||
63 | + ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. | ||
64 | (...) | ||
65 | tst r2, #16 | ||
66 | stmneia ip!, {r1, r3, r8, lr} | ||
67 | - ldr lr, [sp], #4 | ||
68 | + ldmfd sp!, {r8, lr} | ||
69 | |||
70 | Step 3 | ||
71 | ====== | ||
72 | Make sure r8 is saved and restored when (! CALGN(1)+0) == 0: | ||
73 | |||
74 | save r8: | ||
75 | - stmfd sp!, {r4-r7, lr} | ||
76 | + stmfd sp!, {r4-r8, lr} | ||
77 | |||
78 | and restore r8 on both exit paths: | ||
79 | bgt 3b | ||
80 | - ldmeqfd sp!, {r4-r7, pc} | ||
81 | + ldmeqfd sp!, {r4-r8, pc} | ||
82 | (...) | ||
83 | tst r2, #16 | ||
84 | stmneia ip!, {r4-r7} | ||
85 | - ldmfd sp!, {r4-r7, lr} | ||
86 | + ldmfd sp!, {r4-r8, lr} | ||
87 | |||
88 | Step 4 | ||
89 | ====== | ||
90 | Rewrite register list "r4-r7, r8" as "r4-r8". | ||
91 | |||
92 | Upstream-Status: Pending | ||
93 | |||
94 | Signed-off-by: Ivan Djelic <ivan.djelic@parrot.com> | ||
95 | Reviewed-by: Nicolas Pitre <nico@linaro.org> | ||
96 | Signed-off-by: Dirk Behme <dirk.behme@gmail.com> | ||
97 | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> | ||
98 | (cherry picked from commit 455bd4c430b0c0a361f38e8658a0d6cb469942b5) | ||
99 | --- | ||
100 | arch/arm/lib/memset.S | 85 ++++++++++++++++++++++++++------------------------- | ||
101 | 1 file changed, 44 insertions(+), 41 deletions(-) | ||
102 | |||
103 | diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S | ||
104 | index 650d592..d912e73 100644 | ||
105 | --- a/arch/arm/lib/memset.S | ||
106 | +++ b/arch/arm/lib/memset.S | ||
107 | @@ -19,9 +19,9 @@ | ||
108 | 1: subs r2, r2, #4 @ 1 do we have enough | ||
109 | blt 5f @ 1 bytes to align with? | ||
110 | cmp r3, #2 @ 1 | ||
111 | - strltb r1, [r0], #1 @ 1 | ||
112 | - strleb r1, [r0], #1 @ 1 | ||
113 | - strb r1, [r0], #1 @ 1 | ||
114 | + strltb r1, [ip], #1 @ 1 | ||
115 | + strleb r1, [ip], #1 @ 1 | ||
116 | + strb r1, [ip], #1 @ 1 | ||
117 | add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) | ||
118 | /* | ||
119 | * The pointer is now aligned and the length is adjusted. Try doing the | ||
120 | @@ -29,10 +29,14 @@ | ||
121 | */ | ||
122 | |||
123 | ENTRY(memset) | ||
124 | - ands r3, r0, #3 @ 1 unaligned? | ||
125 | +/* | ||
126 | + * Preserve the contents of r0 for the return value. | ||
127 | + */ | ||
128 | + mov ip, r0 | ||
129 | + ands r3, ip, #3 @ 1 unaligned? | ||
130 | bne 1b @ 1 | ||
131 | /* | ||
132 | - * we know that the pointer in r0 is aligned to a word boundary. | ||
133 | + * we know that the pointer in ip is aligned to a word boundary. | ||
134 | */ | ||
135 | orr r1, r1, r1, lsl #8 | ||
136 | orr r1, r1, r1, lsl #16 | ||
137 | @@ -43,29 +47,28 @@ ENTRY(memset) | ||
138 | #if ! CALGN(1)+0 | ||
139 | |||
140 | /* | ||
141 | - * We need an extra register for this loop - save the return address and | ||
142 | - * use the LR | ||
143 | + * We need 2 extra registers for this loop - use r8 and the LR | ||
144 | */ | ||
145 | - str lr, [sp, #-4]! | ||
146 | - mov ip, r1 | ||
147 | + stmfd sp!, {r8, lr} | ||
148 | + mov r8, r1 | ||
149 | mov lr, r1 | ||
150 | |||
151 | 2: subs r2, r2, #64 | ||
152 | - stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time. | ||
153 | - stmgeia r0!, {r1, r3, ip, lr} | ||
154 | - stmgeia r0!, {r1, r3, ip, lr} | ||
155 | - stmgeia r0!, {r1, r3, ip, lr} | ||
156 | + stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. | ||
157 | + stmgeia ip!, {r1, r3, r8, lr} | ||
158 | + stmgeia ip!, {r1, r3, r8, lr} | ||
159 | + stmgeia ip!, {r1, r3, r8, lr} | ||
160 | bgt 2b | ||
161 | - ldmeqfd sp!, {pc} @ Now <64 bytes to go. | ||
162 | + ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. | ||
163 | /* | ||
164 | * No need to correct the count; we're only testing bits from now on | ||
165 | */ | ||
166 | tst r2, #32 | ||
167 | - stmneia r0!, {r1, r3, ip, lr} | ||
168 | - stmneia r0!, {r1, r3, ip, lr} | ||
169 | + stmneia ip!, {r1, r3, r8, lr} | ||
170 | + stmneia ip!, {r1, r3, r8, lr} | ||
171 | tst r2, #16 | ||
172 | - stmneia r0!, {r1, r3, ip, lr} | ||
173 | - ldr lr, [sp], #4 | ||
174 | + stmneia ip!, {r1, r3, r8, lr} | ||
175 | + ldmfd sp!, {r8, lr} | ||
176 | |||
177 | #else | ||
178 | |||
179 | @@ -74,54 +77,54 @@ ENTRY(memset) | ||
180 | * whole cache lines at once. | ||
181 | */ | ||
182 | |||
183 | - stmfd sp!, {r4-r7, lr} | ||
184 | + stmfd sp!, {r4-r8, lr} | ||
185 | mov r4, r1 | ||
186 | mov r5, r1 | ||
187 | mov r6, r1 | ||
188 | mov r7, r1 | ||
189 | - mov ip, r1 | ||
190 | + mov r8, r1 | ||
191 | mov lr, r1 | ||
192 | |||
193 | cmp r2, #96 | ||
194 | - tstgt r0, #31 | ||
195 | + tstgt ip, #31 | ||
196 | ble 3f | ||
197 | |||
198 | - and ip, r0, #31 | ||
199 | - rsb ip, ip, #32 | ||
200 | - sub r2, r2, ip | ||
201 | - movs ip, ip, lsl #(32 - 4) | ||
202 | - stmcsia r0!, {r4, r5, r6, r7} | ||
203 | - stmmiia r0!, {r4, r5} | ||
204 | - tst ip, #(1 << 30) | ||
205 | - mov ip, r1 | ||
206 | - strne r1, [r0], #4 | ||
207 | + and r8, ip, #31 | ||
208 | + rsb r8, r8, #32 | ||
209 | + sub r2, r2, r8 | ||
210 | + movs r8, r8, lsl #(32 - 4) | ||
211 | + stmcsia ip!, {r4, r5, r6, r7} | ||
212 | + stmmiia ip!, {r4, r5} | ||
213 | + tst r8, #(1 << 30) | ||
214 | + mov r8, r1 | ||
215 | + strne r1, [ip], #4 | ||
216 | |||
217 | 3: subs r2, r2, #64 | ||
218 | - stmgeia r0!, {r1, r3-r7, ip, lr} | ||
219 | - stmgeia r0!, {r1, r3-r7, ip, lr} | ||
220 | + stmgeia ip!, {r1, r3-r8, lr} | ||
221 | + stmgeia ip!, {r1, r3-r8, lr} | ||
222 | bgt 3b | ||
223 | - ldmeqfd sp!, {r4-r7, pc} | ||
224 | + ldmeqfd sp!, {r4-r8, pc} | ||
225 | |||
226 | tst r2, #32 | ||
227 | - stmneia r0!, {r1, r3-r7, ip, lr} | ||
228 | + stmneia ip!, {r1, r3-r8, lr} | ||
229 | tst r2, #16 | ||
230 | - stmneia r0!, {r4-r7} | ||
231 | - ldmfd sp!, {r4-r7, lr} | ||
232 | + stmneia ip!, {r4-r7} | ||
233 | + ldmfd sp!, {r4-r8, lr} | ||
234 | |||
235 | #endif | ||
236 | |||
237 | 4: tst r2, #8 | ||
238 | - stmneia r0!, {r1, r3} | ||
239 | + stmneia ip!, {r1, r3} | ||
240 | tst r2, #4 | ||
241 | - strne r1, [r0], #4 | ||
242 | + strne r1, [ip], #4 | ||
243 | /* | ||
244 | * When we get here, we've got less than 4 bytes to zero. We | ||
245 | * may have an unaligned pointer as well. | ||
246 | */ | ||
247 | 5: tst r2, #2 | ||
248 | - strneb r1, [r0], #1 | ||
249 | - strneb r1, [r0], #1 | ||
250 | + strneb r1, [ip], #1 | ||
251 | + strneb r1, [ip], #1 | ||
252 | tst r2, #1 | ||
253 | - strneb r1, [r0], #1 | ||
254 | + strneb r1, [ip], #1 | ||
255 | mov pc, lr | ||
256 | ENDPROC(memset) | ||
257 | -- | ||
258 | 1.8.4.rc3 | ||
259 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch new file mode 100644 index 0000000..b8d6f53 --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0003-ARM-7670-1-fix-the-memset-fix.patch | |||
@@ -0,0 +1,87 @@ | |||
1 | From 2ba23fa6c4128febaaf57fe184420a7111caa237 Mon Sep 17 00:00:00 2001 | ||
2 | From: Nicolas Pitre <nicolas.pitre@linaro.org> | ||
3 | Date: Tue, 12 Mar 2013 13:00:42 +0100 | ||
4 | Subject: [PATCH] ARM: 7670/1: fix the memset fix | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | Commit 455bd4c430b0 ("ARM: 7668/1: fix memset-related crashes caused by | ||
8 | recent GCC (4.7.2) optimizations") attempted to fix a compliance issue | ||
9 | with the memset return value. However the memset itself became broken | ||
10 | by that patch for misaligned pointers. | ||
11 | |||
12 | This fixes the above by branching over the entry code from the | ||
13 | misaligned fixup code to avoid reloading the original pointer. | ||
14 | |||
15 | Also, because the function entry alignment is wrong in the Thumb mode | ||
16 | compilation, that fixup code is moved to the end. | ||
17 | |||
18 | While at it, the entry instructions are slightly reworked to help dual | ||
19 | issue pipelines. | ||
20 | |||
21 | Upstream-Status: Pending | ||
22 | |||
23 | Signed-off-by: Nicolas Pitre <nico@linaro.org> | ||
24 | Tested-by: Alexander Holler <holler@ahsoftware.de> | ||
25 | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> | ||
26 | (cherry picked from commit 418df63adac56841ef6b0f1fcf435bc64d4ed177) | ||
27 | --- | ||
28 | arch/arm/lib/memset.S | 33 +++++++++++++-------------------- | ||
29 | 1 file changed, 13 insertions(+), 20 deletions(-) | ||
30 | |||
31 | diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S | ||
32 | index d912e73..94b0650 100644 | ||
33 | --- a/arch/arm/lib/memset.S | ||
34 | +++ b/arch/arm/lib/memset.S | ||
35 | @@ -14,31 +14,15 @@ | ||
36 | |||
37 | .text | ||
38 | .align 5 | ||
39 | - .word 0 | ||
40 | - | ||
41 | -1: subs r2, r2, #4 @ 1 do we have enough | ||
42 | - blt 5f @ 1 bytes to align with? | ||
43 | - cmp r3, #2 @ 1 | ||
44 | - strltb r1, [ip], #1 @ 1 | ||
45 | - strleb r1, [ip], #1 @ 1 | ||
46 | - strb r1, [ip], #1 @ 1 | ||
47 | - add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) | ||
48 | -/* | ||
49 | - * The pointer is now aligned and the length is adjusted. Try doing the | ||
50 | - * memset again. | ||
51 | - */ | ||
52 | |||
53 | ENTRY(memset) | ||
54 | -/* | ||
55 | - * Preserve the contents of r0 for the return value. | ||
56 | - */ | ||
57 | - mov ip, r0 | ||
58 | - ands r3, ip, #3 @ 1 unaligned? | ||
59 | - bne 1b @ 1 | ||
60 | + ands r3, r0, #3 @ 1 unaligned? | ||
61 | + mov ip, r0 @ preserve r0 as return value | ||
62 | + bne 6f @ 1 | ||
63 | /* | ||
64 | * we know that the pointer in ip is aligned to a word boundary. | ||
65 | */ | ||
66 | - orr r1, r1, r1, lsl #8 | ||
67 | +1: orr r1, r1, r1, lsl #8 | ||
68 | orr r1, r1, r1, lsl #16 | ||
69 | mov r3, r1 | ||
70 | cmp r2, #16 | ||
71 | @@ -127,4 +111,13 @@ ENTRY(memset) | ||
72 | tst r2, #1 | ||
73 | strneb r1, [ip], #1 | ||
74 | mov pc, lr | ||
75 | + | ||
76 | +6: subs r2, r2, #4 @ 1 do we have enough | ||
77 | + blt 5b @ 1 bytes to align with? | ||
78 | + cmp r3, #2 @ 1 | ||
79 | + strltb r1, [ip], #1 @ 1 | ||
80 | + strleb r1, [ip], #1 @ 1 | ||
81 | + strb r1, [ip], #1 @ 1 | ||
82 | + add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) | ||
83 | + b 1b | ||
84 | ENDPROC(memset) | ||
85 | -- | ||
86 | 1.8.4.rc3 | ||
87 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch new file mode 100644 index 0000000..7316351 --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From d8601292ae25e0af47aa4486055221ab44113f0e Mon Sep 17 00:00:00 2001 | ||
2 | From: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> | ||
3 | Date: Mon, 15 Jul 2013 15:34:54 -0500 | ||
4 | Subject: [PATCH] ENGR00271136 Fix build break when CONFIG_CLK_DEBUG is | ||
5 | disabled | ||
6 | Organization: O.S. Systems Software LTDA. | ||
7 | |||
8 | clk structure member name is defined only when CONFIG_CLK_DEBUG is enabled. | ||
9 | Hence need to encapsulate the code with this config. | ||
10 | |||
11 | Patch received from imx community: | ||
12 | https://community.freescale.com/thread/308482 | ||
13 | |||
14 | Upstream-Status: Pending | ||
15 | |||
16 | Signed-off-by: xiongweihuang | ||
17 | Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> | ||
18 | --- | ||
19 | arch/arm/plat-mxc/clock.c | 4 ++-- | ||
20 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
21 | |||
22 | diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c | ||
23 | index 93347eb..1aa2664 100755 | ||
24 | --- a/arch/arm/plat-mxc/clock.c | ||
25 | +++ b/arch/arm/plat-mxc/clock.c | ||
26 | @@ -58,12 +58,12 @@ static void __clk_disable(struct clk *clk) | ||
27 | { | ||
28 | if (clk == NULL || IS_ERR(clk)) | ||
29 | return; | ||
30 | - | ||
31 | +#ifdef CONFIG_CLK_DEBUG | ||
32 | if (!clk->usecount) { | ||
33 | WARN(1, "clock enable/disable mismatch! clk %s\n", clk->name); | ||
34 | return; | ||
35 | } | ||
36 | - | ||
37 | +#endif | ||
38 | if (!(--clk->usecount)) { | ||
39 | if (clk->disable) | ||
40 | clk->disable(clk); | ||
41 | -- | ||
42 | 1.8.4.rc3 | ||
43 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch new file mode 100644 index 0000000..cb20198 --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0005-ENGR00271359-Add-Multi-touch-support.patch | |||
@@ -0,0 +1,98 @@ | |||
1 | From 538f4bb2f7a51f267395550a5be9f0ab2e426712 Mon Sep 17 00:00:00 2001 | ||
2 | From: Erik Boto <erik.boto@pelagicore.com> | ||
3 | Date: Tue, 16 Jul 2013 12:06:05 -0500 | ||
4 | Subject: [PATCH] ENGR00271359 Add Multi-touch support | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | The previous behavior of the driver did not work properly with Qt5 | ||
8 | QtQuick multi touch-point gestures, due to how touch-points are | ||
9 | reported when removing a touch-point. My interpretation of the | ||
10 | available documentation [1] was that the driver should report all | ||
11 | touch-points between SYN_REPORTs, but it is not explicitly stated so. | ||
12 | I've found another mail-thread [2] where the creator of the protocol | ||
13 | states: | ||
14 | |||
15 | "The protocol defines a generic way of sending a variable amount of | ||
16 | contacts. The contact count is obtained by counting the number of | ||
17 | non-empty finger packets between SYN_REPORT events."-Henrik Rydberg | ||
18 | |||
19 | I think this verifies my assumption that all touch-points should be | ||
20 | reported between SYN_REPORTs, otherwise it can not be used to obtain | ||
21 | the count. | ||
22 | |||
23 | [1] https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt | ||
24 | [2] http://lists.x.org/archives/xorg-devel/2010-March/006466.html | ||
25 | |||
26 | Upstream-Status: Pending | ||
27 | |||
28 | Signed-off-by: Erik Boto <erik.boto@pelagicore.com> | ||
29 | Signed-off-by: Mahesh Mahadevan <Mahesh.Mahadevan@freescale.com> | ||
30 | (cherry picked from commit 7cba001c5a502680f6dbf902821726779a9c9287) | ||
31 | --- | ||
32 | drivers/input/touchscreen/egalax_ts.c | 36 +++++++++++++++++------------------ | ||
33 | 1 file changed, 18 insertions(+), 18 deletions(-) | ||
34 | |||
35 | diff --git a/drivers/input/touchscreen/egalax_ts.c b/drivers/input/touchscreen/egalax_ts.c | ||
36 | index 0b6cde7..271f820 100644 | ||
37 | --- a/drivers/input/touchscreen/egalax_ts.c | ||
38 | +++ b/drivers/input/touchscreen/egalax_ts.c | ||
39 | @@ -133,7 +133,6 @@ retry: | ||
40 | } | ||
41 | |||
42 | if (down) { | ||
43 | - /* should also report old pointers */ | ||
44 | events[id].valid = valid; | ||
45 | events[id].status = down; | ||
46 | events[id].x = x; | ||
47 | @@ -144,23 +143,6 @@ retry: | ||
48 | input_report_abs(input_dev, ABS_Y, y); | ||
49 | input_event(data->input_dev, EV_KEY, BTN_TOUCH, 1); | ||
50 | input_report_abs(input_dev, ABS_PRESSURE, 1); | ||
51 | -#else | ||
52 | - for (i = 0; i < MAX_SUPPORT_POINTS; i++) { | ||
53 | - if (!events[i].valid) | ||
54 | - continue; | ||
55 | - dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", | ||
56 | - i, valid, x, y); | ||
57 | - | ||
58 | - input_report_abs(input_dev, | ||
59 | - ABS_MT_TRACKING_ID, i); | ||
60 | - input_report_abs(input_dev, | ||
61 | - ABS_MT_TOUCH_MAJOR, 1); | ||
62 | - input_report_abs(input_dev, | ||
63 | - ABS_MT_POSITION_X, events[i].x); | ||
64 | - input_report_abs(input_dev, | ||
65 | - ABS_MT_POSITION_Y, events[i].y); | ||
66 | - input_mt_sync(input_dev); | ||
67 | - } | ||
68 | #endif | ||
69 | } else { | ||
70 | dev_dbg(&client->dev, "release id:%d\n", id); | ||
71 | @@ -176,6 +158,24 @@ retry: | ||
72 | #endif | ||
73 | } | ||
74 | |||
75 | +#ifndef CONFIG_TOUCHSCREEN_EGALAX_SINGLE_TOUCH | ||
76 | + /* report all pointers */ | ||
77 | + for (i = 0; i < MAX_SUPPORT_POINTS; i++) { | ||
78 | + if (!events[i].valid) | ||
79 | + continue; | ||
80 | + dev_dbg(&client->dev, "report id:%d valid:%d x:%d y:%d", | ||
81 | + i, valid, x, y); | ||
82 | + input_report_abs(input_dev, | ||
83 | + ABS_MT_TRACKING_ID, i); | ||
84 | + input_report_abs(input_dev, | ||
85 | + ABS_MT_TOUCH_MAJOR, 1); | ||
86 | + input_report_abs(input_dev, | ||
87 | + ABS_MT_POSITION_X, events[i].x); | ||
88 | + input_report_abs(input_dev, | ||
89 | + ABS_MT_POSITION_Y, events[i].y); | ||
90 | + input_mt_sync(input_dev); | ||
91 | + } | ||
92 | +#endif | ||
93 | input_sync(input_dev); | ||
94 | return IRQ_HANDLED; | ||
95 | } | ||
96 | -- | ||
97 | 1.8.4.rc3 | ||
98 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch new file mode 100644 index 0000000..00a6b5c --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0006-Add-support-for-DVI-monitors.patch | |||
@@ -0,0 +1,227 @@ | |||
1 | From 3e6441d113f72b412081a2c87f39011e4c253a35 Mon Sep 17 00:00:00 2001 | ||
2 | From: Robert Winkler <robert.winkler@boundarydevices.com> | ||
3 | Date: Fri, 19 Jul 2013 19:00:41 -0700 | ||
4 | Subject: [PATCH] Add support for DVI monitors | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | Upstream-Status: Pending | ||
8 | |||
9 | Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com> | ||
10 | --- | ||
11 | arch/arm/plat-mxc/include/mach/mxc_hdmi.h | 7 +++ | ||
12 | drivers/video/mxc_hdmi.c | 98 +++++++++++++------------------ | ||
13 | 2 files changed, 49 insertions(+), 56 deletions(-) | ||
14 | |||
15 | diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h | ||
16 | index 94f7638..af59c62 100644 | ||
17 | --- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h | ||
18 | +++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h | ||
19 | @@ -605,6 +605,10 @@ enum { | ||
20 | HDMI_IH_MUTE_PHY_STAT0_TX_PHY_LOCK = 0x2, | ||
21 | HDMI_IH_MUTE_PHY_STAT0_HPD = 0x1, | ||
22 | |||
23 | +/* IH and IH_MUTE convenience macro RX_SENSE | HPD*/ | ||
24 | + HDMI_DVI_IH_STAT = 0x3D, | ||
25 | + | ||
26 | + | ||
27 | /* IH_AHBDMAAUD_STAT0 field values */ | ||
28 | HDMI_IH_AHBDMAAUD_STAT0_ERROR = 0x20, | ||
29 | HDMI_IH_AHBDMAAUD_STAT0_LOST = 0x10, | ||
30 | @@ -903,6 +907,9 @@ enum { | ||
31 | HDMI_PHY_HPD = 0x02, | ||
32 | HDMI_PHY_TX_PHY_LOCK = 0x01, | ||
33 | |||
34 | +/* HDMI STAT convenience RX_SENSE | HPD */ | ||
35 | + HDMI_DVI_STAT = 0xF2, | ||
36 | + | ||
37 | /* PHY_I2CM_SLAVE_ADDR field values */ | ||
38 | HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69, | ||
39 | HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49, | ||
40 | diff --git a/drivers/video/mxc_hdmi.c b/drivers/video/mxc_hdmi.c | ||
41 | index c5069aa..544f352 100644 | ||
42 | --- a/drivers/video/mxc_hdmi.c | ||
43 | +++ b/drivers/video/mxc_hdmi.c | ||
44 | @@ -180,7 +180,6 @@ struct mxc_hdmi { | ||
45 | bool dft_mode_set; | ||
46 | char *dft_mode_str; | ||
47 | int default_bpp; | ||
48 | - u8 latest_intr_stat; | ||
49 | bool irq_enabled; | ||
50 | spinlock_t irq_lock; | ||
51 | bool phy_enabled; | ||
52 | @@ -1996,58 +1995,48 @@ static void hotplug_worker(struct work_struct *work) | ||
53 | struct delayed_work *delay_work = to_delayed_work(work); | ||
54 | struct mxc_hdmi *hdmi = | ||
55 | container_of(delay_work, struct mxc_hdmi, hotplug_work); | ||
56 | - u32 phy_int_stat, phy_int_pol, phy_int_mask; | ||
57 | - u8 val; | ||
58 | + u32 hdmi_phy_stat0, hdmi_phy_pol0, hdmi_phy_mask0; | ||
59 | unsigned long flags; | ||
60 | char event_string[32]; | ||
61 | char *envp[] = { event_string, NULL }; | ||
62 | |||
63 | - phy_int_stat = hdmi->latest_intr_stat; | ||
64 | - phy_int_pol = hdmi_readb(HDMI_PHY_POL0); | ||
65 | |||
66 | - dev_dbg(&hdmi->pdev->dev, "phy_int_stat=0x%x, phy_int_pol=0x%x\n", | ||
67 | - phy_int_stat, phy_int_pol); | ||
68 | + hdmi_phy_stat0 = hdmi_readb(HDMI_PHY_STAT0); | ||
69 | + hdmi_phy_pol0 = hdmi_readb(HDMI_PHY_POL0); | ||
70 | + | ||
71 | + dev_dbg(&hdmi->pdev->dev, "hdmi_phy_stat0=0x%x, hdmi_phy_pol0=0x%x\n", | ||
72 | + hdmi_phy_stat0, hdmi_phy_pol0); | ||
73 | + | ||
74 | + /* Make HPD intr active low to capture unplug event or | ||
75 | + * active high to capture plugin event */ | ||
76 | + hdmi_writeb((HDMI_DVI_STAT & ~hdmi_phy_stat0), HDMI_PHY_POL0); | ||
77 | |||
78 | /* check cable status */ | ||
79 | - if (phy_int_stat & HDMI_IH_PHY_STAT0_HPD) { | ||
80 | - /* cable connection changes */ | ||
81 | - if (phy_int_pol & HDMI_PHY_HPD) { | ||
82 | - /* Plugin event */ | ||
83 | - dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); | ||
84 | - mxc_hdmi_cable_connected(hdmi); | ||
85 | - | ||
86 | - /* Make HPD intr active low to capture unplug event */ | ||
87 | - val = hdmi_readb(HDMI_PHY_POL0); | ||
88 | - val &= ~HDMI_PHY_HPD; | ||
89 | - hdmi_writeb(val, HDMI_PHY_POL0); | ||
90 | - | ||
91 | - sprintf(event_string, "EVENT=plugin"); | ||
92 | - kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); | ||
93 | + if (hdmi_phy_stat0 & HDMI_DVI_STAT) { | ||
94 | + /* Plugin event */ | ||
95 | + dev_dbg(&hdmi->pdev->dev, "EVENT=plugin\n"); | ||
96 | + mxc_hdmi_cable_connected(hdmi); | ||
97 | + | ||
98 | + sprintf(event_string, "EVENT=plugin"); | ||
99 | + kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); | ||
100 | #ifdef CONFIG_MXC_HDMI_CEC | ||
101 | - mxc_hdmi_cec_handle(0x80); | ||
102 | + mxc_hdmi_cec_handle(0x80); | ||
103 | #endif | ||
104 | - hdmi_set_cable_state(1); | ||
105 | - | ||
106 | - } else if (!(phy_int_pol & HDMI_PHY_HPD)) { | ||
107 | - /* Plugout event */ | ||
108 | - dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); | ||
109 | - hdmi_set_cable_state(0); | ||
110 | - mxc_hdmi_abort_stream(); | ||
111 | - mxc_hdmi_cable_disconnected(hdmi); | ||
112 | + hdmi_set_cable_state(1); | ||
113 | |||
114 | - /* Make HPD intr active high to capture plugin event */ | ||
115 | - val = hdmi_readb(HDMI_PHY_POL0); | ||
116 | - val |= HDMI_PHY_HPD; | ||
117 | - hdmi_writeb(val, HDMI_PHY_POL0); | ||
118 | + } else { | ||
119 | + /* Plugout event */ | ||
120 | + dev_dbg(&hdmi->pdev->dev, "EVENT=plugout\n"); | ||
121 | + hdmi_set_cable_state(0); | ||
122 | + mxc_hdmi_abort_stream(); | ||
123 | + mxc_hdmi_cable_disconnected(hdmi); | ||
124 | |||
125 | - sprintf(event_string, "EVENT=plugout"); | ||
126 | - kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); | ||
127 | + sprintf(event_string, "EVENT=plugout"); | ||
128 | + kobject_uevent_env(&hdmi->pdev->dev.kobj, KOBJ_CHANGE, envp); | ||
129 | #ifdef CONFIG_MXC_HDMI_CEC | ||
130 | - mxc_hdmi_cec_handle(0x100); | ||
131 | + mxc_hdmi_cec_handle(0x100); | ||
132 | #endif | ||
133 | |||
134 | - } else | ||
135 | - dev_dbg(&hdmi->pdev->dev, "EVENT=none?\n"); | ||
136 | } | ||
137 | |||
138 | /* Lock here to ensure full powerdown sequence | ||
139 | @@ -2055,12 +2044,12 @@ static void hotplug_worker(struct work_struct *work) | ||
140 | spin_lock_irqsave(&hdmi->irq_lock, flags); | ||
141 | |||
142 | /* Re-enable HPD interrupts */ | ||
143 | - phy_int_mask = hdmi_readb(HDMI_PHY_MASK0); | ||
144 | - phy_int_mask &= ~HDMI_PHY_HPD; | ||
145 | - hdmi_writeb(phy_int_mask, HDMI_PHY_MASK0); | ||
146 | + hdmi_phy_mask0 = hdmi_readb(HDMI_PHY_MASK0); | ||
147 | + hdmi_phy_mask0 &= ~HDMI_DVI_STAT; | ||
148 | + hdmi_writeb(hdmi_phy_mask0, HDMI_PHY_MASK0); | ||
149 | |||
150 | /* Unmute interrupts */ | ||
151 | - hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); | ||
152 | + hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); | ||
153 | |||
154 | if (hdmi_readb(HDMI_IH_FC_STAT2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) | ||
155 | mxc_hdmi_clear_overflow(); | ||
156 | @@ -2086,7 +2075,7 @@ static void hdcp_hdp_worker(struct work_struct *work) | ||
157 | static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) | ||
158 | { | ||
159 | struct mxc_hdmi *hdmi = data; | ||
160 | - u8 val, intr_stat; | ||
161 | + u8 val; | ||
162 | unsigned long flags; | ||
163 | |||
164 | spin_lock_irqsave(&hdmi->irq_lock, flags); | ||
165 | @@ -2108,25 +2097,22 @@ static irqreturn_t mxc_hdmi_hotplug(int irq, void *data) | ||
166 | * HDMI registers. | ||
167 | */ | ||
168 | /* Capture status - used in hotplug_worker ISR */ | ||
169 | - intr_stat = hdmi_readb(HDMI_IH_PHY_STAT0); | ||
170 | - | ||
171 | - if (intr_stat & HDMI_IH_PHY_STAT0_HPD) { | ||
172 | + if (hdmi_readb(HDMI_IH_PHY_STAT0) & HDMI_DVI_IH_STAT) { | ||
173 | |||
174 | dev_dbg(&hdmi->pdev->dev, "Hotplug interrupt received\n"); | ||
175 | - hdmi->latest_intr_stat = intr_stat; | ||
176 | |||
177 | /* Mute interrupts until handled */ | ||
178 | |||
179 | val = hdmi_readb(HDMI_IH_MUTE_PHY_STAT0); | ||
180 | - val |= HDMI_IH_MUTE_PHY_STAT0_HPD; | ||
181 | + val |= HDMI_DVI_IH_STAT; | ||
182 | hdmi_writeb(val, HDMI_IH_MUTE_PHY_STAT0); | ||
183 | |||
184 | val = hdmi_readb(HDMI_PHY_MASK0); | ||
185 | - val |= HDMI_PHY_HPD; | ||
186 | + val |= HDMI_DVI_STAT; | ||
187 | hdmi_writeb(val, HDMI_PHY_MASK0); | ||
188 | |||
189 | /* Clear Hotplug interrupts */ | ||
190 | - hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); | ||
191 | + hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); | ||
192 | |||
193 | schedule_delayed_work(&(hdmi->hotplug_work), msecs_to_jiffies(20)); | ||
194 | } | ||
195 | @@ -2282,13 +2268,13 @@ static void mxc_hdmi_fb_registered(struct mxc_hdmi *hdmi) | ||
196 | HDMI_PHY_I2CM_CTLINT_ADDR); | ||
197 | |||
198 | /* enable cable hot plug irq */ | ||
199 | - hdmi_writeb((u8)~HDMI_PHY_HPD, HDMI_PHY_MASK0); | ||
200 | + hdmi_writeb((u8)~HDMI_DVI_STAT, HDMI_PHY_MASK0); | ||
201 | |||
202 | /* Clear Hotplug interrupts */ | ||
203 | - hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); | ||
204 | + hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); | ||
205 | |||
206 | /* Unmute interrupts */ | ||
207 | - hdmi_writeb(~HDMI_IH_MUTE_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0); | ||
208 | + hdmi_writeb(~HDMI_DVI_IH_STAT, HDMI_IH_MUTE_PHY_STAT0); | ||
209 | |||
210 | hdmi->fb_reg = true; | ||
211 | |||
212 | @@ -2522,10 +2508,10 @@ static int mxc_hdmi_disp_init(struct mxc_dispdrv_handle *disp, | ||
213 | |||
214 | /* Configure registers related to HDMI interrupt | ||
215 | * generation before registering IRQ. */ | ||
216 | - hdmi_writeb(HDMI_PHY_HPD, HDMI_PHY_POL0); | ||
217 | + hdmi_writeb(HDMI_DVI_STAT, HDMI_PHY_POL0); | ||
218 | |||
219 | /* Clear Hotplug interrupts */ | ||
220 | - hdmi_writeb(HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0); | ||
221 | + hdmi_writeb(HDMI_DVI_IH_STAT, HDMI_IH_PHY_STAT0); | ||
222 | |||
223 | hdmi->nb.notifier_call = mxc_hdmi_fb_event; | ||
224 | ret = fb_register_client(&hdmi->nb); | ||
225 | -- | ||
226 | 1.8.4.rc3 | ||
227 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch new file mode 100644 index 0000000..d02aa40 --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From cd31abbe08372fa870fac78ae845edd4859f8835 Mon Sep 17 00:00:00 2001 | ||
2 | From: Fabio Estevam <fabio.estevam@freescale.com> | ||
3 | Date: Sat, 28 Sep 2013 18:46:18 -0300 | ||
4 | Subject: [PATCH] ARM: mach-mx6: board-mx6q_sabresd: Register SDHC3 first | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | On sabresd boards we boot from SDHC3, so let's register it as mmc0. | ||
8 | |||
9 | Currently eMMC is mmc0 and mmc1 can be SDHC3 or SDHC2 (if present). | ||
10 | |||
11 | Registering SDHC3 is safer as we can always find the rootfs. | ||
12 | |||
13 | Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> | ||
14 | --- | ||
15 | arch/arm/mach-mx6/board-mx6q_sabresd.c | 5 +---- | ||
16 | 1 file changed, 1 insertion(+), 4 deletions(-) | ||
17 | |||
18 | diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c | ||
19 | index 3f9a845..4e6b323 100644 | ||
20 | --- a/arch/arm/mach-mx6/board-mx6q_sabresd.c | ||
21 | +++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c | ||
22 | @@ -1847,12 +1847,9 @@ static void __init mx6_sabresd_board_init(void) | ||
23 | |||
24 | imx6q_add_pm_imx(0, &mx6q_sabresd_pm_data); | ||
25 | |||
26 | - /* Move sd4 to first because sd4 connect to emmc. | ||
27 | - Mfgtools want emmc is mmcblk0 and other sd card is mmcblk1. | ||
28 | - */ | ||
29 | + imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); | ||
30 | imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data); | ||
31 | imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data); | ||
32 | - imx6q_add_sdhci_usdhc_imx(2, &mx6q_sabresd_sd3_data); | ||
33 | imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata); | ||
34 | imx6q_sabresd_init_usb(); | ||
35 | /* SATA is not supported by MX6DL/Solo */ | ||
36 | -- | ||
37 | 1.8.4.rc3 | ||
38 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch new file mode 100644 index 0000000..815d02c --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/drm-vivante-Add-00-sufix-in-returned-bus-Id.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From b37a944f55a5010bd08297a63db0275540922f32 Mon Sep 17 00:00:00 2001 | ||
2 | From: Otavio Salvador <otavio@ossystems.com.br> | ||
3 | Date: Thu, 22 Aug 2013 16:31:29 -0300 | ||
4 | Subject: [PATCH] drm/vivante: Add ":00" sufix in returned bus Id | ||
5 | |||
6 | This makes the 3.0.35 compatible with a Xorg driver build for 3.5.7 or | ||
7 | newer kernels. | ||
8 | |||
9 | Upstream-Status: Inapropriate [embedded specific] | ||
10 | |||
11 | Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> | ||
12 | --- | ||
13 | drivers/gpu/drm/vivante/vivante_drv.c | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/drivers/gpu/drm/vivante/vivante_drv.c b/drivers/gpu/drm/vivante/vivante_drv.c | ||
17 | index 4224608..cea360d 100644 | ||
18 | --- a/drivers/gpu/drm/vivante/vivante_drv.c | ||
19 | +++ b/drivers/gpu/drm/vivante/vivante_drv.c | ||
20 | @@ -55,7 +55,7 @@ | ||
21 | |||
22 | #include "drm_pciids.h" | ||
23 | |||
24 | -static char platformdevicename[] = "Vivante GCCore"; | ||
25 | +static char platformdevicename[] = "Vivante GCCore:00"; | ||
26 | static struct platform_device *pplatformdev; | ||
27 | |||
28 | static struct drm_driver driver = { | ||
29 | -- | ||
30 | 1.8.4.rc1 | ||
31 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch new file mode 100644 index 0000000..0a20b3f --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx-3.0.35/epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch | |||
@@ -0,0 +1,143 @@ | |||
1 | From 149545df26169d257b144ff78934ce9cb5b6818b Mon Sep 17 00:00:00 2001 | ||
2 | From: Otavio Salvador <otavio@ossystems.com.br> | ||
3 | Date: Sat, 19 Oct 2013 10:55:11 -0300 | ||
4 | Subject: [PATCH] epdc: Rename mxcfb_epdc_kernel.h to mxc_epdc.h | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | This allow for forward compatibility with imx-test >= 3.10.9-1.0.0. | ||
8 | |||
9 | Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> | ||
10 | --- | ||
11 | drivers/video/mxc/mxc_epdc_fb.c | 2 +- | ||
12 | include/linux/mxcfb_epdc.h | 49 +++++++++++++++++++++++++++++++++++++++ | ||
13 | include/linux/mxcfb_epdc_kernel.h | 49 --------------------------------------- | ||
14 | 3 files changed, 50 insertions(+), 50 deletions(-) | ||
15 | create mode 100644 include/linux/mxcfb_epdc.h | ||
16 | delete mode 100644 include/linux/mxcfb_epdc_kernel.h | ||
17 | |||
18 | diff --git a/drivers/video/mxc/mxc_epdc_fb.c b/drivers/video/mxc/mxc_epdc_fb.c | ||
19 | index 4103498..b3ef8ea 100644 | ||
20 | --- a/drivers/video/mxc/mxc_epdc_fb.c | ||
21 | +++ b/drivers/video/mxc/mxc_epdc_fb.c | ||
22 | @@ -43,7 +43,7 @@ | ||
23 | #include <linux/dmaengine.h> | ||
24 | #include <linux/pxp_dma.h> | ||
25 | #include <linux/mxcfb.h> | ||
26 | -#include <linux/mxcfb_epdc_kernel.h> | ||
27 | +#include <linux/mxcfb_epdc.h> | ||
28 | #include <linux/gpio.h> | ||
29 | #include <linux/regulator/driver.h> | ||
30 | #include <linux/fsl_devices.h> | ||
31 | diff --git a/include/linux/mxcfb_epdc.h b/include/linux/mxcfb_epdc.h | ||
32 | new file mode 100644 | ||
33 | index 0000000..06fea6f | ||
34 | --- /dev/null | ||
35 | +++ b/include/linux/mxcfb_epdc.h | ||
36 | @@ -0,0 +1,49 @@ | ||
37 | +/* | ||
38 | + * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. | ||
39 | + * | ||
40 | + * This program is free software; you can redistribute it and/or modify | ||
41 | + * it under the terms of the GNU General Public License as published by | ||
42 | + * the Free Software Foundation; either version 2 of the License, or | ||
43 | + * (at your option) any later version. | ||
44 | + * | ||
45 | + * This program is distributed in the hope that it will be useful, | ||
46 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
47 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
48 | + * GNU General Public License for more details. | ||
49 | + * | ||
50 | + * You should have received a copy of the GNU General Public License | ||
51 | + * along with this program; if not, write to the Free Software | ||
52 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
53 | + * | ||
54 | + */ | ||
55 | +#ifndef _MXCFB_EPDC_KERNEL | ||
56 | +#define _MXCFB_EPDC_KERNEL | ||
57 | + | ||
58 | +void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, | ||
59 | + struct fb_info *info); | ||
60 | +int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); | ||
61 | +int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); | ||
62 | +int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, | ||
63 | + struct fb_info *info); | ||
64 | +int mxc_epdc_fb_wait_update_complete( | ||
65 | + struct mxcfb_update_marker_data *marker_data, | ||
66 | + struct fb_info *info); | ||
67 | +int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, | ||
68 | + struct fb_info *info); | ||
69 | +int mxc_epdc_get_pwrdown_delay(struct fb_info *info); | ||
70 | +int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); | ||
71 | + | ||
72 | +void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, | ||
73 | + struct fb_info *info); | ||
74 | +int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); | ||
75 | +int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); | ||
76 | +int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, | ||
77 | + struct fb_info *info); | ||
78 | +int mxc_spdc_fb_wait_update_complete( | ||
79 | + struct mxcfb_update_marker_data *marker_data, | ||
80 | + struct fb_info *info); | ||
81 | +int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, | ||
82 | + struct fb_info *info); | ||
83 | +int mxc_spdc_get_pwrdown_delay(struct fb_info *info); | ||
84 | +int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); | ||
85 | +#endif | ||
86 | diff --git a/include/linux/mxcfb_epdc_kernel.h b/include/linux/mxcfb_epdc_kernel.h | ||
87 | deleted file mode 100644 | ||
88 | index 06fea6f..0000000 | ||
89 | --- a/include/linux/mxcfb_epdc_kernel.h | ||
90 | +++ /dev/null | ||
91 | @@ -1,49 +0,0 @@ | ||
92 | -/* | ||
93 | - * Copyright (C) 2010-2012 Freescale Semiconductor, Inc. All Rights Reserved. | ||
94 | - * | ||
95 | - * This program is free software; you can redistribute it and/or modify | ||
96 | - * it under the terms of the GNU General Public License as published by | ||
97 | - * the Free Software Foundation; either version 2 of the License, or | ||
98 | - * (at your option) any later version. | ||
99 | - * | ||
100 | - * This program is distributed in the hope that it will be useful, | ||
101 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
102 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
103 | - * GNU General Public License for more details. | ||
104 | - * | ||
105 | - * You should have received a copy of the GNU General Public License | ||
106 | - * along with this program; if not, write to the Free Software | ||
107 | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
108 | - * | ||
109 | - */ | ||
110 | -#ifndef _MXCFB_EPDC_KERNEL | ||
111 | -#define _MXCFB_EPDC_KERNEL | ||
112 | - | ||
113 | -void mxc_epdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, | ||
114 | - struct fb_info *info); | ||
115 | -int mxc_epdc_fb_set_temperature(int temperature, struct fb_info *info); | ||
116 | -int mxc_epdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); | ||
117 | -int mxc_epdc_fb_send_update(struct mxcfb_update_data *upd_data, | ||
118 | - struct fb_info *info); | ||
119 | -int mxc_epdc_fb_wait_update_complete( | ||
120 | - struct mxcfb_update_marker_data *marker_data, | ||
121 | - struct fb_info *info); | ||
122 | -int mxc_epdc_fb_set_pwrdown_delay(u32 pwrdown_delay, | ||
123 | - struct fb_info *info); | ||
124 | -int mxc_epdc_get_pwrdown_delay(struct fb_info *info); | ||
125 | -int mxc_epdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); | ||
126 | - | ||
127 | -void mxc_spdc_fb_set_waveform_modes(struct mxcfb_waveform_modes *modes, | ||
128 | - struct fb_info *info); | ||
129 | -int mxc_spdc_fb_set_temperature(int temperature, struct fb_info *info); | ||
130 | -int mxc_spdc_fb_set_auto_update(u32 auto_mode, struct fb_info *info); | ||
131 | -int mxc_spdc_fb_send_update(struct mxcfb_update_data *upd_data, | ||
132 | - struct fb_info *info); | ||
133 | -int mxc_spdc_fb_wait_update_complete( | ||
134 | - struct mxcfb_update_marker_data *marker_data, | ||
135 | - struct fb_info *info); | ||
136 | -int mxc_spdc_fb_set_pwrdown_delay(u32 pwrdown_delay, | ||
137 | - struct fb_info *info); | ||
138 | -int mxc_spdc_get_pwrdown_delay(struct fb_info *info); | ||
139 | -int mxc_spdc_fb_set_upd_scheme(u32 upd_scheme, struct fb_info *info); | ||
140 | -#endif | ||
141 | -- | ||
142 | 1.8.4.rc3 | ||
143 | |||
diff --git a/meta-architech-extras/recipes/linux/linux-imx_3.0.35.bb b/meta-architech-extras/recipes/linux/linux-imx_3.0.35.bb new file mode 100644 index 0000000..8b80a6e --- /dev/null +++ b/meta-architech-extras/recipes/linux/linux-imx_3.0.35.bb | |||
@@ -0,0 +1,35 @@ | |||
1 | # Copyright (C) 2011-2013 Freescale Semiconductor | ||
2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
3 | |||
4 | require recipes-kernel/linux/linux-imx.inc | ||
5 | |||
6 | COMPATIBLE_MACHINE = "(mx6)" | ||
7 | |||
8 | # Revision of 4.1.0 branch | ||
9 | SRCREV = "bdde708ebfde4a8c1d3829578d3f6481a343533a" | ||
10 | LOCALVERSION = "-4.1.0+yocto" | ||
11 | |||
12 | # Patches need for Yocto and not applied by Freescale when doing 4.1.0 branch | ||
13 | SRC_URI += "file://drm-vivante-Add-00-sufix-in-returned-bus-Id.patch \ | ||
14 | file://epdc-Rename-mxcfb_epdc_kernel.h-to-mxc_epdc.h.patch \ | ||
15 | file://0001-perf-tools-Fix-getrusage-related-build-failure-on-gl.patch \ | ||
16 | file://0002-ARM-7668-1-fix-memset-related-crashes-caused-by-rece.patch \ | ||
17 | file://0003-ARM-7670-1-fix-the-memset-fix.patch \ | ||
18 | file://0004-ENGR00271136-Fix-build-break-when-CONFIG_CLK_DEBUG-i.patch \ | ||
19 | file://0005-ENGR00271359-Add-Multi-touch-support.patch \ | ||
20 | file://0006-Add-support-for-DVI-monitors.patch \ | ||
21 | file://0007-ARM-mach-mx6-board-mx6q_sabresd-Register-SDHC3-first.patch" | ||
22 | |||
23 | # kernel image files are not needed in the image | ||
24 | RDEPENDS_kernel-base = "" | ||
25 | |||
26 | do_configure_prepend() { | ||
27 | # FunctionFS for adb | ||
28 | echo "CONFIG_USB_FUNCTIONFS=m" >> ${WORKDIR}/defconfig | ||
29 | |||
30 | # Enable USB serial support | ||
31 | echo "CONFIG_USB_SERIAL=m" >> ${WORKDIR}/defconfig | ||
32 | echo "CONFIG_USB_SERIAL_GENERIC=y" >> ${WORKDIR}/defconfig | ||
33 | echo "CONFIG_USB_SERIAL_FTDI_SIO=m" >> ${WORKDIR}/defconfig | ||
34 | echo "CONFIG_USB_SERIAL_PL2303=m" >> ${WORKDIR}/defconfig | ||
35 | } | ||