diff --git a/src/coding/gsm0503_coding.c b/src/coding/gsm0503_coding.c
index 1e70d2e..bb86b2c 100644
--- a/src/coding/gsm0503_coding.c
+++ b/src/coding/gsm0503_coding.c
@@ -94,7 +94,7 @@
 /*! \addtogroup coding
  *  @{
  *
- *  \brief GSM TS 05.03 coding
+ *  GSM TS 05.03 coding
  *
  *  This module is the "master module" of libosmocoding. It uses the
  *  various other modules (mapping, parity, interleaving) in order to
@@ -137,49 +137,49 @@
 /* TS 101318 Chapter 5.3: 244 bits + 4bit sig */
 #define GSM_EFR_BYTES	31
 
-/*! \brief union across the three different EGPRS Uplink header types */
+/*! union across the three different EGPRS Uplink header types */
 union gprs_rlc_ul_hdr_egprs {
 	struct gprs_rlc_ul_header_egprs_1 type1;
 	struct gprs_rlc_ul_header_egprs_2 type2;
 	struct gprs_rlc_ul_header_egprs_3 type3;
 };
 
-/*! \brief union across the three different EGPRS Downlink header types */
+/*! union across the three different EGPRS Downlink header types */
 union gprs_rlc_dl_hdr_egprs {
 	struct gprs_rlc_dl_header_egprs_1 type1;
 	struct gprs_rlc_dl_header_egprs_2 type2;
 	struct gprs_rlc_dl_header_egprs_3 type3;
 };
 
-/*! \brief Structure describing a Modulation and Coding Scheme */
+/*! Structure describing a Modulation and Coding Scheme */
 struct gsm0503_mcs_code {
-	/*! \brief Modulation and Coding Scheme (MSC) number */
+	/*! Modulation and Coding Scheme (MSC) number */
 	uint8_t mcs;
-	/*! \brief Length of Uplink Stealing Flag (USF) in bits */
+	/*! Length of Uplink Stealing Flag (USF) in bits */
 	uint8_t usf_len;
 
 	/* Header coding */
-	/*! \brief Length of header (bits) */
+	/*! Length of header (bits) */
 	uint8_t hdr_len;
-	/*! \brief Length of header convolutional code */
+	/*! Length of header convolutional code */
 	uint8_t hdr_code_len;
-	/*! \brief Length of header code puncturing sequence */
+	/*! Length of header code puncturing sequence */
 	uint8_t hdr_punc_len;
-	/*! \brief header convolutional code */
+	/*! header convolutional code */
 	const struct osmo_conv_code *hdr_conv;
-	/*! \brief header puncturing sequence */
+	/*! header puncturing sequence */
 	const uint8_t *hdr_punc;
 
 	/* Data coding */
-	/*! \brief length of data (bits) */
+	/*! length of data (bits) */
 	uint16_t data_len;
-	/*! \brief length of data convolutional code */
+	/*! length of data convolutional code */
 	uint16_t data_code_len;
-	/*! \brief length of data code puncturing sequence */
+	/*! length of data code puncturing sequence */
 	uint16_t data_punc_len;
-	/*! \brief data convolutional code */
+	/*! data convolutional code */
 	const struct osmo_conv_code *data_conv;
-	/*! \brief data puncturing sequences */
+	/*! data puncturing sequences */
 	const uint8_t *data_punc[3];
 };
 
@@ -534,7 +534,7 @@
 	},
 };
 
-/*! \brief Convolutional Decode + compute BER
+/*! Convolutional Decode + compute BER
  *  \param[in] code Description of Convolutional Code
  *  \param[in] input Input soft-bits (-127...127)
  *  \param[out] output bits
@@ -571,7 +571,7 @@
 	return res;
 }
 
-/*! \brief convenience wrapper for decoding coded bits
+/*! convenience wrapper for decoding coded bits
  *  \param[out] l2_data caller-allocated buffer for L2 Frame
  *  \param[in] cB 456 coded (soft) bits as per TS 05.03 4.1.3
  *  \param[out] n_errors Number of detected errors
@@ -596,7 +596,7 @@
 	return 0;
 }
 
-/*! \brief convenience wrapper for encoding to coded bits
+/*! convenience wrapper for encoding to coded bits
  *  \param[out] cB caller-allocated buffer for 456 coded bits as per TS 05.03 4.1.3
  *  \param[out] l2_data to-be-encoded L2 Frame
  *  \returns 0 */
