2019-04-05 14:00:07 +03:00
|
|
|
/* SPDX-License-Identifier: MIT */
|
|
|
|
/*
|
|
|
|
* Copyright © 2019 Intel Corporation
|
|
|
|
*/
|
|
|
|
|
2021-05-18 14:34:44 -07:00
|
|
|
#ifndef __INTEL_DMC_H__
|
|
|
|
#define __INTEL_DMC_H__
|
2019-04-05 14:00:07 +03:00
|
|
|
|
2023-03-01 14:29:43 +02:00
|
|
|
#include <linux/types.h>
|
2021-05-26 15:02:56 -07:00
|
|
|
|
2023-01-02 20:33:24 +02:00
|
|
|
enum pipe;
|
2025-06-24 20:00:44 +03:00
|
|
|
enum pipedmc_event_id;
|
2024-06-06 17:07:04 +03:00
|
|
|
struct drm_printer;
|
2025-06-24 20:00:44 +03:00
|
|
|
struct intel_crtc;
|
2025-06-17 20:07:58 +03:00
|
|
|
struct intel_crtc_state;
|
2024-09-06 17:33:06 +03:00
|
|
|
struct intel_display;
|
2024-09-12 17:34:14 +03:00
|
|
|
struct intel_dmc_snapshot;
|
2023-01-02 20:33:24 +02:00
|
|
|
|
2024-09-06 17:33:06 +03:00
|
|
|
void intel_dmc_init(struct intel_display *display);
|
|
|
|
void intel_dmc_load_program(struct intel_display *display);
|
2025-06-24 20:00:44 +03:00
|
|
|
void intel_dmc_wait_fw_load(struct intel_display *display);
|
2024-09-06 17:33:06 +03:00
|
|
|
void intel_dmc_disable_program(struct intel_display *display);
|
2025-06-17 20:07:58 +03:00
|
|
|
void intel_dmc_enable_pipe(const struct intel_crtc_state *crtc_state);
|
|
|
|
void intel_dmc_disable_pipe(const struct intel_crtc_state *crtc_state);
|
2025-04-14 13:05:00 +03:00
|
|
|
void intel_dmc_block_pkgc(struct intel_display *display, enum pipe pipe,
|
|
|
|
bool block);
|
2025-04-14 13:05:05 +03:00
|
|
|
void intel_dmc_start_pkgc_exit_at_start_of_undelayed_vblank(struct intel_display *display,
|
|
|
|
enum pipe pipe, bool enable);
|
2024-09-06 17:33:06 +03:00
|
|
|
void intel_dmc_fini(struct intel_display *display);
|
|
|
|
void intel_dmc_suspend(struct intel_display *display);
|
|
|
|
void intel_dmc_resume(struct intel_display *display);
|
|
|
|
bool intel_dmc_has_payload(struct intel_display *display);
|
|
|
|
void intel_dmc_debugfs_register(struct intel_display *display);
|
2024-09-12 17:34:14 +03:00
|
|
|
|
|
|
|
struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display);
|
|
|
|
void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p);
|
2025-03-21 18:07:07 +05:30
|
|
|
void intel_dmc_update_dc6_allowed_count(struct intel_display *display, bool start_tracking);
|
2019-04-05 14:00:07 +03:00
|
|
|
|
2025-06-17 20:07:57 +03:00
|
|
|
void assert_main_dmc_loaded(struct intel_display *display);
|
2022-03-21 15:50:30 +02:00
|
|
|
|
2025-05-14 20:42:57 +03:00
|
|
|
void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe);
|
|
|
|
|
2025-06-24 20:00:44 +03:00
|
|
|
u32 intel_pipedmc_start_mmioaddr(struct intel_crtc *crtc);
|
|
|
|
void intel_pipedmc_enable_event(struct intel_crtc *crtc,
|
|
|
|
enum pipedmc_event_id event);
|
|
|
|
void intel_pipedmc_disable_event(struct intel_crtc *crtc,
|
|
|
|
enum pipedmc_event_id event);
|
|
|
|
|
|
|
|
void intel_pipedmc_irq_handler(struct intel_display *display, enum pipe pipe);
|
|
|
|
|
2021-05-18 14:34:44 -07:00
|
|
|
#endif /* __INTEL_DMC_H__ */
|