diff --git a/drivers/staging/echo/echo.c b/drivers/staging/echo/echo.c
index 548365c..4cc4f2e 100644
--- a/drivers/staging/echo/echo.c
+++ b/drivers/staging/echo/echo.c
@@ -220,12 +220,12 @@
 }
 #endif
 
-static __inline__ int top_bit(unsigned int bits)
+static inline int top_bit(unsigned int bits)
 {
 	if (bits == 0)
-	    return -1;
-        else
-	    return (int)fls((int32_t)bits)-1;
+		return -1;
+	else
+		return (int)fls((int32_t)bits)-1;
 }
 
 struct oslec_state *oslec_create(int len, int adaption_mode)
@@ -466,7 +466,7 @@
 
 		   factor      = (2^30) * (2^-2) * clean_bg_rx/P
 
-		                              (30 - 2 - log2(P))
+						(30 - 2 - log2(P))
 		   factor      = clean_bg_rx 2                     ----- (3)
 
 		   To avoid a divide we approximate log2(P) as top_bit(P),
diff --git a/drivers/staging/echo/echo.h b/drivers/staging/echo/echo.h
index c835e5c..754e66d 100644
--- a/drivers/staging/echo/echo.h
+++ b/drivers/staging/echo/echo.h
@@ -28,13 +28,17 @@
 #ifndef __ECHO_H
 #define __ECHO_H
 
-/*! \page echo_can_page Line echo cancellation for voice
+/*
+Line echo cancellation for voice
 
-\section echo_can_page_sec_1 What does it do?
+What does it do?
+
 This module aims to provide G.168-2002 compliant echo cancellation, to remove
 electrical echoes (e.g. from 2-4 wire hybrids) from voice calls.
 
-\section echo_can_page_sec_2 How does it work?
+
+How does it work?
+
 The heart of the echo cancellor is FIR filter. This is adapted to match the
 echo impulse response of the telephone line. It must be long enough to
 adequately cover the duration of that impulse response. The signal transmitted
@@ -108,7 +112,8 @@
 needed which produces a fairly accurate result from a very short burst of far
 end energy.
 
-\section echo_can_page_sec_3 How do I use it?
+How do I use it?
+
 The echo cancellor processes both the transmit and receive streams sample by
 sample. The processing function is not declared inline. Unfortunately,
 cancellation requires many operations per sample, so the call overhead is only
@@ -118,7 +123,7 @@
 #include "fir.h"
 #include "oslec.h"
 
-/*!
+/*
     G.168 echo canceller descriptor. This defines the working state for a line
     echo canceller.
 */
diff --git a/drivers/staging/echo/fir.h b/drivers/staging/echo/fir.h
index 4910b3b..7b9fabf 100644
--- a/drivers/staging/echo/fir.h
+++ b/drivers/staging/echo/fir.h
@@ -23,14 +23,6 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-/*! \page fir_page FIR filtering
-\section fir_page_sec_1 What does it do?
-???.
-
-\section fir_page_sec_2 How does it work?
-???.
-*/
-
 #if !defined(_FIR_H_)
 #define _FIR_H_
 
@@ -62,10 +54,10 @@
    can.
 */
 
-/*!
-    16 bit integer FIR descriptor. This defines the working state for a single
-    instance of an FIR filter using 16 bit integer coefficients.
-*/
+/*
+ * 16 bit integer FIR descriptor. This defines the working state for a single
+ * instance of an FIR filter using 16 bit integer coefficients.
+ */
 struct fir16_state_t {
 	int taps;
 	int curr_pos;
@@ -73,11 +65,11 @@
 	int16_t *history;
 };
 
-/*!
-    32 bit integer FIR descriptor. This defines the working state for a single
-    instance of an FIR filter using 32 bit integer coefficients, and filtering
-    16 bit integer data.
-*/
+/*
+ * 32 bit integer FIR descriptor. This defines the working state for a single
+ * instance of an FIR filter using 32 bit integer coefficients, and filtering
+ * 16 bit integer data.
+ */
 struct fir32_state_t {
 	int taps;
 	int curr_pos;
@@ -85,10 +77,10 @@
 	int16_t *history;
 };
 