@@ -617,7 +617,7 @@
  * GSM xCCH block transcoding
  */
 
-/*! \brief Decoding of xCCH data from bursts to L2 frame
+/*! Decoding of xCCH data from bursts to L2 frame
  *  \param[out] l2_data caller-allocated output data buffer
  *  \param[in] bursts four GSM bursts in soft-bits
  *  \param[out] n_errors Number of detected errors
@@ -637,7 +637,7 @@
 	return _xcch_decode_cB(l2_data, cB, n_errors, n_bits_total);
 }
 
-/*! \brief Encoding of xCCH data from L2 frame to bursts
+/*! Encoding of xCCH data from L2 frame to bursts
  *  \param[out] bursts caller-allocated burst data (unpacked bits)
  *  \param[in] l2_data L2 input data (MAC block)
  *  \returns 0
@@ -904,7 +904,7 @@
 	return OSMO_BYTES_FOR_BITS(code->hdr_len + code->data_len);
 }
 
-/*! \brief Decode EGPRS UL message
+/*! Decode EGPRS UL message
  * 	1. Header section decoding
  * 	2. Extract CPS settings
  * 	3. Burst unmapping and deinterleaving
@@ -986,7 +986,7 @@
  * GSM PDTCH block transcoding
  */
 
-/*! \brief Decode GPRS PDTCH
+/*! Decode GPRS PDTCH
  *  \param[out] l2_data caller-allocated buffer for L2 Frame
  *  \param[in] bursts burst input data as soft unpacked bits
  *  \param[out] usf_p uplink stealing flag
@@ -1303,7 +1303,7 @@
 	return egprs_get_cps(cps, type, bits);
 }
 
-/*! \brief EGPRS DL message encoding
+/*! EGPRS DL message encoding
  *  \param[out] bursts caller-allocated buffer for unpacked burst bits
  *  \param[in] l2_data L2 (MAC) block to be encoded
  *  \param[in] l2_len length of l2_data in bytes, used to determine MCS
@@ -1398,7 +1398,7 @@
 	return -1;
 }
 
-/*! \brief GPRS DL message encoding
+/*! GPRS DL message encoding
  *  \param[out] bursts caller-allocated buffer for unpacked burst bits
  *  \param[in] l2_data L2 (MAC) block to be encoded
  *  \param[in] l2_len length of l2_data in bytes, used to determine CS
@@ -1487,7 +1487,7 @@
  * GSM TCH/F FR/EFR transcoding
  */
 
-/*! \brief assemble a FR codec frame in format as used inside RTP
+/*! assemble a FR codec frame in format as used inside RTP
  *  \param[out] tch_data Codec frame in RTP format
  *  \param[in] b_bits Codec frame in 'native' format
  *  \param[in] net_order FIXME */
@@ -1772,7 +1772,7 @@
 	memcpy(d + prot, u + prot + 6, len - prot);
 }
 
