drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_cdm.h
Extension
.h
Size
3746 bytes
Lines
135
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct dpu_hw_cdm_cfg {
	u32 output_width;
	u32 output_height;
	u32 output_bit_depth;
	u32 h_cdwn_type;
	u32 v_cdwn_type;
	const struct msm_format *output_fmt;
	const struct dpu_csc_cfg *csc_cfg;
	u32 output_type;
	int pp_id;
};

/*
 * These values are used indicate which type of downsample is used
 * in the horizontal/vertical direction for the CDM block.
 */
enum dpu_hw_cdwn_type {
	CDM_CDWN_DISABLE,
	CDM_CDWN_PIXEL_DROP,
	CDM_CDWN_AVG,
	CDM_CDWN_COSITE,
	CDM_CDWN_OFFSITE,
};

/*
 * CDM block can be paired with WB or HDMI block. These values match
 * the input with which the CDM block is paired.
 */
enum dpu_hw_cdwn_output_type {
	CDM_CDWN_OUTPUT_HDMI,
	CDM_CDWN_OUTPUT_WB,
};

/*
 * CDM block can give an 8-bit or 10-bit output. These values
 * are used to indicate the output bit depth of CDM block
 */
enum dpu_hw_cdwn_output_bit_depth {
	CDM_CDWN_OUTPUT_8BIT,
	CDM_CDWN_OUTPUT_10BIT,
};

/*
 * CDM block can downsample using different methods. These values
 * are used to indicate the downsample method which can be used
 * either in the horizontal or vertical direction.
 */
enum dpu_hw_cdwn_op_mode_method_h_v {
	CDM_CDWN2_METHOD_PIXEL_DROP,
	CDM_CDWN2_METHOD_AVG,
	CDM_CDWN2_METHOD_COSITE,
	CDM_CDWN2_METHOD_OFFSITE
};

/**
 * struct dpu_hw_cdm_ops : Interface to the chroma down Hw driver functions
 *                         Assumption is these functions will be called after
 *                         clocks are enabled
 *  @enable:               Enables the output to interface and programs the
 *                         output packer
 *  @bind_pingpong_blk:    enable/disable the connection with pingpong which
 *                         will feed pixels to this cdm
 */
struct dpu_hw_cdm_ops {
	/**
	 * @enable: Enable the CDM module
	 * @cdm         Pointer to chroma down context
	 */
	int (*enable)(struct dpu_hw_cdm *cdm, struct dpu_hw_cdm_cfg *cfg);

	/**
	 * @bind_pingpong_blk: Enable/disable the connection with pingpong
	 * @cdm         Pointer to chroma down context
	 * @pp          pingpong block id.
	 */
	void (*bind_pingpong_blk)(struct dpu_hw_cdm *cdm, const enum dpu_pingpong pp);
};

/**
 * struct dpu_hw_cdm - cdm description
 * @base: Hardware block base structure
 * @hw: Block hardware details
 * @idx: CDM index
 * @caps: Pointer to cdm_cfg
 * @ops: handle to operations possible for this CDM
 */
struct dpu_hw_cdm {
	struct dpu_hw_blk base;
	struct dpu_hw_blk_reg_map hw;

Annotation

Implementation Notes