diff options
Diffstat (limited to 'firmware/target/arm/imx31/sdma-imx31.c')
-rw-r--r-- | firmware/target/arm/imx31/sdma-imx31.c | 143 |
1 files changed, 33 insertions, 110 deletions
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); |