API GUIDE / DPU / LL

G32S10 DPU LL 接口

LL 层接口:LL 接口均为 static inline,直接访问 DPU 具名寄存器,不执行实例、地址对齐、字段范围或硬件状态校验。

1. LL 接口规范

LL 接口均为 static inline,直接访问 DPU 具名寄存器,不执行实例、地址对齐、字段范围或硬件状态校验。除 ll_dpu_is_instance() 外,调用者必须保证 dpux 为 DPU。

描述符内存布局由 HAL 内部实现管理,不作为 LL 公开接口。

1.0.1 ll_dpu_is_instance

static inline bool ll_dpu_is_instance(const dpu_regs_t *dpux);

功能说明:访问对应寄存器字段。

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
bool函数计算结果或对应寄存器字段的读取值。

1.0.2 ll_dpu_set_frame_desc_addr

static inline void ll_dpu_set_frame_desc_addr(dpu_regs_t *dpux, uintptr_t addr);

功能说明:FRM_CFG_ADDR (0x0000).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
addruintptr_t输入Frame descriptor chain address (8-byte aligned).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.3 ll_dpu_start_frame_desc_dma

static inline void ll_dpu_start_frame_desc_dma(dpu_regs_t *dpux);

功能说明:FRM_CFG_CTRL (0x0004) -- start DMA.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.4 ll_dpu_quick_stop

static inline void ll_dpu_quick_stop(dpu_regs_t *dpux);

功能说明:CTRL (0x2000) -- quick stop.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.5 ll_dpu_general_stop

static inline void ll_dpu_general_stop(dpu_regs_t *dpux);

功能说明:CTRL (0x2000) -- general stop.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.6 ll_dpu_reset_descriptor_counter

static inline void ll_dpu_reset_descriptor_counter(dpu_regs_t *dpux);

功能说明:CTRL (0x2000) -- reset descriptor counter.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.7 ll_dpu_get_status

static inline uint32_t ll_dpu_get_status(const dpu_regs_t *dpux);

功能说明:DC_ST (0x2004).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.8 ll_dpu_clear_irq_status

static inline void ll_dpu_clear_irq_status(dpu_regs_t *dpux, uint32_t mask);

功能说明:DC_CSR (0x2008) -- Clear interrupt status bits.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
maskuint32_t输入DPU_STATUS_*_MASK bitmask of interrupt bits to clear.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.9 ll_dpu_set_irq_mask

static inline void ll_dpu_set_irq_mask(dpu_regs_t *dpux, uint32_t mask);

功能说明:DC_DPU_INTC (0x200C).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
maskuint32_t输入DPU_STATUS_*_MASK bitmask of interrupts to enable.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.10 ll_dpu_get_irq_mask

static inline uint32_t ll_dpu_get_irq_mask(const dpu_regs_t *dpux);

功能说明:DC_DPU_INTC (0x200C).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.11 ll_dpu_get_irq_flags

static inline uint32_t ll_dpu_get_irq_flags(const dpu_regs_t *dpux);

功能说明:DC_INTC (0x2010).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.12 ll_dpu_set_burst_len

static inline void ll_dpu_set_burst_len(dpu_regs_t *dpux, uint32_t burst_len_encoding);

功能说明:COMMON_CONFIG (0x2014) -- BDMA burst length.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
burst_len_encodinguint32_t输入BURST_LEN_BDMA: 0=4, 1=8, 2=16, 3=32 beats.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.13 ll_dpu_enable_layer0_clock_gate

static inline void ll_dpu_enable_layer0_clock_gate(dpu_regs_t *dpux, bool enable);

功能说明:COMMON_CONFIG (0x2014) -- layer0 clock gate.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
enablebool输入LAYER0_CLKGATE_EN: true=gate off layer0 processing clock.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.14 ll_dpu_enable_direct_mode

static inline void ll_dpu_enable_direct_mode(dpu_regs_t *dpux, bool enable);

功能说明:COMMON_CONFIG (0x2014) -- direct mode.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
enablebool输入DIRECT_MODE: true=bypass frame descriptors, use direct registers.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.15 ll_dpu_pack_size

static inline uint32_t ll_dpu_pack_size(uint16_t width, uint16_t height);

功能说明:Pack width/height into SIZE register format.

参数表:

参数类型方向说明
widthuint16_t输入Pixel count (0-4095, maps to lower 12 bits).
heightuint16_t输入Pixel count (0-4095, maps to upper 12 bits).

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.16 ll_dpu_set_direct_frame_size

static inline void ll_dpu_set_direct_frame_size(dpu_regs_t *dpux, uint16_t width, uint16_t height);

