Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: MIT */
  2/*
  3 * Copyright © 2022 Intel Corporation
  4 */
  5
  6#ifndef __INTEL_BACKLIGHT_REGS_H__
  7#define __INTEL_BACKLIGHT_REGS_H__
  8
  9#include "intel_display_reg_defs.h"
 10
 11#define _VLV_BLC_PWM_CTL2_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61250)
 12#define _VLV_BLC_PWM_CTL2_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61350)
 13#define VLV_BLC_PWM_CTL2(pipe) _MMIO_PIPE(pipe, _VLV_BLC_PWM_CTL2_A, \
 14					 _VLV_BLC_PWM_CTL2_B)
 15
 16#define _VLV_BLC_PWM_CTL_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61254)
 17#define _VLV_BLC_PWM_CTL_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61354)
 18#define VLV_BLC_PWM_CTL(pipe) _MMIO_PIPE(pipe, _VLV_BLC_PWM_CTL_A, \
 19					_VLV_BLC_PWM_CTL_B)
 20
 21#define _VLV_BLC_HIST_CTL_A (DISPLAY_MMIO_BASE(dev_priv) + 0x61260)
 22#define _VLV_BLC_HIST_CTL_B (DISPLAY_MMIO_BASE(dev_priv) + 0x61360)
 23#define VLV_BLC_HIST_CTL(pipe) _MMIO_PIPE(pipe, _VLV_BLC_HIST_CTL_A, \
 24					 _VLV_BLC_HIST_CTL_B)
 25
 26/* Backlight control */
 27#define BLC_PWM_CTL2	_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61250) /* 965+ only */
 28#define   BLM_PWM_ENABLE		(1 << 31)
 29#define   BLM_COMBINATION_MODE		(1 << 30) /* gen4 only */
 30#define   BLM_PIPE_SELECT		(1 << 29)
 31#define   BLM_PIPE_SELECT_IVB		(3 << 29)
 32#define   BLM_PIPE_A			(0 << 29)
 33#define   BLM_PIPE_B			(1 << 29)
 34#define   BLM_PIPE_C			(2 << 29) /* ivb + */
 35#define   BLM_TRANSCODER_A		BLM_PIPE_A /* hsw */
 36#define   BLM_TRANSCODER_B		BLM_PIPE_B
 37#define   BLM_TRANSCODER_C		BLM_PIPE_C
 38#define   BLM_TRANSCODER_EDP		(3 << 29)
 39#define   BLM_PIPE(pipe)		((pipe) << 29)
 40#define   BLM_POLARITY_I965		(1 << 28) /* gen4 only */
 41#define   BLM_PHASE_IN_INTERUPT_STATUS	(1 << 26)
 42#define   BLM_PHASE_IN_ENABLE		(1 << 25)
 43#define   BLM_PHASE_IN_INTERUPT_ENABL	(1 << 24)
 44#define   BLM_PHASE_IN_TIME_BASE_SHIFT	(16)
 45#define   BLM_PHASE_IN_TIME_BASE_MASK	(0xff << 16)
 46#define   BLM_PHASE_IN_COUNT_SHIFT	(8)
 47#define   BLM_PHASE_IN_COUNT_MASK	(0xff << 8)
 48#define   BLM_PHASE_IN_INCR_SHIFT	(0)
 49#define   BLM_PHASE_IN_INCR_MASK	(0xff << 0)
 50#define BLC_PWM_CTL	_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61254)
 51/*
 52 * This is the most significant 15 bits of the number of backlight cycles in a
 53 * complete cycle of the modulated backlight control.
 54 *
 55 * The actual value is this field multiplied by two.
 56 */
 57#define   BACKLIGHT_MODULATION_FREQ_SHIFT	(17)
 58#define   BACKLIGHT_MODULATION_FREQ_MASK	(0x7fff << 17)
 59#define   BLM_LEGACY_MODE			(1 << 16) /* gen2 only */
 60/*
 61 * This is the number of cycles out of the backlight modulation cycle for which
 62 * the backlight is on.
 63 *
 64 * This field must be no greater than the number of cycles in the complete
 65 * backlight modulation cycle.
 66 */
 67#define   BACKLIGHT_DUTY_CYCLE_SHIFT		(0)
 68#define   BACKLIGHT_DUTY_CYCLE_MASK		(0xffff)
 69#define   BACKLIGHT_DUTY_CYCLE_MASK_PNV		(0xfffe)
 70#define   BLM_POLARITY_PNV			(1 << 0) /* pnv only */
 71
 72#define BLC_HIST_CTL	_MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61260)
 73#define  BLM_HISTOGRAM_ENABLE			(1 << 31)
 74
 75/* New registers for PCH-split platforms. Safe where new bits show up, the
 76 * register layout machtes with gen4 BLC_PWM_CTL[12]. */
 77#define BLC_PWM_CPU_CTL2	_MMIO(0x48250)
 78#define BLC_PWM_CPU_CTL		_MMIO(0x48254)
 79
 80#define HSW_BLC_PWM2_CTL	_MMIO(0x48350)
 81
 82/* PCH CTL1 is totally different, all but the below bits are reserved. CTL2 is
 83 * like the normal CTL from gen4 and earlier. Hooray for confusing naming. */
 84#define BLC_PWM_PCH_CTL1	_MMIO(0xc8250)
 85#define   BLM_PCH_PWM_ENABLE			(1 << 31)
 86#define   BLM_PCH_OVERRIDE_ENABLE		(1 << 30)
 87#define   BLM_PCH_POLARITY			(1 << 29)
 88#define BLC_PWM_PCH_CTL2	_MMIO(0xc8254)
 89
 90/* BXT backlight register definition. */
 91#define _BXT_BLC_PWM_CTL1			0xC8250
 92#define   BXT_BLC_PWM_ENABLE			(1 << 31)
 93#define   BXT_BLC_PWM_POLARITY			(1 << 29)
 94#define _BXT_BLC_PWM_FREQ1			0xC8254
 95#define _BXT_BLC_PWM_DUTY1			0xC8258
 96
 97#define _BXT_BLC_PWM_CTL2			0xC8350
 98#define _BXT_BLC_PWM_FREQ2			0xC8354
 99#define _BXT_BLC_PWM_DUTY2			0xC8358