-/*!
-    Floating point FIR descriptor. This defines the working state for a single
-    instance of an FIR filter using floating point coefficients and data.
-*/
+/*
+ * Floating point FIR descriptor. This defines the working state for a single
+ * instance of an FIR filter using floating point coefficients and data.
+ */
 struct fir_float_state_t {
 	int taps;
 	int curr_pos;
@@ -222,4 +214,3 @@
 }
 
 #endif
-/*- End of file ------------------------------------------------------------*/
diff --git a/drivers/staging/echo/oslec.h b/drivers/staging/echo/oslec.h
index bad8523..f417536 100644
--- a/drivers/staging/echo/oslec.h
+++ b/drivers/staging/echo/oslec.h
@@ -27,8 +27,6 @@
 #ifndef __OSLEC_H
 #define __OSLEC_H
 
-/* TODO: document interface */
-
 /* Mask bits for the adaption mode */
 #define ECHO_CAN_USE_ADAPTION	0x01
 #define ECHO_CAN_USE_NLP	0x02
@@ -38,49 +36,59 @@
 #define ECHO_CAN_USE_RX_HPF	0x20
 #define ECHO_CAN_DISABLE	0x40
 
-/*!
-    G.168 echo canceller descriptor. This defines the working state for a line
-    echo canceller.
-*/
+/**
+ * oslec_state: G.168 echo canceller descriptor.
+ *
+ * This defines the working state for a line echo canceller.
+ */
 struct oslec_state;
 
-/*! Create a voice echo canceller context.
-    \param len The length of the canceller, in samples.
-    \return The new canceller context, or NULL if the canceller could not be created.
-*/
+/**
+ * oslec_create - Create a voice echo canceller context.
+ * @len: The length of the canceller, in samples.
+ * @return: The new canceller context, or NULL if the canceller could not be
+ * created.
+ */
 struct oslec_state *oslec_create(int len, int adaption_mode);
 
-/*! Free a voice echo canceller context.
-    \param ec The echo canceller context.
-*/
+/**
+ * oslec_free - Free a voice echo canceller context.
+ * @ec: The echo canceller context.
+ */
 void oslec_free(struct oslec_state *ec);
 
-/*! Flush (reinitialise) a voice echo canceller context.
-    \param ec The echo canceller context.
-*/
+/**
+ * oslec_flush - Flush (reinitialise) a voice echo canceller context.
+ * @ec: The echo canceller context.
+ */
 void oslec_flush(struct oslec_state *ec);
 
-/*! Set the adaption mode of a voice echo canceller context.
-    \param ec The echo canceller context.
-    \param adapt The mode.
-*/
+/**
+ * oslec_adaption_mode - set the adaption mode of a voice echo canceller context.
+ * @ec The echo canceller context.
+ * @adaption_mode: The mode.
+ */
 void oslec_adaption_mode(struct oslec_state *ec, int adaption_mode);
 
 void oslec_snapshot(struct oslec_state *ec);
 
-/*! Process a sample through a voice echo canceller.
-    \param ec The echo canceller context.
-    \param tx The transmitted audio sample.
-    \param rx The received audio sample.
-    \return The clean (echo cancelled) received sample.
-*/
+/**
+ * oslec_update: Process a sample through a voice echo canceller.
+ * @ec: The echo canceller context.
+ * @tx: The transmitted audio sample.
+ * @rx: The received audio sample.
+ *
+ * The return value is the clean (echo cancelled) received sample.
+ */
 int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx);
 
-/*! Process to high pass filter the tx signal.
-    \param ec The echo canceller context.
-    \param tx The transmitted auio sample.
-    \return The HP filtered transmit sample, send this to your D/A.
-*/
+/**
+ * oslec_hpf_tx: Process to high pass filter the tx signal.
+ * @ec: The echo canceller context.
+ * @tx: The transmitted auio sample.
+ *
+ * The return value is the HP filtered transmit sample, send this to your D/A.
+ */
 int16_t oslec_hpf_tx(struct oslec_state *ec, int16_t tx);
 
 #endif /* __OSLEC_H */