功能说明:DIRECT_FRAME_SIZE (0x2118).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
widthuint16_t输入Frame width in pixels (0-4095).
heightuint16_t输入Frame height in pixels (0-4095).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.17 ll_dpu_set_direct_layer_size

static inline void ll_dpu_set_direct_layer_size(dpu_regs_t *dpux, uint16_t width, uint16_t height);

功能说明:DIRECT_LAYER_SIZE (0x211C).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
widthuint16_t输入Layer width in pixels (0-4095).
heightuint16_t输入Layer height in pixels (0-4095).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.18 ll_dpu_set_direct_layer_pos

static inline void ll_dpu_set_direct_layer_pos(dpu_regs_t *dpux, uint16_t x, uint16_t y);

功能说明:DIRECT_LAYER_POS (0x2120).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
xuint16_t输入Horizontal offset in pixels (0-4095).
yuint16_t输入Vertical offset in pixels (0-4095).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.19 ll_dpu_trigger_soft_reset

static inline void ll_dpu_trigger_soft_reset(dpu_regs_t *dpux);

功能说明:SOFT_RESET (0x2124).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.20 ll_dpu_get_soft_reset_done

static inline bool ll_dpu_get_soft_reset_done(const dpu_regs_t *dpux);

功能说明:SOFT_RESET_FLAG (0x2128).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
bool函数计算结果或对应寄存器字段的读取值。

1.0.21 ll_dpu_clear_soft_reset_flag

static inline void ll_dpu_clear_soft_reset_flag(dpu_regs_t *dpux);

功能说明:SOFT_RESET_FLAG (0x2128).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.22 ll_dpu_set_reg_cfg_end

static inline void ll_dpu_set_reg_cfg_end(dpu_regs_t *dpux);

功能说明:REG_CFG_END (0x2224).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.23 ll_dpu_set_csc_mult_yrv

static inline void ll_dpu_set_csc_mult_yrv(dpu_regs_t *dpux, uint32_t mult_y, uint32_t mult_rv);

功能说明:CSC_MULT_YRV (0x3200) -- Set Y and RV multiplication coefficients.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
mult_yuint32_t输入Y coefficient (S2.9, bits 26:16).
mult_rvuint32_t输入RV coefficient (S1.9, bits 10:0).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.24 ll_dpu_set_csc_mult_gugv

static inline void ll_dpu_set_csc_mult_gugv(dpu_regs_t *dpux, uint32_t mult_gv, uint32_t mult_gu);

功能说明:CSC_MULT_GUGV (0x3204) -- Set GU and GV multiplication coefficients.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
mult_gvuint32_t输入GV coefficient (S2.8, bits 25:16).
mult_guuint32_t输入GU coefficient (U1.8, bits 8:0).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.25 ll_dpu_set_csc_mult_bu

static inline void ll_dpu_set_csc_mult_bu(dpu_regs_t *dpux, uint32_t mult_bu);

功能说明:CSC_MULT_BU (0x3208) -- Set BU multiplication coefficient.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
mult_buuint32_t输入BU coefficient (U2.10, bits 11:0).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.26 ll_dpu_set_csc_sub_yuv

static inline void ll_dpu_set_csc_sub_yuv(dpu_regs_t *dpux, uint32_t sub_uv, uint32_t sub_y);

功能说明:CSC_SUB_YUV (0x320C) -- Set Y and UV subtraction coefficients.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
sub_uvuint32_t输入UV subtraction (U0.8, bits 23:16).
sub_yuint32_t输入Y subtraction (U0.5, bits 4:0).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.27 ll_dpu_set_display_interface

static inline void ll_dpu_set_display_interface(dpu_regs_t *dpux, uint32_t interface_value);

功能说明:DISPLAY_COMMON (0x8000) -- IF_SEL.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
interface_valueuint32_t输入IF_SEL: 1=TFT, 2=SLCD.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.28 ll_dpu_pack_tft_timing

static inline uint32_t ll_dpu_pack_tft_timing(uint16_t start, uint16_t end);

功能说明:Pack start/end into TFT_TIMING register format.

参数表:

参数类型方向说明
startuint16_t输入Pixel clock cycle position (0-65535).
enduint16_t输入Pixel clock cycle position (0-65535).

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.29 ll_dpu_config_tft_hsync

static inline void ll_dpu_config_tft_hsync(dpu_regs_t *dpux, uint16_t start, uint16_t end);

功能说明:TFT_HSYNC (0x9000).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
startuint16_t输入Pixel clock cycle position (0-65535).
enduint16_t输入Pixel clock cycle position (0-65535).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.30 ll_dpu_config_tft_vsync

