aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeng Zhaoming <b32542@freescale.com>2011-04-07 09:16:51 +0800
committerEric Miao <eric.miao@linaro.org>2011-10-14 09:57:04 +0800
commit0c7e0244502d92400baa712678743fb700dd1b26 (patch)
tree5107974f802f32706fb77e9c433a03c528cd668d
parent5c50084b17900a86a1dd51e1c2456859ab5eb572 (diff)
downloadlinux-linaro-0c7e0244502d92400baa712678743fb700dd1b26.tar.gz
ENGR00141732 SDMA: Fix bootup stop at sdma firmware loading
Linux 2.6.38 kernel bootup slow, it stopped at sdma firmware loading for about one minute. It is caused by firmware store on rootfs lib/firmware directory, while sdma initialization happens before rootfs mounted. To fix it, we have to build firmware in kernel image. Signed-off-by: Zeng Zhaoming <b32542@freescale.com> Signed-off-by: Eric Miao <eric.miao@linaro.org>
-rw-r--r--arch/arm/mach-mx5/mm.c4
-rw-r--r--drivers/dma/imx-sdma.c2
-rw-r--r--firmware/Makefile9
-rw-r--r--firmware/imx/sdma/sdma-imx25-to1.binbin0 -> 694 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx31-to1.binbin0 -> 3754 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx31-to2.binbin0 -> 3762 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx35-to1.binbin0 -> 2010 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx35-to2.binbin0 -> 1746 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx50-to1.binbin0 -> 550 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx51-to3.binbin0 -> 812 bytes
-rw-r--r--firmware/imx/sdma/sdma-imx53-to1.binbin0 -> 1406 bytes
11 files changed, 11 insertions, 4 deletions
diff --git a/arch/arm/mach-mx5/mm.c b/arch/arm/mach-mx5/mm.c
index fcc5c4ce53f..d44e838f1a8 100644
--- a/arch/arm/mach-mx5/mm.c
+++ b/arch/arm/mach-mx5/mm.c
@@ -115,7 +115,7 @@ static struct sdma_script_start_addrs imx51_sdma_script __initdata = {
};
static struct sdma_platform_data imx51_sdma_pdata __initdata = {
- .fw_name = "sdma-imx51.bin",
+ .fw_name = "imx/sdma/sdma-imx51-to3.bin",
.script_addrs = &imx51_sdma_script,
};
@@ -134,7 +134,7 @@ static struct sdma_script_start_addrs imx53_sdma_script __initdata = {
};
static struct sdma_platform_data imx53_sdma_pdata __initdata = {
- .fw_name = "sdma-imx53.bin",
+ .fw_name = "imx/sdma/sdma-imx53-to1.bin",
.script_addrs = &imx53_sdma_script,
};
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 7bd7e98548c..330e2e54ada 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -7,7 +7,7 @@
*
* Based on code from Freescale:
*
- * Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2004-2011 Freescale Semiconductor, Inc. All Rights Reserved.
*
* The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License
diff --git a/firmware/Makefile b/firmware/Makefile
index 5f43bfba3c7..66d0e990285 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -142,6 +142,12 @@ fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
+ifdef CONFIG_IMX_SDMA
+fw-shipped-$(CONFIG_SOC_IMX50) += imx/sdma/sdma-imx50-to1.bin
+fw-shipped-$(CONFIG_SOC_IMX51) += imx/sdma/sdma-imx51-to3.bin
+fw-shipped-$(CONFIG_SOC_IMX53) += imx/sdma/sdma-imx53-to1.bin
+endif
+
fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
# Directories which we _might_ need to create, so we have a rule for them.
@@ -166,11 +172,12 @@ quiet_cmd_fwbin = MK_FW $@
ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long); \
ASM_ALIGN=$(if $(CONFIG_64BIT),3,2); \
PROGBITS=$(if $(CONFIG_ARM),%,@)progbits; \
+ FWPATH=$(if $(KBUILD_SRC),$(srctree)/)$(2); \
echo "/* Generated by firmware/Makefile */" > $@;\
echo " .section .rodata" >>$@;\
echo " .p2align $${ASM_ALIGN}" >>$@;\
echo "_fw_$${FWSTR}_bin:" >>$@;\
- echo " .incbin \"$(2)\"" >>$@;\
+ echo " .incbin \"$${FWPATH}\"" >>$@;\
echo "_fw_end:" >>$@;\
echo " .section .rodata.str,\"aMS\",$${PROGBITS},1" >>$@;\
echo " .p2align $${ASM_ALIGN}" >>$@;\
diff --git a/firmware/imx/sdma/sdma-imx25-to1.bin b/firmware/imx/sdma/sdma-imx25-to1.bin
new file mode 100644
index 00000000000..7514e09fea7
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx25-to1.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx31-to1.bin b/firmware/imx/sdma/sdma-imx31-to1.bin
new file mode 100644
index 00000000000..7c3417d07e0
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx31-to1.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx31-to2.bin b/firmware/imx/sdma/sdma-imx31-to2.bin
new file mode 100644
index 00000000000..7ff9c75f4ca
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx31-to2.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx35-to1.bin b/firmware/imx/sdma/sdma-imx35-to1.bin
new file mode 100644
index 00000000000..be34cb7faf6
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx35-to1.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx35-to2.bin b/firmware/imx/sdma/sdma-imx35-to2.bin
new file mode 100644
index 00000000000..cfe72272ae8
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx35-to2.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx50-to1.bin b/firmware/imx/sdma/sdma-imx50-to1.bin
new file mode 100644
index 00000000000..50be5e828bb
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx50-to1.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx51-to3.bin b/firmware/imx/sdma/sdma-imx51-to3.bin
new file mode 100644
index 00000000000..c54815a9793
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx51-to3.bin
Binary files differ
diff --git a/firmware/imx/sdma/sdma-imx53-to1.bin b/firmware/imx/sdma/sdma-imx53-to1.bin
new file mode 100644
index 00000000000..68e2c1a5ca1
--- /dev/null
+++ b/firmware/imx/sdma/sdma-imx53-to1.bin
Binary files differ