diff mbox series

[3/4] drm/amd/display: add doc entries for MPC blending configuration

Message ID 20220716222529.421115-4-mwen@igalia.com (mailing list archive)
State New, archived
Headers show
Series Documentation/amdgpu/display: describe color and blend mode properties mapping | expand

Commit Message

Melissa Wen July 16, 2022, 10:25 p.m. UTC
Describe structs and enums used to set blend mode properties to MPC
blocks. Some pieces of information are already available as code
comments, and were just formatted. Others were collected and summarised
from discusssions on AMD issue tracker[1][2].

[1] https://gitlab.freedesktop.org/drm/amd/-/issues/1734
[2] https://gitlab.freedesktop.org/drm/amd/-/issues/1769

Signed-off-by: Melissa Wen <mwen@igalia.com>
---
 drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h | 91 +++++++++++++++++----
 1 file changed, 77 insertions(+), 14 deletions(-)

Comments

Tales July 18, 2022, 1:25 a.m. UTC | #1
On 16/07/2022 19:25, Melissa Wen wrote:
> Describe structs and enums used to set blend mode properties to MPC
> blocks. Some pieces of information are already available as code
> comments, and were just formatted. Others were collected and summarised
> from discusssions on AMD issue tracker[1][2].

Typo in the commit message: discusssions -> discussions