static inline void ll_dpu_config_tft_vsync(dpu_regs_t *dpux, uint16_t start, uint16_t end);

功能说明:TFT_VSYNC (0x9004).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
startuint16_t输入Pixel clock cycle position (0-65535).
enduint16_t输入Pixel clock cycle position (0-65535).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.31 ll_dpu_config_tft_hde

static inline void ll_dpu_config_tft_hde(dpu_regs_t *dpux, uint16_t start, uint16_t end);

功能说明:TFT_HDE (0x9008).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
startuint16_t输入Pixel clock cycle position (0-65535).
enduint16_t输入Pixel clock cycle position (0-65535).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.32 ll_dpu_config_tft_vde

static inline void ll_dpu_config_tft_vde(dpu_regs_t *dpux, uint16_t start, uint16_t end);

功能说明:TFT_VDE (0x900C).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
startuint16_t输入Pixel clock cycle position (0-65535).
enduint16_t输入Pixel clock cycle position (0-65535).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.33 ll_dpu_write_tft_cfg

static inline void ll_dpu_write_tft_cfg(dpu_regs_t *dpux, uint32_t value);

功能说明:TFT_CONFIG (0x9010).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
valueuint32_t输入Pre-composed TFT_CONFIG register value.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.34 ll_dpu_write_slcd_cfg

static inline void ll_dpu_write_slcd_cfg(dpu_regs_t *dpux, uint32_t value);

功能说明:SLCD_CONFIG (0xA000).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
valueuint32_t输入Pre-composed SLCD_CONFIG register value.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.35 ll_dpu_read_slcd_cfg

static inline uint32_t ll_dpu_read_slcd_cfg(const dpu_regs_t *dpux);

功能说明:Read SLCD_CONFIG (0xA000).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
uint32_t函数计算结果或对应寄存器字段的读取值。

1.0.36 ll_dpu_write_slcd_wr_duty

static inline void ll_dpu_write_slcd_wr_duty(dpu_regs_t *dpux, uint32_t value);

功能说明:SLCD_WR_DUTY (0xA004).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
valueuint32_t输入Pre-composed SLCD_WR_DUTY register value.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.37 ll_dpu_write_slcd_timing

static inline void ll_dpu_write_slcd_timing(dpu_regs_t *dpux, uint32_t value);

功能说明:SLCD_TIMING (0xA008).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
valueuint32_t输入Pre-composed SLCD_TIMING register value.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.38 ll_dpu_set_slcd_frame_size

static inline void ll_dpu_set_slcd_frame_size(dpu_regs_t *dpux, uint16_t width, uint16_t height);

功能说明:SLCD_FRAME_SIZE (0xA00C).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
widthuint16_t输入Frame width in pixels (0-4095).
heightuint16_t输入Frame height in pixels (0-4095).

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.39 ll_dpu_write_slcd_slow_time

static inline void ll_dpu_write_slcd_slow_time(dpu_regs_t *dpux, uint16_t slow_time);

功能说明:SLCD_SLOW_TIME (0xA010).

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
slow_timeuint16_t输入Pre-composed SLCD_SLOW_TIME register value.

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.40 ll_dpu_write_slcd_reg_if

static inline void ll_dpu_write_slcd_reg_if(dpu_regs_t *dpux, uint32_t value);

功能说明:SLCD_REG_IF (0xA014) -- write raw register interface value.

参数表:

参数类型方向说明
dpuxdpu_regs_t *输入DPU 寄存器实例;必须为 DPU。
valueuint32_t输入Full 32-bit value including FLAG[31:30], CMD_END[29], CONTENT[23:0].

返回值表:

返回值说明
无void 接口,直接执行寄存器写操作。

1.0.41 ll_dpu_is_slcd_busy

static inline bool ll_dpu_is_slcd_busy(const dpu_regs_t *dpux);

功能说明:SLCD_STATUS (0xA018).

参数表:

参数类型方向说明
dpuxconst dpu_regs_t *输入DPU 寄存器实例;必须为 DPU。

返回值表:

返回值说明
bool函数计算结果或对应寄存器字段的读取值。

1.0.42 ll_dpu_clear_reg_cfg_end

static inline void ll_dpu_clear_reg_cfg_end(dpu_regs_t *dpux);

功能说明:REG_CFG_END (0x2224) -- hold direct-mode register writes.

参数表:

参数 类型 方向 说明
dpux dpu_regs_t * 输入 DPU 寄存器实例;必须为 DPU。

返回值表:

返回值 说明
无 void 接口,直接执行寄存器写操作。