blob: 98baaa25a2d9c76779239fae5071dc24b64030f6 [file] [log] [blame]
Angel Pons6e5aabd2020-03-23 23:44:42 +01001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauer00636b02012-04-04 00:08:51 +02002
Iru Caid7ee9dd2016-02-24 15:03:58 +08003#ifndef NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H
4#define NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H
5
Vladimir Serbinenkoa71bdc32014-08-30 00:35:39 +02006#include <drivers/intel/gma/i915.h>
Elyes HAOUAS1d6484a2020-07-10 11:18:11 +02007#include <stdbool.h>
8#include <stdint.h>
Vladimir Serbinenkoa71bdc32014-08-30 00:35:39 +02009
Stefan Reinauer00636b02012-04-04 00:08:51 +020010/*
11 * Digital Port Hotplug Enable:
Angel Pons7c49cb82020-03-16 23:17:32 +010012 * 0x04 = Enabled, 2ms short pulse
Stefan Reinauer00636b02012-04-04 00:08:51 +020013 * 0x05 = Enabled, 4.5ms short pulse
Angel Pons7c49cb82020-03-16 23:17:32 +010014 * 0x06 = Enabled, 6ms short pulse
Stefan Reinauer00636b02012-04-04 00:08:51 +020015 * 0x07 = Enabled, 100ms short pulse
16 */
17struct northbridge_intel_sandybridge_config {
18 u8 gpu_dp_b_hotplug; /* Digital Port B Hotplug Config */
19 u8 gpu_dp_c_hotplug; /* Digital Port C Hotplug Config */
20 u8 gpu_dp_d_hotplug; /* Digital Port D Hotplug Config */
21
22 u8 gpu_panel_port_select; /* 0=LVDS 1=DP_B 2=DP_C 3=DP_D */
23 u8 gpu_panel_power_cycle_delay; /* T4 time sequence */
24 u16 gpu_panel_power_up_delay; /* T1+T2 time sequence */
25 u16 gpu_panel_power_down_delay; /* T3 time sequence */
26 u16 gpu_panel_power_backlight_on_delay; /* T5 time sequence */
27 u16 gpu_panel_power_backlight_off_delay; /* Tx time sequence */
Duncan Lauriedd585b82012-04-09 12:05:18 -070028
29 u32 gpu_cpu_backlight; /* CPU Backlight PWM value */
30 u32 gpu_pch_backlight; /* PCH Backlight PWM value */
Vladimir Serbinenko1783a3c2014-02-23 00:10:35 +010031
Alexandru Gagniuc8b2c8f12015-02-17 04:31:01 -060032 /*
33 * Maximum memory clock.
34 * For example 666 for DDR3-1333, or 800 for DDR3-1600
35 */
36 u16 max_mem_clock_mhz;
37
Vladimir Serbinenkoa71bdc32014-08-30 00:35:39 +020038 struct i915_gpu_controller_info gfx;
Patrick Rudolph266a1f72016-06-09 18:13:34 +020039
40 /*
Angel Pons7c49cb82020-03-16 23:17:32 +010041 * Maximum PCI MMIO size in MiB.
Patrick Rudolph266a1f72016-06-09 18:13:34 +020042 */
43 u16 pci_mmio_size;
Patrick Rudolph5709e032019-03-25 10:12:14 +010044
45 /* Data for RAM init */
46
47 /* DIMM SPD address. Use 8bit notation where BIT0 is always zero. */
48 u8 spd_addresses[4];
49
50 /* PEI data for RAM init and early silicon init */
51 u8 ts_addresses[4];
52
53 bool ec_present;
54 bool ddr3lv_support;
55
Angel Pons7c49cb82020-03-16 23:17:32 +010056 /*
57 * N mode functionality. Leave this setting at 0.
Patrick Rudolph5709e032019-03-25 10:12:14 +010058 * 0 Auto
59 * 1 1N
60 * 2 2N
61 */
62 enum {
63 DDR_NMODE_AUTO = 0,
64 DDR_NMODE_1N,
65 DDR_NMODE_2N,
66 } nmode;
67
Angel Pons7c49cb82020-03-16 23:17:32 +010068 /*
69 * DDR refresh rate config. JEDEC Standard No.21-C Annex K allows for DIMM SPD data to
70 * specify whether double-rate is required for extended operating temperature range.
71 *
72 * 0 Enable double rate based upon temperature thresholds
73 * 1 Normal rate
74 * 2 Always enable double rate
Patrick Rudolph5709e032019-03-25 10:12:14 +010075 */
76 enum {
77 DDR_REFRESH_RATE_TEMP_THRES = 0,
78 DDR_REFRESH_REATE_NORMAL,
79 DDR_REFRESH_RATE_DOUBLE,
80 } ddr_refresh_rate_config;
81
82 /*
83 * USB Port Configuration:
84 * [0] = enable
85 * [1] = overcurrent pin
86 * [2] = length
87 *
Angel Pons7c49cb82020-03-16 23:17:32 +010088 * Ports 0-7 can be mapped to OC0-OC3
Patrick Rudolph5709e032019-03-25 10:12:14 +010089 * Ports 8-13 can be mapped to OC4-OC7
90 *
91 * Port Length
92 * MOBILE:
93 * < 0x050 = Setting 1 (back panel, 1-5in, lowest tx amplitude)
94 * < 0x140 = Setting 2 (back panel, 5-14in, highest tx amplitude)
95 * DESKTOP:
96 * < 0x080 = Setting 1 (front/back panel, <8in, lowest tx amplitude)
97 * < 0x130 = Setting 2 (back panel, 8-13in, higher tx amplitude)
98 * < 0x150 = Setting 3 (back panel, 13-15in, highest tx amplitude)
99 */
100 u16 usb_port_config[16][3];
101
102 struct {
103 /* 0: Disable, 1: Enable, 2: Auto, 3: Smart Auto */
104 u8 mode : 2;
105 /* 4 bit mask, 1: switchable, 0: not switchable */
106 u8 hs_port_switch_mask : 4;
107 /* 0: No xHCI preOS driver, 1: xHCI preOS driver */
108 u8 preboot_support : 1;
109 /* 0: Disable, 1: Enable */
110 u8 xhci_streams : 1;
111 } usb3;
Stefan Reinauer00636b02012-04-04 00:08:51 +0200112};
Iru Caid7ee9dd2016-02-24 15:03:58 +0800113
114#endif /* NORTHBRIDGE_INTEL_SANDYBRIDGE_CHIP_H */