[Sound-open-firmware] [PATCH v2] cnl: core: Add support for xcc
xcc has more strict rules than gcc: - Add missing sections to linker scripts - Fix compile warnings - Extend memory enabling timeout to infinite (too small delay for xcc)
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com
# Conflicts: # src/platform/apollolake/platform.c # src/platform/cannonlake/platform.c --- rimage/manifest.c | 9 +- rimage/manifest.h | 3 + src/arch/xtensa/boot_loader.c | 11 +-- .../apollolake/include/platform/platform.h | 2 +- src/platform/apollolake/platform.c | 98 +++++++++++----------- src/platform/baytrail/platform.c | 84 ++++++++++--------- src/platform/cannonlake/boot_ldr.x.in | 7 +- src/platform/cannonlake/cannonlake.x.in | 49 +++++------ .../cannonlake/include/platform/platform.h | 2 +- src/platform/cannonlake/platform.c | 98 +++++++++++----------- src/platform/haswell/platform.c | 84 ++++++++++--------- 11 files changed, 230 insertions(+), 217 deletions(-)
diff --git a/rimage/manifest.c b/rimage/manifest.c index 243c194f..f3f85600 100644 --- a/rimage/manifest.c +++ b/rimage/manifest.c @@ -211,11 +211,18 @@ static int man_get_module_manifest(struct image *image, struct module *module, section = &module->section[man_section_idx];
/* load in manifest data */ - ret = fseek(module->fd, section->sh_offset, SEEK_SET); + /* module built using xcc has preceding bytes */ + if (section->sh_size > sizeof(sof_mod)) + ret = fseek(module->fd, + section->sh_offset + XCC_MOD_OFFSET, SEEK_SET); + else + ret = fseek(module->fd, section->sh_offset, SEEK_SET); + if (ret < 0) { fprintf(stderr, "error: can't seek to section %d\n", ret); return ret; } + count = fread(&sof_mod, 1, sizeof(sof_mod), module->fd); if (count != sizeof(sof_mod)) { fprintf(stderr, "error: can't read section %d\n", -errno); diff --git a/rimage/manifest.h b/rimage/manifest.h index ca951321..8d1d3d2c 100644 --- a/rimage/manifest.h +++ b/rimage/manifest.h @@ -22,6 +22,9 @@
#define MAN_PAGE_SIZE 4096
+/* start offset for modules built using xcc */ +#define XCC_MOD_OFFSET 0x8 + /* start offset for base FW module */ #define FILE_TEXT_OFFSET 0x8000
diff --git a/src/arch/xtensa/boot_loader.c b/src/arch/xtensa/boot_loader.c index 862db458..05d6bf90 100644 --- a/src/arch/xtensa/boot_loader.c +++ b/src/arch/xtensa/boot_loader.c @@ -121,7 +121,7 @@ static void parse_manifest(void) /* power on HPSRAM */ static int32_t hp_sram_init(void) { - int delay_count = 256, timeout = 256; + int delay_count = 256; uint32_t status;
shim_write(SHIM_LDOCTL, SHIM_HPMEM_POWER_ON); @@ -141,24 +141,15 @@ static int32_t hp_sram_init(void) status = io_reg_read(HSPGISTS0); while (status) { idelay(delay_count); - status = io_reg_read(HSPGISTS0); - if (timeout-- < 0) { - return -EIO; - } }
/* query the power status of second part of HP memory */ /* and do as above code */ - timeout = 256; status = io_reg_read(HSPGISTS1); while (status) { idelay(delay_count); - status = io_reg_read(HSPGISTS1); - if (timeout-- < 0) { - return -EIO; - } }
/* add some delay before touch power register */ diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h index 86172bfa..3a2d40bc 100644 --- a/src/platform/apollolake/include/platform/platform.h +++ b/src/platform/apollolake/include/platform/platform.h @@ -125,7 +125,7 @@ struct reef; #define platform_trace_point(__x) \ sw_reg_write(SRAM_REG_FW_TRACEP, __x)
-struct timer *platform_timer; +extern struct timer *platform_timer;
/* * APIs declared here are defined for every platform and IPC mechanism. diff --git a/src/platform/apollolake/platform.c b/src/platform/apollolake/platform.c index 2b41028b..ce408da6 100644 --- a/src/platform/apollolake/platform.c +++ b/src/platform/apollolake/platform.c @@ -78,54 +78,56 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_APL_WINDOWS, - .window[0] = { - .type = SOF_IPC_REGION_REGS, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_SW_REG_SIZE, - .offset = 0, - }, - .window[1] = { - .type = SOF_IPC_REGION_UPBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DSPBOX_SIZE, - .offset = MAILBOX_SW_REG_SIZE, - }, - .window[2] = { - .type = SOF_IPC_REGION_DOWNBOX, - .id = 1, /* map to host window 1 */ - .flags = 0, // TODO: set later - .size = MAILBOX_HOSTBOX_SIZE, - .offset = 0, - }, - .window[3] = { - .type = SOF_IPC_REGION_DEBUG, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DEBUG_SIZE, - .offset = 0, - }, - .window[4] = { - .type = SOF_IPC_REGION_EXCEPTION, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_EXCEPTION_SIZE, - .offset = MAILBOX_EXCEPTION_OFFSET, - }, - .window[5] = { - .type = SOF_IPC_REGION_STREAM, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_STREAM_SIZE, - .offset = MAILBOX_STREAM_OFFSET, - }, - .window[6] = { - .type = SOF_IPC_REGION_TRACE, - .id = 3, /* map to host window 3 */ - .flags = 0, // TODO: set later - .size = MAILBOX_TRACE_SIZE, - .offset = 0, + .window = { + { + .type = SOF_IPC_REGION_REGS, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_SW_REG_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_UPBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DSPBOX_SIZE, + .offset = MAILBOX_SW_REG_SIZE, + }, + { + .type = SOF_IPC_REGION_DOWNBOX, + .id = 1, /* map to host window 1 */ + .flags = 0, // TODO: set later + .size = MAILBOX_HOSTBOX_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_DEBUG, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_EXCEPTION, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE, + .offset = MAILBOX_EXCEPTION_OFFSET, + }, + { + .type = SOF_IPC_REGION_STREAM, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_STREAM_SIZE, + .offset = MAILBOX_STREAM_OFFSET, + }, + { + .type = SOF_IPC_REGION_TRACE, + .id = 3, /* map to host window 3 */ + .flags = 0, // TODO: set later + .size = MAILBOX_TRACE_SIZE, + .offset = 0, + }, }, };
diff --git a/src/platform/baytrail/platform.c b/src/platform/baytrail/platform.c index 8fa03a75..1917054e 100644 --- a/src/platform/baytrail/platform.c +++ b/src/platform/baytrail/platform.c @@ -79,47 +79,49 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_BYT_WINDOWS, - .window[0] = { - .type = SOF_IPC_REGION_UPBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DSPBOX_SIZE, - .offset = MAILBOX_DSPBOX_OFFSET, - }, - .window[1] = { - .type = SOF_IPC_REGION_DOWNBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_HOSTBOX_SIZE, - .offset = MAILBOX_HOSTBOX_OFFSET, - }, - .window[2] = { - .type = SOF_IPC_REGION_DEBUG, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DEBUG_SIZE, - .offset = MAILBOX_DEBUG_OFFSET, - }, - .window[3] = { - .type = SOF_IPC_REGION_TRACE, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_TRACE_SIZE, - .offset = MAILBOX_TRACE_OFFSET, - }, - .window[4] = { - .type = SOF_IPC_REGION_STREAM, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_STREAM_SIZE, - .offset = MAILBOX_STREAM_OFFSET, - }, - .window[5] = { - .type = SOF_IPC_REGION_EXCEPTION, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_EXCEPTION_SIZE, - .offset = MAILBOX_EXCEPTION_OFFSET, + .window = { + { + .type = SOF_IPC_REGION_UPBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DSPBOX_SIZE, + .offset = MAILBOX_DSPBOX_OFFSET, + }, + { + .type = SOF_IPC_REGION_DOWNBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_HOSTBOX_SIZE, + .offset = MAILBOX_HOSTBOX_OFFSET, + }, + { + .type = SOF_IPC_REGION_DEBUG, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DEBUG_SIZE, + .offset = MAILBOX_DEBUG_OFFSET, + }, + { + .type = SOF_IPC_REGION_TRACE, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_TRACE_SIZE, + .offset = MAILBOX_TRACE_OFFSET, + }, + { + .type = SOF_IPC_REGION_STREAM, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_STREAM_SIZE, + .offset = MAILBOX_STREAM_OFFSET, + }, + { + .type = SOF_IPC_REGION_EXCEPTION, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE, + .offset = MAILBOX_EXCEPTION_OFFSET, + }, }, };
diff --git a/src/platform/cannonlake/boot_ldr.x.in b/src/platform/cannonlake/boot_ldr.x.in index a42fd897..b85bfab2 100644 --- a/src/platform/cannonlake/boot_ldr.x.in +++ b/src/platform/cannonlake/boot_ldr.x.in @@ -21,7 +21,7 @@ MEMORY org = IMR_BOOT_LDR_LIT_BASE, len = IMR_BOOT_LDR_LIT_SIZE reef_text : - org = IMR_BOOT_LDR_TEXT_BASE, + org = IMR_BOOT_LDR_TEXT_BASE, len = IMR_BOOT_LDR_TEXT_SIZE, vector_base_text : org = XCHAL_VECBASE_RESET_PADDR, @@ -81,7 +81,7 @@ MEMORY org = XCHAL_DOUBLEEXC_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE reef_data : - org = IMR_BOOT_LDR_DATA_BASE, + org = IMR_BOOT_LDR_DATA_BASE, len = IMR_BOOT_LDR_DATA_SIZE reef_bss_data : org = IMR_BOOT_LDR_BSS_BASE, @@ -148,6 +148,9 @@ SECTIONS *(.fini.literal) KEEP(*(.fini)) *(.gnu.version) + KEEP (*(.ResetVector.text)) + KEEP (*(.ResetHandler.text)) + KEEP (*(.MemoryExceptionVector.text)) _text_end = ABSOLUTE(.); _etext = .; } >reef_text :reef_text_phdr diff --git a/src/platform/cannonlake/cannonlake.x.in b/src/platform/cannonlake/cannonlake.x.in index 47acd5e0..2a52d674 100644 --- a/src/platform/cannonlake/cannonlake.x.in +++ b/src/platform/cannonlake/cannonlake.x.in @@ -21,79 +21,79 @@ MEMORY org = XCHAL_RESET_VECTOR0_PADDR + REEF_MEM_RESET_TEXT_SIZE, len = REEF_MEM_RESET_LIT_SIZE vector_memory_lit : - org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE, + org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE, len = REEF_MEM_ERROR_LIT_SIZE vector_memory_text : - org = XCHAL_MEMERROR_VECTOR_PADDR, + org = XCHAL_MEMERROR_VECTOR_PADDR, len = REEF_MEM_ERROR_TEXT_SIZE vector_base_text : - org = XCHAL_VECBASE_RESET_PADDR, + org = XCHAL_VECBASE_RESET_PADDR, len = REEF_MEM_VECBASE_LIT_SIZE vector_int2_lit : - org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int2_text : org = XCHAL_INTLEVEL2_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int3_lit : - org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int3_text : - org = XCHAL_INTLEVEL3_VECTOR_PADDR, + org = XCHAL_INTLEVEL3_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int4_lit : - org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int4_text : - org = XCHAL_INTLEVEL4_VECTOR_PADDR, + org = XCHAL_INTLEVEL4_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int5_lit : - org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int5_text : - org = XCHAL_INTLEVEL5_VECTOR_PADDR, + org = XCHAL_INTLEVEL5_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int6_lit : - org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int6_text : - org = XCHAL_INTLEVEL6_VECTOR_PADDR, + org = XCHAL_INTLEVEL6_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int7_lit : - org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_int7_text : - org = XCHAL_INTLEVEL7_VECTOR_PADDR, + org = XCHAL_INTLEVEL7_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_kernel_lit : - org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_kernel_text : - org = XCHAL_KERNEL_VECTOR_PADDR, + org = XCHAL_KERNEL_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_user_lit : - org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_user_text : - org = XCHAL_USER_VECTOR_PADDR, + org = XCHAL_USER_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_double_lit : - org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, + org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE vector_double_text : - org = XCHAL_DOUBLEEXC_VECTOR_PADDR, + org = XCHAL_DOUBLEEXC_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE reef_text_start : - org = REEF_TEXT_START, + org = REEF_TEXT_START, len = REEF_TEXT_START_SIZE, reef_text : - org = REEF_TEXT_BASE, + org = REEF_TEXT_BASE, len = REEF_TEXT_SIZE, reef_data : - org = REEF_TEXT_BASE + REEF_TEXT_SIZE, + org = REEF_TEXT_BASE + REEF_TEXT_SIZE, len = REEF_DATA_SIZE reef_bss_data : - org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE, + org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE, len = REEF_BSS_DATA_SIZE system_heap : org = HEAP_SYSTEM_BASE, @@ -350,6 +350,7 @@ SECTIONS *(.fini.literal) KEEP(*(.fini)) *(.gnu.version) + KEEP (*(.ResetHandler.text)) _text_end = ABSOLUTE(.); _etext = .; } >reef_text :reef_text_phdr diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h index 764ef76a..44345bc3 100644 --- a/src/platform/cannonlake/include/platform/platform.h +++ b/src/platform/cannonlake/include/platform/platform.h @@ -120,7 +120,7 @@ struct reef; #define platform_trace_point(__x) \ sw_reg_write(SRAM_REG_FW_TRACEP, __x)
-struct timer *platform_timer; +extern struct timer *platform_timer;
/* * APIs declared here are defined for every platform and IPC mechanism. diff --git a/src/platform/cannonlake/platform.c b/src/platform/cannonlake/platform.c index 1f1fd2fc..a0198e5b 100644 --- a/src/platform/cannonlake/platform.c +++ b/src/platform/cannonlake/platform.c @@ -80,54 +80,56 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_CNL_WINDOWS, - .window[0] = { - .type = SOF_IPC_REGION_REGS, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_SW_REG_SIZE, - .offset = 0, - }, - .window[1] = { - .type = SOF_IPC_REGION_UPBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DSPBOX_SIZE, - .offset = MAILBOX_SW_REG_SIZE, - }, - .window[2] = { - .type = SOF_IPC_REGION_DOWNBOX, - .id = 1, /* map to host window 1 */ - .flags = 0, // TODO: set later - .size = MAILBOX_HOSTBOX_SIZE, - .offset = 0, - }, - .window[3] = { - .type = SOF_IPC_REGION_DEBUG, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DEBUG_SIZE, - .offset = 0, - }, - .window[4] = { - .type = SOF_IPC_REGION_EXCEPTION, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_EXCEPTION_SIZE, - .offset = MAILBOX_EXCEPTION_OFFSET, - }, - .window[5] = { - .type = SOF_IPC_REGION_STREAM, - .id = 2, /* map to host window 2 */ - .flags = 0, // TODO: set later - .size = MAILBOX_STREAM_SIZE, - .offset = MAILBOX_STREAM_OFFSET, - }, - .window[6] = { - .type = SOF_IPC_REGION_TRACE, - .id = 3, /* map to host window 3 */ - .flags = 0, // TODO: set later - .size = MAILBOX_TRACE_SIZE, - .offset = 0, + .window = { + { + .type = SOF_IPC_REGION_REGS, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_SW_REG_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_UPBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DSPBOX_SIZE, + .offset = MAILBOX_SW_REG_SIZE, + }, + { + .type = SOF_IPC_REGION_DOWNBOX, + .id = 1, /* map to host window 1 */ + .flags = 0, // TODO: set later + .size = MAILBOX_HOSTBOX_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_DEBUG, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE, + .offset = 0, + }, + { + .type = SOF_IPC_REGION_EXCEPTION, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE, + .offset = MAILBOX_EXCEPTION_OFFSET, + }, + { + .type = SOF_IPC_REGION_STREAM, + .id = 2, /* map to host window 2 */ + .flags = 0, // TODO: set later + .size = MAILBOX_STREAM_SIZE, + .offset = MAILBOX_STREAM_OFFSET, + }, + { + .type = SOF_IPC_REGION_TRACE, + .id = 3, /* map to host window 3 */ + .flags = 0, // TODO: set later + .size = MAILBOX_TRACE_SIZE, + .offset = 0, + }, }, };
diff --git a/src/platform/haswell/platform.c b/src/platform/haswell/platform.c index e9270ac1..30e8e5d7 100644 --- a/src/platform/haswell/platform.c +++ b/src/platform/haswell/platform.c @@ -78,47 +78,49 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_HSW_WINDOWS, - .window[0] = { - .type = SOF_IPC_REGION_UPBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DSPBOX_SIZE, - .offset = MAILBOX_DSPBOX_OFFSET, - }, - .window[1] = { - .type = SOF_IPC_REGION_DOWNBOX, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_HOSTBOX_SIZE, - .offset = MAILBOX_HOSTBOX_OFFSET, - }, - .window[2] = { - .type = SOF_IPC_REGION_DEBUG, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_DEBUG_SIZE, - .offset = MAILBOX_DEBUG_OFFSET, - }, - .window[3] = { - .type = SOF_IPC_REGION_TRACE, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_TRACE_SIZE, - .offset = MAILBOX_TRACE_OFFSET, - }, - .window[4] = { - .type = SOF_IPC_REGION_STREAM, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_STREAM_SIZE, - .offset = MAILBOX_STREAM_OFFSET, - }, - .window[5] = { - .type = SOF_IPC_REGION_EXCEPTION, - .id = 0, /* map to host window 0 */ - .flags = 0, // TODO: set later - .size = MAILBOX_EXCEPTION_SIZE, - .offset = MAILBOX_EXCEPTION_OFFSET, + .window = { + { + .type = SOF_IPC_REGION_UPBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DSPBOX_SIZE, + .offset = MAILBOX_DSPBOX_OFFSET, + }, + { + .type = SOF_IPC_REGION_DOWNBOX, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_HOSTBOX_SIZE, + .offset = MAILBOX_HOSTBOX_OFFSET, + }, + { + .type = SOF_IPC_REGION_DEBUG, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_DEBUG_SIZE, + .offset = MAILBOX_DEBUG_OFFSET, + }, + { + .type = SOF_IPC_REGION_TRACE, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_TRACE_SIZE, + .offset = MAILBOX_TRACE_OFFSET, + }, + { + .type = SOF_IPC_REGION_STREAM, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_STREAM_SIZE, + .offset = MAILBOX_STREAM_OFFSET, + }, + { + .type = SOF_IPC_REGION_EXCEPTION, + .id = 0, /* map to host window 0 */ + .flags = 0, // TODO: set later + .size = MAILBOX_EXCEPTION_SIZE, + .offset = MAILBOX_EXCEPTION_OFFSET, + }, }, };
On 3/30/18 8:45 AM, Liam Girdwood wrote:
xcc has more strict rules than gcc:
- Add missing sections to linker scripts
- Fix compile warnings
- Extend memory enabling timeout to infinite (too small delay for xcc)
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com
# Conflicts: # src/platform/apollolake/platform.c # src/platform/cannonlake/platform.c
looks like the merge didn't work too well or there was a missing patch from the exception handling on some other branch?
rimage/manifest.c | 9 +- rimage/manifest.h | 3 + src/arch/xtensa/boot_loader.c | 11 +-- .../apollolake/include/platform/platform.h | 2 +- src/platform/apollolake/platform.c | 98 +++++++++++----------- src/platform/baytrail/platform.c | 84 ++++++++++--------- src/platform/cannonlake/boot_ldr.x.in | 7 +- src/platform/cannonlake/cannonlake.x.in | 49 +++++------ .../cannonlake/include/platform/platform.h | 2 +- src/platform/cannonlake/platform.c | 98 +++++++++++----------- src/platform/haswell/platform.c | 84 ++++++++++--------- 11 files changed, 230 insertions(+), 217 deletions(-)
diff --git a/rimage/manifest.c b/rimage/manifest.c index 243c194f..f3f85600 100644 --- a/rimage/manifest.c +++ b/rimage/manifest.c @@ -211,11 +211,18 @@ static int man_get_module_manifest(struct image *image, struct module *module, section = &module->section[man_section_idx];
/* load in manifest data */
- ret = fseek(module->fd, section->sh_offset, SEEK_SET);
- /* module built using xcc has preceding bytes */
- if (section->sh_size > sizeof(sof_mod))
ret = fseek(module->fd,
section->sh_offset + XCC_MOD_OFFSET, SEEK_SET);
- else
ret = fseek(module->fd, section->sh_offset, SEEK_SET);
- if (ret < 0) { fprintf(stderr, "error: can't seek to section %d\n", ret); return ret; }
- count = fread(&sof_mod, 1, sizeof(sof_mod), module->fd); if (count != sizeof(sof_mod)) { fprintf(stderr, "error: can't read section %d\n", -errno);
diff --git a/rimage/manifest.h b/rimage/manifest.h index ca951321..8d1d3d2c 100644 --- a/rimage/manifest.h +++ b/rimage/manifest.h @@ -22,6 +22,9 @@
#define MAN_PAGE_SIZE 4096
+/* start offset for modules built using xcc */ +#define XCC_MOD_OFFSET 0x8
- /* start offset for base FW module */ #define FILE_TEXT_OFFSET 0x8000
diff --git a/src/arch/xtensa/boot_loader.c b/src/arch/xtensa/boot_loader.c index 862db458..05d6bf90 100644 --- a/src/arch/xtensa/boot_loader.c +++ b/src/arch/xtensa/boot_loader.c @@ -121,7 +121,7 @@ static void parse_manifest(void) /* power on HPSRAM */ static int32_t hp_sram_init(void) {
- int delay_count = 256, timeout = 256;
int delay_count = 256; uint32_t status;
shim_write(SHIM_LDOCTL, SHIM_HPMEM_POWER_ON);
@@ -141,24 +141,15 @@ static int32_t hp_sram_init(void) status = io_reg_read(HSPGISTS0); while (status) { idelay(delay_count);
status = io_reg_read(HSPGISTS0);
if (timeout-- < 0) {
return -EIO;
}
}
/* query the power status of second part of HP memory */ /* and do as above code */
timeout = 256; status = io_reg_read(HSPGISTS1); while (status) { idelay(delay_count);
status = io_reg_read(HSPGISTS1);
if (timeout-- < 0) {
return -EIO;
}
}
/* add some delay before touch power register */
diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h index 86172bfa..3a2d40bc 100644 --- a/src/platform/apollolake/include/platform/platform.h +++ b/src/platform/apollolake/include/platform/platform.h @@ -125,7 +125,7 @@ struct reef; #define platform_trace_point(__x) \ sw_reg_write(SRAM_REG_FW_TRACEP, __x)
-struct timer *platform_timer; +extern struct timer *platform_timer;
/*
- APIs declared here are defined for every platform and IPC mechanism.
diff --git a/src/platform/apollolake/platform.c b/src/platform/apollolake/platform.c index 2b41028b..ce408da6 100644 --- a/src/platform/apollolake/platform.c +++ b/src/platform/apollolake/platform.c @@ -78,54 +78,56 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_APL_WINDOWS,
- .window[0] = {
.type = SOF_IPC_REGION_REGS,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_SW_REG_SIZE,
.offset = 0,
- },
- .window[1] = {
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_SW_REG_SIZE,
- },
- .window[2] = {
.type = SOF_IPC_REGION_DOWNBOX,
.id = 1, /* map to host window 1 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = 0,
- },
- .window[3] = {
.type = SOF_IPC_REGION_DEBUG,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = 0,
- },
- .window[4] = {
.type = SOF_IPC_REGION_EXCEPTION,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
- },
- .window[5] = {
.type = SOF_IPC_REGION_STREAM,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
- },
- .window[6] = {
.type = SOF_IPC_REGION_TRACE,
.id = 3, /* map to host window 3 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = 0,
- .window = {
{
.type = SOF_IPC_REGION_REGS,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_SW_REG_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_SW_REG_SIZE,
},
{
.type = SOF_IPC_REGION_DOWNBOX,
.id = 1, /* map to host window 1 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_DEBUG,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_EXCEPTION,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
},
{
.type = SOF_IPC_REGION_STREAM,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
},
{
.type = SOF_IPC_REGION_TRACE,
.id = 3, /* map to host window 3 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = 0,
}, };},
diff --git a/src/platform/baytrail/platform.c b/src/platform/baytrail/platform.c index 8fa03a75..1917054e 100644 --- a/src/platform/baytrail/platform.c +++ b/src/platform/baytrail/platform.c @@ -79,47 +79,49 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_BYT_WINDOWS,
- .window[0] = {
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_DSPBOX_OFFSET,
- },
- .window[1] = {
.type = SOF_IPC_REGION_DOWNBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = MAILBOX_HOSTBOX_OFFSET,
- },
- .window[2] = {
.type = SOF_IPC_REGION_DEBUG,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = MAILBOX_DEBUG_OFFSET,
- },
- .window[3] = {
.type = SOF_IPC_REGION_TRACE,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = MAILBOX_TRACE_OFFSET,
- },
- .window[4] = {
.type = SOF_IPC_REGION_STREAM,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
- },
- .window[5] = {
.type = SOF_IPC_REGION_EXCEPTION,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
- .window = {
{
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_DSPBOX_OFFSET,
},
{
.type = SOF_IPC_REGION_DOWNBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = MAILBOX_HOSTBOX_OFFSET,
},
{
.type = SOF_IPC_REGION_DEBUG,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = MAILBOX_DEBUG_OFFSET,
},
{
.type = SOF_IPC_REGION_TRACE,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = MAILBOX_TRACE_OFFSET,
},
{
.type = SOF_IPC_REGION_STREAM,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
},
{
.type = SOF_IPC_REGION_EXCEPTION,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
}, };},
diff --git a/src/platform/cannonlake/boot_ldr.x.in b/src/platform/cannonlake/boot_ldr.x.in index a42fd897..b85bfab2 100644 --- a/src/platform/cannonlake/boot_ldr.x.in +++ b/src/platform/cannonlake/boot_ldr.x.in @@ -21,7 +21,7 @@ MEMORY org = IMR_BOOT_LDR_LIT_BASE, len = IMR_BOOT_LDR_LIT_SIZE reef_text :
- org = IMR_BOOT_LDR_TEXT_BASE,
vector_base_text : org = XCHAL_VECBASE_RESET_PADDR,org = IMR_BOOT_LDR_TEXT_BASE, len = IMR_BOOT_LDR_TEXT_SIZE,
@@ -81,7 +81,7 @@ MEMORY org = XCHAL_DOUBLEEXC_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE reef_data :
- org = IMR_BOOT_LDR_DATA_BASE,
reef_bss_data : org = IMR_BOOT_LDR_BSS_BASE,org = IMR_BOOT_LDR_DATA_BASE, len = IMR_BOOT_LDR_DATA_SIZE
@@ -148,6 +148,9 @@ SECTIONS *(.fini.literal) KEEP(*(.fini)) *(.gnu.version)
- KEEP (*(.ResetVector.text))
- KEEP (*(.ResetHandler.text))
- KEEP (*(.MemoryExceptionVector.text)) _text_end = ABSOLUTE(.); _etext = .; } >reef_text :reef_text_phdr
diff --git a/src/platform/cannonlake/cannonlake.x.in b/src/platform/cannonlake/cannonlake.x.in index 47acd5e0..2a52d674 100644 --- a/src/platform/cannonlake/cannonlake.x.in +++ b/src/platform/cannonlake/cannonlake.x.in @@ -21,79 +21,79 @@ MEMORY org = XCHAL_RESET_VECTOR0_PADDR + REEF_MEM_RESET_TEXT_SIZE, len = REEF_MEM_RESET_LIT_SIZE vector_memory_lit :
- org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE,
vector_memory_text :org = XCHAL_MEMERROR_VECTOR_PADDR + REEF_MEM_ERROR_LIT_SIZE, len = REEF_MEM_ERROR_LIT_SIZE
- org = XCHAL_MEMERROR_VECTOR_PADDR,
vector_base_text :org = XCHAL_MEMERROR_VECTOR_PADDR, len = REEF_MEM_ERROR_TEXT_SIZE
- org = XCHAL_VECBASE_RESET_PADDR,
vector_int2_lit :org = XCHAL_VECBASE_RESET_PADDR, len = REEF_MEM_VECBASE_LIT_SIZE
- org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int2_text : org = XCHAL_INTLEVEL2_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE vector_int3_lit :org = XCHAL_INTLEVEL2_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int3_text :org = XCHAL_INTLEVEL3_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL3_VECTOR_PADDR,
vector_int4_lit :org = XCHAL_INTLEVEL3_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int4_text :org = XCHAL_INTLEVEL4_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL4_VECTOR_PADDR,
vector_int5_lit :org = XCHAL_INTLEVEL4_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int5_text :org = XCHAL_INTLEVEL5_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL5_VECTOR_PADDR,
vector_int6_lit :org = XCHAL_INTLEVEL5_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int6_text :org = XCHAL_INTLEVEL6_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL6_VECTOR_PADDR,
vector_int7_lit :org = XCHAL_INTLEVEL6_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_int7_text :org = XCHAL_INTLEVEL7_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_INTLEVEL7_VECTOR_PADDR,
vector_kernel_lit :org = XCHAL_INTLEVEL7_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_kernel_text :org = XCHAL_KERNEL_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_KERNEL_VECTOR_PADDR,
vector_user_lit :org = XCHAL_KERNEL_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_user_text :org = XCHAL_USER_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_USER_VECTOR_PADDR,
vector_double_lit :org = XCHAL_USER_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE,
vector_double_text :org = XCHAL_DOUBLEEXC_VECTOR_PADDR - REEF_MEM_VECT_LIT_SIZE, len = REEF_MEM_VECT_LIT_SIZE
- org = XCHAL_DOUBLEEXC_VECTOR_PADDR,
reef_text_start :org = XCHAL_DOUBLEEXC_VECTOR_PADDR, len = REEF_MEM_VECT_TEXT_SIZE
- org = REEF_TEXT_START,
reef_text :org = REEF_TEXT_START, len = REEF_TEXT_START_SIZE,
- org = REEF_TEXT_BASE,
reef_data :org = REEF_TEXT_BASE, len = REEF_TEXT_SIZE,
- org = REEF_TEXT_BASE + REEF_TEXT_SIZE,
reef_bss_data :org = REEF_TEXT_BASE + REEF_TEXT_SIZE, len = REEF_DATA_SIZE
- org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE,
system_heap : org = HEAP_SYSTEM_BASE,org = REEF_TEXT_BASE + REEF_TEXT_SIZE + REEF_DATA_SIZE, len = REEF_BSS_DATA_SIZE
@@ -350,6 +350,7 @@ SECTIONS *(.fini.literal) KEEP(*(.fini)) *(.gnu.version)
- KEEP (*(.ResetHandler.text)) _text_end = ABSOLUTE(.); _etext = .; } >reef_text :reef_text_phdr
diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h index 764ef76a..44345bc3 100644 --- a/src/platform/cannonlake/include/platform/platform.h +++ b/src/platform/cannonlake/include/platform/platform.h @@ -120,7 +120,7 @@ struct reef; #define platform_trace_point(__x) \ sw_reg_write(SRAM_REG_FW_TRACEP, __x)
-struct timer *platform_timer; +extern struct timer *platform_timer;
/*
- APIs declared here are defined for every platform and IPC mechanism.
diff --git a/src/platform/cannonlake/platform.c b/src/platform/cannonlake/platform.c index 1f1fd2fc..a0198e5b 100644 --- a/src/platform/cannonlake/platform.c +++ b/src/platform/cannonlake/platform.c @@ -80,54 +80,56 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_CNL_WINDOWS,
- .window[0] = {
.type = SOF_IPC_REGION_REGS,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_SW_REG_SIZE,
.offset = 0,
- },
- .window[1] = {
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_SW_REG_SIZE,
- },
- .window[2] = {
.type = SOF_IPC_REGION_DOWNBOX,
.id = 1, /* map to host window 1 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = 0,
- },
- .window[3] = {
.type = SOF_IPC_REGION_DEBUG,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = 0,
- },
- .window[4] = {
.type = SOF_IPC_REGION_EXCEPTION,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
- },
- .window[5] = {
.type = SOF_IPC_REGION_STREAM,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
- },
- .window[6] = {
.type = SOF_IPC_REGION_TRACE,
.id = 3, /* map to host window 3 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = 0,
- .window = {
{
.type = SOF_IPC_REGION_REGS,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_SW_REG_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_SW_REG_SIZE,
},
{
.type = SOF_IPC_REGION_DOWNBOX,
.id = 1, /* map to host window 1 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_DEBUG,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE + MAILBOX_DEBUG_SIZE,
.offset = 0,
},
{
.type = SOF_IPC_REGION_EXCEPTION,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
},
{
.type = SOF_IPC_REGION_STREAM,
.id = 2, /* map to host window 2 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
},
{
.type = SOF_IPC_REGION_TRACE,
.id = 3, /* map to host window 3 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = 0,
}, };},
diff --git a/src/platform/haswell/platform.c b/src/platform/haswell/platform.c index e9270ac1..30e8e5d7 100644 --- a/src/platform/haswell/platform.c +++ b/src/platform/haswell/platform.c @@ -78,47 +78,49 @@ static const struct sof_ipc_window sram_window = { .type = SOF_IPC_EXT_WINDOW, }, .num_windows = NUM_HSW_WINDOWS,
- .window[0] = {
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_DSPBOX_OFFSET,
- },
- .window[1] = {
.type = SOF_IPC_REGION_DOWNBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = MAILBOX_HOSTBOX_OFFSET,
- },
- .window[2] = {
.type = SOF_IPC_REGION_DEBUG,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = MAILBOX_DEBUG_OFFSET,
- },
- .window[3] = {
.type = SOF_IPC_REGION_TRACE,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = MAILBOX_TRACE_OFFSET,
- },
- .window[4] = {
.type = SOF_IPC_REGION_STREAM,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
- },
- .window[5] = {
.type = SOF_IPC_REGION_EXCEPTION,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
- .window = {
{
.type = SOF_IPC_REGION_UPBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DSPBOX_SIZE,
.offset = MAILBOX_DSPBOX_OFFSET,
},
{
.type = SOF_IPC_REGION_DOWNBOX,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_HOSTBOX_SIZE,
.offset = MAILBOX_HOSTBOX_OFFSET,
},
{
.type = SOF_IPC_REGION_DEBUG,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_DEBUG_SIZE,
.offset = MAILBOX_DEBUG_OFFSET,
},
{
.type = SOF_IPC_REGION_TRACE,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_TRACE_SIZE,
.offset = MAILBOX_TRACE_OFFSET,
},
{
.type = SOF_IPC_REGION_STREAM,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_STREAM_SIZE,
.offset = MAILBOX_STREAM_OFFSET,
},
{
.type = SOF_IPC_REGION_EXCEPTION,
.id = 0, /* map to host window 0 */
.flags = 0, // TODO: set later
.size = MAILBOX_EXCEPTION_SIZE,
.offset = MAILBOX_EXCEPTION_OFFSET,
}, };},
participants (2)
-
Liam Girdwood
-
Pierre-Louis Bossart