diff --git a/doc/api/clk.rst b/doc/api/clk.rst
index 7eb3b56..7c27066 100644
--- a/doc/api/clk.rst
+++ b/doc/api/clk.rst
@@ -11,3 +11,9 @@
 
 .. kernel-doc:: include/clk.h
    :internal:
+
+Driver API
+----------
+
+.. kernel-doc:: include/clk-uclass.h
+   :internal:
diff --git a/include/clk-uclass.h b/include/clk-uclass.h
index 50e8681..e44f1ca 100644
--- a/include/clk-uclass.h
+++ b/include/clk-uclass.h
@@ -16,96 +16,127 @@
 
 /**
  * struct clk_ops - The functions that a clock driver must implement.
+ * @of_xlate: Translate a client's device-tree (OF) clock specifier.
+ * @request: Request a translated clock.
+ * @rfree: Free a previously requested clock.
+ * @round_rate: Adjust a rate to the exact rate a clock can provide.
+ * @get_rate: Get current clock rate.
+ * @set_rate: Set current clock rate.
+ * @set_parent: Set current clock parent
+ * @enable: Enable a clock.
+ * @disable: Disable a clock.
+ *
+ * The individual methods are described more fully below.
  */
 struct clk_ops {
-	/**
-	 * of_xlate - Translate a client's device-tree (OF) clock specifier.
-	 *
-	 * The clock core calls this function as the first step in implementing
-	 * a client's clk_get_by_*() call.
-	 *
-	 * If this function pointer is set to NULL, the clock core will use a
-	 * default implementation, which assumes #clock-cells = <1>, and that
-	 * the DT cell contains a simple integer clock ID.
-	 *
-	 * At present, the clock API solely supports device-tree. If this
-	 * changes, other xxx_xlate() functions may be added to support those
-	 * other mechanisms.
-	 *
-	 * @clock:	The clock struct to hold the translation result.
-	 * @args:	The clock specifier values from device tree.
-	 * @return 0 if OK, or a negative error code.
-	 */
 	int (*of_xlate)(struct clk *clock,
 			struct ofnode_phandle_args *args);
-	/**
-	 * request - Request a translated clock.
-	 *
-	 * The clock core calls this function as the second step in
-	 * implementing a client's clk_get_by_*() call, following a successful
-	 * xxx_xlate() call, or as the only step in implementing a client's
-	 * clk_request() call.
-	 *
-	 * @clock:	The clock struct to request; this has been fille in by
-	 *		a previoux xxx_xlate() function call, or by the caller
-	 *		of clk_request().
-	 * @return 0 if OK, or a negative error code.
-	 */
 	int (*request)(struct clk *clock);
-	/**
-	 * rfree - Free a previously requested clock.
-	 *
-	 * This is the implementation of the client clk_free() API.
-	 *
-	 * @clock:	The clock to free.
-	 * @return 0 if OK, or a negative error code.
-	 */
 	int (*rfree)(struct clk *clock);
-	/**
-	 * round_rate() - Adjust a rate to the exact rate a clock can provide.
-	 *
-	 * @clk:	The clock to manipulate.
-	 * @rate:	Desidered clock rate in Hz.
-	 * @return rounded rate in Hz, or -ve error code.
-	 */
 	ulong (*round_rate)(struct clk *clk, ulong rate);
-	/**
-	 * get_rate() - Get current clock rate.
-	 *
-	 * @clk:	The clock to query.
-	 * @return clock rate in Hz, or -ve error code
-	 */
 	ulong (*get_rate)(struct clk *clk);
-	/**
-	 * set_rate() - Set current clock rate.
-	 *
-	 * @clk:	The clock to manipulate.
-	 * @rate:	New clock rate in Hz.
-	 * @return new rate, or -ve error code.
-	 */
 	ulong (*set_rate)(struct clk *clk, ulong rate);
-	/**
-	 * set_parent() - Set current clock parent
-	 *
-	 * @clk:        The clock to manipulate.
-	 * @parent:     New clock parent.
-	 * @return zero on success, or -ve error code.
-	 */
 	int (*set_parent)(struct clk *clk, struct clk *parent);
-	/**
-	 * enable() - Enable a clock.
-	 *
-	 * @clk:	The clock to manipulate.
-	 * @return zero on success, or -ve error code.
-	 */
 	int (*enable)(struct clk *clk);
-	/**
-	 * disable() - Disable a clock.
-	 *
-	 * @clk:	The clock to manipulate.
-	 * @return zero on success, or -ve error code.
-	 */
 	int (*disable)(struct clk *clk);
 };
 
+#if 0 /* For documentation only */
+/**
+ * of_xlate() - Translate a client's device-tree (OF) clock specifier.
+ * @clock:	The clock struct to hold the translation result.
+ * @args:	The clock specifier values from device tree.
+ *
+ * The clock core calls this function as the first step in implementing
+ * a client's clk_get_by_*() call.
+ *
+ * If this function pointer is set to NULL, the clock core will use a
+ * default implementation, which assumes #clock-cells = <1>, and that
+ * the DT cell contains a simple integer clock ID.
+ *
+ * At present, the clock API solely supports device-tree. If this
+ * changes, other xxx_xlate() functions may be added to support those
+ * other mechanisms.
+ *
+ * Return: 0 if OK, or a negative error code.
+ */
+int of_xlate(struct clk *clock, struct ofnode_phandle_args *args);
+
+/**
+ * request() - Request a translated clock.
+ * @clock:	The clock struct to request; this has been fille in by
+ *		a previoux xxx_xlate() function call, or by the caller
+ *		of clk_request().
+ *
+ * The clock core calls this function as the second step in
+ * implementing a client's clk_get_by_*() call, following a successful
+ * xxx_xlate() call, or as the only step in implementing a client's
+ * clk_request() call.
+ *
+ * Return: 0 if OK, or a negative error code.
+ */
+int request(struct clk *clock);
+
+/**
+ * rfree() - Free a previously requested clock.
+ * @clock:	The clock to free.
+ *
+ * This is the implementation of the client clk_free() API.
+ *
+ * Return: 0 if OK, or a negative error code.
+ */
+int rfree(struct clk *clock);
+
+/**
+ * round_rate() - Adjust a rate to the exact rate a clock can provide.
+ * @clk:	The clock to manipulate.
+ * @rate:	Desidered clock rate in Hz.
+ *
+ * Return: rounded rate in Hz, or -ve error code.
+ */
+ulong round_rate(struct clk *clk, ulong rate);
+
+/**
+ * get_rate() - Get current clock rate.
+ * @clk:	The clock to query.
+ *
+ * Return: clock rate in Hz, or -ve error code
+ */
+ulong get_rate(struct clk *clk);
+
+/**
+ * set_rate() - Set current clock rate.
+ * @clk:	The clock to manipulate.
+ * @rate:	New clock rate in Hz.
+ *
+ * Return: new rate, or -ve error code.
+ */
+ulong set_rate(struct clk *clk, ulong rate);
+
+/**
+ * set_parent() - Set current clock parent
+ * @clk:        The clock to manipulate.
+ * @parent:     New clock parent.
+ *
+ * Return: zero on success, or -ve error code.
+ */
+int set_parent(struct clk *clk, struct clk *parent);
+
+/**
+ * enable() - Enable a clock.
+ * @clk:	The clock to manipulate.
+ *
+ * Return: zero on success, or -ve error code.
+ */
+int enable(struct clk *clk);
+
+/**
+ * disable() - Disable a clock.
+ * @clk:	The clock to manipulate.
+ *
+ * Return: zero on success, or -ve error code.
+ */
+int disable(struct clk *clk);
+#endif
+
 #endif
