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-12-02 14:40:56 +0800
commitda6df826547c4da12227f14b3e89218a9a319d48 (patch)
tree7f8f6b55cd85f43dcad065b297fc9d405b53ec24
parent671b38e3bddb4de080e417498e072aab1e0cb3fa (diff)
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 90c71e6c69a..3aa80131fd3 100644
--- a/arch/arm/mach-mx5/mm.c
+++ b/arch/arm/mach-mx5/mm.c
@@ -132,7 +132,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,
};
@@ -151,7 +151,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 f993955a640..77f92d1f624 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