summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/imx31/sdma-imx31.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx31/sdma-imx31.c')
-rw-r--r--firmware/target/arm/imx31/sdma-imx31.c143
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);