xref: /linux/drivers/gpu/drm/i915/display/intel_dmc.h (revision b4ada0618eed0fbd1b1630f73deb048c592b06a1)
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 
19 void intel_dmc_init(struct intel_display *display);
20 void intel_dmc_load_program(struct intel_display *display);
21 void intel_dmc_wait_fw_load(struct intel_display *display);
22 void intel_dmc_disable_program(struct intel_display *display);
23 void intel_dmc_enable_pipe(const struct intel_crtc_state *crtc_state);
24 void intel_dmc_disable_pipe(const struct intel_crtc_state *crtc_state);
25 void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe,
26 			  bool block);
27 void intel_dmc_start_pkgc_exit_at_start_of_undelayed_vblank(struct intel_display *display,
28 							    enum pipe pipe, bool enable);
29 void intel_dmc_fini(struct intel_display *display);
30 void intel_dmc_suspend(struct intel_display *display);
31 void intel_dmc_resume(struct intel_display *display);
32 bool intel_dmc_has_payload(struct intel_display *display);
33 void intel_dmc_debugfs_register(struct intel_display *display);
34 
35 struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display);
36 void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p);
37 void intel_dmc_update_dc6_allowed_count(struct intel_display *display, bool start_tracking);
38 
39 void assert_main_dmc_loaded(struct intel_display *display);
40 
41 void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe);
42 
43 u32 intel_pipedmc_start_mmioaddr(struct intel_crtc *crtc);
44 void intel_pipedmc_enable_event(struct intel_crtc *crtc,
45 				enum pipedmc_event_id event);
46 void intel_pipedmc_disable_event(struct intel_crtc *crtc,
47 				 enum pipedmc_event_id event);
48 
49 void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe);
50 
51 #endif /* __INTEL_DMC_H__ */
52