diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2012-10-29 09:18:15 -0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-10-29 21:32:27 +0100 |
commit | 4aede1eb121e8199d33fe6697f4c91405086000a (patch) | |
tree | a4828b32990ce39e041e3a1818b2349904f8cb52 | |
parent | 727d5c44b3e8445854d16a67d17907949b57fd0b (diff) | |
download | sdma-firmware-4aede1eb121e8199d33fe6697f4c91405086000a.tar.gz sdma-firmware-4aede1eb121e8199d33fe6697f4c91405086000a.tar.xz |
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-- | Makefile | 6 | ||||
-rw-r--r-- | imx53.c | 207 | ||||
-rw-r--r-- | sdma-firmware.h | 1 | ||||
-rw-r--r-- | sdma-gen-image.c | 1 |
4 files changed, 213 insertions, 2 deletions
@@ -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 @@ -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) |