1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2019 Intel Corporation 4 */ 5 6 #ifndef __INTEL_DMC_H__ 7 #define __INTEL_DMC_H__ 8 9 #include <linux/types.h> 10 11 enum pipe; 12 enum pipedmc_event_id; 13 struct drm_printer; 14 struct intel_crtc; 15 struct intel_crtc_state; 16 struct intel_display; 17 struct intel_dmc_snapshot; 18 struct intel_dsb; 19 20 void intel_dmc_init(struct intel_display *display); 21 void intel_dmc_load_program(struct intel_display *display); 22 void intel_dmc_wait_fw_load(struct intel_display *display); 23 void intel_dmc_disable_program(struct intel_display *display); 24 void intel_dmc_enable_pipe(const struct intel_crtc_state *crtc_state); 25 void intel_dmc_disable_pipe(const struct intel_crtc_state *crtc_state); 26 void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe, 27 bool block); 28 void intel_dmc_configure_dc_balance_event(struct intel_display *display, 29 enum pipe pipe, bool enable); 30 void intel_dmc_start_pkgc_exit_at_start_of_undelayed_vblank(struct intel_display *display, 31 enum pipe pipe, bool enable); 32 void intel_dmc_fini(struct intel_display *display); 33 void intel_dmc_suspend(struct intel_display *display); 34 void intel_dmc_resume(struct intel_display *display); 35 bool intel_dmc_has_payload(struct intel_display *display); 36 void intel_dmc_debugfs_register(struct intel_display *display); 37 38 struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display); 39 void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p); 40 void intel_dmc_update_dc6_allowed_count(struct intel_display *display, bool start_tracking); 41 42 void assert_main_dmc_loaded(struct intel_display *display); 43 44 void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe); 45 void intel_pipedmc_dcb_enable(struct intel_dsb *dsb, struct intel_crtc *crtc); 46 void intel_pipedmc_dcb_disable(struct intel_dsb *dsb, struct intel_crtc *crtc); 47 48 u32 intel_pipedmc_start_mmioaddr(struct intel_crtc *crtc); 49 void intel_pipedmc_enable_event(struct intel_crtc *crtc, 50 enum pipedmc_event_id event); 51 void intel_pipedmc_disable_event(struct intel_crtc *crtc, 52 enum pipedmc_event_id event); 53 54 void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe); 55 56 #endif /* __INTEL_DMC_H__ */ 57