> 
> [1] https://gitlab.freedesktop.org/drm/amd/-/issues/1734
> [2] https://gitlab.freedesktop.org/drm/amd/-/issues/1769
> 
> Signed-off-by: Melissa Wen <mwen@igalia.com>
> ---
>   drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h | 91 +++++++++++++++++----
>   1 file changed, 77 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> index 5097037e3962..cf28b841c42d 100644
> --- a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> +++ b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> @@ -22,6 +22,16 @@
>    *
>    */
>   
> +/**
> + * DOC: mpc-overview
> + *
> + * Multiple Pipe/Plane Combined (MPC) is a component in the hardware pipeline
> + * that performs blending of multiple planes, using global and per-pixel alpha.
> + * It also performs post-blending color correction operations according to the
> + * hardware capabilities, such as color transformation matrix and gamma 1D and
> + * 3D LUT.
> + */
> +
>   #ifndef __DC_MPCC_H__
>   #define __DC_MPCC_H__
>   
> @@ -48,14 +58,39 @@ enum mpcc_blend_mode {
>   	MPCC_BLEND_MODE_TOP_BOT_BLENDING
>   };
>   
> +/**
> + * enum mpcc_alpha_blend_mode - define the alpha blend mode regarding pixel
> + * alpha and plane alpha values
> + */
>   enum mpcc_alpha_blend_mode {
> +	/**
> +	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA: per pixel alpha using DPP
> +	 * alpha value
> +	 */
>   	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA,
> +	/**
> +	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN: per
> +	 * pixel alpha using DPP alpha value multiplied by a global gain (plane
> +	 * alpha)
> +	 */
>   	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN,
> +	/**
> +	 * @MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA: global alpha value, ignores
> +	 * pixel alpha and consider only plane alpha
> +	 */
>   	MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA
>   };
>   
> -/*
> - * MPCC blending configuration
> +/**
> + * struct mpcc_blnd_cfg - MPCC blending configuration
> + *
> + * @black_color: background color
> + * @alpha_mode: alpha blend mode (MPCC_ALPHA_BLND_MODE)
> + * @pre_multiplied_alpha: whether pixel color values were pre-multiplied by the
> + * alpha channel (MPCC_ALPHA_MULTIPLIED_MODE)
> + * @global_gain: used when blend mode considers both pixel alpha and plane
> + * alpha value and assumes the global alpha value.
> + * @global_alpha: plane alpha value

There's quite a few members missing definition. After reading the 4th 
patch may I conclude that they weren't relevant for what's being 
described about alpha blending?

./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'overlap_only' not described in 'mpcc_blnd_cfg'
./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'bottom_gain_mode' not described in 'mpcc_blnd_cfg'
./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'background_color_bpc' not described in 'mpcc_blnd_cfg'
./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'top_gain' not described in 'mpcc_blnd_cfg'
./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'bottom_inside_gain' not described in 'mpcc_blnd_cfg'
./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function 
parameter or member 'bottom_outside_gain' not described in 'mpcc_blnd_cfg'

>    */
>   struct mpcc_blnd_cfg {
>   	struct tg_color black_color;	/* background color */
> @@ -107,8 +142,15 @@ struct mpc_dwb_flow_control {
>   	int flow_ctrl_cnt1;
>   };
>   
> -/*
> - * MPCC connection and blending configuration for a single MPCC instance.
> +/**
> + * struct mpcc - MPCC connection and blending configuration for a single MPCC instance.

Might be worth writing the definition of the abbreviation, if not here, 
in the glossary... I couldn't find what the last "C" stands for, my 
guess would be "context". hehehe

> + * @mpcc_id: MPCC physical instance
> + * @dpp_id: DPP input to this MPCC
> + * @mpcc_bot: pointer to bottom layer MPCC. NULL when not connected.
> + * @blnd_cfg: the blending configuration for this MPCC
> + * @sm_cfg: stereo mix setting for this MPCC
> + * @shared_bottom: if MPCC output to both OPP and DWB endpoints, true. Othewise, false.

Typo Othewise -> Otherwise

> + *
>    * This struct is used as a node in an MPC tree.
>    */
>   struct mpcc {
> @@ -120,8 +162,12 @@ struct mpcc {
>   	bool shared_bottom;		/* TRUE if MPCC output to both OPP and DWB endpoints, else FALSE */
>   };
>   
> -/*
> - * MPC tree represents all MPCC connections for a pipe.
> +/**
> + * struct mpc_tree - MPC tree represents all MPCC connections for a pipe.
> + *
> + * @opp_id: the OPP instance that owns this MPC tree
> + * @opp_list: the top MPCC layer of the MPC tree that outputs to OPP endpoint
> + *
>    */
>   struct mpc_tree {
>   	int opp_id;			/* The OPP instance that owns this MPC tree */
> @@ -149,13 +195,18 @@ struct mpcc_state {
>   	uint32_t busy;
>   };
>   
> +/**
> + * struct mpc_funcs - funcs
> + */
>   struct mpc_funcs {
>   	void (*read_mpcc_state)(
>   			struct mpc *mpc,
>   			int mpcc_inst,
>   			struct mpcc_state *s);
>   
> -	/*
> +	/**
> +	 * @insert_plane:
> +	 *
>   	 * Insert DPP into MPC tree based on specified blending position.
>   	 * Only used for planes that are part of blending chain for OPP output
>   	 *
> @@ -180,7 +231,9 @@ struct mpc_funcs {
>   			int dpp_id,
>   			int mpcc_id);
>   
> -	/*
> +	/**
> +	 * @remove_mpcc:
> +	 *
>   	 * Remove a specified MPCC from the MPC tree.
>   	 *
>   	 * Parameters:
> @@ -195,7 +248,9 @@ struct mpc_funcs {
>   			struct mpc_tree *tree,
>   			struct mpcc *mpcc);
>   
> -	/*
> +	/**
> +	 * @mpc_init:
> +	 *
>   	 * Reset the MPCC HW status by disconnecting all muxes.
>   	 *
>   	 * Parameters:
> @@ -208,7 +263,9 @@ struct mpc_funcs {
>   			struct mpc *mpc,
>   			unsigned int mpcc_id);
>   
> -	/*
> +	/**
> +	 * @update_blending:
> +	 *
>   	 * Update the blending configuration for a specified MPCC.
>   	 *
>   	 * Parameters:
> @@ -223,7 +280,9 @@ struct mpc_funcs {
>   		struct mpcc_blnd_cfg *blnd_cfg,
>   		int mpcc_id);
>   
> -	/*
> +	/**
> +	 * @cursor_lock:
> +	 *
>   	 * Lock cursor updates for the specified OPP.
>   	 * OPP defines the set of MPCC that are locked together for cursor.
>   	 *
> @@ -239,8 +298,10 @@ struct mpc_funcs {
>   			int opp_id,
>   			bool lock);
>   
> -	/*
> -	 * Add DPP into 'secondary' MPC tree based on specified blending position.
> +	/**
> +	 * @insert_plane_to_secondary:
> +	 *
> +	 * Add DPP into secondary MPC tree based on specified blending position.
>   	 * Only used for planes that are part of blending chain for DWB output
>   	 *
>   	 * Parameters:
> @@ -264,7 +325,9 @@ struct mpc_funcs {
>   			int dpp_id,
>   			int mpcc_id);
>   
> -	/*
> +	/**
> +	 * @remove_mpcc_from_secondary:
> +	 *
>   	 * Remove a specified DPP from the 'secondary' MPC tree.
>   	 *
>   	 * Parameters:

Thanks for the patch,
Tales Aparecida
Melissa Wen July 20, 2022, 9:33 p.m. UTC | #2
On 07/17, Tales Lelo da Aparecida wrote:
> On 16/07/2022 19:25, Melissa Wen wrote:
> > Describe structs and enums used to set blend mode properties to MPC
> > blocks. Some pieces of information are already available as code
> > comments, and were just formatted. Others were collected and summarised
> > from discusssions on AMD issue tracker[1][2].
> 
> Typo in the commit message: discusssions -> discussions
> 
> > 
> > [1] https://gitlab.freedesktop.org/drm/amd/-/issues/1734
> > [2] https://gitlab.freedesktop.org/drm/amd/-/issues/1769
> > 
> > Signed-off-by: Melissa Wen <mwen@igalia.com>
> > ---
> >   drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h | 91 +++++++++++++++++----
> >   1 file changed, 77 insertions(+), 14 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> > index 5097037e3962..cf28b841c42d 100644
> > --- a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> > +++ b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
> > @@ -22,6 +22,16 @@
> >    *
> >    */
> > +/**
> > + * DOC: mpc-overview
> > + *
> > + * Multiple Pipe/Plane Combined (MPC) is a component in the hardware pipeline
> > + * that performs blending of multiple planes, using global and per-pixel alpha.
> > + * It also performs post-blending color correction operations according to the
> > + * hardware capabilities, such as color transformation matrix and gamma 1D and
> > + * 3D LUT.
> > + */
> > +
> >   #ifndef __DC_MPCC_H__
> >   #define __DC_MPCC_H__
> > @@ -48,14 +58,39 @@ enum mpcc_blend_mode {
> >   	MPCC_BLEND_MODE_TOP_BOT_BLENDING
> >   };
> > +/**
> > + * enum mpcc_alpha_blend_mode - define the alpha blend mode regarding pixel
> > + * alpha and plane alpha values
> > + */
> >   enum mpcc_alpha_blend_mode {
> > +	/**
> > +	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA: per pixel alpha using DPP
> > +	 * alpha value
> > +	 */
> >   	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA,
> > +	/**
> > +	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN: per
> > +	 * pixel alpha using DPP alpha value multiplied by a global gain (plane
> > +	 * alpha)
> > +	 */
> >   	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN,
> > +	/**
> > +	 * @MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA: global alpha value, ignores
> > +	 * pixel alpha and consider only plane alpha
> > +	 */
> >   	MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA
> >   };
> > -/*
> > - * MPCC blending configuration
> > +/**
> > + * struct mpcc_blnd_cfg - MPCC blending configuration
> > + *
> > + * @black_color: background color
> > + * @alpha_mode: alpha blend mode (MPCC_ALPHA_BLND_MODE)
> > + * @pre_multiplied_alpha: whether pixel color values were pre-multiplied by the
> > + * alpha channel (MPCC_ALPHA_MULTIPLIED_MODE)
> > + * @global_gain: used when blend mode considers both pixel alpha and plane
> > + * alpha value and assumes the global alpha value.
> > + * @global_alpha: plane alpha value
> 
> There's quite a few members missing definition. After reading the 4th patch
> may I conclude that they weren't relevant for what's being described about
> alpha blending?

Hi Tales,

although they aren't changed for DRM blend modes programming, it would
be nice if someone can describe them and also avoid those warnings. I
wasn't able to identify how they behave for MPC programming (hope
someone from AMD can help on documenting them).

> 
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'overlap_only' not described in 'mpcc_blnd_cfg'
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'bottom_gain_mode' not described in 'mpcc_blnd_cfg'
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'background_color_bpc' not described in 'mpcc_blnd_cfg'
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'top_gain' not described in 'mpcc_blnd_cfg'
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'bottom_inside_gain' not described in 'mpcc_blnd_cfg'
> ./drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h:109: warning: Function
> parameter or member 'bottom_outside_gain' not described in 'mpcc_blnd_cfg'
> 
> >    */
> >   struct mpcc_blnd_cfg {
> >   	struct tg_color black_color;	/* background color */
> > @@ -107,8 +142,15 @@ struct mpc_dwb_flow_control {
> >   	int flow_ctrl_cnt1;
> >   };
> > -/*
> > - * MPCC connection and blending configuration for a single MPCC instance.
> > +/**
> > + * struct mpcc - MPCC connection and blending configuration for a single MPCC instance.
> 
> Might be worth writing the definition of the abbreviation, if not here, in
> the glossary... I couldn't find what the last "C" stands for, my guess would
> be "context". hehehe
> 
> > + * @mpcc_id: MPCC physical instance
> > + * @dpp_id: DPP input to this MPCC
> > + * @mpcc_bot: pointer to bottom layer MPCC. NULL when not connected.
> > + * @blnd_cfg: the blending configuration for this MPCC
> > + * @sm_cfg: stereo mix setting for this MPCC
> > + * @shared_bottom: if MPCC output to both OPP and DWB endpoints, true. Othewise, false.
> 
> Typo Othewise -> Otherwise
> 
> > + *
> >    * This struct is used as a node in an MPC tree.
> >    */
> >   struct mpcc {
> > @@ -120,8 +162,12 @@ struct mpcc {
> >   	bool shared_bottom;		/* TRUE if MPCC output to both OPP and DWB endpoints, else FALSE */
> >   };
> > -/*
> > - * MPC tree represents all MPCC connections for a pipe.
> > +/**
> > + * struct mpc_tree - MPC tree represents all MPCC connections for a pipe.
> > + *
> > + * @opp_id: the OPP instance that owns this MPC tree
> > + * @opp_list: the top MPCC layer of the MPC tree that outputs to OPP endpoint
> > + *
> >    */
> >   struct mpc_tree {
> >   	int opp_id;			/* The OPP instance that owns this MPC tree */
> > @@ -149,13 +195,18 @@ struct mpcc_state {
> >   	uint32_t busy;
> >   };
> > +/**
> > + * struct mpc_funcs - funcs
> > + */
> >   struct mpc_funcs {
> >   	void (*read_mpcc_state)(
> >   			struct mpc *mpc,
> >   			int mpcc_inst,
> >   			struct mpcc_state *s);
> > -	/*
> > +	/**
> > +	 * @insert_plane:
> > +	 *
> >   	 * Insert DPP into MPC tree based on specified blending position.
> >   	 * Only used for planes that are part of blending chain for OPP output
> >   	 *
> > @@ -180,7 +231,9 @@ struct mpc_funcs {
> >   			int dpp_id,
> >   			int mpcc_id);
> > -	/*
> > +	/**
> > +	 * @remove_mpcc:
> > +	 *
> >   	 * Remove a specified MPCC from the MPC tree.
> >   	 *
> >   	 * Parameters:
> > @@ -195,7 +248,9 @@ struct mpc_funcs {
> >   			struct mpc_tree *tree,
> >   			struct mpcc *mpcc);
> > -	/*
> > +	/**
> > +	 * @mpc_init:
> > +	 *
> >   	 * Reset the MPCC HW status by disconnecting all muxes.
> >   	 *
> >   	 * Parameters:
> > @@ -208,7 +263,9 @@ struct mpc_funcs {
> >   			struct mpc *mpc,
> >   			unsigned int mpcc_id);
> > -	/*
> > +	/**
> > +	 * @update_blending:
> > +	 *
> >   	 * Update the blending configuration for a specified MPCC.
> >   	 *
> >   	 * Parameters:
> > @@ -223,7 +280,9 @@ struct mpc_funcs {
> >   		struct mpcc_blnd_cfg *blnd_cfg,
> >   		int mpcc_id);
> > -	/*
> > +	/**
> > +	 * @cursor_lock:
> > +	 *
> >   	 * Lock cursor updates for the specified OPP.
> >   	 * OPP defines the set of MPCC that are locked together for cursor.
> >   	 *
> > @@ -239,8 +298,10 @@ struct mpc_funcs {
> >   			int opp_id,
> >   			bool lock);
> > -	/*
> > -	 * Add DPP into 'secondary' MPC tree based on specified blending position.
> > +	/**
> > +	 * @insert_plane_to_secondary:
> > +	 *
> > +	 * Add DPP into secondary MPC tree based on specified blending position.
> >   	 * Only used for planes that are part of blending chain for DWB output
> >   	 *
> >   	 * Parameters:
> > @@ -264,7 +325,9 @@ struct mpc_funcs {
> >   			int dpp_id,
> >   			int mpcc_id);
> > -	/*
> > +	/**
> > +	 * @remove_mpcc_from_secondary:
> > +	 *
> >   	 * Remove a specified DPP from the 'secondary' MPC tree.
> >   	 *
> >   	 * Parameters:
> 
> Thanks for the patch,
> Tales Aparecida

Thanks for reviewing them. I'll address your suggestions in the next
version.

Melissa
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
index 5097037e3962..cf28b841c42d 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h
@@ -22,6 +22,16 @@ 
  *
  */
 
+/**
+ * DOC: mpc-overview
+ *
+ * Multiple Pipe/Plane Combined (MPC) is a component in the hardware pipeline
+ * that performs blending of multiple planes, using global and per-pixel alpha.
+ * It also performs post-blending color correction operations according to the
+ * hardware capabilities, such as color transformation matrix and gamma 1D and
+ * 3D LUT.
+ */
+
 #ifndef __DC_MPCC_H__
 #define __DC_MPCC_H__
 
@@ -48,14 +58,39 @@  enum mpcc_blend_mode {
 	MPCC_BLEND_MODE_TOP_BOT_BLENDING
 };
 
+/**
+ * enum mpcc_alpha_blend_mode - define the alpha blend mode regarding pixel
+ * alpha and plane alpha values
+ */
 enum mpcc_alpha_blend_mode {
+	/**
+	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA: per pixel alpha using DPP
+	 * alpha value
+	 */
 	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA,
+	/**
+	 * @MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN: per
+	 * pixel alpha using DPP alpha value multiplied by a global gain (plane
+	 * alpha)
+	 */
 	MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN,
+	/**
+	 * @MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA: global alpha value, ignores
+	 * pixel alpha and consider only plane alpha
+	 */
 	MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA
 };
 
-/*
- * MPCC blending configuration
+/**
+ * struct mpcc_blnd_cfg - MPCC blending configuration
+ *
+ * @black_color: background color
+ * @alpha_mode: alpha blend mode (MPCC_ALPHA_BLND_MODE)
+ * @pre_multiplied_alpha: whether pixel color values were pre-multiplied by the
+ * alpha channel (MPCC_ALPHA_MULTIPLIED_MODE)
+ * @global_gain: used when blend mode considers both pixel alpha and plane
+ * alpha value and assumes the global alpha value.
+ * @global_alpha: plane alpha value
  */
 struct mpcc_blnd_cfg {
 	struct tg_color black_color;	/* background color */
@@ -107,8 +142,15 @@  struct mpc_dwb_flow_control {
 	int flow_ctrl_cnt1;
 };
 
-/*
- * MPCC connection and blending configuration for a single MPCC instance.
+/**
+ * struct mpcc - MPCC connection and blending configuration for a single MPCC instance.
+ * @mpcc_id: MPCC physical instance
+ * @dpp_id: DPP input to this MPCC
+ * @mpcc_bot: pointer to bottom layer MPCC. NULL when not connected.
+ * @blnd_cfg: the blending configuration for this MPCC
+ * @sm_cfg: stereo mix setting for this MPCC
+ * @shared_bottom: if MPCC output to both OPP and DWB endpoints, true. Othewise, false.
+ *
  * This struct is used as a node in an MPC tree.
  */
 struct mpcc {
@@ -120,8 +162,12 @@  struct mpcc {
 	bool shared_bottom;		/* TRUE if MPCC output to both OPP and DWB endpoints, else FALSE */
 };
 
-/*
- * MPC tree represents all MPCC connections for a pipe.
+/**
+ * struct mpc_tree - MPC tree represents all MPCC connections for a pipe.
+ *
+ * @opp_id: the OPP instance that owns this MPC tree
+ * @opp_list: the top MPCC layer of the MPC tree that outputs to OPP endpoint
+ *
  */
 struct mpc_tree {
 	int opp_id;			/* The OPP instance that owns this MPC tree */
@@ -149,13 +195,18 @@  struct mpcc_state {
 	uint32_t busy;
 };
 
+/**
+ * struct mpc_funcs - funcs
+ */
 struct mpc_funcs {
 	void (*read_mpcc_state)(
 			struct mpc *mpc,
 			int mpcc_inst,
 			struct mpcc_state *s);
 
-	/*
+	/**
+	 * @insert_plane:
+	 *
 	 * Insert DPP into MPC tree based on specified blending position.
 	 * Only used for planes that are part of blending chain for OPP output
 	 *
@@ -180,7 +231,9 @@  struct mpc_funcs {
 			int dpp_id,
 			int mpcc_id);
 
-	/*
+	/**
+	 * @remove_mpcc:
+	 *
 	 * Remove a specified MPCC from the MPC tree.
 	 *
 	 * Parameters:
@@ -195,7 +248,9 @@  struct mpc_funcs {
 			struct mpc_tree *tree,
 			struct mpcc *mpcc);
 
-	/*
+	/**
+	 * @mpc_init:
+	 *
 	 * Reset the MPCC HW status by disconnecting all muxes.
 	 *
 	 * Parameters:
@@ -208,7 +263,9 @@  struct mpc_funcs {
 			struct mpc *mpc,
 			unsigned int mpcc_id);
 
-	/*
+	/**
+	 * @update_blending:
+	 *
 	 * Update the blending configuration for a specified MPCC.
 	 *
 	 * Parameters:
@@ -223,7 +280,9 @@  struct mpc_funcs {
 		struct mpcc_blnd_cfg *blnd_cfg,
 		int mpcc_id);
 
-	/*
+	/**
+	 * @cursor_lock:
+	 *
 	 * Lock cursor updates for the specified OPP.
 	 * OPP defines the set of MPCC that are locked together for cursor.
 	 *
@@ -239,8 +298,10 @@  struct mpc_funcs {
 			int opp_id,
 			bool lock);
 
-	/*
-	 * Add DPP into 'secondary' MPC tree based on specified blending position.
+	/**
+	 * @insert_plane_to_secondary:
+	 *
+	 * Add DPP into secondary MPC tree based on specified blending position.
 	 * Only used for planes that are part of blending chain for DWB output
 	 *
 	 * Parameters:
@@ -264,7 +325,9 @@  struct mpc_funcs {
 			int dpp_id,
 			int mpcc_id);
 
-	/*
+	/**
+	 * @remove_mpcc_from_secondary:
+	 *
 	 * Remove a specified DPP from the 'secondary' MPC tree.
 	 *
 	 * Parameters: