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