linux/drivers/gpu/drm/i915/display/intel_display_device.h

/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2023 Intel Corporation
 */

#ifndef __INTEL_DISPLAY_DEVICE_H__
#define __INTEL_DISPLAY_DEVICE_H__

#include <linux/types.h>

#include "intel_display_conversion.h"
#include "intel_display_limits.h"

struct drm_i915_private;
struct drm_printer;

/* Keep in gen based order, and chronological order within a gen */
enum intel_display_platform {};

enum intel_display_subplatform {};

#define DEV_INFO_DISPLAY_FOR_EACH_FLAG(func)

#define HAS_4TILE(i915)
#define HAS_ASYNC_FLIPS(i915)
#define HAS_CDCLK_CRAWL(i915)
#define HAS_CDCLK_SQUASH(i915)
#define HAS_CUR_FBC(i915)
#define HAS_D12_PLANE_MINIMIZATION(i915)
#define HAS_DDI(i915)
#define HAS_DISPLAY(i915)
#define HAS_DMC(i915)
#define HAS_DOUBLE_BUFFERED_M_N(i915)
#define HAS_DP_MST(i915)
#define HAS_DP20(i915)
#define HAS_DPT(i915)
#define HAS_DSB(i915)
#define HAS_DSC(__i915)
#define HAS_DSC_MST(__i915)
#define HAS_FBC(i915)
#define HAS_FPGA_DBG_UNCLAIMED(i915)
#define HAS_FW_BLC(i915)
#define HAS_GMBUS_IRQ(i915)
#define HAS_GMBUS_BURST_READ(i915)
#define HAS_GMCH(i915)
#define HAS_HW_SAGV_WM(i915)
#define HAS_IPC(i915)
#define HAS_IPS(i915)
#define HAS_LRR(i915)
#define HAS_LSPCON(i915)
#define HAS_MBUS_JOINING(i915)
#define HAS_MSO(i915)
#define HAS_OVERLAY(i915)
#define HAS_PSR(i915)
#define HAS_PSR_HW_TRACKING(i915)
#define HAS_PSR2_SEL_FETCH(i915)
#define HAS_SAGV(i915)
#define HAS_TRANSCODER(i915, trans)
#define HAS_VRR(i915)
#define HAS_AS_SDP(i915)
#define HAS_CMRR(i915)
#define INTEL_NUM_PIPES(i915)
#define I915_HAS_HOTPLUG(i915)
#define OVERLAY_NEEDS_PHYSICAL(i915)
#define SUPPORTS_TV(i915)

/* Check that device has a display IP version within the specific range. */
#define IS_DISPLAY_VER_FULL(__i915, from, until)

/*
 * Check if a device has a specific IP version as well as a stepping within the
 * specified range [from, until).  The lower bound is inclusive, the upper
 * bound is exclusive.  The most common use-case of this macro is for checking
 * bounds for workarounds, which usually have a stepping ("from") at which the
 * hardware issue is first present and another stepping ("until") at which a
 * hardware fix is present and the software workaround is no longer necessary.
 * E.g.,
 *
 *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
 *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
 *
 * "STEP_FOREVER" can be passed as "until" for workarounds that have no upper
 * stepping bound for the specified IP version.
 */
#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until)

#define DISPLAY_INFO(i915)
#define DISPLAY_RUNTIME_INFO(i915)

#define DISPLAY_VER(i915)
#define DISPLAY_VER_FULL(i915)
#define IS_DISPLAY_VER(i915, from, until)

#define INTEL_DISPLAY_STEP(__i915)

#define IS_DISPLAY_STEP(__i915, since, until)

struct intel_display_runtime_info {};

struct intel_display_device_info {};

bool intel_display_device_enabled(struct drm_i915_private *i915);
void intel_display_device_probe(struct drm_i915_private *i915);
void intel_display_device_remove(struct drm_i915_private *i915);
void intel_display_device_info_runtime_init(struct drm_i915_private *i915);

void intel_display_device_info_print(const struct intel_display_device_info *info,
				     const struct intel_display_runtime_info *runtime,
				     struct drm_printer *p);

#endif