32 { 0x0a248, 0x00000000, 0x00000016 },
33 { 0x0a000, 0x00000000, 0x00070020 },
34 { 0x0a180, 0xff3fffff, 0x15000000 },
36 { 0x09424, 0x00000000, 0x000003fd },
38 { 0x09400, 0x00000000, 0x00000080 },
39 { 0x09404, 0x00000000, 0x40401000 },
40 { 0x09408, 0x00000000, 0x00000000 },
41 { 0x0940c, 0x00000000, 0x02000001 },
42 { 0x0a008, 0x00000000, 0x08000000 },
44 { 0x0a090, 0xffffffff, 0x00000000 },
45 { 0x0a098, 0xffffffff, 0x03e80000 },
46 { 0x0a09c, 0xffffffff, 0x00280000 },
47 { 0x0a0a8, 0xffffffff, 0x0001e848 },
48 { 0x0a0ac, 0xffffffff, 0x00000019 },
50 { 0x02054, 0x00000000, 0x0000000a },
51 { 0x12054, 0x00000000, 0x0000000a },
52 { 0x22054, 0x00000000, 0x0000000a },
54 { 0x0a0b0, 0xffffffff, 0x00000000 },
55 { 0x0a0b4, 0xffffffff, 0x000003e8 },
56 { 0x0a0b8, 0xffffffff, 0x0000c350 },
58 { 0x0a010, 0xffffffff, 0x000f4240 },
59 { 0x0a014, 0xffffffff, 0x12060000 },
60 { 0x0a02c, 0xffffffff, 0x0000e808 },
61 { 0x0a030, 0xffffffff, 0x0003bd08 },
62 { 0x0a068, 0xffffffff, 0x000101d0 },
63 { 0x0a06c, 0xffffffff, 0x00055730 },
64 { 0x0a070, 0xffffffff, 0x0000000a },
66 { 0x0a024, 0x00000000, 0x00000b92 },
68 { 0x0a090, 0x00000000, 0x88040000 },
70 { 0x0a00c, 0x00000000, 0x08000000 },
75 { 0x0a248, 0xffffffff, 0x80000000 },
76 { 0x0a004, 0xffffffff, 0x00000010 },
77 { 0x0a080, 0xffffffff, 0x00000004 },
78 { 0x0a180, 0xffffffff, 0x80000000 },
89 u32 new_vendev = vendev;
113 new_vendev = 0x80860406;
145 for (; gt && gt->
reg; gt++) {
153 #define GTT_RETRY 1000
200 gtt_poll(0x138124, (1 << 31), (0 << 31));
209 gtt_poll(0x138124, (1 << 31), (0 << 31));
262 reg32 |= ((panel_cfg->
up_delay_ms * 10) & 0x1fff) << 16;
289 const unsigned int refclock =
CONFIG(INTEL_LYNXPOINT_LP) ? 24*
MHz : 135*
MHz;
290 const unsigned int hz_limit = refclock / 128 / 100;
291 unsigned int pwm_increment, pwm_period;
306 "GMA: Setting backlight PWM frequency to %uMHz / %u / %u = %uHz\n",
307 refclock /
MHz, pwm_increment, pwm_period,
373 if (devid == 0x0a0e || devid == 0x0a1e)
382 if (gpu_is_ulx || cdclk != 0)
383 gtt_rmw(0x130040, 0xf7ffffff, 0x04000000);
385 gtt_rmw(0x130040, 0xf3ffffff, 0x00000000);
434 if (
CONFIG(MAINBOARD_USE_LIBGFXINIT)) {
437 "IGD is not decoding legacy VGA MEM and IO: skipping NATIVE graphic init\n");
uint16_t get_pmbase(void)
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
void gfx_set_init_done(int done)
void enable_tco_sci(void)
#define DIV_ROUND_UP(x, y)
#define printk(level,...)
static int haswell_is_ult(void)
void outw(u16 val, u16 port)
struct resource * probe_resource(const struct device *dev, unsigned int index)
See if a resource structure already exists for a given index.
void drivers_intel_gma_displays_ssdt_generate(const struct i915_gpu_controller_info *conf)
static struct tpm_chip chip
void intel_prepare_ddi(void)
#define GEN6_PM_RP_DOWN_THRESHOLD
#define CURSOR_MODE_DISABLE
#define BLM_PCH_OVERRIDE_ENABLE
#define DIGITAL_PORTA_HOTPLUG_ENABLE
#define PORTB_HOTPLUG_ENABLE
#define HSW_PWR_WELL_CTL1
#define PCH_PP_OFF_DELAYS
#define GEN6_PM_RP_DOWN_EI_EXPIRED
#define PORTD_HOTPLUG_ENABLE
#define FORCEWAKE_ACK_HSW
#define HSW_PWR_WELL_STATE
#define RST_PCH_HNDSHK_EN
#define HSW_PWR_WELL_ENABLE
#define CURBASE_IVB(pipe)
#define BLM_PCH_PWM_ENABLE
#define GEN6_PM_RP_UP_EI_EXPIRED
#define GEN6_PM_THERMAL_EVENT
#define DISPLAY_PLANE_DISABLE
#define CURCNTR_IVB(pipe)
#define DIGITAL_PORT_HOTPLUG_CNTRL
#define DDI_INIT_DISPLAY_DETECTED
#define GEN6_PM_MBOX_EVENT
#define GEN6_PM_RP_UP_THRESHOLD
#define SOUTH_DSPCLK_GATE_D
#define PCH_LP_PARTITION_LEVEL_DISABLE
#define LPT_PWM_GRANULARITY
#define GEN6_PM_RP_DOWN_TIMEOUT
#define DIV_ROUND_CLOSEST(x, divisor)
static DEVTREE_CONST void * config_of(const struct device *dev)
static __always_inline void pci_or_config16(const struct device *dev, u16 reg, u16 ormask)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
void gma_gfxinit(int *lightup_ok)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
void gtt_write(u32 reg, u32 data)
static const struct gt_reg haswell_gt_lock[]
static void gma_enable_swsci(void)
static void power_well_enable(void)
static struct resource * gtt_res
static void gma_func0_init(struct device *dev)
static void gma_pm_init_pre_vbios(struct device *dev)
static void gma_generate_ssdt(const struct device *dev)
static void init_display_planes(void)
u32 map_oprom_vendev(u32 vendev)
static void gtt_rmw(u32 reg, u32 andmask, u32 ormask)
static const struct gt_reg haswell_gt_setup[]
static const struct pci_driver pch_lpc __pci_driver
static const unsigned short pci_device_ids[]
int gtt_poll(u32 reg, u32 mask, u32 value)
static void gma_pm_init_post_vbios(struct device *dev)
static struct device_operations gma_func0_ops
static void gma_setup_panel(struct device *dev)
static void gtt_write_regs(const struct gt_reg *gt)
enum cb_err intel_gma_init_igd_opregion(void)
#define PCI_COMMAND_MASTER
#define PCI_BASE_ADDRESS_0
void pci_dev_init(struct device *dev)
Default handler: only runs the relevant PCI BIOS.
void pci_dev_enable_resources(struct device *dev)
void pci_dev_read_resources(struct device *dev)
struct pci_operations pci_dev_ops_pci
Default device operation for PCI devices.
void pci_dev_set_resources(struct device *dev)
static void * res2mmio(const struct resource *res, unsigned long offset, unsigned long mask)
void(* read_resources)(struct device *dev)
DEVTREE_CONST void * chip_info
unsigned int backlight_off_delay_ms
unsigned int backlight_on_delay_ms
unsigned int cycle_delay_ms
@ GPU_BACKLIGHT_POLARITY_LOW
enum i915_gpu_panel_config::@68 backlight_polarity
unsigned int down_delay_ms
unsigned int backlight_pwm_hz
struct i915_gpu_panel_config panel_cfg