-/*! \brief Perform channel decoding of a FR/EFR channel according TS 05.03
+/*! Perform channel decoding of a FR/EFR channel according TS 05.03
  *  \param[out] tch_data Codec frame in RTP payload format
  *  \param[in] bursts buffer containing the symbols of 8 bursts
  *  \param[in] net_order FIXME
@@ -1858,7 +1858,7 @@
 	return len;
 }
 
-/*! \brief Perform channel encoding on a TCH/FS channel according to TS 05.03
+/*! Perform channel encoding on a TCH/FS channel according to TS 05.03
  *  \param[out] bursts caller-allocated output buffer for bursts bits
  *  \param[in] tch_data Codec input data in RTP payload format
  *  \param[in] len Length of \a tch_data in bytes
@@ -1922,7 +1922,7 @@
 	return 0;
 }
 
-/*! \brief Perform channel decoding of a HR(v1) channel according TS 05.03
+/*! Perform channel decoding of a HR(v1) channel according TS 05.03
  *  \param[out] tch_data Codec frame in RTP payload format
  *  \param[in] bursts buffer containing the symbols of 8 bursts
  *  \param[in] odd Odd (1) or even (0) frame number
@@ -1999,7 +1999,7 @@
 	return 15;
 }
 
-/*! \brief Perform channel encoding on a TCH/HS channel according to TS 05.03
+/*! Perform channel encoding on a TCH/HS channel according to TS 05.03
  *  \param[out] bursts caller-allocated output buffer for bursts bits
  *  \param[in] tch_data Codec input data in RTP payload format
  *  \param[in] len Length of \a tch_data in bytes
@@ -2059,7 +2059,7 @@
 	return 0;
 }
 
-/*! \brief Perform channel decoding of a TCH/AFS channel according TS 05.03
+/*! Perform channel decoding of a TCH/AFS channel according TS 05.03
  *  \param[out] tch_data Codec frame in RTP payload format
  *  \param[in] bursts buffer containing the symbols of 8 bursts
  *  \param[in] codec_mode_req is this CMR (1) or CMC (0)
@@ -2265,7 +2265,7 @@
 	return len;
 }
 
-/*! \brief Perform channel encoding on a TCH/AFS channel according to TS 05.03
+/*! Perform channel encoding on a TCH/AFS channel according to TS 05.03
  *  \param[out] bursts caller-allocated output buffer for bursts bits
  *  \param[in] tch_data Codec input data in RTP payload format
  *  \param[in] len Length of \a tch_data in bytes
@@ -2435,7 +2435,7 @@
 	return -1;
 }
 
-/*! \brief Perform channel decoding of a TCH/AFS channel according TS 05.03
+/*! Perform channel decoding of a TCH/AFS channel according TS 05.03
  *  \param[out] tch_data Codec frame in RTP payload format
  *  \param[in] bursts buffer containing the symbols of 8 bursts
  *  \param[in] odd Is this an odd (1) or even (0) frame number?
@@ -2650,7 +2650,7 @@
 	return len;
 }
 
-/*! \brief Perform channel encoding on a TCH/AHS channel according to TS 05.03
+/*! Perform channel encoding on a TCH/AHS channel according to TS 05.03
  *  \param[out] bursts caller-allocated output buffer for bursts bits
  *  \param[in] tch_data Codec input data in RTP payload format
  *  \param[in] len Length of \a tch_data in bytes
@@ -2834,7 +2834,7 @@
 	return 0;
 }
 
-/*! \brief Decode the (8-bit) RACH according to TS 05.03
+/*! Decode the (8-bit) RACH according to TS 05.03
  *  \param[out] ra output buffer for RACH data
  *  \param[in] burst Input burst data
  *  \param[in] bsic BSIC used in this cell
@@ -2857,7 +2857,7 @@
 	return 0;
 }
 
-/*! \brief Encode the (8-bit) RACH according to TS 05.03
+/*! Encode the (8-bit) RACH according to TS 05.03
  *  \param[out] burst Caller-allocated output burst buffer
  *  \param[in] ra Input RACH data
  *  \param[in] bsic BSIC used in this cell
@@ -2881,7 +2881,7 @@
  * GSM SCH transcoding
  */
 
-/*! \brief Decode the SCH according to TS 05.03
+/*! Decode the SCH according to TS 05.03
  *  \param[out] sb_info output buffer for SCH data
  *  \param[in] burst Input burst data
  *  \returns 0 on success; negative on error (e.g. CRC error) */
@@ -2901,7 +2901,7 @@
 	return 0;
 }
 
-/*! \brief Encode the SCH according to TS 05.03
+/*! Encode the SCH according to TS 05.03
  *  \param[out] burst Caller-allocated output burst buffer
  *  \param[in] sb_info Input SCH data
  *  \returns 0 on success; negative on error */
diff --git a/src/coding/gsm0503_interleaving.c b/src/coding/gsm0503_interleaving.c
index cd47cff..19e6847 100644
--- a/src/coding/gsm0503_interleaving.c
+++ b/src/coding/gsm0503_interleaving.c
@@ -29,7 +29,7 @@
 
 /*! \addtogroup interleaving
  *  @{
- *  \brief GSM TS 05.03 interleaving
+ *  GSM TS 05.03 interleaving
  *
  *  This module contains interleaving / de-interleaving routines for
  *  various channel types, as defined in 3GPP TS 05.03 / 45.003
@@ -59,7 +59,7 @@
  * Where hl(B) and hn(B) are bits in burst B indicating flags.
  */
 
