From 6502e7b8aa36ba6f821682bc9af7f3956beb4303 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sun, 29 Sep 2013 11:06:42 +0200 Subject: fw/calypso/dsp: Make dsp_extcode only load with trx app As dsp_extcode breaks power measurement and eventually other things, dsp_excode is only loaded with trx app, not with layer1 nor rssi. --- src/target/firmware/apps/emi/main.c | 2 +- src/target/firmware/apps/layer1/main.c | 2 +- src/target/firmware/apps/rssi/main.c | 2 +- src/target/firmware/apps/trx/main.c | 4 ++-- src/target/firmware/calypso/dsp.c | 20 ++++++++++++-------- src/target/firmware/include/calypso/dsp.h | 2 +- src/target/firmware/include/layer1/sync.h | 2 +- src/target/firmware/layer1/init.c | 4 ++-- 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/target/firmware/apps/emi/main.c b/src/target/firmware/apps/emi/main.c index 1a977391..c80fa090 100644 --- a/src/target/firmware/apps/emi/main.c +++ b/src/target/firmware/apps/emi/main.c @@ -808,7 +808,7 @@ int main(void) sercomm_register_rx_cb(SC_DLCI_CONSOLE, console_rx_cb); sercomm_register_rx_cb(SC_DLCI_L1A_L23, l1a_l23_rx_cb); - layer1_init(); + layer1_init(1); l1a_l23_tx_cb = l1a_l23_tx; // display_unset_attr(DISP_ATTR_INVERT); diff --git a/src/target/firmware/apps/layer1/main.c b/src/target/firmware/apps/layer1/main.c index 59ffe972..93dae552 100644 --- a/src/target/firmware/apps/layer1/main.c +++ b/src/target/firmware/apps/layer1/main.c @@ -106,7 +106,7 @@ int main(void) memset(atr,0,sizeof(atr)); atrLength = calypso_sim_powerup(atr); - layer1_init(); + layer1_init(0); tpu_frame_irq_en(1, 1); diff --git a/src/target/firmware/apps/rssi/main.c b/src/target/firmware/apps/rssi/main.c index 50204869..fc823346 100644 --- a/src/target/firmware/apps/rssi/main.c +++ b/src/target/firmware/apps/rssi/main.c @@ -1528,7 +1528,7 @@ int main(void) sercomm_register_rx_cb(SC_DLCI_CONSOLE, console_rx_cb); sercomm_register_rx_cb(SC_DLCI_L1A_L23, l1a_l23_rx_cb); - layer1_init(); + layer1_init(0); l1a_l23_tx_cb = l1a_l23_tx; // display_unset_attr(DISP_ATTR_INVERT); diff --git a/src/target/firmware/apps/trx/main.c b/src/target/firmware/apps/trx/main.c index b0170b92..da4ee949 100644 --- a/src/target/firmware/apps/trx/main.c +++ b/src/target/firmware/apps/trx/main.c @@ -106,8 +106,8 @@ int main(void) /* Init TRX */ trx_init(); - /* Init layer 1 */ - layer1_init(); + /* Init layer 1 with dsp_extcpde */ + layer1_init(1); tpu_frame_irq_en(1, 1); diff --git a/src/target/firmware/calypso/dsp.c b/src/target/firmware/calypso/dsp.c index 7871802d..4b10798a 100644 --- a/src/target/firmware/calypso/dsp.c +++ b/src/target/firmware/calypso/dsp.c @@ -197,7 +197,7 @@ static void dsp_pre_boot(const struct dsp_section *bootcode) dsp_bl_wait_ready(); } -static void dsp_set_params(int16_t *param_tab, int param_size) +static void dsp_set_params(int16_t *param_tab, int param_size, int load_extcode) { int i; int16_t *param_ptr = (int16_t *) BASE_API_PARAM; @@ -205,9 +205,11 @@ static void dsp_set_params(int16_t *param_tab, int param_size) /* Start DSP up to bootloader */ dsp_pre_boot(dsp_bootcode); - /* Load our DSP extensions */ - dputs("Installing DSP extensions patch\n"); - dsp_bl_upload_sections(dsp_extcode); + if (load_extcode) { + /* Load our DSP extensions */ + dputs("Installing DSP extensions patch\n"); + dsp_bl_upload_sections(dsp_extcode); + } /* Configure API params */ dputs("Setting some dsp_api.ndb values\n"); @@ -230,8 +232,10 @@ static void dsp_set_params(int16_t *param_tab, int param_size) for (i = 0; i < param_size; i ++) *param_ptr++ = param_tab[i]; - /* Init address for the extensions */ - dsp_api.param->d_gprs_install_address = DSP_EXT_START; + if (load_extcode) { + /* Init address for the extensions */ + dsp_api.param->d_gprs_install_address = DSP_EXT_START; + } /* Perform actual boot */ dputs("Finishing download phase\n"); @@ -450,12 +454,12 @@ static void dsp_db_init(void) dsp_api_memset((uint16_t *)BASE_API_R_PAGE_1, sizeof(T_DB_DSP_TO_MCU)); } -void dsp_power_on(void) +void dsp_power_on(int load_extcode) { /* probably a good idea to initialize the whole API area to a known value */ dsp_api_memset((uint16_t *)BASE_API_RAM, API_SIZE * 2); // size is in words - dsp_set_params((int16_t *)&dsp_params, sizeof(dsp_params)/2); + dsp_set_params((int16_t *)&dsp_params, sizeof(dsp_params)/2, load_extcode); dsp_ndb_init(); dsp_db_init(); dsp_api.frame_ctr = 0; diff --git a/src/target/firmware/include/calypso/dsp.h b/src/target/firmware/include/calypso/dsp.h index 4f391a7a..3f039934 100644 --- a/src/target/firmware/include/calypso/dsp.h +++ b/src/target/firmware/include/calypso/dsp.h @@ -21,7 +21,7 @@ struct dsp_api { extern struct dsp_api dsp_api; -void dsp_power_on(void); +void dsp_power_on(int load_extcode); void dsp_dump_version(void); void dsp_dump(void); void dsp_checksum_task(void); diff --git a/src/target/firmware/include/layer1/sync.h b/src/target/firmware/include/layer1/sync.h index 418b6d99..15826d4b 100644 --- a/src/target/firmware/include/layer1/sync.h +++ b/src/target/firmware/include/layer1/sync.h @@ -197,7 +197,7 @@ void l1s_init(void); void l1s_reset(void); /* init.c */ -void layer1_init(void); +void layer1_init(int load_extcode); /* A debug macro to print every TDMA frame */ #ifdef DEBUG_EVERY_TDMA diff --git a/src/target/firmware/layer1/init.c b/src/target/firmware/layer1/init.c index e7fde232..f4cdb1d6 100644 --- a/src/target/firmware/layer1/init.c +++ b/src/target/firmware/layer1/init.c @@ -36,7 +36,7 @@ #include #include -void layer1_init(void) +void layer1_init(int load_extcode) { #ifndef CONFIG_TX_ENABLE printf("\n\nTHIS FIRMWARE WAS COMPILED WITHOUT TX SUPPORT!!!\n\n"); @@ -47,7 +47,7 @@ void layer1_init(void) /* initialize TDMA Frame IRQ driven synchronous L1 */ l1s_init(); /* power up the DSP */ - dsp_power_on(); + dsp_power_on(load_extcode); /* Initialize TPU, TSP and TRF drivers */ tpu_init(); -- cgit v1.2.3