From 0c7e0244502d92400baa712678743fb700dd1b26 Mon Sep 17 00:00:00 2001 From: Zeng Zhaoming Date: Thu, 7 Apr 2011 09:16:51 +0800 Subject: 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 Signed-off-by: Eric Miao --- arch/arm/mach-mx5/mm.c | 4 ++-- drivers/dma/imx-sdma.c | 2 +- firmware/Makefile | 9 ++++++++- firmware/imx/sdma/sdma-imx25-to1.bin | Bin 0 -> 694 bytes firmware/imx/sdma/sdma-imx31-to1.bin | Bin 0 -> 3754 bytes firmware/imx/sdma/sdma-imx31-to2.bin | Bin 0 -> 3762 bytes firmware/imx/sdma/sdma-imx35-to1.bin | Bin 0 -> 2010 bytes firmware/imx/sdma/sdma-imx35-to2.bin | Bin 0 -> 1746 bytes firmware/imx/sdma/sdma-imx50-to1.bin | Bin 0 -> 550 bytes firmware/imx/sdma/sdma-imx51-to3.bin | Bin 0 -> 812 bytes firmware/imx/sdma/sdma-imx53-to1.bin | Bin 0 -> 1406 bytes 11 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 firmware/imx/sdma/sdma-imx25-to1.bin create mode 100644 firmware/imx/sdma/sdma-imx31-to1.bin create mode 100644 firmware/imx/sdma/sdma-imx31-to2.bin create mode 100644 firmware/imx/sdma/sdma-imx35-to1.bin create mode 100644 firmware/imx/sdma/sdma-imx35-to2.bin create mode 100644 firmware/imx/sdma/sdma-imx50-to1.bin create mode 100644 firmware/imx/sdma/sdma-imx51-to3.bin create mode 100644 firmware/imx/sdma/sdma-imx53-to1.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx25-to1.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx31-to1.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx31-to2.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx35-to1.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx35-to2.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx50-to1.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx51-to3.bin 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 Binary files /dev/null and b/firmware/imx/sdma/sdma-imx53-to1.bin differ -- cgit v1.2.3