-/*! \brief De-Interleave burst bits according to TS 05.03 4.1.4
+/*! De-Interleave burst bits according to TS 05.03 4.1.4
  *  \param[out] cB caller-allocated output buffer for 456 soft coded bits
  *  \param[in] iB 456 soft input bits */
 void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB)
@@ -73,7 +73,7 @@
 	}
 }
 
-/*! \brief Interleave burst bits according to TS 05.03 4.1.4
+/*! Interleave burst bits according to TS 05.03 4.1.4
  *  \param[out] iB caller-allocated output buffer for 456 soft interleaved bits
  *  \param[in] cB 456 soft input coded bits */
 void gsm0503_xcch_interleave(const ubit_t *cB, ubit_t *iB)
@@ -87,7 +87,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5
+/*! De-Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5
  *  \param[out] u caller-allocated output buffer for 12 soft coded bits
  *  \param[out] hc caller-allocated output buffer for 68 soft coded bits
  *  \param[out] dc caller-allocated output buffer for 372 soft coded bits
@@ -128,7 +128,7 @@
 	}
 }
 
-/*! \brief Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5
+/*! Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.1.5
  *  \param[in] up 12 input soft coded bits (usf)
  *  \param[in] hc 68 input soft coded bits (header)
  *  \param[in] dc 372 input soft bits (data)
@@ -166,7 +166,7 @@
 	gsm0503_xcch_interleave(cp, iB);
 }
 
-/*! \brief Interleave MCS1 UL burst bits according to TS 05.03 5.1.5.2.4
+/*! Interleave MCS1 UL burst bits according to TS 05.03 5.1.5.2.4
  *  \param[out] hc caller-allocated output buffer for 80 soft coded header bits
  *  \param[out] dc caller-allocated output buffer for 372 soft coded data bits
  *  \param[in] iB 456 interleaved soft input bits */
@@ -200,7 +200,7 @@
 	}
 }
 
-/*! \brief Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.2.4
+/*! Interleave MCS1 DL burst bits according to TS 05.03 5.1.5.2.4
  *  \param[in] hc 80 input coded bits (header)
  *  \param[in] dc 372 input bits (data)
  *  \param[out] iB 456 interleaved output bits */
@@ -234,7 +234,7 @@
 	gsm0503_xcch_interleave(cp, iB);
 }
 
-/*! \brief Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4
+/*! Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4
  *  \param[in] hc 136 soft coded header input bits
  *  \param[in] dc 1248 soft coded data input bits
  *  \param[out] hi 136 interleaved header output bits
@@ -257,7 +257,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4
+/*! De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.2.4
  *  \param[out] hc caller-allocated output buffer for 136 soft coded header bits
  *  \param[out] dc caller-allocated output buffer for 1248 soft coded data bits
  *  \param[in] iB interleaved soft input bits */
@@ -283,7 +283,7 @@
 	}
 }
 
-/*! \brief Interleave MCS5 DL burst bits according to TS 05.03 5.1.9.1.5
+/*! Interleave MCS5 DL burst bits according to TS 05.03 5.1.9.1.5
  *  \param[in] hc 100 soft coded header input bits
  *  \param[in] dc 1248 soft coded data input bits
  *  \param[out] hi 100 interleaved header output bits
@@ -306,7 +306,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.1.5
+/*! De-Interleave MCS5 UL burst bits according to TS 05.03 5.1.9.1.5
  *  \param[out] hc caller-allocated output buffer for 100 soft coded header bits
  *  \param[out] dc caller-allocated output buffer for 1248 soft coded data bits
  *  \param[in] iB interleaved soft input bits */
@@ -332,7 +332,7 @@
 	}
 }
 
