STRUCT DMUB_CURSOR_OFFLOAD_PIPE_DATA_DCN401_V1(9)
π struct dmub_cursor_offload_pipe_data_dcn401_v1(9) π
okay bestie, so this page lives in the Kernel API Manual, section 9, and the header up top is literally just truncating the name to struct dmub_...ta_dcn401_v1(9) β the real, full, un-cut name is struct dmub_cursor_offload_pipe_data_dcn401_v1, and honestly? iconic of the manpage renderer to give up halfway. anyway, this is the DCN401 per-pipe cursor data struct and we're gonna go through it field by field. no skipping. π
β¨ NAME β¨
struct dmub_cursor_offload_pipe_data_dcn401_v1 β DCN401 per pipe data.
that's it, that's the whole vibe. it's per-pipe data, for DCN401, about cursors, offloaded. π¦
πΈ SYNOPSIS πΈ
here's the whole struct, copied exactly, don't touch anything:
struct dmub_cursor_offload_pipe_data_dcn401_v1 {
uint32_t CURSOR0_0_CURSOR_SURFACE_ADDRESS;
uint32_t CURSOR0_0_CURSOR_SURFACE_ADDRESS_HIGH;
uint32_t CURSOR0_0_CURSOR_SIZE__CURSOR_WIDTH : 16;
uint32_t CURSOR0_0_CURSOR_SIZE__CURSOR_HEIGHT : 16;
uint32_t CURSOR0_0_CURSOR_POSITION__CURSOR_X_POSITION : 16;
uint32_t CURSOR0_0_CURSOR_POSITION__CURSOR_Y_POSITION : 16;
uint32_t CURSOR0_0_CURSOR_HOT_SPOT__CURSOR_HOT_SPOT_X : 16;
uint32_t CURSOR0_0_CURSOR_HOT_SPOT__CURSOR_HOT_SPOT_Y : 16;
uint32_t CURSOR0_0_CURSOR_DST_OFFSET__CURSOR_DST_X_OFFSET : 13;
uint32_t CURSOR0_0_CURSOR_CONTROL__CURSOR_ENABLE : 1;
uint32_t CURSOR0_0_CURSOR_CONTROL__CURSOR_MODE : 3;
uint32_t CURSOR0_0_CURSOR_CONTROL__CURSOR_2X_MAGNIFY : 1;
uint32_t CURSOR0_0_CURSOR_CONTROL__CURSOR_PITCH : 2;
uint32_t CURSOR0_0_CURSOR_CONTROL__CURSOR_LINES_PER_CHUNK : 5;
uint32_t reserved0[4];
uint32_t CM_CUR0_CURSOR0_CONTROL__CUR0_ENABLE : 1;
uint32_t CM_CUR0_CURSOR0_CONTROL__CUR0_MODE : 3;
uint32_t CM_CUR0_CURSOR0_CONTROL__CUR0_EXPANSION_MODE : 1;
uint32_t CM_CUR0_CURSOR0_CONTROL__CUR0_ROM_EN : 1;
uint32_t CM_CUR0_CURSOR0_COLOR0__CUR0_COLOR0 : 24;
uint32_t CM_CUR0_CURSOR0_COLOR1__CUR0_COLOR1 : 24;
uint32_t CM_CUR0_CURSOR0_FP_SCALE_BIAS_G_Y__CUR0_FP_BIAS_G_Y : 16;
uint32_t CM_CUR0_CURSOR0_FP_SCALE_BIAS_G_Y__CUR0_FP_SCALE_G_Y, : 16;
uint32_t CM_CUR0_CURSOR0_FP_SCALE_BIAS_RB_CRCB__CUR0_FP_BIAS_RB_CRCB
: 16;
uint32_t
CM_CUR0_CURSOR0_FP_SCALE_BIAS_RB_CRCB__CUR0_FP_SCALE_RB_CRCB : 16;
uint32_t reserved1[4];
uint32_t HUBPREQ0_CURSOR_SETTINGS__CURSOR0_DST_Y_OFFSET : 8;
uint32_t HUBPREQ0_CURSOR_SETTINGS__CURSOR0_CHUNK_HDL_ADJUST : 8;
uint32_t HUBP0_DCHUBP_MALL_CONFIG__USE_MALL_FOR_CURSOR : 1;
uint32_t reserved2[3];
};
π«Ά quick heads up bestie: thatCM_CUR0_CURSOR0_FP_SCALE_BIAS_G_Y__CUR0_FP_SCALE_G_Y,line really does have a comma sitting there right before the: 16. that's how it's written in the source. not a typo on my end, i promise. copy it verbatim or the vibe check fails. π
also worth clocking: CURSOR0_0_CURSOR_DST_OFFSET__CURSOR_DST_X_OFFSET is a : 13 bitfield, CURSOR0_0_CURSOR_CONTROL__CURSOR_LINES_PER_CHUNK is : 5, the two CM_CUR0_CURSOR0_COLOR0/COLOR1 fields are : 24 each, and the HUBPREQ0_CURSOR_SETTINGS pair is : 8 each. the rest of the small ones are : 1, : 3, : 2, : 16 as shown. there are three reserved arrays β reserved0[4], reserved1[4], reserved2[3] β and yes, reserved2 is only 3. noted. π
π DESCRIPTION π
lowkey this struct is the whole per-pipe cursor-offload bundle for DCN401, and it's giving organized. it's split into distinct little neighborhoods:
- the
CURSOR0_0_*block β the actual cursor hardware registers as the DMUB firmware sees them:CURSOR0_0_CURSOR_SURFACE_ADDRESSandCURSOR0_0_CURSOR_SURFACE_ADDRESS_HIGH(the address, split across two 32-bit fields, because of course), then the packed size, position, hot spot, dst offset and control fields, all carved into bitfields with names likeCURSOR0_0_CURSOR_SIZE__CURSOR_WIDTHandCURSOR0_0_CURSOR_CONTROL__CURSOR_ENABLE. after that comesreserved0[4]to keep everything lined up. β¨ - the
CM_CUR0_CURSOR0_*block β the color-manager side of the same cursor: control bits (CM_CUR0_CURSOR0_CONTROL__CUR0_ENABLE,CUR0_MODE,CUR0_EXPANSION_MODE,CUR0_ROM_EN), two 24-bit color fieldsCM_CUR0_CURSOR0_COLOR0__CUR0_COLOR0andCM_CUR0_CURSOR0_COLOR1__CUR0_COLOR1, and the floating-point scale/bias fieldsCM_CUR0_CURSOR0_FP_SCALE_BIAS_G_Y__CUR0_FP_BIAS_G_Y,CM_CUR0_CURSOR0_FP_SCALE_BIAS_G_Y__CUR0_FP_SCALE_G_Y,CM_CUR0_CURSOR0_FP_SCALE_BIAS_RB_CRCB__CUR0_FP_BIAS_RB_CRCBandCM_CUR0_CURSOR0_FP_SCALE_BIAS_RB_CRCB__CUR0_FP_SCALE_RB_CRCB. thenreserved1[4]. π - the
HUBPREQ0_CURSOR_SETTINGS/ HUBP block βHUBPREQ0_CURSOR_SETTINGS__CURSOR0_DST_Y_OFFSET,HUBPREQ0_CURSOR_SETTINGS__CURSOR0_CHUNK_HDL_ADJUST, and the lone MALL flagHUBP0_DCHUBP_MALL_CONFIG__USE_MALL_FOR_CURSOR(a: 1bit, very "am i in MALL or not" of it). thenreserved2[3]. π
the reserved fields aren't described in this page, so i'm not gonna make up stories about them β they're there, they pad the layout, that's all the docs say. ngl, respect for the honesty. π
π¦ OPTIONS π¦
bestie. it's a struct. there are no options here, there's nothing to pass, don't @ me. the fields in SYNOPSIS are the content. moving on. π
π Members π
the page has a Members section and, well, it arrived empty β there's no per-member writeup in this one. so the members are simply the fields listed above in the synopsis, and that's what we've got. delightful, unbothered, moisturized. π
π₯ SEE ALSO π₯
kernel file ./drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h, plus the whole extended friend group β every single one of these, fr fr:
union dmub_addr(9)struct dmub_cursor_offload_pipe_data_dcn30_v1(9)struct dmub_cursor_offload_pipe_data_dcn60_v1(9)struct dmub_cursor_offload_pipe_data_v1(9)struct dmub_cursor_offload_payload_data_v1(9)struct dmub_cursor_offload_stream_v1(9)struct dmub_cursor_offload_v1(9)union dmub_fw_meta_feature_bits(9)struct dmub_fw_meta_info(9)union dmub_fw_meta(9)struct dmcub_trace_buf_entry(9)union dmub_fw_boot_status(9)enum dmub_fw_boot_status_bit(9)enum dmub_cursor_offload_comand_type(9)union dmub_fw_boot_options(9)enum dmub_shared_state_feature_id(9)struct dmub_shared_state_ips_fw(9)struct dmub_shared_state_ips_driver(9)struct dmub_shared_state_cursor_offload_v1(9)struct dmub_shared_state_feature_block(9)union dmub_gpint_data_register(9)enum dmub_out_cmd_type(9)struct dmub_cmd_header(9)struct dmub_rb_cmd_common(9)struct dmub_cmd_PLAT_54186_wa(9)struct dmub_rb_cmd_PLAT_54186_wa(9)enum dmub_cmd_mall_type(9)struct dmub_rb_cmd_mall(9)enum dmub_cmd_cab_type(9)struct dmub_rb_cmd_cab_for_ss(9)enum dmub_fams2_allow_delay_check_mode(9)enum dmub_cmd_idle_opt_type(9)struct dmub_rb_cmd_idle_opt_dcn_restore(9)struct dmub_dcn_notify_idle_cntl_data(9)struct dmub_rb_cmd_idle_opt_dcn_notify_idle(9)enum dmub_idle_opt_dc_power_state(9)struct dmub_idle_opt_set_dc_power_state_data(9)struct dmub_rb_cmd_idle_opt_set_dc_power_state(9)struct dmub_clocks(9)enum dmub_cmd_clk_mgr_type(9)struct dmub_rb_cmd_clk_mgr_notify_clocks(9)struct dmub_cmd_digx_encoder_control_data(9)struct dmub_rb_cmd_digx_encoder_control(9)struct dmub_cmd_set_pixel_clock_data(9)struct dmub_cmd_enable_disp_power_gating_data(9)struct dmub_rb_cmd_enable_disp_power_gating(9)struct dmub_dig_transmitter_control_data_v1_7(9)union dmub_cmd_dig1_transmitter_control_data(9)struct dmub_rb_cmd_dig1_transmitter_control(9)struct dmub_rb_cmd_domain_control_data(9)struct dmub_rb_cmd_domain_control(9)struct dmub_rb_cmd_dpphy_init(9)enum dp_aux_request_action(9)enum aux_return_code_type(9)enum aux_channel_type(9)struct aux_transaction_parameters(9)struct dmub_rb_cmd_hpd_sense_notify(9)enum dmub_phy_fsm_state(9)enum dmub_abm_ace_curve_type(9)enum dmub_abm_histogram_type(9)enum dmub_cmd_panel_cntl_type(9)struct dmub_cmd_panel_cntl_data(9)struct dmub_rb_cmd_panel_cntl(9)struct dmub_cmd_cable_id_input(9)struct dmub_cmd_cursor_offload_init_data(9)struct dmub_rb_cmd_cursor_offload_init(9)struct dmub_cmd_cursor_offload_stream_data(9)struct dmub_rb_cmd_cursor_offload_stream_cntl(9)union dmub_rb_cmd(9)union dmub_rb_out_cmd(9)struct dmub_rb_init_params(9)struct dmub_rb(9)
π and yes,enum dmub_cursor_offload_comand_type(9)is spelledcomandin the source. not my typo, not your typo, we leave it. iykyk.
π« sign-off π«
that's the page bestie!! source path came through as ./drivers/gpu/drm/amd/display/... (yep, abbreviated, the house style said so) and the date stamp is October 2026, and the footer also re-echoes struct dmub_...ta_dcn401_v1(9) one last time on the way out. go forth and treat your bitfields with love. mwah. πβ¨ππ¦πΈπ
π«Άππ₯ππβππππ§π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms