Rather than embeddeding the display's device info within the main device info structure, just provide a pointer to the display-specific structure. This is in preparation for moving the display device info definitions into the display code itself and for eventually allowing the pointer to be assigned at runtime on platforms that use GMD_ID for device identification. In the future, this will also eventually allow the same display device info structures to be used outside the current i915 code (e.g., from the Xe driver). v2: - Move introduction of DISPLAY_INFO() to this patch. (Andrzej) v3: - Also use DISPLAY_INFO() in intel_display_reg_defs.h. (Andrzej) - Use "{}" instead of "{ 0 }" for empty struct init. (Jani) Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Acked-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230523195609.73627-3-matthew.d.roper@intel.com
50 lines
1.9 KiB
C
50 lines
1.9 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_DISPLAY_REG_DEFS_H__
|
|
#define __INTEL_DISPLAY_REG_DEFS_H__
|
|
|
|
#include "i915_reg_defs.h"
|
|
|
|
#define DISPLAY_MMIO_BASE(dev_priv) (DISPLAY_INFO(dev_priv)->mmio_offset)
|
|
|
|
#define VLV_DISPLAY_BASE 0x180000
|
|
|
|
/*
|
|
* Named helper wrappers around _PICK_EVEN() and _PICK_EVEN_2RANGES().
|
|
*/
|
|
#define _PIPE(pipe, a, b) _PICK_EVEN(pipe, a, b)
|
|
#define _PLANE(plane, a, b) _PICK_EVEN(plane, a, b)
|
|
#define _TRANS(tran, a, b) _PICK_EVEN(tran, a, b)
|
|
#define _PORT(port, a, b) _PICK_EVEN(port, a, b)
|
|
#define _PLL(pll, a, b) _PICK_EVEN(pll, a, b)
|
|
#define _PHY(phy, a, b) _PICK_EVEN(phy, a, b)
|
|
|
|
#define _MMIO_PIPE(pipe, a, b) _MMIO(_PIPE(pipe, a, b))
|
|
#define _MMIO_PLANE(plane, a, b) _MMIO(_PLANE(plane, a, b))
|
|
#define _MMIO_TRANS(tran, a, b) _MMIO(_TRANS(tran, a, b))
|
|
#define _MMIO_PORT(port, a, b) _MMIO(_PORT(port, a, b))
|
|
#define _MMIO_PLL(pll, a, b) _MMIO(_PLL(pll, a, b))
|
|
#define _MMIO_PHY(phy, a, b) _MMIO(_PHY(phy, a, b))
|
|
|
|
#define _MMIO_PIPE3(pipe, a, b, c) _MMIO(_PICK_EVEN_2RANGES(pipe, 1, a, a, b, c))
|
|
#define _MMIO_PORT3(pipe, a, b, c) _MMIO(_PICK_EVEN_2RANGES(pipe, 1, a, a, b, c))
|
|
|
|
/*
|
|
* Device info offset array based helpers for groups of registers with unevenly
|
|
* spaced base offsets.
|
|
*/
|
|
#define _MMIO_PIPE2(pipe, reg) _MMIO(DISPLAY_INFO(dev_priv)->pipe_offsets[(pipe)] - \
|
|
DISPLAY_INFO(dev_priv)->pipe_offsets[PIPE_A] + \
|
|
DISPLAY_MMIO_BASE(dev_priv) + (reg))
|
|
#define _MMIO_TRANS2(tran, reg) _MMIO(DISPLAY_INFO(dev_priv)->trans_offsets[(tran)] - \
|
|
DISPLAY_INFO(dev_priv)->trans_offsets[TRANSCODER_A] + \
|
|
DISPLAY_MMIO_BASE(dev_priv) + (reg))
|
|
#define _MMIO_CURSOR2(pipe, reg) _MMIO(DISPLAY_INFO(dev_priv)->cursor_offsets[(pipe)] - \
|
|
DISPLAY_INFO(dev_priv)->cursor_offsets[PIPE_A] + \
|
|
DISPLAY_MMIO_BASE(dev_priv) + (reg))
|
|
|
|
#endif /* __INTEL_DISPLAY_REG_DEFS_H__ */
|