summaryrefslogtreecommitdiff
path: root/cesar/hal/phy/src/tx.c
diff options
context:
space:
mode:
authorschodet2009-12-03 10:47:38 +0000
committerschodet2009-12-03 10:47:38 +0000
commit64cc2907fe3e221cbb1c132a3a2022c3a9bbcd7b (patch)
tree18559a09d9c5f1e158c5cbc22afc69efd66716c3 /cesar/hal/phy/src/tx.c
parentb812830862389c93be21c12f1a9a800fbf337c83 (diff)
cesar/hal/phy: rewrite phy_tx_param_set_gil, refs #844
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6518 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/hal/phy/src/tx.c')
-rw-r--r--cesar/hal/phy/src/tx.c116
1 files changed, 31 insertions, 85 deletions
diff --git a/cesar/hal/phy/src/tx.c b/cesar/hal/phy/src/tx.c
index 614f899e33..a6802c6c26 100644
--- a/cesar/hal/phy/src/tx.c
+++ b/cesar/hal/phy/src/tx.c
@@ -42,97 +42,43 @@ phy_tx_param_set_gil (phy_t *ctx, phy_fc_mode_t fc_mode, phy_gil_t gil)
dbg_claim (fc_mode < PHY_FC_MODE_NB && gil < PHY_GIL_NB);
/* Set GIL and symbol length. */
uint sl;
- switch (fc_mode)
+ volatile u32 *reg = &PHY_DSPSS_TX_GUARD_LENGTH_0;
+ /* Fill guard lengths. */
+ if (PHY_FC_MODE_IS_HYBRID (fc_mode))
+ *reg++ = PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_10;
+ *reg++ = PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
+ if (PHY_FC_MODE_IS_TWO_SYMBOLS (fc_mode))
+ *reg++ = PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
+ *reg++ = PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
+ *reg++ = PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
+ while (reg != &PHY_DSPSS_TX_SYMB_LENGTH_0)
+ *reg++ = ctx->gil_durations_table[gil];
+ /* Fill symbol length. */
+ if (PHY_FC_MODE_IS_HYBRID (fc_mode))
{
- case PHY_FC_MODE_HYBRID_1:
- PHY_DSPSS_TX_GUARD_LENGTH_0 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_10;
- PHY_DSPSS_TX_GUARD_LENGTH_1 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_2 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_3 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_4 = ctx->gil_durations_table[gil];
sl = PHY_DSPSS_TX_SYMB_LENGTH__VALUE_PRE_10;
- PHY_DSPSS_TX_SYMB_LENGTH_0 = sl;
+ *reg++ = sl;
sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_10;
- PHY_DSPSS_TX_SYMB_LENGTH_1 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_2 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_3 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_4 = sl;
- break;
- case PHY_FC_MODE_HYBRID_2:
- PHY_DSPSS_TX_GUARD_LENGTH_0 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_10;
- PHY_DSPSS_TX_GUARD_LENGTH_1 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_2 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_3 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_4 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- sl = PHY_DSPSS_TX_SYMB_LENGTH__VALUE_PRE_10;
- PHY_DSPSS_TX_SYMB_LENGTH_0 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_10;
- PHY_DSPSS_TX_SYMB_LENGTH_1 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_2 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_3 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_4 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- break;
- case PHY_FC_MODE_AV_1:
- PHY_DSPSS_TX_GUARD_LENGTH_0 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_1 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_2 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_3 = ctx->gil_durations_table[gil];
- PHY_DSPSS_TX_GUARD_LENGTH_4 = ctx->gil_durations_table[gil];
- sl = PHY_DSPSS_TX_SYMB_LENGTH__VALUE_PRE;
- PHY_DSPSS_TX_SYMB_LENGTH_0 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_1 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_2 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_3 = sl;
- PHY_DSPSS_TX_SYMB_LENGTH_4 = sl;
- break;
- case PHY_FC_MODE_AV_2:
- PHY_DSPSS_TX_GUARD_LENGTH_0 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_1 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_GUARD_LENGTH_2 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_3 =
- PHY_DSPSS_TX_GUARD_LENGTH__VALUE_567;
- PHY_DSPSS_TX_GUARD_LENGTH_4 = ctx->gil_durations_table[gil];
+ *reg++ = sl;
+ }
+ else
+ {
sl = PHY_DSPSS_TX_SYMB_LENGTH__VALUE_PRE;
- PHY_DSPSS_TX_SYMB_LENGTH_0 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_1 = sl;
+ *reg++ = sl;
+ }
+ sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
+ *reg++ = sl;
+ if (PHY_FC_MODE_IS_TWO_SYMBOLS (fc_mode))
+ {
sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_FC_AV;
- PHY_DSPSS_TX_SYMB_LENGTH_2 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_3 = sl;
- sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
- PHY_DSPSS_TX_SYMB_LENGTH_4 = sl;
- break;
- default:
- dbg_assert_default ();
+ *reg++ = sl;
}
- PHY_DSPSS_TX_GUARD_LENGTH_5 = ctx->gil_durations_table[gil];
- PHY_DSPSS_TX_SYMB_LENGTH_5 = sl;
+ sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
+ *reg++ = sl;
+ sl += PHY_DSPSS_TX_SYMB_LENGTH__VALUE_DATA;
+ *reg++ = sl;
+ while (reg != &PHY_DSPSS_TX_SYMB_LENGTH_5 + 1)
+ *reg++ = sl;
}
extern inline void