summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/calypso/dsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/firmware/calypso/dsp.c')
-rw-r--r--src/target/firmware/calypso/dsp.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/target/firmware/calypso/dsp.c b/src/target/firmware/calypso/dsp.c
index 0ca272ec..ff1a05b5 100644
--- a/src/target/firmware/calypso/dsp.c
+++ b/src/target/firmware/calypso/dsp.c
@@ -230,6 +230,14 @@ static void dsp_set_params(int16_t *param_tab, int param_size)
dsp_api.param->d_gprs_install_address = DSP_SNIFF_PATCH_START;
+ /* Set MCSI burst start magic, stored in unused holes.
+ * The sniffing task will send those over MCSI at the begin
+ * of each burst, in this case ASCII "IQDATAv1" */
+ dsp_api.param->d_hole2_param[0] = 0x4951;
+ dsp_api.param->d_hole2_param[1] = 0x4441;
+ dsp_api.param->d_hole2_param[2] = 0x5441;
+ dsp_api.param->d_hole2_param[3] = 0x7631;
+
dsp_dump_version();
dputs("Finishing download phase\n");
@@ -568,6 +576,12 @@ void dsp_load_tch_param(struct gsm_time *next_time,
dsp_api.db_w->d_ctrl_tch = d_ctrl_tch; /* Channel config. */
}
+void dsp_load_sniff_fn(struct gsm_time *next_time)
+{
+ dsp_api.db_w->a_a5fn[0] = (next_time->fn >> 16);
+ dsp_api.db_w->a_a5fn[1] = (next_time->fn & 0xffff);
+}
+
void dsp_load_ciph_param(int mode, uint8_t *key)
{
dsp_api.ndb->d_a5mode = mode;