[oe-commits] org.oe.dev merge of '1ebb8850a0ea6484319457a058a3ce4c3085d004'

thesing commit oe at amethyst.openembedded.net
Fri May 30 19:31:44 UTC 2008


merge of '1ebb8850a0ea6484319457a058a3ce4c3085d004'
     and '3d80d5e99ef4e42b4c77c24486de8fac537f1165'

Author: thesing at openembedded.org
Branch: org.openembedded.dev
Revision: a09c7f0138dc718c2a42dbb7420b4203c47d1f47
ViewMTN: http://monotone.openembedded.org/revision/info/a09c7f0138dc718c2a42dbb7420b4203c47d1f47
Files:
1
packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch
packages/linux/linux-omap2-git/beagleboard/flash.patch
packages/linux/linux-omap2-git/beagleboard/defconfig
packages/linux/linux-omap2_git.bb
packages/linux/linux-rt_2.6.25.bb
packages/linux/linux.inc
classes/kernel.bbclass
Diffs:

#
# mt diff -r1ebb8850a0ea6484319457a058a3ce4c3085d004 -ra09c7f0138dc718c2a42dbb7420b4203c47d1f47
#
#
#
# add_file "packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch"
#  content [b0b565d62f76114d9eb4ce37fc8e191699e6024c]
# 
# add_file "packages/linux/linux-omap2-git/beagleboard/flash.patch"
#  content [178d61ff76fbe7fffe3974d659d677439e070225]
# 
# patch "packages/linux/linux-omap2-git/beagleboard/defconfig"
#  from [2aafda9a94285e1f028bf5b138b0b60355509e06]
#    to [43099c2691de9dc1254203fe8f93ca85fbbcc1d3]
# 
# patch "packages/linux/linux-omap2_git.bb"
#  from [f974b6ddb18fc07f4c03a0dde33905f2e4345ed1]
#    to [d636d3d58625d7d6926d41fa08350a1787650cb7]
# 
# patch "packages/linux/linux-rt_2.6.25.bb"
#  from [d71c0c64eb3d4d683d39fd523a6b6c11058fc74c]
#    to [4751e7e5accade67eb352aa496eeb9d61b4c2c24]
# 
# patch "packages/linux/linux.inc"
#  from [f1aa05046da57692f765c8cf904367093ee01958]
#    to [2d4e2851e31c00ffa8a1225499423c951b36971d]
#
============================================================
--- packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch	b0b565d62f76114d9eb4ce37fc8e191699e6024c
+++ packages/linux/linux-omap2-git/beagleboard/0001-omap3beagle-add-a-platform-device-to-hook-up-the-GP.patch	b0b565d62f76114d9eb4ce37fc8e191699e6024c
@@ -0,0 +1,69 @@
+From 7a444ee080c5f1a62ac5042f1e7926622b3e1ce7 Mon Sep 17 00:00:00 2001
+From: Koen Kooi <koen at openembedded.org>
+Date: Fri, 30 May 2008 13:43:36 +0200
+Subject: [PATCH] ARM: OMAP: omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
+
+omap3beagle: add a platform device to hook up the GPIO leds to the leds-gpio driver
+ * on revision A5 and earlier board the two leds can't be controlled seperately, should be fixed in rev. B and C boards.
+
+Signed-off-by: Koen Kooi <koen at openembedded.org>
+---
+ arch/arm/mach-omap2/board-omap3beagle.c |   28 ++++++++++++++++++++++++++++
+ 1 files changed, 28 insertions(+), 0 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index c992cc7..83891fc 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -19,6 +19,7 @@
+ #include <linux/err.h>
+ #include <linux/clk.h>
+ #include <linux/io.h>
++#include <linux/leds.h>
+ 
+ #include <asm/hardware.h>
+ #include <asm/mach-types.h>
+@@ -72,6 +73,32 @@ static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
+ 	.ctrl_name	= "internal",
+ };
+ 
++struct gpio_led gpio_leds[] = {
++	{
++		.name = "beagleboard::led0",
++		.default_trigger = "none",
++		.gpio = 149,
++	},
++	{
++		.name = "beagleboard::led1",
++		.default_trigger = "none",
++		.gpio = 150,
++	},
++};
++
++static struct gpio_led_platform_data gpio_led_info = {
++	.leds = gpio_leds,
++	.num_leds = ARRAY_SIZE(gpio_leds),
++};
++
++static struct platform_device leds_gpio = {
++	.name = "leds-gpio",
++	.id   = -1,
++	.dev  = {
++		.platform_data = &gpio_led_info,
++	},
++};
++
+ static struct omap_board_config_kernel omap3_beagle_config[] __initdata = {
+ 	{ OMAP_TAG_UART,	&omap3_beagle_uart_config },
+ 	{ OMAP_TAG_MMC,		&omap3beagle_mmc_config },
+@@ -83,6 +110,7 @@ static struct platform_device *omap3_beagle_devices[] __initdata = {
+ #ifdef CONFIG_RTC_DRV_TWL4030
+ 	&omap3_beagle_twl4030rtc_device,
+ #endif
++	&leds_gpio,
+ };
+ 
+ static void __init omap3_beagle_init(void)
+-- 
+1.5.4.3
+
============================================================
--- packages/linux/linux-omap2-git/beagleboard/flash.patch	178d61ff76fbe7fffe3974d659d677439e070225
+++ packages/linux/linux-omap2-git/beagleboard/flash.patch	178d61ff76fbe7fffe3974d659d677439e070225
@@ -0,0 +1,558 @@
+diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
+index 13d0043..d582b8f 100644
+--- a/arch/arm/mach-omap2/Makefile
++++ b/arch/arm/mach-omap2/Makefile
+@@ -44,7 +44,8 @@ obj-$(CONFIG_MACH_OMAP3EVM)		+= board-omap3evm.o \
+ 					   board-omap3evm-flash.o
+ obj-$(CONFIG_MACH_OMAP3_BEAGLE)		+= board-omap3beagle.o \
+ 					   usb-musb.o usb-ehci.o \
+-					   hsmmc.o
++					   hsmmc.o \
++					   board-omap3beagle-flash.o
+ obj-$(CONFIG_MACH_OMAP_LDP)		+= board-ldp.o \
+ 					   hsmmc.o \
+ 					   usb-musb.o
+diff --git a/arch/arm/mach-omap2/board-omap3beagle-flash.c b/arch/arm/mach-omap2/board-omap3beagle-flash.c
+new file mode 100644
+index 0000000..5346df0
+--- /dev/null
++++ b/arch/arm/mach-omap2/board-omap3beagle-flash.c
+@@ -0,0 +1,119 @@
++/*
++ * board-omap3beagle-flash.c
++ * 
++ * Copyright (c) 2008 Texas Instruments
++ *
++ * Modified from board-omap3evm-flash.c
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/partitions.h>
++#include <linux/mtd/nand.h>
++#include <linux/types.h>
++#include <linux/io.h>
++
++#include <asm/mach/flash.h>
++#include <asm/arch/board.h>
++#include <asm/arch/gpmc.h>
++#include <asm/arch/nand.h>
++
++#define GPMC_CS0_BASE  0x60
++#define GPMC_CS_SIZE   0x30
++
++static struct mtd_partition omap3beagle_nand_partitions[] = {
++	/* All the partition sizes are listed in terms of NAND block size */
++	{
++		.name		= "X-Loader",
++		.offset		= 0,
++		.size		= 4*(64 * 2048),	
++		.mask_flags	= MTD_WRITEABLE,	/* force read-only */
++	},
++	{
++		.name		= "U-Boot",
++		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x80000 */
++		.size		= 15*(64 * 2048),
++		.mask_flags	= MTD_WRITEABLE,	/* force read-only */
++	},
++	{
++		.name		= "U-Boot Env",
++		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x260000 */
++		.size		= 1*(64 * 2048),
++	},
++	{
++		.name		= "Kernel",
++		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x280000 */
++		.size		= 32*(64 * 2048),
++	},
++	{
++		.name		= "File System",
++		.offset		= MTDPART_OFS_APPEND,	/* Offset = 0x680000 */
++		.size		= MTDPART_SIZ_FULL,
++	},
++};
++
++static struct omap_nand_platform_data omap3beagle_nand_data = {
++	.parts		= omap3beagle_nand_partitions,
++	.nr_parts	= ARRAY_SIZE(omap3beagle_nand_partitions),
++	.dma_channel	= -1,		/* disable DMA in OMAP NAND driver */
++	.nand_setup	= NULL,
++	.dev_ready	= NULL,
++};
++
++static struct resource omap3beagle_nand_resource = {
++	.flags		= IORESOURCE_MEM,
++};
++
++static struct platform_device omap3beagle_nand_device = {
++	.name		= "omap2-nand",
++	.id		= -1,
++	.dev		= {
++		.platform_data	= &omap3beagle_nand_data,
++	},
++	.num_resources	= 1,
++	.resource	= &omap3beagle_nand_resource,
++};
++
++
++void __init omap3beagle_flash_init(void)
++{
++	u8 cs = 0;
++	u8 nandcs = GPMC_CS_NUM + 1;
++
++	u32 gpmc_base_add = OMAP34XX_GPMC_VIRT;
++
++	/* find out the chip-select on which NAND exists */
++	while (cs < GPMC_CS_NUM) {
++		u32 ret = 0;
++		ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
++
++		if ((ret & 0xC00) == 0x800) {
++			printk(KERN_INFO "Found NAND on CS%d\n", cs);
++			if (nandcs > GPMC_CS_NUM)
++				nandcs = cs;
++		}
++		cs++;
++	}
++
++	if (nandcs > GPMC_CS_NUM) {
++		printk(KERN_INFO "NAND: Unable to find configuration "
++				 "in GPMC\n ");
++		return;
++	}
++
++	if (nandcs < GPMC_CS_NUM) {
++		omap3beagle_nand_data.cs = nandcs;
++		omap3beagle_nand_data.gpmc_cs_baseaddr = (void *)(gpmc_base_add +
++			GPMC_CS0_BASE + nandcs * GPMC_CS_SIZE);
++		omap3beagle_nand_data.gpmc_baseaddr = (void *) (gpmc_base_add);
++
++		printk(KERN_INFO "Registering NAND on CS%d\n", nandcs);
++		if (platform_device_register(&omap3beagle_nand_device) < 0)
++			printk(KERN_ERR "Unable to register NAND device\n");
++	}
++}
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index c992cc7..99e042e 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -94,6 +94,7 @@ static void __init omap3_beagle_init(void)
+ 	hsmmc_init();
+ 	usb_musb_init();
+ 	usb_ehci_init();
++	omap3beagle_flash_init();
+ }
+ 
+ arch_initcall(omap3_beagle_i2c_init);
+diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
+index 3d5e432..02b9ced 100644
+--- a/drivers/mtd/nand/Kconfig
++++ b/drivers/mtd/nand/Kconfig
+@@ -71,7 +71,7 @@ config MTD_NAND_AMS_DELTA
+ 
+ config MTD_NAND_OMAP2
+ 	tristate "NAND Flash device on OMAP 2420H4/2430SDP boards"
+-	depends on (ARM && ARCH_OMAP2 && MTD_NAND)
++	depends on ARM && MTD_NAND && (ARCH_OMAP2 || ARCH_OMAP3)
+ 	help
+           Support for NAND flash on Texas Instruments 2430SDP/2420H4 platforms.
+ 
+diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
+index 3b7307c..3aac1d2 100644
+--- a/drivers/mtd/nand/omap2.c
++++ b/drivers/mtd/nand/omap2.c
+@@ -111,15 +111,6 @@
+ static const char *part_probes[] = { "cmdlinepart", NULL };
+ #endif
+ 
+-static int hw_ecc = 1;
+-
+-/* new oob placement block for use with hardware ecc generation */
+-static struct nand_ecclayout omap_hw_eccoob = {
+-	.eccbytes = 12,
+-	.eccpos = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
+-	.oobfree = {{16, 32}, {33, 63} },
+-};
+-
+ struct omap_nand_info {
+ 	struct nand_hw_control		controller;
+ 	struct omap_nand_platform_data	*pdata;
+@@ -133,6 +124,13 @@ struct omap_nand_info {
+ 	void __iomem			*gpmc_cs_baseaddr;
+ 	void __iomem			*gpmc_baseaddr;
+ };
++
++/*
++ * omap_nand_wp - This function enable or disable the Write Protect feature on
++ * NAND device
++ * @mtd: MTD device structure
++ * @mode: WP ON/OFF
++ */
+ static void omap_nand_wp(struct mtd_info *mtd, int mode)
+ {
+ 	struct omap_nand_info *info = container_of(mtd,
+@@ -189,11 +187,11 @@ static void omap_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
+ }
+ 
+ /*
+-* omap_read_buf - read data from NAND controller into buffer
+-* @mtd: MTD device structure
+-* @buf: buffer to store date
+-* @len: number of bytes to read
+-*/
++ * omap_read_buf - read data from NAND controller into buffer
++ * @mtd: MTD device structure
++ * @buf: buffer to store date
++ * @len: number of bytes to read
++ */
+ static void omap_read_buf(struct mtd_info *mtd, u_char *buf, int len)
+ {
+ 	struct omap_nand_info *info = container_of(mtd,
+@@ -207,11 +205,11 @@ static void omap_read_buf(struct mtd_info *mtd, u_char *buf, int len)
+ }
+ 
+ /*
+-* omap_write_buf - write buffer to NAND controller
+-* @mtd: MTD device structure
+-* @buf: data buffer
+-* @len: number of bytes to write
+-*/
++ * omap_write_buf - write buffer to NAND controller
++ * @mtd: MTD device structure
++ * @buf: data buffer
++ * @len: number of bytes to write
++ */
+ static void omap_write_buf(struct mtd_info *mtd, const u_char * buf, int len)
+ {
+ 	struct omap_nand_info *info = container_of(mtd,
+@@ -250,10 +248,16 @@ static int omap_verify_buf(struct mtd_info *mtd, const u_char * buf, int len)
+ 	return 0;
+ }
+ 
++#ifdef CONFIG_MTD_NAND_OMAP_HWECC
++/*
++ * omap_hwecc_init-Initialize the Hardware ECC for NAND flash in GPMC controller
++ * @mtd: MTD device structure
++ */
+ static void omap_hwecc_init(struct mtd_info *mtd)
+ {
+ 	struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
+ 							mtd);
++	register struct nand_chip *chip = mtd->priv;
+ 	unsigned long val = 0x0;
+ 
+ 	/* Read from ECC Control Register */
+@@ -264,16 +268,15 @@ static void omap_hwecc_init(struct mtd_info *mtd)
+ 
+ 	/* Read from ECC Size Config Register */
+ 	val = __raw_readl(info->gpmc_baseaddr + GPMC_ECC_SIZE_CONFIG);
+-	/* ECCSIZE1=512 | ECCSIZE0=8bytes | Select eccResultsize[0123] */
+-	val = ((0x000000FF<<22) | (0x00000003<<12) | (0x0000000F));
++	/* ECCSIZE1=512 | Select eccResultsize[0-3] */
++	val = ((((chip->ecc.size >> 1) - 1) << 22) | (0x0000000F));
+ 	__raw_writel(val, info->gpmc_baseaddr + GPMC_ECC_SIZE_CONFIG);
+-
+-
+ }
+ 
+ /*
+- * This function will generate true ECC value, which can be used
++ * gen_true_ecc - This function will generate true ECC value, which can be used
+  * when correcting data read from NAND flash memory core
++ * @ecc_buf: buffer to store ecc code
+  */
+ static void gen_true_ecc(u8 *ecc_buf)
+ {
+@@ -289,8 +292,12 @@ static void gen_true_ecc(u8 *ecc_buf)
+ }
+ 
+ /*
+- * This function compares two ECC's and indicates if there is an error.
+- * If the error can be corrected it will be corrected to the buffer
++ * omap_compare_ecc - This function compares two ECC's and indicates if there
++ * is an error. If the error can be corrected it will be corrected to the
++ * buffer
++ * @ecc_data1:  ecc code from nand spare area
++ * @ecc_data2:  ecc code from hardware register obtained from hardware ecc
++ * @page_data:  page data
+  */
+ static int omap_compare_ecc(u8 *ecc_data1,	/* read from NAND memory */
+ 			    u8 *ecc_data2,	/* read from register */
+@@ -409,6 +416,14 @@ static int omap_compare_ecc(u8 *ecc_data1,	/* read from NAND memory */
+ 	}
+ }
+ 
++/*
++ * omap_correct_data - Compares the ecc read from nand spare area with ECC
++ * registers values and corrects one bit error if it has occured
++ * @mtd: MTD device structure
++ * @dat: page data
++ * @read_ecc: ecc read from nand flash
++ * @calc_ecc: ecc read from ECC registers
++ */
+ static int omap_correct_data(struct mtd_info *mtd, u_char * dat,
+ 				u_char * read_ecc, u_char * calc_ecc)
+ {
+@@ -436,65 +451,64 @@ static int omap_correct_data(struct mtd_info *mtd, u_char * dat,
+ }
+ 
+ /*
+-** Generate non-inverted ECC bytes.
+-**
+-** Using noninverted ECC can be considered ugly since writing a blank
+-** page ie. padding will clear the ECC bytes. This is no problem as long
+-** nobody is trying to write data on the seemingly unused page.
+-**
+-** Reading an erased page will produce an ECC mismatch between
+-** generated and read ECC bytes that has to be dealt with separately.
+-*/
++ * omap_calcuate_ecc - Generate non-inverted ECC bytes.
++ * Using noninverted ECC can be considered ugly since writing a blank
++ * page ie. padding will clear the ECC bytes. This is no problem as long
++ * nobody is trying to write data on the seemingly unused page. Reading
++ * an erased page will produce an ECC mismatch between generated and read
++ * ECC bytes that has to be dealt with separately.
++ * @mtd: MTD device structure
++ * @dat: The pointer to data on which ecc is computed
++ * @ecc_code: The ecc_code buffer
++ */
+ static int omap_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
+ 				u_char *ecc_code)
+ {
+ 	struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
+ 							mtd);
+ 	unsigned long val = 0x0;
+-	unsigned long reg, n;
+-
+-	/* Ex NAND_ECC_HW12_2048 */
+-	if ((info->nand.ecc.mode == NAND_ECC_HW) &&
+-		(info->nand.ecc.size  == 2048))
+-		n = 4;
+-	else
+-		n = 1;
++	unsigned long reg;
+ 
+ 	/* Start Reading from HW ECC1_Result = 0x200 */
+ 	reg = (unsigned long)(info->gpmc_baseaddr + GPMC_ECC1_RESULT);
+-	while (n--) {
+-		val = __raw_readl(reg);
+-		*ecc_code++ = val;		/* P128e, ..., P1e */
+-		*ecc_code++ = val >> 16;	/* P128o, ..., P1o */
+-		/* P2048o, P1024o, P512o, P256o, P2048e, P1024e, P512e, P256e */
+-		*ecc_code++ = ((val >> 8) & 0x0f) | ((val >> 20) & 0xf0);
+-		reg += 4;
+-	}
++	val = __raw_readl(reg);
++	*ecc_code++ = val;          /* P128e, ..., P1e */
++	*ecc_code++ = val >> 16;    /* P128o, ..., P1o */
++	/* P2048o, P1024o, P512o, P256o, P2048e, P1024e, P512e, P256e */
++	*ecc_code++ = ((val >> 8) & 0x0f) | ((val >> 20) & 0xf0);
++	reg += 4;
+ 
+ 	return 0;
+-} /* omap_calculate_ecc */
++}
+ 
++/*
++ * omap_enable_hwecc - This function enables the hardware ecc functionality
++ * @mtd: MTD device structure
++ * @mode: Read/Write mode
++ */
+ static void omap_enable_hwecc(struct mtd_info *mtd, int mode)
+ {
+ 	struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
+ 							mtd);
++	register struct nand_chip *chip = mtd->priv;
++	unsigned int dev_width = (chip->options & NAND_BUSWIDTH_16) ? 1 : 0;
+ 	unsigned long val = __raw_readl(info->gpmc_baseaddr + GPMC_ECC_CONFIG);
+ 
+ 	switch (mode) {
+ 	case NAND_ECC_READ    :
+ 		__raw_writel(0x101, info->gpmc_baseaddr + GPMC_ECC_CONTROL);
+-		/* ECC 16 bit col) | ( CS 0 )  | ECC Enable */
+-		val = (1 << 7) | (0x0) | (0x1) ;
++		/* (ECC 16 or 8 bit col) | ( CS  )  | ECC Enable */
++		val = (dev_width << 7) | (info->gpmc_cs << 1) | (0x1);
+ 		break;
+ 	case NAND_ECC_READSYN :
+-		__raw_writel(0x100, info->gpmc_baseaddr + GPMC_ECC_CONTROL);
+-		/* %s
>>> DIFF TRUNCATED @ 16K


#
# mt diff -r3d80d5e99ef4e42b4c77c24486de8fac537f1165 -ra09c7f0138dc718c2a42dbb7420b4203c47d1f47
#
#
#
# patch "classes/kernel.bbclass"
#  from [ef41561ab88b2c57209e85c7285f15f0c72d6d2b]
#    to [13aa84ac4406f0f45d138d35e9fbdc894a567058]
#
============================================================
--- classes/kernel.bbclass	ef41561ab88b2c57209e85c7285f15f0c72d6d2b
+++ classes/kernel.bbclass	13aa84ac4406f0f45d138d35e9fbdc894a567058
@@ -16,6 +16,9 @@ python __anonymous () {
     	depends = bb.data.getVar("DEPENDS", d, 1)
     	depends = "%s u-boot-mkimage-openmoko-native" % depends
     	bb.data.setVar("DEPENDS", depends, d)
+
+    if bb.data.getVar('INITRAMFS_IMAGE', d, True) != '':
+	bb.data.setVar('INITRAMFS_TASK', '${INITRAMFS_IMAGE}:do_rootfs', d);
 }
 
 inherit kernel-arch
@@ -79,21 +82,28 @@ kernel_do_compile() {
 	fi
 }
 
-INITRAMFS_SYMLINK_NAME ?= "initramfs-${MACHINE}"
-INITRAMFS_IMAGE_TARGET ?= "initramfs-image"
 
 do_builtin_initramfs() {
-	unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
-	cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_SYMLINK_NAME}" usr/initramfs_data.cpio.gz
-	oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}"
-	install -d ${DEPLOY_DIR_IMAGE}
-	install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-initramfs.bin
-	# Make sure to kill injected initramfs, in case someone will do "-c compile -f"
-	rm usr/initramfs_data.cpio.gz
+	 if [ ! -z "${INITRAMFS_IMAGE}" ]; then
+		unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
+		cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz" usr/initramfs_data.cpio.gz
+		oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}"
+	
+		install -d ${DEPLOY_DIR_IMAGE}
+		install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin
+		package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin
+	
+		# Make sure to kill injected initramfs, in case someone will do "-c compile -f"
+		rm usr/initramfs_data.cpio.gz
+		
+		cd ${DEPLOY_DIR_IMAGE}
+		rm -f ${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin
+		ln -sf ${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin ${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin
+		package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin
+	fi
 }
-#addtask builtin_initramfs after do_compile
-#do_builtin_initramfs[nostamp] = "1"
-#do_builtin_initramfs[depends] = "${INITRAMFS_IMAGE_TARGET}:do_rootfs"
+addtask builtin_initramfs before do_build after do_package_write
+do_builtin_initramfs[depends] = '${INITRAMFS_TASK}'
 
 kernel_do_stage() {
 	ASMDIR=`readlink include/asm`






More information about the Openembedded-commits mailing list