xref: /linux/drivers/gpu/drm/i915/display/intel_dmc.h (revision ca220141fa8ebae09765a242076b2b77338106b0)
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