-/*! \brief Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5
+/*! Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5
  *  \param[in] hc 124 soft coded header input bits
  *  \param[in] c1 612 soft coded data input bits
  *  \param[in] c2 612 soft coded data input bits
@@ -361,7 +361,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5
+/*! De-Interleave MCS7 DL burst bits according to TS 05.03 5.1.11.1.5
  *  \param[out] hc caller-allocated output buffer for 124 soft coded header bits
  *  \param[out] c1 caller-allocated output buffer for 612 soft coded data bits
  *  \param[out] c2 caller-allocated output buffer for 612 soft coded data bits
@@ -394,7 +394,7 @@
 	}
 }
 
-/*! \brief Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4
+/*! Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4
  *  \param[in] hc 124 soft coded header input bits
  *  \param[in] c1 612 soft coded data input bits
  *  \param[in] c2 612 soft coded data input bits
@@ -423,7 +423,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4
+/*! De-Interleave MCS7 UL burst bits according to TS 05.03 5.1.11.2.4
  *  \param[out] hc caller-allocated output buffer for 160 soft coded header bits
  *  \param[out] c1 caller-allocated output buffer for 612 soft coded data bits
  *  \param[out] c2 caller-allocated output buffer for 612 soft coded data bits
@@ -456,7 +456,7 @@
 	}
 }
 
-/*! \brief Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4
+/*! Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4
  *  \param[in] hc 160 soft coded header input bits
  *  \param[in] c1 612 soft coded data input bits
  *  \param[in] c2 612 soft coded data input bits
@@ -486,7 +486,7 @@
 }
 
 
-/*! \brief De-Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4
+/*! De-Interleave MCS8 UL burst bits according to TS 05.03 5.1.12.2.4
  *  \param[out] hc caller-allocated output buffer for 160 soft coded header bits
  *  \param[out] c1 caller-allocated output buffer for 612 soft coded data bits
  *  \param[out] c2 caller-allocated output buffer for 612 soft coded data bits
@@ -519,7 +519,7 @@
 	}
 }
 
-/*! \brief Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5
+/*! Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5
  *  \param[in] hc 124 soft coded header input bits
  *  \param[in] c1 612 soft coded data input bits
  *  \param[in] c2 612 soft coded data input bits
@@ -548,7 +548,7 @@
 	}
 }
 
-/*! \brief De-Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5
+/*! De-Interleave MCS8 DL burst bits according to TS 05.03 5.1.12.1.5
  *  \param[out] hc caller-allocated output buffer for 124 soft coded header bits
  *  \param[out] c1 caller-allocated output buffer for 612 soft coded data bits
  *  \param[out] c2 caller-allocated output buffer for 612 soft coded data bits
@@ -605,7 +605,7 @@
  * Where hl(B) and hn(B) are bits in burst B indicating flags.
  */
 
-/*! \brief GSM TCH FR/EFR/AFS De-Interleaving and burst mapping
+/*! GSM TCH FR/EFR/AFS De-Interleaving and burst mapping
  *  \param[out] cB caller-allocated buffer for 456 unpacked output bits
  *  \param[in] iB 456 unpacked interleaved input bits */
 void gsm0503_tch_fr_deinterleave(sbit_t *cB, const sbit_t *iB)
@@ -619,7 +619,7 @@
 	}
 }
 
-/*! \brief GSM TCH FR/EFR/AFS Interleaving and burst mapping
+/*! GSM TCH FR/EFR/AFS Interleaving and burst mapping
  *  \param[in] cB caller-allocated buffer for 456 unpacked input bits
  *  \param[out] iB 456 unpacked interleaved output bits */
 void gsm0503_tch_fr_interleave(const ubit_t *cB, ubit_t *iB)
@@ -657,7 +657,7 @@
  * Where hl(B) and hn(B) are bits in burst B indicating flags.
  */
 
-/*! \brief GSM TCH HR/AHS De-Interleaving and burst mapping
+/*! GSM TCH HR/AHS De-Interleaving and burst mapping
  *  \param[out] cB caller-allocated buffer for 228 unpacked output bits
  *  \param[in] iB 228 unpacked interleaved input bits */
 void gsm0503_tch_hr_deinterleave(sbit_t *cB, const sbit_t *iB)
@@ -671,7 +671,7 @@
 	}
 }
 
-/*! \brief GSM TCH HR/AHS Interleaving and burst mapping
+/*! GSM TCH HR/AHS Interleaving and burst mapping
  *  \param[in] cB caller-allocated buffer for 228 unpacked input bits
  *  \param[out] iB 228 unpacked interleaved output bits */
 void gsm0503_tch_hr_interleave(const ubit_t *cB, ubit_t *iB)
