Loading...
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 "i915_reg.h"
10#include "intel_wakeref.h"
11#include <linux/workqueue.h>
12
13struct drm_i915_private;
14
15#define DMC_VERSION(major, minor) ((major) << 16 | (minor))
16#define DMC_VERSION_MAJOR(version) ((version) >> 16)
17#define DMC_VERSION_MINOR(version) ((version) & 0xffff)
18
19struct intel_dmc {
20 struct work_struct work;
21 const char *fw_path;
22 u32 required_version;
23 u32 max_fw_size; /* bytes */
24 u32 *dmc_payload;
25 u32 dmc_fw_size; /* dwords */
26 u32 version;
27 u32 mmio_count;
28 i915_reg_t mmioaddr[20];
29 u32 mmiodata[20];
30 u32 dc_state;
31 u32 target_dc_state;
32 u32 allowed_dc_mask;
33 intel_wakeref_t wakeref;
34};
35
36void intel_dmc_ucode_init(struct drm_i915_private *i915);
37void intel_dmc_load_program(struct drm_i915_private *i915);
38void intel_dmc_ucode_fini(struct drm_i915_private *i915);
39void intel_dmc_ucode_suspend(struct drm_i915_private *i915);
40void intel_dmc_ucode_resume(struct drm_i915_private *i915);
41bool intel_dmc_has_payload(struct drm_i915_private *i915);
42
43#endif /* __INTEL_DMC_H__ */
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
11enum pipe;
12struct drm_printer;
13struct intel_display;
14struct intel_dmc_snapshot;
15
16void intel_dmc_init(struct intel_display *display);
17void intel_dmc_load_program(struct intel_display *display);
18void intel_dmc_disable_program(struct intel_display *display);
19void intel_dmc_enable_pipe(struct intel_display *display, enum pipe pipe);
20void intel_dmc_disable_pipe(struct intel_display *display, enum pipe pipe);
21void intel_dmc_fini(struct intel_display *display);
22void intel_dmc_suspend(struct intel_display *display);
23void intel_dmc_resume(struct intel_display *display);
24bool intel_dmc_has_payload(struct intel_display *display);
25void intel_dmc_debugfs_register(struct intel_display *display);
26
27struct intel_dmc_snapshot *intel_dmc_snapshot_capture(struct intel_display *display);
28void intel_dmc_snapshot_print(const struct intel_dmc_snapshot *snapshot, struct drm_printer *p);
29
30void assert_dmc_loaded(struct intel_display *display);
31
32#endif /* __INTEL_DMC_H__ */