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 (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) 14 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) 18 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) 22 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) 48/* 49 * This is the most significant 15 bits of the number of backlight cycles in a 50 * complete cycle of the modulated backlight control. 51 * 52 * The actual value is this field multiplied by two. 53 */ 54#define BACKLIGHT_MODULATION_FREQ_SHIFT (17) 55#define BACKLIGHT_MODULATION_FREQ_MASK (0x7fff << 17) 56#define BLM_LEGACY_MODE (1 << 16) /* gen2 only */ 57/* 58 * This is the number of cycles out of the backlight modulation cycle for which 59 * the backlight is on. 60 * 61 * This field must be no greater than the number of cycles in the complete 62 * backlight modulation cycle. 63 */ 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 */ 68 69#define BLC_HIST_CTL _MMIO(0x61260) 70#define BLM_HISTOGRAM_ENABLE (1 << 31) 71 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) 76 77#define HSW_BLC_PWM2_CTL _MMIO(0x48350) 78 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) 86 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 93 94#define _BXT_BLC_PWM_CTL2 0xC8350 95#define _BXT_BLC_PWM_FREQ2 0xC8354 96#define _BXT_BLC_PWM_DUTY2 0xC8358 97 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) 104 105/* Utility pin */ 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) 120 121#endif /* __INTEL_BACKLIGHT_REGS_H__ */ 122