blob: 5f5bf31f34014d0467574dbd707ed4362dbd196b [file] [log] [blame]
Stefan Reinauer00636b02012-04-04 00:08:51 +02001/*
2 * This file is part of the coreboot project.
3 *
Stefan Reinauer00636b02012-04-04 00:08:51 +02004 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; version 2 of the License.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
Stefan Reinauer00636b02012-04-04 00:08:51 +020013 */
14
Iru Caid7ee9dd2016-02-24 15:03:58 +080015#ifndef NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H
16#define NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H
17
Vladimir Serbinenkoa71bdc32014-08-30 00:35:39 +020018#include <drivers/intel/gma/i915.h>
19
Stefan Reinauer00636b02012-04-04 00:08:51 +020020/*
21 * Digital Port Hotplug Enable:
22 * 0x04 = Enabled, 2ms short pulse
23 * 0x05 = Enabled, 4.5ms short pulse
24 * 0x06 = Enabled, 6ms short pulse
25 * 0x07 = Enabled, 100ms short pulse
26 */
27struct northbridge_intel_sandybridge_config {
28 u8 gpu_dp_b_hotplug; /* Digital Port B Hotplug Config */
29 u8 gpu_dp_c_hotplug; /* Digital Port C Hotplug Config */
30 u8 gpu_dp_d_hotplug; /* Digital Port D Hotplug Config */
31
32 u8 gpu_panel_port_select; /* 0=LVDS 1=DP_B 2=DP_C 3=DP_D */
33 u8 gpu_panel_power_cycle_delay; /* T4 time sequence */
34 u16 gpu_panel_power_up_delay; /* T1+T2 time sequence */
35 u16 gpu_panel_power_down_delay; /* T3 time sequence */
36 u16 gpu_panel_power_backlight_on_delay; /* T5 time sequence */
37 u16 gpu_panel_power_backlight_off_delay; /* Tx time sequence */
Duncan Lauriedd585b82012-04-09 12:05:18 -070038
39 u32 gpu_cpu_backlight; /* CPU Backlight PWM value */
40 u32 gpu_pch_backlight; /* PCH Backlight PWM value */
Vladimir Serbinenko1783a3c2014-02-23 00:10:35 +010041
Alexandru Gagniuc8b2c8f12015-02-17 04:31:01 -060042 /*
43 * Maximum memory clock.
44 * For example 666 for DDR3-1333, or 800 for DDR3-1600
45 */
46 u16 max_mem_clock_mhz;
47
Vladimir Serbinenkoa71bdc32014-08-30 00:35:39 +020048 struct i915_gpu_controller_info gfx;
Patrick Rudolph266a1f72016-06-09 18:13:34 +020049
50 /*
51 * Maximum PCI mmio size in MiB.
52 */
53 u16 pci_mmio_size;
Patrick Rudolph5709e032019-03-25 10:12:14 +010054
55 /* Data for RAM init */
56
57 /* DIMM SPD address. Use 8bit notation where BIT0 is always zero. */
58 u8 spd_addresses[4];
59
60 /* PEI data for RAM init and early silicon init */
61 u8 ts_addresses[4];
62
63 bool ec_present;
64 bool ddr3lv_support;
65
66 /* N mode functionality. Leave this setting at 0.
67 * 0 Auto
68 * 1 1N
69 * 2 2N
70 */
71 enum {
72 DDR_NMODE_AUTO = 0,
73 DDR_NMODE_1N,
74 DDR_NMODE_2N,
75 } nmode;
76
77 /* DDR refresh rate config. JEDEC Standard No.21-C Annex K allows
78 * for DIMM SPD data to specify whether double-rate is required for
79 * extended operating temperature range.
80 * 0 Enable double rate based upon temperature thresholds
81 * 1 Normal rate
82 * 2 Always enable double rate
83 */
84 enum {
85 DDR_REFRESH_RATE_TEMP_THRES = 0,
86 DDR_REFRESH_REATE_NORMAL,
87 DDR_REFRESH_RATE_DOUBLE,
88 } ddr_refresh_rate_config;
89
90 /*
91 * USB Port Configuration:
92 * [0] = enable
93 * [1] = overcurrent pin
94 * [2] = length
95 *
96 * Ports 0-7 can be mapped to OC0-OC3
97 * Ports 8-13 can be mapped to OC4-OC7
98 *
99 * Port Length
100 * MOBILE:
101 * < 0x050 = Setting 1 (back panel, 1-5in, lowest tx amplitude)
102 * < 0x140 = Setting 2 (back panel, 5-14in, highest tx amplitude)
103 * DESKTOP:
104 * < 0x080 = Setting 1 (front/back panel, <8in, lowest tx amplitude)
105 * < 0x130 = Setting 2 (back panel, 8-13in, higher tx amplitude)
106 * < 0x150 = Setting 3 (back panel, 13-15in, highest tx amplitude)
107 */
108 u16 usb_port_config[16][3];
109
110 struct {
111 /* 0: Disable, 1: Enable, 2: Auto, 3: Smart Auto */
112 u8 mode : 2;
113 /* 4 bit mask, 1: switchable, 0: not switchable */
114 u8 hs_port_switch_mask : 4;
115 /* 0: No xHCI preOS driver, 1: xHCI preOS driver */
116 u8 preboot_support : 1;
117 /* 0: Disable, 1: Enable */
118 u8 xhci_streams : 1;
119 } usb3;
Stefan Reinauer00636b02012-04-04 00:08:51 +0200120};
Iru Caid7ee9dd2016-02-24 15:03:58 +0800121
122#endif /* NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H */