diff --git a/src/coding/gsm0503_mapping.c b/src/coding/gsm0503_mapping.c
index 82c049c..15fd1b6 100644
--- a/src/coding/gsm0503_mapping.c
+++ b/src/coding/gsm0503_mapping.c
@@ -28,7 +28,7 @@
 /*! \addtogroup mapping
  *  @{
  *
- *  \brief GSM TS 05.03 burst mapping
+ *  GSM TS 05.03 burst mapping
  *
  *  This module contains burst mapping routines as specified in 3GPP TS
  *  05.03 / 45.003.
diff --git a/src/coding/gsm0503_parity.c b/src/coding/gsm0503_parity.c
index 171feb4..cc81702 100644
--- a/src/coding/gsm0503_parity.c
+++ b/src/coding/gsm0503_parity.c
@@ -27,7 +27,7 @@
 /*! \addtogroup parity
  *  @{
  *
- *  \brief GSM TS 05.03 parity
+ *  GSM TS 05.03 parity
  *
  *  This module contains parity/crc code definitions for the various
  *  parity/crc schemes as defined in 3GPP TS 05.03 / 45.003
@@ -35,7 +35,7 @@
 
 /*! \file gsm0503_parity.c */
 
-/*! \brief GSM (SACCH) parity (FIRE code)
+/*! GSM (SACCH) parity (FIRE code)
  *
  * g(x) = (x^23 + 1)(x^17 + x^3 + 1)
  *      = x^40 + x^26 + x^23 + x^17 + x^3 + a1
@@ -47,7 +47,7 @@
 	.remainder = 0xffffffffffULL,
 };
 
-/*! \brief GSM PDTCH CS-2, CS-3, CS-4 parity
+/*! GSM PDTCH CS-2, CS-3, CS-4 parity
  *
  * g(x) = x^16 + x^12 + x^5 + 1
  */
@@ -58,7 +58,7 @@
 	.remainder = 0xffff,
 };
 
-/*! \brief EDGE MCS header parity
+/*! EDGE MCS header parity
  *
  */
 const struct osmo_crc8gen_code gsm0503_mcs_crc8_hdr = {
@@ -68,7 +68,7 @@
 	.remainder = 0xff,
 };
 
-/*! \brief EDGE MCS data parity
+/*! EDGE MCS data parity
  *
  */
 const struct osmo_crc16gen_code gsm0503_mcs_crc12 = {
@@ -78,7 +78,7 @@
 	.remainder = 0x0fff,
 };
 
-/*! \brief GSM RACH parity
+/*! GSM RACH parity
  *
  * g(x) = x^6 + x^5 + x^3 + x^2 + x^1 + 1
  */
@@ -89,7 +89,7 @@
 	.remainder = 0x3f,
 };
 
-/*! \brief GSM SCH parity
+/*! GSM SCH parity
  *
  * g(x) = x^10 + x^8 + x^6 + x^5 + x^4 + x^2 + 1
  */
@@ -100,7 +100,7 @@
 	.remainder = 0x3ff,
 };
 
-/*! \brief GSM TCH FR/HR/EFR parity
+/*! GSM TCH FR/HR/EFR parity
  *
  * g(x) = x^3 + x + 1
  */
@@ -111,7 +111,7 @@
 	.remainder = 0x7,
 };
 
-/*! \brief GSM TCH EFR parity
+/*! GSM TCH EFR parity
  *
  * g(x) = x^8 + x^4 + x^3 + x^2 + 1
  */
@@ -122,7 +122,7 @@
 	.remainder = 0x00,
 };
 
-/*! \brief GSM AMR parity
+/*! GSM AMR parity
  *
  * g(x) = x^6 + x^5 + x^3 + x^2 + x^1 + 1
  */
diff --git a/src/coding/gsm0503_tables.c b/src/coding/gsm0503_tables.c
index 1c85765..32d12ea 100644
--- a/src/coding/gsm0503_tables.c
+++ b/src/coding/gsm0503_tables.c
@@ -27,7 +27,7 @@
 /*! \addtogroup tables
  *  @{
  *
- *  \brief GSM TS 05.03 tables
+ *  GSM TS 05.03 tables
  *
  *  This module contains various tables defining parts of 3GPP TS 05.03
  *  / 45.003, primarily for the purpose of (de)puncturing, interleaving,