100
101#define BXT_BLC_PWM_CTL(controller)    _MMIO_PIPE(controller,		\
102					_BXT_BLC_PWM_CTL1, _BXT_BLC_PWM_CTL2)
103#define BXT_BLC_PWM_FREQ(controller)   _MMIO_PIPE(controller, \
104					_BXT_BLC_PWM_FREQ1, _BXT_BLC_PWM_FREQ2)
105#define BXT_BLC_PWM_DUTY(controller)   _MMIO_PIPE(controller, \
106					_BXT_BLC_PWM_DUTY1, _BXT_BLC_PWM_DUTY2)
107
108/* Utility pin */
109#define UTIL_PIN_CTL			_MMIO(0x48400)
110#define   UTIL_PIN_ENABLE		(1 << 31)
111#define   UTIL_PIN_PIPE_MASK		(3 << 29)
112#define   UTIL_PIN_PIPE(x)		((x) << 29)
113#define   UTIL_PIN_MODE_MASK		(0xf << 24)
114#define   UTIL_PIN_MODE_DATA		(0 << 24)
115#define   UTIL_PIN_MODE_PWM		(1 << 24)
116#define   UTIL_PIN_MODE_VBLANK		(4 << 24)
117#define   UTIL_PIN_MODE_VSYNC		(5 << 24)
118#define   UTIL_PIN_MODE_EYE_LEVEL	(8 << 24)
119#define   UTIL_PIN_OUTPUT_DATA		(1 << 23)
120#define   UTIL_PIN_POLARITY		(1 << 22)
121#define   UTIL_PIN_DIRECTION_INPUT	(1 << 19)
122#define   UTIL_PIN_INPUT_DATA		(1 << 16)
123
124#endif /* __INTEL_BACKLIGHT_REGS_H__ */