diff --git a/firmware/target/arm/imx31/sdma-imx31.c b/firmware/target/arm/imx31/sdma-imx31.c index 381e589c08..39f4e29554 100644 --- a/firmware/target/arm/imx31/sdma-imx31.c +++ b/firmware/target/arm/imx31/sdma-imx31.c @@ -35,8 +35,6 @@ /* Cut down to bare bones essentials */ -/* Script information that depends on system revision */ -static struct sdma_script_start_addrs script_info; /* Mask of channels with callback enabled */ static unsigned long sdma_enabled_ints = 0; /* One channel control block per channel in physically mapped device RAM */ @@ -71,79 +69,6 @@ static void __attribute__((interrupt("IRQ"))) SDMA_HANDLER(void) } } -/* Initialize script information based upon the system revision */ -static void init_script_info(void) -{ - if (iim_system_rev() == IIM_SREV_1_0) - { - /* Channel script info */ - script_info.app_2_mcu_addr = app_2_mcu_ADDR_1; - script_info.ap_2_ap_addr = ap_2_ap_ADDR_1; - script_info.ap_2_bp_addr = -1; - script_info.bp_2_ap_addr = -1; - script_info.loopback_on_dsp_side_addr = -1; - script_info.mcu_2_app_addr = mcu_2_app_ADDR_1; - script_info.mcu_2_shp_addr = mcu_2_shp_ADDR_1; - script_info.mcu_interrupt_only_addr = -1; - script_info.shp_2_mcu_addr = shp_2_mcu_ADDR_1; - script_info.uartsh_2_mcu_addr = uartsh_2_mcu_ADDR_1; - script_info.uart_2_mcu_addr = uart_2_mcu_ADDR_1; - script_info.dptc_dvfs_addr = dptc_dvfs_ADDR_1; - script_info.firi_2_mcu_addr = firi_2_mcu_ADDR_1; - script_info.firi_2_per_addr = -1; - script_info.mshc_2_mcu_addr = mshc_2_mcu_ADDR_1; - script_info.per_2_app_addr = -1; - script_info.per_2_firi_addr = -1; - script_info.per_2_shp_addr = -1; - script_info.mcu_2_ata_addr = mcu_2_ata_ADDR_1; - script_info.mcu_2_firi_addr = mcu_2_firi_ADDR_1; - script_info.mcu_2_mshc_addr = mcu_2_mshc_ADDR_1; - script_info.ata_2_mcu_addr = ata_2_mcu_ADDR_1; - script_info.uartsh_2_per_addr = -1; - script_info.shp_2_per_addr = -1; - script_info.uart_2_per_addr = -1; - script_info.app_2_per_addr = -1; - /* Main code block info */ - script_info.ram_code_size = RAM_CODE_SIZE_1; - script_info.ram_code_start_addr = RAM_CODE_START_ADDR_1; - script_info.mcu_start_addr = (unsigned long)sdma_code_1; - } - else - { - /* Channel script info */ - script_info.app_2_mcu_addr = app_2_mcu_patched_ADDR_2; - script_info.ap_2_ap_addr = ap_2_ap_ADDR_2; - script_info.ap_2_bp_addr = ap_2_bp_ADDR_2; - script_info.bp_2_ap_addr = bp_2_ap_ADDR_2; - script_info.loopback_on_dsp_side_addr = -1; - script_info.mcu_2_app_addr = mcu_2_app_patched_ADDR_2; - script_info.mcu_2_shp_addr = mcu_2_shp_patched_ADDR_2; - script_info.mcu_interrupt_only_addr = -1; - script_info.shp_2_mcu_addr = shp_2_mcu_patched_ADDR_2; - script_info.uartsh_2_mcu_addr = uartsh_2_mcu_patched_ADDR_2; - script_info.uart_2_mcu_addr = uart_2_mcu_patched_ADDR_2; - script_info.dptc_dvfs_addr = -1; - script_info.firi_2_mcu_addr = firi_2_mcu_ADDR_2; - script_info.firi_2_per_addr = -1; - script_info.mshc_2_mcu_addr = -1; - script_info.per_2_app_addr = -1; - script_info.per_2_firi_addr = -1; - script_info.per_2_shp_addr = per_2_shp_ADDR_2; - script_info.mcu_2_ata_addr = mcu_2_ata_ADDR_2; - script_info.mcu_2_firi_addr = mcu_2_firi_ADDR_2; - script_info.mcu_2_mshc_addr = -1; - script_info.ata_2_mcu_addr = ata_2_mcu_ADDR_2; - script_info.uartsh_2_per_addr = -1; - script_info.shp_2_per_addr = shp_2_per_ADDR_2; - script_info.uart_2_per_addr = -1; - script_info.app_2_per_addr = -1; - /* Main code block info */ - script_info.ram_code_size = RAM_CODE_SIZE_2; - script_info.ram_code_start_addr = RAM_CODE_START_ADDR_2; - script_info.mcu_start_addr = (unsigned long)sdma_code_2; - } -} - /* Return pc of SDMA script in SDMA halfword space according to peripheral * and transfer type */ static unsigned long get_script_pc(unsigned int peripheral_type, @@ -159,7 +84,7 @@ static unsigned long get_script_pc(unsigned int peripheral_type, case SDMA_TRAN_EMI_2_INT: case SDMA_TRAN_EMI_2_EMI: case SDMA_TRAN_INT_2_EMI: - res = script_info.ap_2_ap_addr; + res = AP_2_AP_ADDR; break; } break; @@ -169,16 +94,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_EMI_2_DSP: - res = script_info.ap_2_bp_addr; + res = AP_2_BP_ADDR; break; case SDMA_TRAN_DSP_2_EMI: - res = script_info.bp_2_ap_addr; + res = BP_2_AP_ADDR; break; case SDMA_TRAN_DSP_2_EMI_LOOP: - res = script_info.loopback_on_dsp_side_addr; + res = LOOPBACK_ON_DSP_SIDE_ADDR; break; case SDMA_TRAN_EMI_2_DSP_LOOP: - res = script_info.mcu_interrupt_only_addr; + res = MCU_INTERRUPT_ONLY_ADDR; break; } break; @@ -189,16 +114,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_INT: - res = script_info.firi_2_per_addr; + res = FIRI_2_PER_ADDR; break; case SDMA_TRAN_PER_2_EMI: - res = script_info.firi_2_mcu_addr; + res = FIRI_2_MCU_ADDR; break; case SDMA_TRAN_INT_2_PER: - res = script_info.per_2_firi_addr; + res = PER_2_FIRI_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_firi_addr; + res = MCU_2_FIRI_ADDR; break; } break; @@ -209,16 +134,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_INT: - res = script_info.uart_2_per_addr; + res = UART_2_PER_ADDR; break; case SDMA_TRAN_PER_2_EMI: - res = script_info.uart_2_mcu_addr; + res = UART_2_MCU_ADDR; break; case SDMA_TRAN_INT_2_PER: - res = script_info.per_2_app_addr; + res = PER_2_APP_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_app_addr; + res = MCU_2_APP_ADDR; break; } break; @@ -229,16 +154,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_INT: - res = script_info.uartsh_2_per_addr; + res = UARTSH_2_PER_ADDR; break; case SDMA_TRAN_PER_2_EMI: - res = script_info.uartsh_2_mcu_addr; + res = UARTSH_2_MCU_ADDR; break; case SDMA_TRAN_INT_2_PER: - res = script_info.per_2_shp_addr; + res = PER_2_SHP_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_shp_addr; + res = MCU_2_SHP_ADDR; break; } break; @@ -248,10 +173,10 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_EMI: - res = script_info.ata_2_mcu_addr; + res = ATA_2_MCU_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_ata_addr; + res = MCU_2_ATA_ADDR; break; } break; @@ -262,16 +187,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_INT: - res = script_info.app_2_per_addr; + res = APP_2_PER_ADDR; break; case SDMA_TRAN_PER_2_EMI: - res = script_info.app_2_mcu_addr; + res = APP_2_MCU_ADDR; break; case SDMA_TRAN_INT_2_PER: - res = script_info.per_2_app_addr; + res = PER_2_APP_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_app_addr; + res = MCU_2_APP_ADDR; break; } break; @@ -285,16 +210,16 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_INT: - res = script_info.shp_2_per_addr; + res = SHP_2_PER_ADDR; break; case SDMA_TRAN_PER_2_EMI: - res = script_info.shp_2_mcu_addr; + res = SHP_2_MCU_ADDR; break; case SDMA_TRAN_INT_2_PER: - res = script_info.per_2_shp_addr; + res = PER_2_SHP_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_shp_addr; + res = MCU_2_SHP_ADDR; break; } break; @@ -303,10 +228,10 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_EMI: - res = script_info.mshc_2_mcu_addr; + res = MSHC_2_MCU_ADDR; break; case SDMA_TRAN_EMI_2_PER: - res = script_info.mcu_2_mshc_addr; + res = MCU_2_MSHC_ADDR; break; } break; @@ -315,7 +240,7 @@ static unsigned long get_script_pc(unsigned int peripheral_type, switch (transfer_type) { case SDMA_TRAN_PER_2_EMI: - res = script_info.dptc_dvfs_addr; + res = DPTC_DVFS_ADDR; break; } break; @@ -511,8 +436,6 @@ void INIT_ATTR sdma_init(void) SDMA_RESET |= SDMA_RESET_RESET; while (SDMA_RESET & SDMA_RESET_RESET); - init_script_info(); - /* No channel enabled, all priorities 0 */ for (i = 0; i < CH_NUM; i++) { @@ -561,9 +484,9 @@ void INIT_ATTR sdma_init(void) set_buffer_descriptor(&c0_buffer_desc.bd, C0_SETPM, BD_DONE | BD_WRAP | BD_EXTD, - script_info.ram_code_size, - (void *)addr_virt_to_phys(script_info.mcu_start_addr), - (void *)(unsigned long)script_info.ram_code_start_addr); + RAM_CODE_SIZE, + (void *)addr_virt_to_phys(MCU_START_ADDR), + (void *)RAM_CODE_START_ADDR); SDMA_HSTART = 1ul; sdma_channel_wait_nonblocking(0); diff --git a/firmware/target/arm/imx31/sdma_script_code.h b/firmware/target/arm/imx31/sdma_script_code.h index 9a5f4933dd..82826e0bce 100644 --- a/firmware/target/arm/imx31/sdma_script_code.h +++ b/firmware/target/arm/imx31/sdma_script_code.h @@ -24,568 +24,10 @@ * Copyright 2004-2008 Freescale Semiconductor, Inc. All Rights Reserved. */ -/* This header contains both versions 1 and 2 of SDMA code */ - #ifndef __SDMA_SCRIPT_CODE_H__ #define __SDMA_SCRIPT_CODE_H__ -/*! -* Following define start address of start script -*/ -#define start_ADDR_1 0 -/*! -* Following define size of start script -*/ -#define start_SIZE_1 21 -/*! -* Following define start address of core script -*/ -#define core_ADDR_1 80 -/*! -* Following define size of core script -*/ -#define core_SIZE_1 152 - -/*! -* Following define start address of common script -*/ -#define common_ADDR_1 232 -/*! -* Following define size of common script -*/ -#define common_SIZE_1 191 - -/*! -* Following define start address of burst_copy script -*/ -#define burst_copy_ADDR_1 423 -/*! -* Following define size of burst_copy script -*/ -#define burst_copy_SIZE_1 87 - -/*! -* Following define start address of dsp_2_burst script -*/ -#define dsp_2_burst_ADDR_1 510 -/*! -* Following define size of dsp_2_burst script -*/ -#define dsp_2_burst_SIZE_1 24 - -/*! -* Following define start address of burst_2_dsp script -*/ -#define burst_2_dsp_ADDR_1 534 -/*! -* Following define size of burst_2_dsp script -*/ -#define burst_2_dsp_SIZE_1 24 - -/*! -* Following define start address of dsp_copy script -*/ -#define dsp_copy_ADDR_1 558 -/*! -* Following define size of dsp_copy script -*/ -#define dsp_copy_SIZE_1 86 - -/*! -* Following define start address of mcu_2_mcu script -*/ -#define mcu_2_mcu_ADDR_1 644 -/*! -* Following define size of mcu_2_mcu script -*/ -#define mcu_2_mcu_SIZE_1 79 - -/*! -* Following define start address of mcu_2_per script -*/ -#define mcu_2_per_ADDR_1 723 -/*! -* Following define size of mcu_2_per script -*/ -#define mcu_2_per_SIZE_1 88 - -/*! -* Following define start address of test script -*/ -#define test_ADDR_1 811 -/*! -* Following define size of test script -*/ -#define test_SIZE_1 63 - -/*! -* Following define start address of mcu_2_dsp script -*/ -#define mcu_2_dsp_ADDR_1 874 -/*! -* Following define size of mcu_2_dsp script -*/ -#define mcu_2_dsp_SIZE_1 30 - -/*! -* Following define start address of mcu_2_dsp_2buf script -*/ -#define mcu_2_dsp_2buf_ADDR_1 904 -/*! -* Following define size of mcu_2_dsp_2buf script -*/ -#define mcu_2_dsp_2buf_SIZE_1 113 - -/*! -* Following define start address of dsp_2_mcu script -*/ -#define dsp_2_mcu_ADDR_1 1017 -/*! -* Following define size of dsp_2_mcu script -*/ -#define dsp_2_mcu_SIZE_1 30 - -/*! -* Following define start address of dsp_2_mcu_2buf script -*/ -#define dsp_2_mcu_2buf_ADDR_1 1047 -/*! -* Following define size of dsp_2_mcu_2buf script -*/ -#define dsp_2_mcu_2buf_SIZE_1 113 - -/*! -* Following define start address of dsp_2_dsp script -*/ -#define dsp_2_dsp_ADDR_1 1160 -/*! -* Following define size of dsp_2_dsp script -*/ -#define dsp_2_dsp_SIZE_1 64 - -/*! -* Following define start address of per_2_mcu script -*/ -#define per_2_mcu_ADDR_1 1224 -/*! -* Following define size of per_2_mcu script -*/ -#define per_2_mcu_SIZE_1 121 - -/*! -* Following define start address of dsp_2_per_2buf script -*/ -#define dsp_2_per_2buf_ADDR_1 1345 -/*! -* Following define size of dsp_2_per_2buf script -*/ -#define dsp_2_per_2buf_SIZE_1 164 - -/*! -* Following define start address of per_2_dsp_2buf script -*/ -#define per_2_dsp_2buf_ADDR_1 1509 -/*! -* Following define size of per_2_dsp_2buf script -*/ -#define per_2_dsp_2buf_SIZE_1 168 - -/*! -* Following define start address of per_2_per script -*/ -#define per_2_per_ADDR_1 1677 -/*! -* Following define size of per_2_per script -*/ -#define per_2_per_SIZE_1 67 - -/*! -* Following define start address of error_dsp script -*/ -#define error_dsp_ADDR_1 1744 -/*! -* Following define size of error_dsp script -*/ -#define error_dsp_SIZE_1 34 - -/*! -* Following define start address of ap_2_ap script -*/ -#define ap_2_ap_ADDR_1 6144 -/*! -* Following define size of ap_2_ap script -*/ -#define ap_2_ap_SIZE_1 294 - -/*! -* Following define start address of app_2_mcu script -*/ -#define app_2_mcu_ADDR_1 6438 -/*! -* Following define size of app_2_mcu script -*/ -#define app_2_mcu_SIZE_1 101 - -/*! -* Following define start address of ata_2_mcu script -*/ -#define ata_2_mcu_ADDR_1 6539 -/*! -* Following define size of ata_2_mcu script -*/ -#define ata_2_mcu_SIZE_1 110 - -/*! -* Following define start address of dptc_dvfs script -*/ -#define dptc_dvfs_ADDR_1 6649 -/*! -* Following define size of dptc_dvfs script -*/ -#define dptc_dvfs_SIZE_1 274 - -/*! -* Following define start address of error script -*/ -#define error_ADDR_1 6923 -/*! -* Following define size of error script -*/ -#define error_SIZE_1 73 - -/*! -* Following define start address of firi_2_mcu script -*/ -#define firi_2_mcu_ADDR_1 6996 -/*! -* Following define size of firi_2_mcu script -*/ -#define firi_2_mcu_SIZE_1 114 - -/*! -* Following define start address of mcu_2_app script -*/ -#define mcu_2_app_ADDR_1 7110 -/*! -* Following define size of mcu_2_app script -*/ -#define mcu_2_app_SIZE_1 127 - -/*! -* Following define start address of mcu_2_ata script -*/ -#define mcu_2_ata_ADDR_1 7237 -/*! -* Following define size of mcu_2_ata script -*/ -#define mcu_2_ata_SIZE_1 87 - -/*! -* Following define start address of mcu_2_firi script -*/ -#define mcu_2_firi_ADDR_1 7324 -/*! -* Following define size of mcu_2_firi script -*/ -#define mcu_2_firi_SIZE_1 77 - -/*! -* Following define start address of mcu_2_mshc script -*/ -#define mcu_2_mshc_ADDR_1 7401 -/*! -* Following define size of mcu_2_mshc script -*/ -#define mcu_2_mshc_SIZE_1 48 - -/*! -* Following define start address of mcu_2_shp script -*/ -#define mcu_2_shp_ADDR_1 7449 -/*! -* Following define size of mcu_2_shp script -*/ -#define mcu_2_shp_SIZE_1 123 - -/*! -* Following define start address of mshc_2_mcu script -*/ -#define mshc_2_mcu_ADDR_1 7572 -/*! -* Following define size of mshc_2_mcu script -*/ -#define mshc_2_mcu_SIZE_1 60 - -/*! -* Following define start address of shp_2_mcu script -*/ -#define shp_2_mcu_ADDR_1 7632 -/*! -* Following define size of shp_2_mcu script -*/ -#define shp_2_mcu_SIZE_1 101 - -/*! -* Following define start address of uart_2_mcu script -*/ -#define uart_2_mcu_ADDR_1 7733 -/*! -* Following define size of uart_2_mcu script -*/ -#define uart_2_mcu_SIZE_1 105 - -/*! -* Following define start address of uartsh_2_mcu script -*/ -#define uartsh_2_mcu_ADDR_1 7838 -/*! -* Following define size of uartsh_2_mcu script -*/ -#define uartsh_2_mcu_SIZE_1 98 - -/*! -* Following define the start address of sdma ram -*/ - -#define RAM_CODE_START_ADDR_1 6144 -/*! -* Following define the size of sdma ram -*/ -#define RAM_CODE_SIZE_1 1792 - -/*! - * Code download for i.MX system revision = 1.0 - */ -static __attribute__((aligned(4), section(".sdmacode"))) - const short sdma_code_1[RAM_CODE_SIZE_1] = -{ - 0xc0ec, 0x7d59, 0x0970, 0x0111, 0x5111, 0x5ad1, 0x5bd9, 0xc0fe, - 0x5ce1, 0x7d02, 0x0200, 0x9806, 0x08ff, 0x0011, 0x28ff, 0x00bc, - 0x05df, 0x7d4b, 0x06df, 0x7d2f, 0x6dc5, 0x6ed5, 0x5ef1, 0x0288, - 0xd81a, 0x9854, 0x0b04, 0x00d3, 0x7d20, 0x06a5, 0x3e03, 0x3d03, - 0x03a5, 0x3b03, 0x008b, 0x058b, 0x7802, 0x63d8, 0x0000, 0x7e72, - 0x63ff, 0x7e70, 0x02a5, 0x008a, 0x4e00, 0x7d01, 0x983d, 0x6dcf, - 0x6edf, 0x0015, 0x0015, 0x7802, 0x63d8, 0x0000, 0x7e63, 0x63ff, - 0x7e61, 0x3a03, 0x008a, 0x6dcd, 0x6edd, 0x7801, 0x63d8, 0x7e5a, - 0x63ff, 0x7e58, 0x0006, 0x6dc5, 0x6e07, 0x5ef1, 0x0288, 0xd8f7, - 0x7e02, 0x7f04, 0x9854, 0x0007, 0x68cc, 0x6b28, 0x54e1, 0x0089, - 0xdb13, 0x0188, 0x5ce1, 0x9854, 0x52d1, 0x53d9, 0x54e1, 0xc10d, - 0x7dad, 0x0200, 0x9800, 0x0200, 0x9800, 0x06df, 0x7d06, 0x6d23, - 0x6ed5, 0x5ef1, 0x0288, 0xd8cd, 0x9854, 0x5ef1, 0x6e07, 0x6d03, - 0x0b04, 0x00d3, 0x7d59, 0x06a5, 0x3e03, 0x3d03, 0x4d00, 0x7d09, - 0x03a5, 0x00a3, 0x0588, 0x008b, 0xd8c9, 0x7ed8, 0x620c, 0x7ed6, - 0x008d, 0x4e00, 0x7c25, 0x0a20, 0x00da, 0x7c22, 0x6503, 0x3d1f, - 0x02a5, 0x00a2, 0x0215, 0x0215, 0x6a18, 0x6a28, 0x7fc7, 0x0a20, - 0x0b08, 0x00da, 0x7c06, 0x6b18, 0x6b28, 0x7fc0, 0x0000, 0x2020, - 0x9889, 0x0688, 0x0015, 0x0015, 0x6818, 0x6828, 0x7fb7, 0x98c2, - 0x0007, 0x6a0c, 0x54e1, 0x0089, 0xdb0f, 0x0188, 0x5ce1, 0x9854, - 0x0b04, 0x00d3, 0x7d21, 0x0389, 0x1b12, 0x048b, 0x0688, 0x0015, - 0x0015, 0x0588, 0x038c, 0x0a08, 0x05da, 0x008d, 0x7c01, 0x008a, - 0x05a0, 0x7803, 0x620b, 0x5a03, 0x1b01, 0x7e98, 0x008b, 0x00a4, - 0x038c, 0x7803, 0x5203, 0x6a0b, 0x1b01, 0x6a28, 0x7f8f, 0x0000, - 0x4d00, 0x7ce8, 0x008e, 0x3803, 0xd8c9, 0x7e88, 0x620c, 0x7e86, - 0x9854, 0x7802, 0x6209, 0x6a29, 0x0006, 0x3e03, 0x4e00, 0x7d11, - 0x0b04, 0x03a6, 0x02db, 0x7d01, 0x038a, 0x02a3, 0x048a, 0x008b, - 0x7802, 0x6329, 0x6bc8, 0x7ebc, 0x63c8, 0x7ebc, 0x008c, 0x4800, - 0x7d15, 0x0488, 0x0015, 0x0015, 0x6edf, 0x7803, 0x632b, 0x6bc8, - 0x0000, 0x7eae, 0x63c8, 0x7eae, 0x008c, 0x3803, 0x6edd, 0x7803, - 0x6329, 0x6bc8, 0x0000, 0x7ea4, 0x63c8, 0x7ea4, 0x0006, 0x3d03, - 0x4d00, 0x7d0e, 0x0b04, 0x03a5, 0x02db, 0x7d01, 0x038a, 0x02a3, - 0x048a, 0x008b, 0x7802, 0x63c8, 0x6b09, 0x7e1e, 0x7f1e, 0x008c, - 0x0488, 0x0015, 0x0015, 0x6dcf, 0x0288, 0x008a, 0x0d08, 0x02dd, - 0x7c01, 0x008d, 0x7802, 0x63c8, 0x6b0b, 0x7e0e, 0x6b28, 0x7f0d, - 0x0000, 0x02dd, 0x7c02, 0x2208, 0x990d, 0x008c, 0x3803, 0x65c0, - 0x6dc5, 0x7802, 0x63c8, 0x6b09, 0x6b28, 0x0006, 0x0870, 0x0011, - 0x5010, 0xc0ec, 0x7d5e, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, - 0x7d02, 0x0200, 0x992c, 0x6ec3, 0x6d07, 0x5df0, 0x0dff, 0x0511, - 0x1dff, 0x05bc, 0x4d00, 0x7d44, 0x0b70, 0x0311, 0x522b, 0x5313, - 0x02b9, 0x4a00, 0x7c04, 0x6a28, 0x7f3a, 0x0400, 0x993c, 0x008f, - 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x0a03, 0x0212, 0x02bc, 0x0210, - 0x4a00, 0x7d1c, 0x4a02, 0x7d20, 0x4a01, 0x7d23, 0x0b70, 0x0311, - 0x53eb, 0x62c8, 0x7e24, 0x0360, 0x7d02, 0x0210, 0x0212, 0x6a09, - 0x7f1e, 0x0212, 0x6a09, 0x7f1b, 0x0212, 0x6a09, 0x7f18, 0x2003, - 0x4800, 0x7cef, 0x0b70, 0x0311, 0x5313, 0x997d, 0x0015, 0x0015, - 0x7802, 0x62c8, 0x6a0b, 0x997c, 0x0015, 0x7802, 0x62c8, 0x6a0a, - 0x997c, 0x7802, 0x62c8, 0x6a09, 0x7c02, 0x0000, 0x993a, 0xdb13, - 0x6a28, 0x7ffd, 0x008b, 0x52c3, 0x53cb, 0xc10d, 0x7da5, 0x0200, - 0x992c, 0x0200, 0x9929, 0xc19d, 0xc0ec, 0x7d69, 0x0c70, 0x0411, - 0x5414, 0x5ac4, 0x028c, 0x58da, 0x5efa, 0xc0fe, 0x56fa, 0x7d02, - 0x0200, 0x9994, 0x6d07, 0x5bca, 0x5cd2, 0x0bff, 0x0311, 0x1bff, - 0x04bb, 0x0415, 0x53da, 0x4c00, 0x7d47, 0x0a70, 0x0211, 0x552a, - 0x5212, 0x008d, 0x00bb, 0x4800, 0x7c07, 0x05b9, 0x4d00, 0x7c13, - 0x6928, 0x7f2d, 0x0400, 0x99a5, 0x008f, 0x0015, 0x04d8, 0x7d01, - 0x008c, 0x04a0, 0x0015, 0x7802, 0x55c6, 0x6d0b, 0x7e29, 0x6d28, - 0x7f1e, 0x0000, 0x99a3, 0x1e20, 0x5506, 0x2620, 0x008d, 0x0560, - 0x7c08, 0x065f, 0x55c6, 0x063f, 0x7e1b, 0x6d0a, 0x7f10, 0x4c00, - 0x7d1b, 0x04d8, 0x7d02, 0x008c, 0x0020, 0x04a0, 0x0015, 0x7802, - 0x55c6, 0x6d0b, 0x7e0d, 0x6d28, 0x7f02, 0x0000, 0x99ec, 0x0007, - 0x680c, 0x6d0c, 0x6507, 0x6d07, 0x6d2b, 0x6d28, 0x0007, 0x680c, - 0x0007, 0x54d2, 0x0454, 0x99ef, 0x6928, 0x7ff1, 0x54d2, 0x008a, - 0x52c0, 0x53c8, 0xc10d, 0x0288, 0x7d9f, 0x0200, 0x9994, 0x0200, - 0x998c, 0xc0ec, 0x7d72, 0x0800, 0x0970, 0x0111, 0x5111, 0x5ac1, - 0x5bc9, 0x028e, 0xc0fe, 0x068a, 0x7c6a, 0x5dd9, 0x5ce1, 0x0bff, - 0x0311, 0x1bff, 0x03bc, 0x5bd1, 0x1a5c, 0x6ac3, 0x63c8, 0x0363, - 0x7c05, 0x036f, 0x7d27, 0x0374, 0x7c7a, 0x9a71, 0xdb04, 0x3c06, - 0x4c00, 0x7df7, 0x028f, 0x1a04, 0x6a23, 0x620b, 0x6f23, 0x301f, - 0x00aa, 0x0462, 0x7c04, 0x4a00, 0x7d0b, 0x2001, 0x9a30, 0x048a, - 0x620b, 0x2201, 0x1c01, 0x1801, 0x02dc, 0x7d02, 0x301f, 0x00aa, - 0x048f, 0x1c04, 0x6c07, 0x0488, 0x3c1f, 0x6c2b, 0x0045, 0x028e, - 0x1a5c, 0x9a11, 0x058f, 0x1d0c, 0x6d23, 0x650b, 0x007d, 0x7c01, - 0x1d08, 0x007c, 0x7c01, 0x1d04, 0x6d23, 0x650b, 0x0488, 0x3c1f, - 0x0417, 0x0417, 0x0417, 0x0417, 0x059c, 0x6d23, 0x028e, 0x1a34, - 0x6ad7, 0x0488, 0x0804, 0x7802, 0x650b, 0x6dc8, 0x008c, 0x1a28, - 0x6ad7, 0x63c8, 0x034c, 0x6bc8, 0x54d1, 0x4c00, 0x7d06, 0x0065, - 0x7c02, 0x0101, 0x0025, 0x0400, 0x9a0d, 0x52c1, 0x53c9, 0x54e1, - 0x0453, 0xc10d, 0x7d95, 0x0200, 0x9a00, 0x0200, 0x99f9, 0x0200, - 0x9a00, 0x55d9, 0x6d07, 0x54d1, 0x058a, 0x2508, 0x6dc7, 0x0373, - 0x7c03, 0x65c8, 0x6d0b, 0x2408, 0x0372, 0x7c04, 0x65c8, 0x6d0b, - 0x2408, 0x9a86, 0x6cce, 0x65c8, 0x6d0a, 0x2404, 0x6d28, 0x6507, - 0x5dd9, 0x5cd1, 0x6ad7, 0x6ae3, 0x63c8, 0x0334, 0x6bc8, 0x0370, - 0x7ca9, 0x0c60, 0x0411, 0x04bb, 0x4c00, 0x7da4, 0x0410, 0x1c30, - 0x0410, 0x04bb, 0x046d, 0x7d0a, 0x047d, 0x7c03, 0x047c, 0x7c01, - 0x9a3a, 0x003b, 0x003a, 0x0039, 0x0058, 0x9ab5, 0x047d, 0x7d03, - 0x047c, 0x7d01, 0x9a3a, 0x005b, 0xdaf9, 0x1d18, 0x6d23, 0x650b, - 0x0510, 0x003a, 0x0039, 0x0038, 0x00ad, 0xdb04, 0x0c30, 0x0410, - 0x04bb, 0x003c, 0x003d, 0x00ac, 0xdaf9, 0x007b, 0x7c04, 0x003d, - 0x003c, 0x1d0c, 0x9ad6, 0x048f, 0x1c14, 0x6c23, 0x640b, 0x4401, - 0x7d04, 0x005d, 0x005c, 0x1d0c, 0x9ad6, 0x0310, 0x3b30, 0x4b30, - 0x7d01, 0x1b10, 0x0310, 0x003d, 0x003c, 0x00ab, 0x6ad7, 0x63c8, - 0x6d23, 0x650b, 0x0560, 0x7d03, 0x005e, 0xdaed, 0x9a3a, 0x003e, - 0x0c80, 0x0410, 0x0394, 0xdaed, 0x640b, 0x037f, 0x7d02, 0x1a14, - 0x9aea, 0x1a0c, 0x6ad7, 0x6cc8, 0x9a3a, 0x0c7f, 0x0410, 0x03b4, - 0x04b8, 0x03ac, 0x640b, 0x6bc8, 0x028e, 0x1a04, 0x6ad7, 0x6cc8, - 0x0006, 0x058f, 0x1d08, 0x6d23, 0x650b, 0x007d, 0x7c01, 0x1d38, - 0x007c, 0x7c01, 0x1d1c, 0x0006, 0x048b, 0x042c, 0x0454, 0x042b, - 0x6ad7, 0x6cc8, 0x0006, 0x0007, 0x684c, 0x6144, 0x9b1c, 0x0007, - 0x68cc, 0x61d0, 0x9b1c, 0x0007, 0x680c, 0x680c, 0x6107, 0x6907, - 0x692b, 0x6928, 0x0007, 0x680c, 0x0d70, 0x0511, 0x5515, 0x55f5, - 0x01a5, 0x0dff, 0x0512, 0x1dff, 0x0512, 0x04bd, 0x0499, 0x0454, - 0x0006, 0x08ff, 0x0011, 0x28ff, 0x0006, 0x038c, 0x0eff, 0x0611, - 0x2eff, 0x03b6, 0x0006, 0x53d6, 0x0398, 0x5bd6, 0x53ee, 0x0398, - 0x5bee, 0x0006, 0x52de, 0x53e6, 0x54ee, 0x0498, 0x0454, 0x0006, - 0x50f6, 0x52c6, 0x53ce, 0x54d6, 0x0498, 0x0454, 0x0006, 0x6207, - 0x0b70, 0x0311, 0x5013, 0x55f0, 0x02a5, 0x0bff, 0x0312, 0x1bff, - 0x0312, 0x04bb, 0x049a, 0x0006, 0x1e10, 0x0870, 0x0011, 0x5010, - 0xc0ec, 0x7d39, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, - 0x0200, 0x9b5b, 0x6d07, 0x5df0, 0x0dff, 0x0511, 0x1dff, 0x05bc, - 0x4d00, 0x7d17, 0x6ec3, 0x62c8, 0x7e28, 0x0264, 0x7d08, 0x0b70, - 0x0311, 0x522b, 0x02b9, 0x4a00, 0x7c18, 0x0400, 0x9b6a, 0x0212, - 0x3aff, 0x008a, 0x05d8, 0x7d01, 0x008d, 0x0a10, 0x6ed3, 0x6ac8, - 0xdba5, 0x6a28, 0x7f17, 0x0b70, 0x0311, 0x5013, 0xdbbd, 0x52c0, - 0x53c8, 0xc10d, 0x7dd0, 0x0200, 0x9b5b, 0x008f, 0x00d5, 0x7d01, - 0x008d, 0xdba5, 0x9b68, 0x0200, 0x9b58, 0x0007, 0x68cc, 0x6a28, - 0x7f01, 0x9ba3, 0x0007, 0x6a0c, 0x6a0c, 0x6207, 0x6a07, 0x6a2b, - 0x6a28, 0x0007, 0x680c, 0x0454, 0x9b81, 0x05a0, 0x1e08, 0x6ec3, - 0x0388, 0x3b03, 0x0015, 0x0015, 0x7802, 0x62c8, 0x6a0b, 0x7ee5, - 0x6a28, 0x7fe8, 0x0000, 0x6ec1, 0x008b, 0x7802, 0x62c8, 0x6a09, - 0x7edc, 0x6a28, 0x7fdf, 0x2608, 0x0006, 0x55f0, 0x6207, 0x02a5, - 0x0dff, 0x0511, 0x1dff, 0x04b5, 0x049a, 0x0006, 0x0870, 0x0011, - 0x5010, 0xc0ec, 0x7d78, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, - 0x7d02, 0x0200, 0x9bcc, 0x6d03, 0x6ed3, 0x0dff, 0x0511, 0x1dff, - 0x05bc, 0x5df8, 0x4d00, 0x7d5e, 0x0b70, 0x0311, 0x522b, 0x5313, - 0x02b9, 0x4a00, 0x7c04, 0x62ff, 0x7e3f, 0x0400, 0x9bdc, 0x008f, - 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x5ddb, 0x0d03, 0x0512, 0x05bc, - 0x0510, 0x5dd3, 0x4d00, 0x7d27, 0x4d02, 0x7d20, 0x4d01, 0x7d1a, - 0x0b70, 0x0311, 0x53eb, 0x0360, 0x7d05, 0x6509, 0x7e25, 0x620a, - 0x7e23, 0x9c06, 0x620a, 0x7e20, 0x6509, 0x7e1e, 0x0512, 0x0512, - 0x02ad, 0x6ac8, 0x7f19, 0x2003, 0x4800, 0x7ced, 0x0b70, 0x0311, - 0x5313, 0x9c21, 0x7802, 0x6209, 0x6ac8, 0x9c20, 0x0015, 0x7802, - 0x620a, 0x6ac8, 0x9c20, 0x0015, 0x0015, 0x7802, 0x620b, 0x6ac8, - 0x7c03, 0x0000, 0x55db, 0x9bda, 0x0007, 0x68cc, 0x680c, 0x55d3, - 0x4d00, 0x7d03, 0x4d02, 0x7d02, 0x9c2f, 0x0017, 0x0017, 0x55db, - 0x009d, 0x55fb, 0x05a0, 0x08ff, 0x0011, 0x18ff, 0x0010, 0x04b8, - 0x04ad, 0x0454, 0x62ff, 0x7ee8, 0x008b, 0x52c0, 0x53c8, 0xc10d, - 0x7d8b, 0x0200, 0x9bcc, 0x0200, 0x9bc9, 0xc19d, 0xc0ec, 0x7d52, - 0x0c70, 0x0411, 0x5414, 0x5ac4, 0x028c, 0x58da, 0x5efa, 0xc0fe, - 0x56fa, 0x7d02, 0x0200, 0x9c4e, 0x6d03, 0x5bca, 0x5cd2, 0x0bff, - 0x0311, 0x1bff, 0x04bb, 0x0415, 0x53da, 0x0a70, 0x0211, 0x4c00, - 0x7d28, 0x552a, 0x05bb, 0x4d00, 0x7c02, 0x0400, 0x9c61, 0x4c01, - 0x7d0f, 0x008f, 0x0015, 0x04d8, 0x7d01, 0x008c, 0x0020, 0x04a0, - 0x0015, 0x7802, 0x650b, 0x5d06, 0x0000, 0x7e0c, 0x7f0d, 0x9c5f, - 0x650a, 0x7e08, 0x008d, 0x0011, 0x0010, 0x05a8, 0x065f, 0x5d06, - 0x063f, 0x7f02, 0x0007, 0x680c, 0x0007, 0x5012, 0x54d0, 0x0454, - 0x9c8b, 0x5012, 0x54d0, 0x0473, 0x7c06, 0x552a, 0x05b9, 0x4d00, - 0x7c02, 0x0400, 0x9c8d, 0x52c0, 0x53c8, 0xc10d, 0x0288, 0x7db6, - 0x0200, 0x9c4e, 0x0200, 0x9c46, 0x0870, 0x0011, 0x5010, 0xc0ec, - 0x7d46, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, 0x0200, - 0x9ca2, 0x0b70, 0x0311, 0x6ed3, 0x6d03, 0x0dff, 0x0511, 0x1dff, - 0x05bc, 0x4d00, 0x7d2b, 0x522b, 0x02b9, 0x4a00, 0x7c04, 0x62c8, - 0x7e1f, 0x0400, 0x9cb3, 0x008f, 0x00d5, 0x7d01, 0x008d, 0x05a0, - 0x0060, 0x7c05, 0x6edd, 0x6209, 0x7e16, 0x6ac8, 0x7f11, 0x0015, - 0x0060, 0x7c05, 0x6ede, 0x620a, 0x7e0e, 0x6ac8, 0x7f09, 0x6edf, - 0x0015, 0x7802, 0x620b, 0x6ac8, 0x0000, 0x7e05, 0x7f01, 0x9cb1, - 0x0007, 0x68cc, 0x9cdd, 0x0007, 0x6a0c, 0x0454, 0x62c8, 0x7ef8, - 0x5013, 0x52c0, 0x53c8, 0xc10d, 0x7dbd, 0x0200, 0x9ca2, 0x0200, - 0x9c9f, 0xc19d, 0x0870, 0x0011, 0xc0ec, 0x7d29, 0x5010, 0x5ac0, - 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, 0x0200, 0x9cf0, 0x0870, 0x0011, - 0x6d03, 0x0dff, 0x0511, 0x1dff, 0x05bc, 0x4d00, 0x7d12, 0x5228, - 0x02b9, 0x4a00, 0x7c02, 0x0400, 0x9cff, 0x620b, 0x7e06, 0x5a06, - 0x7f06, 0x0000, 0x2504, 0x7d05, 0x9cff, 0x0007, 0x680c, 0x0007, - 0x0454, 0x5010, 0x52c0, 0xc10d, 0x7ddb, 0x0200, 0x9cf0, 0x0200, - 0x9cec, 0xc19d, 0x0870, 0x0011, 0xc0ec, 0x7d74, 0x5010, 0x5ac0, - 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, 0x0200, 0x9d20, 0x6d03, - 0x0d03, 0x0512, 0x05bc, 0x0510, 0x5dd0, 0x0dff, 0x0511, 0x1dff, - 0x05bc, 0x5df8, 0x4d00, 0x7d57, 0x0a70, 0x0211, 0x532a, 0x5212, - 0x03b9, 0x4b00, 0x7c02, 0x0400, 0x9d34, 0x008f, 0x05d8, 0x7d01, - 0x008d, 0x05a0, 0x5dda, 0x55d2, 0x4d00, 0x7d27, 0x4d02, 0x7d20, - 0x4d01, 0x7d1a, 0x0a70, 0x0211, 0x52ea, 0x0260, 0x7d05, 0x6509, - 0x7e25, 0x630a, 0x7e23, 0x9d58, 0x630a, 0x7e20, 0x6509, 0x7e1e, - 0x0512, 0x0512, 0x03ad, 0x5b06, 0x7f19, 0x2003, 0x4800, 0x7ced, - 0x0a70, 0x0211, 0x5212, 0x9d73, 0x7802, 0x6309, 0x5b06, 0x9d72, - 0x0015, 0x7802, 0x630a, 0x5b06, 0x9d72, 0x0015, 0x0015, 0x7802, - 0x630b, 0x5b06, 0x7c03, 0x55da, 0x0000, 0x9d32, 0x0007, 0x680c, - 0x55d2, 0x4d00, 0x7d03, 0x4d02, 0x7d02, 0x9d80, 0x0017, 0x0017, - 0x55da, 0x009d, 0x55fa, 0x05a0, 0x08ff, 0x0011, 0x18ff, 0x0010, - 0x04b8, 0x04ad, 0x0454, 0x008a, 0x52c0, 0x53c8, 0xc10d, 0x7d90, - 0x0200, 0x9d20, 0x0200, 0x9d1c, 0xc19d, 0x0870, 0x0011, 0xc0ec, - 0x7d35, 0x5010, 0x5ac0, 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, 0x0200, - 0x9d9b, 0x0870, 0x0011, 0x6d07, 0x0dff, 0x0511, 0x1dff, 0x05bc, - 0x4d00, 0x7d1c, 0x5228, 0x02b9, 0x4a00, 0x7c04, 0x6928, 0x7f0b, - 0x0400, 0x9daa, 0x5206, 0x7e10, 0x6a0b, 0x6928, 0x7f04, 0x0000, - 0x2504, 0x7d0c, 0x9daa, 0x0007, 0x680c, 0x680c, 0x6207, 0x6a07, - 0x6a2b, 0x6a28, 0x0007, 0x680c, 0x0007, 0x0454, 0x6928, 0x7ff3, - 0x5010, 0x52c0, 0xc10d, 0x7dcf, 0x0200, 0x9d9b, 0x0200, 0x9d97, - 0xc19d, 0x0870, 0x0011, 0xc0ec, 0x7d5e, 0x5010, 0x5ac0, 0x5bc8, - 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, 0x0200, 0x9dd7, 0x6d07, 0x5df0, - 0x0dff, 0x0511, 0x1dff, 0x05bc, 0x4d00, 0x7d44, 0x0a70, 0x0211, - 0x532a, 0x5212, 0x03b9, 0x4b00, 0x7c04, 0x6a28, 0x7f3a, 0x0400, - 0x9de6, 0x008f, 0x05d8, 0x7d01, 0x008d, 0x05a0, 0x0b03, 0x0312, - 0x03bc, 0x0310, 0x4b00, 0x7d1c, 0x4b02, 0x7d20, 0x4b01, 0x7d23, - 0x0a70, 0x0211, 0x52ea, 0x5306, 0x7e24, 0x0260, 0x7d02, 0x0310, - 0x0312, 0x6b09, 0x7f1e, 0x0312, 0x6b09, 0x7f1b, 0x0312, 0x6b09, - 0x7f18, 0x2003, 0x4800, 0x7cef, 0x0a70, 0x0211, 0x5212, 0x9e27, - 0x0015, 0x0015, 0x7802, 0x5306, 0x6b0b, 0x9e26, 0x0015, 0x7802, - 0x5306, 0x6b0a, 0x9e26, 0x7802, 0x5306, 0x6b09, 0x7c02, 0x0000, - 0x9de4, 0xdb13, 0x6928, 0x7ffd, 0x008a, 0x52c0, 0x53c8, 0xc10d, - 0x7da6, 0x0200, 0x9dd7, 0x0200, 0x9dd3, 0x0870, 0x0011, 0x5010, - 0xc0ec, 0x7d5b, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, 0x56f8, 0x7d02, - 0x0200, 0x9e3b, 0x0b70, 0x0311, 0x6ec3, 0x6d07, 0x5df0, 0x0dff, - 0x0511, 0x1dff, 0x05bc, 0x4d00, 0x7d3d, 0x522b, 0x02b9, 0x4a00, - 0x7c04, 0x6a28, 0x7f33, 0x0400, 0x9e4d, 0x028e, 0x1a94, 0x6ac3, - 0x62c8, 0x0269, 0x7d1b, 0x1e94, 0x6ec3, 0x6ed3, 0x62c8, 0x0248, - 0x6ac8, 0x2694, 0x6ec3, 0x62c8, 0x026e, 0x7d31, 0x6a09, 0x7f1e, - 0x2501, 0x4d00, 0x7d1f, 0x028e, 0x1a98, 0x6ac3, 0x62c8, 0x6ec3, - 0x0260, 0x7df1, 0x6a28, 0x7f12, 0xdb47, 0x9e8c, 0x6ee3, 0x008f, - 0x2001, 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x62c8, 0x026e, 0x7d17, - 0x6a09, 0x7f04, 0x2001, 0x7cf9, 0x0000, 0x9e4b, 0x0289, 0xdb13, - 0x018a, 0x9e9b, 0x6a28, 0x7ffa, 0x0b70, 0x0311, 0x5013, 0x52c0, - 0x53c8, 0xc10d, 0x7da8, 0x0200, 0x9e3b, 0x0200, 0x9e38, 0x6a28, - 0x7fed, 0xdb47, 0x9e9b, 0x0458, 0x0454, 0x9e8c, 0xc19d, 0x0870, - 0x0011, 0xc0ec, 0x7d54, 0x5010, 0x5ac0, 0x5bc8, 0x5ef8, 0xc0fe, - 0x56f8, 0x7d02, 0x0200, 0x9ea5, 0x0b70, 0x0311, 0x6d07, 0x5df0, - 0x0dff, 0x0511, 0x1dff, 0x05bc, 0x4d00, 0x7d36, 0x522b, 0x02b9, - 0x4a00, 0x7c04, 0x6928, 0x7f2c, 0x0400, 0x9eb6, 0x028e, 0x1a94, - 0x5202, 0x0269, 0x7d16, 0x1e94, 0x5206, 0x0248, 0x5a06, 0x2694, - 0x5206, 0x026e, 0x7d2e, 0x6a09, 0x7f1b, 0x2501, 0x4d00, 0x7d1c, - 0x028e, 0x1a98, 0x5202, 0x0260, 0x7df3, 0x6a28, 0x7f11, 0xdb47, - 0x9eee, 0x008f, 0x2001, 0x00d5, 0x7d01, 0x008d, 0x05a0, 0x5206, - 0x026e, 0x7d17, 0x6a09, 0x7f04, 0x2001, 0x7cf9, 0x0000, 0x9eb4, - 0x0289, 0xdb13, 0x018a, 0x9efd, 0x6928, 0x7ffa, 0x0b70, 0x0311, - 0x5013, 0x52c0, 0x53c8, 0xc10d, 0x7db0, 0x0200, 0x9ea5, 0x0200, - 0x9ea1, 0x6a28, 0x7fed, 0xdb47, 0x9efd, 0x0458, 0x0454, 0x9eee -}; - -/* REV 2 */ +/* REV 2 (for i.MX system revision > 1.0) */ /*! * Following define start address of signature script */ @@ -850,7 +292,7 @@ static __attribute__((aligned(4), section(".sdmacode"))) #define RAM_CODE_SIZE_2 1292 /*! - * Code download for i.MX system revision > 1.0 + * Code download */ static __attribute__((aligned(4), section(".sdmacode"))) const short sdma_code_2[RAM_CODE_SIZE_2] = @@ -1019,44 +461,44 @@ static __attribute__((aligned(4), section(".sdmacode"))) 0x9d09, 0x0458, 0x0454, 0x9cfa }; + /*! - * Structure containing script addresses. + * SDMA script code info */ -struct sdma_script_start_addrs -{ - /* SDMA code script info - in halfword SDMA memory space */ - unsigned short ap_2_ap_addr; - unsigned short ap_2_bp_addr; - unsigned short bp_2_ap_addr; - unsigned short loopback_on_dsp_side_addr; - unsigned short mcu_interrupt_only_addr; - unsigned short firi_2_per_addr; - unsigned short firi_2_mcu_addr; - unsigned short per_2_firi_addr; - unsigned short mcu_2_firi_addr; - unsigned short uart_2_per_addr; - unsigned short uart_2_mcu_addr; - unsigned short per_2_app_addr; - unsigned short mcu_2_app_addr; - unsigned short uartsh_2_per_addr; - unsigned short uartsh_2_mcu_addr; - unsigned short per_2_shp_addr; - unsigned short mcu_2_shp_addr; - unsigned short ata_2_mcu_addr; - unsigned short mcu_2_ata_addr; - unsigned short app_2_per_addr; - unsigned short app_2_mcu_addr; - unsigned short shp_2_per_addr; - unsigned short shp_2_mcu_addr; - unsigned short mshc_2_mcu_addr; - unsigned short mcu_2_mshc_addr; - unsigned short dptc_dvfs_addr; - /* SDMA script code info */ - /* address where ram code starts (in SDMA halfword space) */ - unsigned short ram_code_start_addr; - /* size of the ram code (in halfwords) */ - unsigned short ram_code_size; - /* RAM image address on AP */ - unsigned long mcu_start_addr; -}; + +/* script addresses in SDMA halfword space */ +#define AP_2_AP_ADDR ap_2_ap_ADDR_2 +#define AP_2_BP_ADDR ap_2_bp_ADDR_2 +#define APP_2_MCU_ADDR app_2_mcu_patched_ADDR_2 +#define APP_2_PER_ADDR (-1) +#define ATA_2_MCU_ADDR ata_2_mcu_ADDR_2 +#define BP_2_AP_ADDR bp_2_ap_ADDR_2 +#define DPTC_DVFS_ADDR (-1) +#define FIRI_2_MCU_ADDR firi_2_mcu_ADDR_2 +#define FIRI_2_PER_ADDR (-1) +#define LOOPBACK_ON_DSP_SIDE_ADDR (-1) +#define MCU_2_APP_ADDR mcu_2_app_patched_ADDR_2 +#define MCU_2_ATA_ADDR mcu_2_ata_ADDR_2 +#define MCU_2_FIRI_ADDR mcu_2_firi_ADDR_2 +#define MCU_2_MSHC_ADDR (-1) +#define MCU_2_SHP_ADDR mcu_2_shp_patched_ADDR_2 +#define MCU_INTERRUPT_ONLY_ADDR (-1) +#define MSHC_2_MCU_ADDR (-1) +#define PER_2_APP_ADDR (-1) +#define PER_2_FIRI_ADDR (-1) +#define PER_2_SHP_ADDR per_2_shp_ADDR_2 +#define SHP_2_MCU_ADDR shp_2_mcu_patched_ADDR_2 +#define SHP_2_PER_ADDR shp_2_per_ADDR_2 +#define UART_2_MCU_ADDR uart_2_mcu_patched_ADDR_2 +#define UART_2_PER_ADDR (-1) +#define UARTSH_2_MCU_ADDR uartsh_2_mcu_patched_ADDR_2 +#define UARTSH_2_PER_ADDR (-1) + +/* address where ram code starts (in SDMA halfword space) */ +#define RAM_CODE_START_ADDR RAM_CODE_START_ADDR_2 +/* size of the ram code (in halfwords) */ +#define RAM_CODE_SIZE RAM_CODE_SIZE_2 +/* RAM image address on AP */ +#define MCU_START_ADDR ((unsigned long)sdma_code_2) + #endif /*__SDMA_SCRIPT_CODE_H__ */