summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2012-10-29 09:18:15 -0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-10-29 21:32:27 +0100
commit4aede1eb121e8199d33fe6697f4c91405086000a (patch)
treea4828b32990ce39e041e3a1818b2349904f8cb52
parent727d5c44b3e8445854d16a67d17907949b57fd0b (diff)
downloadsdma-firmware-master.tar.gz
sdma-firmware-master.tar.xz
mx53: Add mx53 SDMA firmware supportHEADmaster
Add mx53 SDMA firmware support. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--Makefile6
-rw-r--r--imx53.c207
-rw-r--r--sdma-firmware.h1
-rw-r--r--sdma-gen-image.c1
4 files changed, 213 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index b6d30e3..9cee8dc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,14 @@
-FIRMWARE=sdma-imx31-to1.bin sdma-imx31-to2.bin sdma-imx35-to1.bin sdma-imx35-to2.bin sdma-imx51.bin sdma-imx25-to1.bin
+FIRMWARE=sdma-imx31-to1.bin sdma-imx31-to2.bin sdma-imx35-to1.bin \
+sdma-imx35-to2.bin sdma-imx51.bin sdma-imx53.bin sdma-imx25-to1.bin
all: $(FIRMWARE)
@./sdma-gen-image
$(FIRMWARE): sdma-gen-image
-sdma-gen-image: imx31-to1.o imx31-to2.o imx35-to1.o imx35-to2.o imx51.o imx25-to1.o sdma-gen-image.o
+sdma-gen-image: imx31-to1.o imx31-to2.o imx35-to1.o imx35-to2.o imx51.o \
+imx53.o imx25-to1.o sdma-gen-image.o
clean:
@rm -f *.o *.bin
diff --git a/imx53.c b/imx53.c
new file mode 100644
index 0000000..68e2dc5
--- /dev/null
+++ b/imx53.c
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2010-2012 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
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#include "sdma-firmware.h"
+
+#define ap_2_ap_ADDR_MX53 642
+#define ap_2_ap_SIZE_MX53 41
+
+#define app_2_mcu_ADDR_MX53 683
+#define app_2_mcu_SIZE_MX53 64
+
+#define mcu_2_app_ADDR_MX53 747
+#define mcu_2_app_SIZE_MX53 70
+
+#define uart_2_mcu_ADDR_MX53 817
+#define uart_2_mcu_SIZE_MX53 74
+
+#define shp_2_mcu_ADDR_MX53 891
+#define shp_2_mcu_SIZE_MX53 69
+
+#define mcu_2_shp_ADDR_MX53 960
+#define mcu_2_shp_SIZE_MX53 72
+
+#define uartsh_2_mcu_ADDR_MX53 1032
+#define uartsh_2_mcu_SIZE_MX53 68
+
+#define spdif_2_mcu_ADDR_MX53 1100
+#define spdif_2_mcu_SIZE_MX53 34
+
+#define mcu_2_spdif_ADDR_MX53 1134
+#define mcu_2_spdif_SIZE_MX53 59
+
+#define firi_2_mcu_ADDR_MX53 1193
+#define firi_2_mcu_SIZE_MX53 97
+
+#define mcu_2_firi_ADDR_MX53 1290
+#define mcu_2_firi_SIZE_MX53 79
+
+#define p_2_p_ADDR_MX53 6331
+#define p_2_p_SIZE_MX53 254
+
+#define RAM_CODE_START_ADDR_MX53 6144
+
+/* mx53 firmware taken from 11.09 FSL BSP */
+static const short blob[] = {
+0xc1e3, 0x57db, 0x5fe3, 0x57e3, 0x52f3, 0x6a01, 0x008f, 0x00d5,
+0x7d01, 0x008d, 0x05a0, 0x5deb, 0x0478, 0x7d03, 0x0479, 0x7d2c,
+0x7c36, 0x0479, 0x7c1f, 0x56ee, 0x0f00, 0x0660, 0x7d05, 0x6509,
+0x7e43, 0x620a, 0x7e41, 0x9820, 0x620a, 0x7e3e, 0x6509, 0x7e3c,
+0x0512, 0x0512, 0x02ad, 0x0760, 0x7d03, 0x55fb, 0x6dd3, 0x982b,
+0x55fb, 0x1d04, 0x6dd3, 0x6ac8, 0x7f2f, 0x1f01, 0x2003, 0x4800,
+0x7ce4, 0x9853, 0x55fb, 0x6dd7, 0x0015, 0x7805, 0x6209, 0x6ac8,
+0x6209, 0x6ac8, 0x6dd7, 0x9852, 0x55fb, 0x6dd7, 0x0015, 0x0015,
+0x7805, 0x620a, 0x6ac8, 0x620a, 0x6ac8, 0x6dd7, 0x9852, 0x55fb,
+0x6dd7, 0x0015, 0x0015, 0x0015, 0x7805, 0x620b, 0x6ac8, 0x620b,
+0x6ac8, 0x6dd7, 0x7c09, 0x6ddf, 0x7f07, 0x0000, 0x55eb, 0x4d00,
+0x7d07, 0xc1fa, 0x57e3, 0x9806, 0x0007, 0x68cc, 0x680c, 0xc213,
+0xc20a, 0x9803, 0xc1d9, 0xc1e3, 0x57db, 0x5fe3, 0x57e3, 0x52f3,
+0x6a21, 0x008f, 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x5deb, 0x56fb,
+0x0478, 0x7d03, 0x0479, 0x7d2a, 0x7c31, 0x0479, 0x7c20, 0x0b70,
+0x0311, 0x53eb, 0x0f00, 0x0360, 0x7d05, 0x6509, 0x7e37, 0x620a,
+0x7e35, 0x9886, 0x620a, 0x7e32, 0x6509, 0x7e30, 0x0512, 0x0512,
+0x02ad, 0x0760, 0x7c02, 0x5a06, 0x988e, 0x5a26, 0x7f27, 0x1f01,
+0x2003, 0x4800, 0x7ce8, 0x0b70, 0x0311, 0x5313, 0x98af, 0x0015,
+0x7804, 0x6209, 0x5a06, 0x6209, 0x5a26, 0x98ae, 0x0015, 0x0015,
+0x7804, 0x620a, 0x5a06, 0x620a, 0x5a26, 0x98ae, 0x0015, 0x0015,
+0x0015, 0x7804, 0x620b, 0x5a06, 0x620b, 0x5a26, 0x7c07, 0x0000,
+0x55eb, 0x4d00, 0x7d06, 0xc1fa, 0x57e3, 0x9869, 0x0007, 0x680c,
+0xc213, 0xc20a, 0x9866, 0x0b70, 0x0311, 0x5313, 0x076c, 0x7c01,
+0xc1d9, 0x5efb, 0x068a, 0x076b, 0x7c01, 0xc1d9, 0x5ef3, 0x59db,
+0x58d3, 0x018f, 0x0110, 0x390f, 0x008b, 0xc13c, 0x7d2b, 0x5ac0,
+0x5bc8, 0xc14e, 0x7c27, 0x0388, 0x0689, 0x5ce3, 0x0dff, 0x0511,
+0x1dff, 0x05bc, 0x073e, 0x4d00, 0x7d18, 0x0870, 0x0011, 0x077e,
+0x7d09, 0x077d, 0x7d02, 0x5228, 0x98e6, 0x52f8, 0x54db, 0x02bc,
+0x02cc, 0x7c09, 0x077c, 0x7d02, 0x5228, 0x98ef, 0x52f8, 0x54d3,
+0x02bc, 0x02cc, 0x7d09, 0x0400, 0x98dd, 0x008b, 0x52c0, 0x53c8,
+0xc159, 0x7dd6, 0x0200, 0x98cd, 0x08ff, 0x00bf, 0x077f, 0x7d15,
+0x0488, 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x5deb, 0x028f, 0x0212,
+0x0212, 0x3aff, 0x05da, 0x7c02, 0x073e, 0x9918, 0x02a4, 0x02dd,
+0x7d02, 0x073e, 0x9918, 0x075e, 0x9918, 0x55eb, 0x0598, 0x5deb,
+0x52f3, 0x54fb, 0x076a, 0x7d26, 0x076c, 0x7d01, 0x9955, 0x076b,
+0x7c57, 0x0769, 0x7d04, 0x0768, 0x7d02, 0x0e01, 0x992f, 0x5893,
+0x00d6, 0x7d01, 0x008e, 0x5593, 0x05a0, 0x5d93, 0x06a0, 0x7802,
+0x5502, 0x5d04, 0x7c1d, 0x4e00, 0x7c08, 0x0769, 0x7d03, 0x5502,
+0x7e17, 0x993c, 0x5d04, 0x7f14, 0x0689, 0x5093, 0x4800, 0x7d01,
+0x9927, 0x99a0, 0x0015, 0x7806, 0x5502, 0x5d04, 0x074f, 0x5502,
+0x5d24, 0x072f, 0x7c01, 0x99a0, 0x0017, 0x076f, 0x7c01, 0x2001,
+0x5593, 0x009d, 0x0007, 0xd9a7, 0x98f5, 0x6cd3, 0x0769, 0x7d04,
+0x0768, 0x7d02, 0x0e01, 0x9964, 0x5893, 0x00d6, 0x7d01, 0x008e,
+0x5593, 0x05a0, 0x5d93, 0x06a0, 0x7802, 0x5502, 0x6dc8, 0x7c0f,
+0x4e00, 0x7c08, 0x0769, 0x7d03, 0x5502, 0x7e09, 0x9971, 0x6dc8,
+0x7f06, 0x0689, 0x5093, 0x4800, 0x7d01, 0x995c, 0x99a0, 0x999a,
+0x6ac3, 0x0769, 0x7d04, 0x0768, 0x7d02, 0x0e01, 0x9987, 0x5893,
+0x00d6, 0x7d01, 0x008e, 0x5593, 0x05a0, 0x5d93, 0x06a0, 0x7802,
+0x65c8, 0x5d04, 0x7c0f, 0x4e00, 0x7c08, 0x0769, 0x7d03, 0x65c8,
+0x7e09, 0x9994, 0x5d04, 0x7f06, 0x0689, 0x5093, 0x4800, 0x7d01,
+0x997f, 0x99a0, 0x5593, 0x009d, 0x0007, 0x6cff, 0xd9a7, 0x98f5,
+0x0000, 0x54e3, 0x55eb, 0x4d00, 0x7c01, 0x98f5, 0x98dd, 0x54e3,
+0x55eb, 0x0aff, 0x0211, 0x1aff, 0x077f, 0x7c02, 0x05a0, 0x99b4,
+0x009d, 0x058c, 0x05ba, 0x05a0, 0x0210, 0x04ba, 0x04ad, 0x0454,
+0x0006, 0xc1e3, 0x57db, 0x52fb, 0x6ac3, 0x52f3, 0x6a05, 0x008f,
+0x00d5, 0x7d01, 0x008d, 0x05a0, 0x5deb, 0x0478, 0x7d03, 0x0479,
+0x7d2b, 0x7c1e, 0x0479, 0x7c33, 0x56ee, 0x0f00, 0x55fb, 0x0760,
+0x7d02, 0x6dc3, 0x99d5, 0x1d04, 0x6dc3, 0x62c8, 0x7e3c, 0x0660,
+0x7d02, 0x0210, 0x0212, 0x6a09, 0x7f36, 0x0212, 0x6a09, 0x7f33,
+0x0212, 0x6a09, 0x7f30, 0x1f01, 0x2003, 0x4800, 0x7ce7, 0x9a09,
+0x55fb, 0x6dc7, 0x0015, 0x0015, 0x0015, 0x7805, 0x62c8, 0x6a0b,
+0x62c8, 0x6a0b, 0x6dc7, 0x9a08, 0x55fb, 0x6dc7, 0x0015, 0x0015,
+0x7805, 0x62c8, 0x6a0a, 0x62c8, 0x6a0a, 0x6dc7, 0x9a08, 0x55fb,
+0x6dc7, 0x0015, 0x7805, 0x62c8, 0x6a09, 0x62c8, 0x6a09, 0x6dc7,
+0x7c0a, 0x6a28, 0x57db, 0x7f07, 0x0000, 0x55eb, 0x4d00, 0x7d05,
+0xc1fa, 0x57db, 0x99bf, 0xc277, 0x0454, 0xc20a, 0x99ba, 0xc1d9,
+0xc1e3, 0x57db, 0x52f3, 0x6a05, 0x008f, 0x00d5, 0x7d01, 0x008d,
+0x05a0, 0x56fb, 0x0478, 0x7d03, 0x0479, 0x7d29, 0x7c1f, 0x0479,
+0x7c2e, 0x5de3, 0x0d70, 0x0511, 0x55ed, 0x0f00, 0x0760, 0x7d02,
+0x5206, 0x9a33, 0x5226, 0x7e33, 0x0560, 0x7d02, 0x0210, 0x0212,
+0x6a09, 0x7f2d, 0x0212, 0x6a09, 0x7f2a, 0x0212, 0x6a09, 0x7f27,
+0x1f01, 0x2003, 0x4800, 0x7cea, 0x55e3, 0x9a5e, 0x0015, 0x0015,
+0x0015, 0x7804, 0x5206, 0x6a0b, 0x5226, 0x6a0b, 0x9a5d, 0x0015,
+0x0015, 0x7804, 0x5206, 0x6a0a, 0x5226, 0x6a0a, 0x9a5d, 0x0015,
+0x7804, 0x5206, 0x6a09, 0x5226, 0x6a09, 0x7c09, 0x6a28, 0x7f07,
+0x0000, 0x57db, 0x4d00, 0x7d05, 0xc1fa, 0x57db, 0x9a1c, 0xc277,
+0x0454, 0xc20a, 0x9a19
+};
+
+/* SDMA ROM scripts start addresses and sizes */
+static struct sdma_script_start_addrs addr = {
+ /* AP<->BP */
+ .ap_2_ap_addr = ap_2_ap_ADDR_MX53,
+ .ap_2_bp_addr = -1,
+ .bp_2_ap_addr = -1,
+ .ap_2_ap_fixed_addr = -1,
+
+ /*misc */
+ .loopback_on_dsp_side_addr = -1,
+ .mcu_interrupt_only_addr = -1,
+
+ /* firi */
+ .firi_2_per_addr = firi_2_mcu_ADDR_MX53,
+ .firi_2_mcu_addr = firi_2_mcu_ADDR_MX53,
+ .per_2_firi_addr = mcu_2_firi_ADDR_MX53,
+ .mcu_2_firi_addr = mcu_2_firi_ADDR_MX53,
+
+ /* uart */
+ .uart_2_per_addr = uart_2_mcu_ADDR_MX53,
+ .uart_2_mcu_addr = uart_2_mcu_ADDR_MX53,
+
+ /* UART SH */
+ .uartsh_2_per_addr = uartsh_2_mcu_ADDR_MX53,
+ .uartsh_2_mcu_addr = uartsh_2_mcu_ADDR_MX53,
+
+ /* SHP */
+ .per_2_shp_addr = mcu_2_shp_ADDR_MX53,
+ .shp_2_per_addr = shp_2_mcu_ADDR_MX53,
+ .mcu_2_shp_addr = mcu_2_shp_ADDR_MX53,
+ .shp_2_mcu_addr = shp_2_mcu_ADDR_MX53,
+
+ /* ATA use it's own DMA */
+ .mcu_2_ata_addr = -1,
+ .ata_2_mcu_addr = -1,
+
+ /* app */
+ .app_2_per_addr = app_2_mcu_ADDR_MX53,
+ .app_2_mcu_addr = app_2_mcu_ADDR_MX53,
+ .per_2_app_addr = mcu_2_app_ADDR_MX53,
+ .mcu_2_app_addr = mcu_2_app_ADDR_MX53,
+
+ /* MSHC */
+ .mshc_2_mcu_addr = -1,
+ .mcu_2_mshc_addr = -1,
+
+ /* spdif */
+ .spdif_2_mcu_addr = spdif_2_mcu_ADDR_MX53,
+ .mcu_2_spdif_addr = mcu_2_spdif_ADDR_MX53,
+
+ /* asrc script address change to use shp_2_mcu since v01.01 */
+ .asrc_2_mcu_addr = shp_2_mcu_ADDR_MX53,
+
+ /* IPU */
+ .ext_mem_2_ipu_addr = mcu_2_app_ADDR_MX53,
+
+ /* DVFS */
+ .dptc_dvfs_addr = -1,
+
+ /* SSI */
+ .per_2_per_addr = p_2_p_ADDR_MX53,
+
+ /* core */
+ .ram_code_start_addr = RAM_CODE_START_ADDR_MX53,
+};
+
+struct sdma_firmware sdma_imx53 = {
+ .addr = &addr,
+ .blob = blob,
+ .blob_size = ARRAY_SIZE(blob),
+ .name = "sdma-imx53",
+ .version = 1,
+};
diff --git a/sdma-firmware.h b/sdma-firmware.h
index 97d045c..ff5ba42 100644
--- a/sdma-firmware.h
+++ b/sdma-firmware.h
@@ -85,6 +85,7 @@ extern struct sdma_firmware sdma_imx35_to1;
extern struct sdma_firmware sdma_imx35_to2;
extern struct sdma_firmware sdma_imx51_to2;
extern struct sdma_firmware sdma_imx51;
+extern struct sdma_firmware sdma_imx53;
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
diff --git a/sdma-gen-image.c b/sdma-gen-image.c
index 095c553..69a2b0a 100644
--- a/sdma-gen-image.c
+++ b/sdma-gen-image.c
@@ -35,6 +35,7 @@ static struct sdma_firmware *firmwares[] = {
&sdma_imx35_to1,
&sdma_imx35_to2,
&sdma_imx51,
+ &sdma_imx53,
};
static int gen_one(struct sdma_firmware *fw)