hubbub
input->src.dcc = pipe->plane_res.dpp->ctx->dc->res_pool->hubbub->funcs->
v->dcc_enable[input_idx] = dc->res_pool->hubbub->funcs->dcc_support_pixel_format(
struct hubbub *hubbub)
REG_WRITE(DCHUBBUB_TEST_DEBUG_INDEX, hubbub->debug_test_index_pstate);
void hubbub1_wm_change_req_wa(struct hubbub *hubbub)
struct hubbub *hubbub,
uint32_t force_en = hubbub->ctx->dc->debug.disable_stutter ? 1 : 0;
if (safe_to_lower || watermarks->a.urgent_ns > hubbub->watermarks.a.urgent_ns) {
hubbub->watermarks.a.urgent_ns = watermarks->a.urgent_ns;
if (safe_to_lower || watermarks->a.pte_meta_urgent_ns > hubbub->watermarks.a.pte_meta_urgent_ns) {
hubbub->watermarks.a.pte_meta_urgent_ns = watermarks->a.pte_meta_urgent_ns;
> hubbub->watermarks.a.cstate_pstate.cstate_enter_plus_exit_ns) {
hubbub->watermarks.a.cstate_pstate.cstate_enter_plus_exit_ns =
> hubbub->watermarks.a.cstate_pstate.cstate_exit_ns) {
hubbub->watermarks.a.cstate_pstate.cstate_exit_ns =
> hubbub->watermarks.a.cstate_pstate.pstate_change_ns) {
hubbub->watermarks.a.cstate_pstate.pstate_change_ns =
hubbub->ctx
if (safe_to_lower || watermarks->b.urgent_ns > hubbub->watermarks.b.urgent_ns) {
hubbub->watermarks.b.urgent_ns = watermarks->b.urgent_ns;
hubbub->ctx->logger
if (safe_to_lower || watermarks->b.pte_meta_urgent_ns > hubbub->watermarks.b.pte_meta_urgent_ns) {
hubbub->watermarks.b.pte_meta_urgent_ns = watermarks->b.pte_meta_urgent_ns;
> hubbub->watermarks.b.cstate_pstate.cstate_enter_plus_exit_ns) {
hubbub->watermarks.b.cstate_pstate.cstate_enter_plus_exit_ns =
hubbub->regs->reg
> hubbub->watermarks.b.cstate_pstate.cstate_exit_ns) {
hubbub->watermarks.b.cstate_pstate.cstate_exit_ns =
> hubbub->watermarks.b.cstate_pstate.pstate_change_ns) {
hubbub->watermarks.b.cstate_pstate.pstate_change_ns =
if (safe_to_lower || watermarks->c.urgent_ns > hubbub->watermarks.c.urgent_ns) {
hubbub->watermarks.c.urgent_ns = watermarks->c.urgent_ns;
hubbub->shifts->field_name, hubbub->masks->field_name
if (safe_to_lower || watermarks->c.pte_meta_urgent_ns > hubbub->watermarks.c.pte_meta_urgent_ns) {
hubbub->watermarks.c.pte_meta_urgent_ns = watermarks->c.pte_meta_urgent_ns;
> hubbub->watermarks.c.cstate_pstate.cstate_enter_plus_exit_ns) {
hubbub->watermarks.c.cstate_pstate.cstate_enter_plus_exit_ns =
void hubbub1_wm_read_state(struct hubbub *hubbub,
> hubbub->watermarks.c.cstate_pstate.cstate_exit_ns) {
hubbub->watermarks.c.cstate_pstate.cstate_exit_ns =
> hubbub->watermarks.c.cstate_pstate.pstate_change_ns) {
hubbub->watermarks.c.cstate_pstate.pstate_change_ns =
if (safe_to_lower || watermarks->d.urgent_ns > hubbub->watermarks.d.urgent_ns) {
hubbub->watermarks.d.urgent_ns = watermarks->d.urgent_ns;
if (safe_to_lower || watermarks->d.pte_meta_urgent_ns > hubbub->watermarks.d.pte_meta_urgent_ns) {
hubbub->watermarks.d.pte_meta_urgent_ns = watermarks->d.pte_meta_urgent_ns;
> hubbub->watermarks.d.cstate_pstate.cstate_enter_plus_exit_ns) {
hubbub->watermarks.d.cstate_pstate.cstate_enter_plus_exit_ns =
> hubbub->watermarks.d.cstate_pstate.cstate_exit_ns) {
hubbub->watermarks.d.cstate_pstate.cstate_exit_ns =
> hubbub->watermarks.d.cstate_pstate.pstate_change_ns) {
hubbub->watermarks.d.cstate_pstate.pstate_change_ns =
struct hubbub *hubbub,
void hubbub1_toggle_watermark_change_req(struct hubbub *hubbub)
void hubbub1_soft_reset(struct hubbub *hubbub, bool reset)
static bool hubbub1_get_dcc_compression_cap(struct hubbub *hubbub,
struct dc *dc = hubbub->ctx->dc;
if (!hubbub->funcs->dcc_support_pixel_format(input->format, &bpe))
if (!hubbub->funcs->dcc_support_swizzle(input->swizzle_mode, bpe,
void hubbub1_construct(struct hubbub *hubbub,
hubbub->ctx = ctx;
hubbub->funcs = &hubbub1_funcs;
hubbub->regs = hubbub_regs;
hubbub->shifts = hubbub_shift;
hubbub->masks = hubbub_mask;
hubbub->debug_test_index_pstate = 0x7;
hubbub->debug_test_index_pstate = 0xB;
void hubbub1_disable_allow_self_refresh(struct hubbub *hubbub)
bool hububu1_is_allow_self_refresh_enabled(struct hubbub *hubbub)
struct hubbub *hubbub,
struct hubbub *hubbub);
void hubbub1_wm_change_req_wa(struct hubbub *hubbub);
struct hubbub *hubbub,
void hubbub1_disable_allow_self_refresh(struct hubbub *hubbub);
bool hububu1_is_allow_self_refresh_enabled(struct hubbub *hubub);
struct hubbub *hubbub);
void hubbub1_wm_read_state(struct hubbub *hubbub,
void hubbub1_soft_reset(struct hubbub *hubbub, bool reset);
void hubbub1_construct(struct hubbub *hubbub,
hububu1_is_allow_self_refresh_enabled(dc->res_pool->hubbub);
hububu1_is_allow_self_refresh_enabled(dc->res_pool->hubbub))
hubbub1_disable_allow_self_refresh(dc->res_pool->hubbub);
hubbub1_wm_change_req_wa(dc->res_pool->hubbub);
hubbub1_program_watermarks(dc->res_pool->hubbub,
if (hws->ctx->dc->res_pool->hubbub != NULL) {
hubbub1_update_dchub(hws->ctx->dc->res_pool->hubbub, dh_data);
hubbub1_soft_reset(dc->res_pool->hubbub, true);
hubbub1_soft_reset(dc->res_pool->hubbub, false);
if (!hubbub1_verify_allow_pstate_change_high(dc->res_pool->hubbub)) {
if (!hubbub1_verify_allow_pstate_change_high(dc->res_pool->hubbub))
hubbub1_wm_read_state(dc->res_pool->hubbub, &wm);
hubbub1_wm_read_state(dc->res_pool->hubbub, &wm);
return dc->res_pool->hubbub->funcs->get_dcc_compression_cap(
dc->res_pool->hubbub,
pool->base.hubbub = dcn10_hubbub_create(ctx);
if (pool->base.hubbub == NULL) {
static struct hubbub *dcn10_hubbub_create(struct dc_context *ctx)
struct hubbub *hubbub = kzalloc(sizeof(struct hubbub),
if (!hubbub)
hubbub1_construct(hubbub, ctx,
return hubbub;
if (pool->base.hubbub != NULL) {
kfree(pool->base.hubbub);
pool->base.hubbub = NULL;
struct hubbub *hubbub;
struct hubbub *hubbub,
bool (*get_dcc_compression_cap)(struct hubbub *hubbub,