[meta-freescale] [3rdparty][PATCH] linux-boundary-rt: Add initial recipe

Ian Coolidge ian at boundarydevices.com
Thu Feb 9 14:28:24 PST 2017


Add support for the Boundary Devices kernel with the realtime patch applied

Patches and defconfig changes are based on linux-imx-rt recipe

Signed-off-by: Ian Coolidge <ian at boundarydevices.com>
---
 .../linux-boundary-rt-4.1.15/0001-fix-build.patch  |  71 ++++
 .../0002-no-split-ptlocks.patch                    |  85 ++++
 ...-around-CPU-stalls-in-the-imx-sdma-driver.patch | 126 ++++++
 .../0004-export-swait-locked-functions.patch       |  31 ++
 .../linux/linux-boundary-rt-4.1.15/defconfig       | 451 +++++++++++++++++++++
 recipes-kernel/linux/linux-boundary-rt_4.1.15.bb   |  25 ++
 6 files changed, 789 insertions(+)
 create mode 100644 recipes-kernel/linux/linux-boundary-rt-4.1.15/0001-fix-build.patch
 create mode 100644 recipes-kernel/linux/linux-boundary-rt-4.1.15/0002-no-split-ptlocks.patch
 create mode 100644 recipes-kernel/linux/linux-boundary-rt-4.1.15/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
 create mode 100644 recipes-kernel/linux/linux-boundary-rt-4.1.15/0004-export-swait-locked-functions.patch
 create mode 100644 recipes-kernel/linux/linux-boundary-rt-4.1.15/defconfig
 create mode 100644 recipes-kernel/linux/linux-boundary-rt_4.1.15.bb

diff --git a/recipes-kernel/linux/linux-boundary-rt-4.1.15/0001-fix-build.patch b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0001-fix-build.patch
new file mode 100644
index 0000000..4be4066
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0001-fix-build.patch
@@ -0,0 +1,71 @@
+Fix build errors when RT patch is applied
+
+Upstream-Status: Inappropriate [other]
+Freescale does not support the RT patch
+
+Signed-off-by: Jacob Kroon <jacob.kroon at mikrodidakt.se>
+Signed-off-by: Dominic Sacré <dominic.sacre at gmx.de> [updated for 3.14.28]
+
+diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+index 2ec98dc..5d0b7df 100644
+--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
++++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+@@ -7344,7 +7344,7 @@ gckOS_WaitSignal(
+ 
+     might_sleep();
+ 
+-    spin_lock_irq(&signal->obj.wait.lock);
++    raw_spin_lock_irq(&signal->obj.wait.lock);
+ 
+     if (signal->obj.done)
+     {
+@@ -7366,9 +7366,8 @@ gckOS_WaitSignal(
+             ? MAX_SCHEDULE_TIMEOUT
+             : Wait * HZ / 1000;
+ 
+-        DECLARE_WAITQUEUE(wait, current);
+-        wait.flags |= WQ_FLAG_EXCLUSIVE;
+-        __add_wait_queue_tail(&signal->obj.wait, &wait);
++        DEFINE_SWAITER(wait);
++        swait_prepare_locked(&signal->obj.wait, &wait);
+ 
+         while (gcvTRUE)
+         {
+@@ -7380,9 +7379,9 @@ gckOS_WaitSignal(
+             }
+ 
+             __set_current_state(TASK_INTERRUPTIBLE);
+-            spin_unlock_irq(&signal->obj.wait.lock);
++            raw_spin_unlock_irq(&signal->obj.wait.lock);
+             timeout = schedule_timeout(timeout);
+-            spin_lock_irq(&signal->obj.wait.lock);
++            raw_spin_lock_irq(&signal->obj.wait.lock);
+ 
+             if (signal->obj.done)
+             {
+@@ -7403,10 +7402,10 @@ gckOS_WaitSignal(
+             }
+         }
+ 
+-        __remove_wait_queue(&signal->obj.wait, &wait);
++        swait_finish_locked(&signal->obj.wait, &wait);
+     }
+ 
+-    spin_unlock_irq(&signal->obj.wait.lock);
++    raw_spin_unlock_irq(&signal->obj.wait.lock);
+ 
+ OnError:
+     /* Return status. */
+diff --git a/include/linux/imx_sema4.h b/include/linux/imx_sema4.h
+index 9787980..3586199 100644
+--- a/include/linux/imx_sema4.h
++++ b/include/linux/imx_sema4.h
+@@ -9,6 +9,8 @@
+ #ifndef __LINUX_IMX_SEMA4_H__
+ #define __LINUX_IMX_SEMA4_H__
+ 
++#include <linux/wait.h>
++
+ #define SEMA4_NUM_DEVICES	1
+ #define SEMA4_NUM_GATES		16
+ 
diff --git a/recipes-kernel/linux/linux-boundary-rt-4.1.15/0002-no-split-ptlocks.patch b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0002-no-split-ptlocks.patch
new file mode 100644
index 0000000..40c012a
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0002-no-split-ptlocks.patch
@@ -0,0 +1,85 @@
+Work around the oops below by disabling split ptlocks
+
+Upstream-Status: Inappropriate [disable feature]
+
+Signed-off-by: Jacob Kroon <jacob.kroon at mikrodidakt.se>
+Signed-off-by: Dominic Sacré <dominic.sacre at gmx.de> [updated for 3.14.28]
+
+Unable to handle kernel NULL pointer dereference at virtual address 00000000
+pgd = ac5a8000
+[00000000] *pgd=3c8db831, *pte=00000000, *ppte=00000000
+Internal error: Oops: 17 [#1] PREEMPT SMP ARM
+Modules linked in:
+CPU: 1 PID: 277 Comm: test-qt5 Not tainted 3.10.17-rt12-monkey+gec1af9f #2
+task: ac65df80 ti: ac968000 task.ti: ac968000
+PC is at _raw_spin_lock+0x10/0x4c
+LR is at get_parent_ip+0x10/0x2c
+pc : [<80623fd4>]    lr : [<8004ef18>]    psr: 60010013
+sp : ac969c38  ip : 80c44404  fp : 00000000
+r10: ac65df80  r9 : ac969cd8  r8 : 00000000
+r7 : 00000054  r6 : afffe000  r5 : 00000000  r4 : 00000000
+r3 : ac65df80  r2 : 00000001  r1 : 00000000  r0 : 00000000
+Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
+Control: 10c53c7d  Table: 3c5a804a  DAC: 00000015
+Process test-qt5 (pid: 277, stack limit = 0xac968238)
+Stack: (0xac969c38 to 0xac96a000)
+9c20:                                                       b00549a8 806235e0
+9c40: 00000000 ac968000 812f9a00 80017cec ac969c74 fffffffe 00000000 00005000
+9c60: 00000000 80017e6c ac968000 ac65df80 00000000 00000000 00000001 ac968001
+9c80: ac65df80 b00549a8 00000000 afffe000 00000054 00000000 ac969cd8 afffe150
+9ca0: b0054bf8 8044e540 ac969cd8 b00549a8 ac0b8180 00000230 ac8fd000 00000230
+9cc0: 00000000 8044f6f4 ac155700 ac969cf4 ac155700 804605b8 ac155700 ac969d8c
+9ce0: 00000002 ac969d24 b0054bf8 804607f4 7ef1fcd0 80450078 ac0b8180 ac155700
+9d00: ac969d8c 00000002 ac8fd000 8045f1a0 ac969d24 00000000 ac8fd01c b00549a8
+9d20: b0050000 00000008 ac969d98 ac0b8300 ac969d8c 00000115 ac969d98 ac969e00
+9d40: ac155600 ac3985f0 7ef1fcd0 8045661c 00000115 00000000 00000001 00000000
+9d60: 00007530 80454144 80c32e18 00000001 81518e18 806237dc 00000001 ac968038
+9d80: 00000000 00000000 00000000 00000000 00000115 806237dc ac6f5688 ac968018
+9da0: 812e1640 00000000 00000001 ac968000 ac969dc4 8004efe4 ac968008 ac39a000
+9dc0: ac744400 ac968020 00007530 ac968000 ac968000 ac3985f0 7ef1fcd0 8044d374
+9de0: 7ef1fd20 00000000 000000f8 00000000 7ef1fd20 00000000 000000f8 00000000
+9e00: 00000028 00000002 00000000 6437d1dd 7ef1fddc 76f9c030 7ef1fd88 76fb9abc
+9e20: 00000320 00005007 e02c7eca c1399eff 020fb2db 00000000 00000000 00000000
+9e40: 00000001 00000040 00000400 00000004 00000010 00000400 00000002 00000100
+9e60: 00000100 00000008 00000008 00000000 ffffffff 00000000 7588e180 76fb1000
+9e80: 08000000 00000000 00000000 76fb11b8 000000af 760b6cd8 ffffffff 7431d4c0
+9ea0: 000cb1ac 75889000 00000000 00000001 000000b0 00000000 00000000 76fa0da0
+9ec0: 00000000 00000001 00000001 00000000 00000000 7588cb40 00000001 75957ecc
+9ee0: 00000001 7ef1fe7c 75953e94 7ef1fedc 00000002 76fa789c 00007530 ac6813c0
+9f00: 00000000 7ef1fcd0 ac6813c0 ac968000 ac3985f0 800d68fc 00000001 ac968000
+9f20: ac969f34 8004efe4 ac4f71d4 6c31d000 00000000 80623fd4 00000000 80623578
+9f40: ac4f71d4 800a3d40 00000001 00000000 ac969f5c 00000003 ac6813c8 00000000
+9f60: 00000001 00007530 00000003 00000000 7ef1fcd0 ac6813c0 ac968000 00000000
+9f80: 00000000 800d6afc ac4f7180 00000000 00002710 00007530 75957e40 00000036
+9fa0: 8000e2c4 8000e140 00002710 00007530 00000003 00007530 7ef1fcd0 01bc3008
+9fc0: 00002710 00007530 75957e40 00000036 01bd2e70 00000001 7ef1fd20 00000000
+9fe0: 759540c4 7ef1fcbc 7593f698 760a0ccc 20010010 00000003 00000000 00000000
+[<80623fd4>] (_raw_spin_lock+0x10/0x4c) from [<806235e0>] (rt_spin_lock_slowlock+0x34/0x29c)
+[<806235e0>] (rt_spin_lock_slowlock+0x34/0x29c) from [<8044e540>] (_QueryProcessPageTable+0x8c/0xdc)
+[<8044e540>] (_QueryProcessPageTable+0x8c/0xdc) from [<8044f6f4>] (gckOS_GetPhysicalAddress+0x20/0x58)
+[<8044f6f4>] (gckOS_GetPhysicalAddress+0x20/0x58) from [<804605b8>] (gckHARDWARE_ConvertLogical+0x2c/0x90)
+[<804605b8>] (gckHARDWARE_ConvertLogical+0x2c/0x90) from [<804607f4>] (gckHARDWARE_Link+0x60/0x104)
+[<804607f4>] (gckHARDWARE_Link+0x60/0x104) from [<8045f1a0>] (gckCONTEXT_Construct+0x264/0x2bc)
+[<8045f1a0>] (gckCONTEXT_Construct+0x264/0x2bc) from [<8045661c>] (gckCOMMAND_Attach+0x44/0x88)
+[<8045661c>] (gckCOMMAND_Attach+0x44/0x88) from [<80454144>] (gckKERNEL_Dispatch+0x358/0x12c8)
+[<80454144>] (gckKERNEL_Dispatch+0x358/0x12c8) from [<8044d374>] (drv_ioctl+0x120/0x284)
+[<8044d374>] (drv_ioctl+0x120/0x284) from [<800d68fc>] (do_vfs_ioctl+0x408/0x5d0)
+[<800d68fc>] (do_vfs_ioctl+0x408/0x5d0) from [<800d6afc>] (SyS_ioctl+0x38/0x64)
+[<800d6afc>] (SyS_ioctl+0x38/0x64) from [<8000e140>] (ret_fast_syscall+0x0/0x30)
+Code: e92d4010 e1a04000 e3a00001 ebe8abd7 (e1943f9f) 
+---[ end trace 0000000000000002 ]---
+note: test-qt5[277] exited with preempt_count 1
+
+diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
+index 6c1dc6c..8c00faf 100644
+--- a/include/linux/mm_types.h
++++ b/include/linux/mm_types.h
+@@ -24,7 +24,7 @@
+ 
+ struct address_space;
+ 
+-#define USE_SPLIT_PTE_PTLOCKS	(NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS)
++#define USE_SPLIT_PTE_PTLOCKS	(0)
+ #define USE_SPLIT_PMD_PTLOCKS	(USE_SPLIT_PTE_PTLOCKS && \
+ 		IS_ENABLED(CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK))
+ #define ALLOC_SPLIT_PTLOCKS	(SPINLOCK_SIZE > BITS_PER_LONG/8)
diff --git a/recipes-kernel/linux/linux-boundary-rt-4.1.15/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
new file mode 100644
index 0000000..93200c6
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch
@@ -0,0 +1,126 @@
+From f7cba8d49a980909cea48c5b9dcfefc6e13fef0b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= <dominic.sacre at gmx.de>
+Date: Fri, 29 Apr 2016 15:48:40 +0200
+Subject: [PATCH] Work around CPU stalls in the imx-sdma driver
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Replace spinlocks with raw spinlocks. This prevents preemption during
+the spinlock's critical section, as is the case on non PREEMPT_RT kernels.
+
+Without this patch, the following error can occur, for example when
+using the audio codec on an i.MX6Q SabreSD board:
+
+INFO: rcu_preempt self-detected stall on CPU { 0}  (t=2100 jiffies g=106 c=105 q=93)
+CPU: 0 PID: 120 Comm: irq/34-sdma Not tainted 3.14.28-rt25-1.0.0_ga+g91cf351 #1
+[<80014a8c>] (unwind_backtrace) from [<8001173c>] (show_stack+0x10/0x14)
+[<8001173c>] (show_stack) from [<806ee750>] (dump_stack+0x7c/0xc8)
+[<806ee750>] (dump_stack) from [<800771c8>] (rcu_check_callbacks+0x454/0x888)
+[<800771c8>] (rcu_check_callbacks) from [<80037f28>] (update_process_times+0x40/0x5c)
+[<80037f28>] (update_process_times) from [<80082230>] (tick_sched_timer+0x4c/0x78)
+[<80082230>] (tick_sched_timer) from [<8004bf30>] (__run_hrtimer.isra.34+0x74/0x124)
+[<8004bf30>] (__run_hrtimer.isra.34) from [<8004cbb0>] (hrtimer_interrupt+0x154/0x3ac)
+[<8004cbb0>] (hrtimer_interrupt) from [<80014464>] (twd_handler+0x30/0x38)
+[<80014464>] (twd_handler) from [<8006fa2c>] (handle_percpu_devid_irq+0x6c/0x84)
+[<8006fa2c>] (handle_percpu_devid_irq) from [<8006bc64>] (generic_handle_irq+0x2c/0x3c)
+[<8006bc64>] (generic_handle_irq) from [<8000ed8c>] (handle_IRQ+0x40/0x90)
+[<8000ed8c>] (handle_IRQ) from [<8000856c>] (gic_handle_irq+0x2c/0x5c)
+[<8000856c>] (gic_handle_irq) from [<80012240>] (__irq_svc+0x40/0x84)
+Exception stack(0xa840feb8 to 0xa840ff00)
+fea0:                                                       a8007a28 00000002
+fec0: 00000001 0000a6a6 a80079c0 a8007a28 a83ea080 00000000 a80079c0 a83ea080
+fee0: 285190f0 00000000 00000000 a840ff00 8006d04c 806f3070 20030113 ffffffff
+[<80012240>] (__irq_svc) from [<806f3070>] (_raw_spin_unlock_irq+0x20/0x60)
+[<806f3070>] (_raw_spin_unlock_irq) from [<8006d04c>] (irq_finalize_oneshot.part.37+0x70/0xcc)
+[<8006d04c>] (irq_finalize_oneshot.part.37) from [<8006d148>] (irq_forced_thread_fn+0x60/0x64)
+[<8006d148>] (irq_forced_thread_fn) from [<8006d3dc>] (irq_thread+0x138/0x1a4)
+[<8006d3dc>] (irq_thread) from [<8004913c>] (kthread+0xbc/0xd4)
+[<8004913c>] (kthread) from [<8000e538>] (ret_from_fork+0x14/0x3c)
+
+Upstream-Status: Pending
+
+Signed-off-by: Dominic Sacré <dominic.sacre at gmx.de>
+---
+ drivers/dma/imx-sdma.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
+index 31b7fed..bb7d6aa 100644
+--- a/drivers/dma/imx-sdma.c
++++ b/drivers/dma/imx-sdma.c
+@@ -408,7 +408,7 @@ struct sdma_engine {
+ 	struct dma_device		dma_device;
+ 	struct clk			*clk_ipg;
+ 	struct clk			*clk_ahb;
+-	spinlock_t			channel_0_lock;
++	raw_spinlock_t			channel_0_lock;
+ 	u32				script_number;
+ 	struct sdma_script_start_addrs	*script_addrs;
+ 	const struct sdma_driver_data	*drvdata;
+@@ -700,7 +700,7 @@ static int sdma_load_script(struct sdma_engine *sdma, void *buf, int size,
+ 			return -ENOMEM;
+ 	}
+ 
+-	spin_lock_irqsave(&sdma->channel_0_lock, flags);
++	raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+ 
+ 	bd0->mode.command = C0_SETPM;
+ 	bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
+@@ -712,7 +712,7 @@ static int sdma_load_script(struct sdma_engine *sdma, void *buf, int size,
+ 
+ 	ret = sdma_run_channel0(sdma);
+ 
+-	spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++	raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+ 
+ 	if (use_iram)
+ 		gen_pool_free(sdma->iram_pool, (unsigned long)buf_virt, size);
+@@ -979,7 +979,7 @@ static int sdma_load_context(struct sdma_channel *sdmac)
+ 	dev_dbg(sdma->dev, "event_mask0 = 0x%08x\n", (u32)sdmac->event_mask[0]);
+ 	dev_dbg(sdma->dev, "event_mask1 = 0x%08x\n", (u32)sdmac->event_mask[1]);
+ 
+-	spin_lock_irqsave(&sdma->channel_0_lock, flags);
++	raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+ 
+ 	memset(context, 0, sizeof(*context));
+ 	context->channel_state.pc = load_address;
+@@ -1005,7 +1005,7 @@ static int sdma_load_context(struct sdma_channel *sdmac)
+ 	bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * channel;
+ 	ret = sdma_run_channel0(sdma);
+ 
+-	spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++	raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+ 
+ 	sdmac->context_loaded = true;
+ 
+@@ -1019,7 +1019,7 @@ static int sdma_save_restore_context(struct sdma_engine *sdma, bool save)
+ 	unsigned long flags;
+ 	int ret;
+ 
+-	spin_lock_irqsave(&sdma->channel_0_lock, flags);
++	raw_spin_lock_irqsave(&sdma->channel_0_lock, flags);
+ 
+ 	if (save)
+ 		bd0->mode.command = C0_GETDM;
+@@ -1032,7 +1032,7 @@ static int sdma_save_restore_context(struct sdma_engine *sdma, bool save)
+ 	bd0->ext_buffer_addr = 2048;
+ 	ret = sdma_run_channel0(sdma);
+ 
+-	spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
++	raw_spin_unlock_irqrestore(&sdma->channel_0_lock, flags);
+ 
+ 	return ret;
+ }
+@@ -2152,7 +2152,7 @@ static int sdma_probe(struct platform_device *pdev)
+ 	if (!sdma)
+ 		return -ENOMEM;
+ 
+-	spin_lock_init(&sdma->channel_0_lock);
++	raw_spin_lock_init(&sdma->channel_0_lock);
+ 
+ 	sdma->dev = &pdev->dev;
+ 	sdma->drvdata = drvdata;
+-- 
+2.8.1
+
diff --git a/recipes-kernel/linux/linux-boundary-rt-4.1.15/0004-export-swait-locked-functions.patch b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0004-export-swait-locked-functions.patch
new file mode 100644
index 0000000..1a616aa
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt-4.1.15/0004-export-swait-locked-functions.patch
@@ -0,0 +1,31 @@
+From 2460dd985b0cf477f74396de92d1bc5df496abdc Mon Sep 17 00:00:00 2001
+From: Julio Cruz <jcsistemas2001 at gmail.com>
+Date: Wed, 20 Jan 2016 19:26:44 +0800
+Subject: [PATCH] Export symbols for iMX-GPU-VIV module
+
+---
+ kernel/sched/wait-simple.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/kernel/sched/wait-simple.c b/kernel/sched/wait-simple.c
+index 7dfa86d..a3776ee 100644
+--- a/kernel/sched/wait-simple.c
++++ b/kernel/sched/wait-simple.c
+@@ -40,6 +40,7 @@ void swait_prepare_locked(struct swait_head *head, struct swaiter *w)
+ 	if (list_empty(&w->node))
+ 		__swait_enqueue(head, w);
+ }
++EXPORT_SYMBOL(swait_prepare_locked);
+ 
+ void swait_prepare(struct swait_head *head, struct swaiter *w, int state)
+ {
+@@ -58,6 +59,7 @@ void swait_finish_locked(struct swait_head *head, struct swaiter *w)
+ 	if (w->task)
+ 		__swait_dequeue(w);
+ }
++EXPORT_SYMBOL(swait_finish_locked);
+ 
+ void swait_finish(struct swait_head *head, struct swaiter *w)
+ {
+-- 
+2.1.0
diff --git a/recipes-kernel/linux/linux-boundary-rt-4.1.15/defconfig b/recipes-kernel/linux/linux-boundary-rt-4.1.15/defconfig
new file mode 100644
index 0000000..277abb1
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt-4.1.15/defconfig
@@ -0,0 +1,451 @@
+CONFIG_KERNEL_LZO=y
+CONFIG_SYSVIPC=y
+CONFIG_FHANDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_NAMESPACES=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_PERF_EVENTS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_COMPAT_BRK is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_PARTITION_ADVANCED=y
+CONFIG_ARCH_MXC=y
+CONFIG_SOC_IMX51=y
+CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX7D=y
+CONFIG_ARM_KERNMEM_PERMS=y
+CONFIG_PCI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_IMX6=y
+CONFIG_SMP=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PREEMPT_RT_FULL=y
+CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
+CONFIG_CMA=y
+CONFIG_SECCOMP=y
+CONFIG_CMDLINE="noinitrd console=ttymxc0,115200"
+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_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX7D_CPUFREQ=y
+CONFIG_CPU_IDLE=y
+CONFIG_VFP=y
+CONFIG_NEON=y
+CONFIG_BINFMT_MISC=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+CONFIG_IPV6=y
+CONFIG_NETFILTER=y
+CONFIG_NF_CONNTRACK=m
+# CONFIG_NF_CONNTRACK_PROCFS is not set
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_VLAN_8021Q=y
+CONFIG_LLC2=y
+CONFIG_CAN=y
+CONFIG_CAN_FLEXCAN=y
+CONFIG_CAN_M_CAN=y
+CONFIG_CAN_MCP251X=m
+CONFIG_BT=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=m
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_CFG80211=m
+CONFIG_NL80211_TESTMODE=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=m
+CONFIG_RFKILL=y
+CONFIG_RFKILL_GPIO=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_DMA_CMA=y
+CONFIG_CMA_SIZE_MBYTES=320
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
+CONFIG_EEPROM_AT24=y
+CONFIG_EEPROM_AT25=y
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_ATA=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_AHCI_IMX=y
+CONFIG_PATA_IMX=y
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM=y
+CONFIG_NETDEVICES=y
+CONFIG_TUN=m
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+CONFIG_R8169=m
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_AT803X_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_USB_USBNET=m
+# CONFIG_USB_NET_AX88179_178A is not set
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_MBIM=m
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+# CONFIG_USB_NET_ZAURUS is not set
+CONFIG_USB_HSO=m
+CONFIG_ATH_CARDS=m
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_RFKILL is not set
+CONFIG_BRCMFMAC=m
+CONFIG_IWLWIFI=m
+CONFIG_RTL8192CE=m
+CONFIG_WL_TI=y
+CONFIG_WL12XX=m
+CONFIG_WLCORE_SDIO=m
+# CONFIG_WILINK_PLATFORM_DATA is not set
+CONFIG_INPUT_POLLDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_CWC_HOOKSWITCH=y
+# CONFIG_MOUSE_PS2 is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_AR1020_I2C=m
+CONFIG_TOUCHSCREEN_ATMEL_MXT=m
+CONFIG_TOUCHSCREEN_CR_MULTI=m
+CONFIG_TOUCHSCREEN_EGALAX=m
+CONFIG_TOUCHSCREEN_FT5X06=m
+CONFIG_TOUCHSCREEN_GOODIX=m
+CONFIG_TOUCHSCREEN_GSLX680=m
+CONFIG_TOUCHSCREEN_ILI210X=m
+CONFIG_TOUCHSCREEN_PIC16F616=m
+CONFIG_TOUCHSCREEN_TSC2004=m
+CONFIG_TOUCHSCREEN_AR1010_UART=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=y
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_GPS_MAX7W=m
+CONFIG_SERIAL_SC16IS7XX=m
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_SERIAL_XR20M117X=m
+CONFIG_FSL_OTP=y
+CONFIG_MAGSTRIPE=m
+CONFIG_SAS=m
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX_GPIO=y
+# CONFIG_I2C_HELPER_AUTO is not set
+CONFIG_I2C_ALGOPCF=m
+CONFIG_I2C_ALGOPCA=m
+CONFIG_I2C_IMX=y
+CONFIG_SPI=y
+CONFIG_SPI_IMX=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_SENSORS_ADS1000=m
+CONFIG_SENSORS_MAG3110=y
+# CONFIG_MXC_MMA8451 is not set
+CONFIG_THERMAL=y
+CONFIG_CPU_THERMAL=y
+CONFIG_IMX_THERMAL=y
+CONFIG_DEVICE_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_IMX2_WDT=y
+CONFIG_MFD_MC13XXX_SPI=m
+CONFIG_MFD_MAX77823=y
+CONFIG_MFD_ARIZONA_SPI=m
+CONFIG_MFD_WM5102=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_ANATOP=y
+CONFIG_REGULATOR_ARIZONA=m
+CONFIG_REGULATOR_MC13892=m
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+CONFIG_VIDEO_TW686X=m
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_CAPTURE=m
+CONFIG_MXC_CAMERA_OV5640=m
+CONFIG_MXC_CAMERA_OV5642=m
+CONFIG_MXC_CAMERA_OV5640_MIPI=m
+CONFIG_MXC_VIDEO_GS2971=m
+CONFIG_MXC_HDMI_CSI2_TC358743=m
+CONFIG_TC358743_AUDIO=y
+CONFIG_MXC_TVIN_ADV7180=m
+CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+CONFIG_VIDEO_MXC_PXP_V4L2=y
+CONFIG_VIDEO_MXC_CSI_CAMERA=m
+CONFIG_MXC_CAMERA_SUBDEV_OV5640=m
+CONFIG_MXC_CAMERA_SUBDEV_OV5642=m
+CONFIG_MXC_VADC=m
+CONFIG_MXC_MIPI_CSI=m
+CONFIG_MXC_CAMERA_SUBDEV_OV5640_MIPI=m
+CONFIG_SOC_CAMERA=y
+CONFIG_DRM=y
+CONFIG_DRM_VIVANTE=y
+CONFIG_FB=y
+CONFIG_FB_MXS=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_TVOUT_ADV739X=y
+CONFIG_FB_MXC_LDB=y
+CONFIG_FB_MXC_HDMI=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+CONFIG_LCD_L4F00242T03=y
+CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BACKLIGHT_LP8860=y
+CONFIG_BACKLIGHT_GPIO=y
+CONFIG_DVI_TFP410=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_DYNAMIC_MINORS=y
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_IMX_SOC=y
+CONFIG_SND_SOC_IMX_WM8960=m
+CONFIG_SND_SOC_IMX_SGTL5000=y
+CONFIG_SND_SOC_IMX_WM5102=m
+CONFIG_SND_SOC_IMX_HDMI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=m
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_ACM=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_CP210X=y
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_USB_SERIAL_KEYSPAN=y
+CONFIG_USB_SERIAL_PL2303=y
+CONFIG_USB_SERIAL_QUALCOMM=y
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_ZERO=m
+CONFIG_USB_ETH=m
+CONFIG_USB_FUNCTIONFS=m
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_G_MULTI=m
+CONFIG_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_V3_PRE=y
+CONFIG_MXC_SIM=y
+CONFIG_MXC_MIPI_CSI2=y
+CONFIG_MXC_HDMI_CEC=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_RV4162=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_DMADEVICES=y
+CONFIG_MXC_PXP_V2=y
+CONFIG_MXC_PXP_V3=y
+# CONFIG_MX3_IPU is not set
+CONFIG_IMX_SDMA=y
+CONFIG_MXS_DMA=y
+CONFIG_STAGING=y
+CONFIG_DRM_ANX78XX=m
+CONFIG_COMMON_CLK_PWM=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXTCON=y
+CONFIG_IIO=y
+CONFIG_APDS9300=m
+CONFIG_PWM=y
+CONFIG_PWM_IMX=y
+CONFIG_BATTERY_SAMSUNG=y
+CONFIG_FUELGAUGE_MAX77823=m
+CONFIG_FUELGAUGE_MAX77823_COULOMB_COUNTING=y
+CONFIG_CHARGER_MAX77823=m
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_OVERLAY_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_ECRYPT_FS=y
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_DEFAULT="cp437"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_15=y
+CONFIG_NLS_UTF8=y
+CONFIG_DEBUG_INFO=y
+CONFIG_FRAME_WARN=2048
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FTRACE is not set
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_ARM_UNWIND is not set
+CONFIG_DEBUG_SET_MODULE_RONX=y
+CONFIG_SECURITY=y
+CONFIG_LSM_MMAP_MIN_ADDR=0
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SMACK=y
+CONFIG_SECURITY_APPARMOR=y
+CONFIG_SECURITY_YAMA=y
+CONFIG_DEFAULT_SECURITY_APPARMOR=y
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_RMD128=y
+CONFIG_CRYPTO_RMD160=y
+CONFIG_CRYPTO_RMD256=y
+CONFIG_CRYPTO_RMD320=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_TGR192=y
+CONFIG_CRYPTO_WP512=y
+CONFIG_CRYPTO_BLOWFISH=y
+CONFIG_CRYPTO_CAMELLIA=y
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_TWOFISH=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_SM=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
diff --git a/recipes-kernel/linux/linux-boundary-rt_4.1.15.bb b/recipes-kernel/linux/linux-boundary-rt_4.1.15.bb
new file mode 100644
index 0000000..6acc81a
--- /dev/null
+++ b/recipes-kernel/linux/linux-boundary-rt_4.1.15.bb
@@ -0,0 +1,25 @@
+# Adapted from linux-imx.inc, copyright (C) 2013, 2014 O.S. Systems Software LTDA
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+require recipes-kernel/linux/linux-imx.inc
+require recipes-kernel/linux/linux-dtb.inc
+
+SUMMARY = "Linux kernel for Boundary Devices boards"
+
+SRC_URI = "git://github.com/boundarydevices/linux-imx6.git;branch=${SRCBRANCH} \
+           https://www.kernel.org/pub/linux/kernel/projects/rt/4.1/older/patch-4.1.15-rt18.patch.gz;name=rt-patch \
+           file://0001-fix-build.patch \
+           file://0002-no-split-ptlocks.patch \
+           file://0003-Work-around-CPU-stalls-in-the-imx-sdma-driver.patch \
+           file://0004-export-swait-locked-functions.patch \
+           file://defconfig \
+"
+
+SRC_URI[rt-patch.md5sum] = "4afe06f7b58824143a60accb28a5ea3f"
+SRC_URI[rt-patch.sha256sum] = "e51b2c770d259fcfa683b03c2aa549efbadc6122b3d10a7767daf9df1bd863f0"
+
+LOCALVERSION = "-2.0.0_ga+yocto"
+SRCBRANCH = "boundary-imx_4.1.15_2.0.0_ga"
+SRCREV = "ff4e28b95115d7021c3ea6209b7c2b0b849874e1"
+DEPENDS += "lzop-native bc-native"
+COMPATIBLE_MACHINE = "(nitrogen6x|nitrogen6x-lite|nitrogen6sx|nitrogen7)"
-- 
2.7.4



More information about the meta-freescale mailing list