soc/intel/common/block: Add common chip config block
Adding common chip config structure which will be used to return data to common code. When common code requires soc data, code used to fetch entire soc config structure. With this change, common code will only get the data/structure which is required by common code and not entire config. For now, adding i2c, gspi and lockdown configuration which will be used by common code. BUG=none BRANCH=b:78109109 TEST=compile code for APL/SKL/CNL. Boot using SKL/APL/CNL and check values are returned properly using common structure. Change-Id: I7f1671e064782397d3ace066a08bf1333192b21a Signed-off-by: Subrata Banik <subrata.banik@intel.com> Signed-off-by: Maulik V Vaghela <maulik.v.vaghela@intel.com> Reviewed-on: https://review.coreboot.org/26189 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Hannah Williams <hannah.williams@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
f513cebd8b
commit
c4986eb7f4
|
@ -189,7 +189,9 @@ chip soc/intel/skylake
|
||||||
register "SendVrMbxCmd" = "1"
|
register "SendVrMbxCmd" = "1"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -169,46 +169,60 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
|
# Intel Common SoC Config
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| Field | Value |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | Early TPM access |
|
||||||
|
#| I2C2 | Touchpad |
|
||||||
|
#| I2C4 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST_PLUS,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.early_init = 1,
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 112,
|
||||||
|
.fall_time_ns = 34,
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 186,
|
||||||
|
.scl_hcnt = 93,
|
||||||
|
.sda_hold = 36,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 176,
|
||||||
|
.scl_hcnt = 95,
|
||||||
|
.sda_hold = 36,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
|
||||||
# Touchscreen
|
# Touchscreen
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[0]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST_PLUS,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Enable I2C1 bus early for TPM access
|
# Enable I2C1 bus early for TPM access
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[1]" = "{
|
|
||||||
.early_init = 1,
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 112,
|
|
||||||
.fall_time_ns = 34,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Touchpad
|
# Touchpad
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 186,
|
|
||||||
.scl_hcnt = 93,
|
|
||||||
.sda_hold = 36,
|
|
||||||
}
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 176,
|
|
||||||
.scl_hcnt = 95,
|
|
||||||
.sda_hold = 36,
|
|
||||||
}
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@ -230,9 +244,6 @@ chip soc/intel/skylake
|
||||||
register "tdp_pl2_override" = "15"
|
register "tdp_pl2_override" = "15"
|
||||||
register "tcc_offset" = "10"
|
register "tcc_offset" = "10"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
end
|
end
|
||||||
|
|
|
@ -275,21 +275,32 @@ chip soc/intel/skylake
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_3V3" # Debug
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_3V3" # Debug
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8" # Audio
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8" # Audio
|
||||||
|
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
# Intel Common SoC Config
|
||||||
# communication before memory is up.
|
#+-------------------+---------------------------+
|
||||||
register "gspi[0]" = "{
|
#| Field | Value |
|
||||||
.speed_mhz = 1,
|
#+-------------------+---------------------------+
|
||||||
.early_init = 1,
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
}"
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C5 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
|
||||||
# audio
|
register "common_soc_config" = "{
|
||||||
register "i2c[5]" = "{
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
.speed = I2C_SPEED_FAST,
|
.gspi[0] = {
|
||||||
.speed_config[0] = {
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
.i2c[5] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.scl_lcnt = 194,
|
.speed_config[0] = {
|
||||||
.scl_hcnt = 100,
|
.speed = I2C_SPEED_FAST,
|
||||||
.sda_hold = 36,
|
.scl_lcnt = 194,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
|
@ -316,9 +327,6 @@ chip soc/intel/skylake
|
||||||
# Use default SD card detect GPIO configuration
|
# Use default SD card detect GPIO configuration
|
||||||
register "sdcard_cd_gpio_default" = "GPP_A7"
|
register "sdcard_cd_gpio_default" = "GPP_A7"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
end
|
end
|
||||||
|
|
|
@ -187,7 +187,9 @@ chip soc/intel/skylake
|
||||||
register "SendVrMbxCmd" = "1"
|
register "SendVrMbxCmd" = "1"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -184,7 +184,9 @@ chip soc/intel/skylake
|
||||||
register "SendVrMbxCmd" = "2"
|
register "SendVrMbxCmd" = "2"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -54,40 +54,45 @@ chip soc/intel/apollolake
|
||||||
register "hdaudio_pwr_gate_enable" = "1"
|
register "hdaudio_pwr_gate_enable" = "1"
|
||||||
register "hdaudio_bios_config_lockdown" = "1"
|
register "hdaudio_bios_config_lockdown" = "1"
|
||||||
|
|
||||||
# digitizer at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 152,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 30,
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
}"
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
# Enable I2C5 for audio codec at 400kHz
|
#| | before memory is up |
|
||||||
register "i2c[5]" = "{
|
#| I2C0 | Digitizer |
|
||||||
.speed = I2C_SPEED_FAST,
|
#| I2C5 | Audio |
|
||||||
.rise_time_ns = 104,
|
#| I2C6 | Trackpad |
|
||||||
.fall_time_ns = 52,
|
#| I2C7 | Touchscreen |
|
||||||
}"
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
# trackpad at 400kHz
|
.gspi[0] = {
|
||||||
register "i2c[6]" = "{
|
.speed_mhz = 1,
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 114,
|
},
|
||||||
.fall_time_ns = 164,
|
.i2c[0] = {
|
||||||
.data_hold_time_ns = 350,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[7]" = "{
|
.i2c[5] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.rise_time_ns = 76,
|
.rise_time_ns = 104,
|
||||||
.fall_time_ns = 164,
|
.fall_time_ns = 52,
|
||||||
}"
|
},
|
||||||
|
.i2c[6] = {
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
.speed = I2C_SPEED_FAST,
|
||||||
# communication before memory is up.
|
.rise_time_ns = 114,
|
||||||
register "gspi[0]" = "{
|
.fall_time_ns = 164,
|
||||||
.speed_mhz = 1,
|
.data_hold_time_ns = 350,
|
||||||
.early_init = 1,
|
},
|
||||||
|
.i2c[7] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 76,
|
||||||
|
.fall_time_ns = 164,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
register "pnp_settings" = "PNP_PERF_POWER"
|
register "pnp_settings" = "PNP_PERF_POWER"
|
||||||
|
|
|
@ -54,40 +54,45 @@ chip soc/intel/apollolake
|
||||||
register "hdaudio_pwr_gate_enable" = "1"
|
register "hdaudio_pwr_gate_enable" = "1"
|
||||||
register "hdaudio_bios_config_lockdown" = "1"
|
register "hdaudio_bios_config_lockdown" = "1"
|
||||||
|
|
||||||
# digitizer at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 152,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 30,
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
}"
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
# Enable I2C5 for audio codec at 400kHz
|
#| | before memory is up |
|
||||||
register "i2c[5]" = "{
|
#| I2C0 | Digitizer |
|
||||||
.speed = I2C_SPEED_FAST,
|
#| I2C5 | Audio |
|
||||||
.rise_time_ns = 104,
|
#| I2C6 | Trackpad |
|
||||||
.fall_time_ns = 52,
|
#| I2C7 | Touchscreen |
|
||||||
}"
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
# trackpad at 400kHz
|
.gspi[0] = {
|
||||||
register "i2c[6]" = "{
|
.speed_mhz = 1,
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 114,
|
},
|
||||||
.fall_time_ns = 164,
|
.i2c[0] = {
|
||||||
.data_hold_time_ns = 350,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[7]" = "{
|
.i2c[5] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.rise_time_ns = 76,
|
.rise_time_ns = 104,
|
||||||
.fall_time_ns = 164,
|
.fall_time_ns = 52,
|
||||||
}"
|
},
|
||||||
|
.i2c[6] = {
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
.speed = I2C_SPEED_FAST,
|
||||||
# communication before memory is up.
|
.rise_time_ns = 114,
|
||||||
register "gspi[0]" = "{
|
.fall_time_ns = 164,
|
||||||
.speed_mhz = 1,
|
.data_hold_time_ns = 350,
|
||||||
.early_init = 1,
|
},
|
||||||
|
.i2c[7] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 76,
|
||||||
|
.fall_time_ns = 164,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
register "pnp_settings" = "PNP_PERF_POWER"
|
register "pnp_settings" = "PNP_PERF_POWER"
|
||||||
|
|
|
@ -66,7 +66,6 @@ chip soc/intel/skylake
|
||||||
register "psys_pmax" = "45"
|
register "psys_pmax" = "45"
|
||||||
register "tcc_offset" = "10"
|
register "tcc_offset" = "10"
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
register "pirqa_routing" = "PCH_IRQ11"
|
register "pirqa_routing" = "PCH_IRQ11"
|
||||||
register "pirqb_routing" = "PCH_IRQ10"
|
register "pirqb_routing" = "PCH_IRQ10"
|
||||||
|
@ -175,51 +174,66 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
|
# Intel Common SoC Config
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| Field | Value |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C2 | Trackpad |
|
||||||
|
#| I2C3 | Camera |
|
||||||
|
#| I2C4 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 186,
|
||||||
|
.scl_hcnt = 93,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[3] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 176,
|
||||||
|
.scl_hcnt = 95,
|
||||||
|
.sda_hold = 36,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.gspi[0] = {
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
}"
|
||||||
# Touchscreen
|
# Touchscreen
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[0]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Trackpad
|
# Trackpad
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 186,
|
|
||||||
.scl_hcnt = 93,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[3]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 176,
|
|
||||||
.scl_hcnt = 95,
|
|
||||||
.sda_hold = 36,
|
|
||||||
}
|
|
||||||
}"
|
|
||||||
|
|
||||||
# GSPI0 for cr50 TPM
|
|
||||||
register "gspi[0]" = "{
|
|
||||||
.speed_mhz = 1,
|
|
||||||
.early_init = 1,
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
[PchSerialIoIndexI2C0] = PchSerialIoPci,
|
[PchSerialIoIndexI2C0] = PchSerialIoPci,
|
||||||
|
|
|
@ -170,71 +170,85 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
# Touchscreen
|
# Intel Common SoC Config
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
#+-------------------+---------------------------+
|
||||||
register "i2c[0]" = "{
|
#| Field | Value |
|
||||||
.speed = I2C_SPEED_FAST,
|
#+-------------------+---------------------------+
|
||||||
.speed_config[0] = {
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | H1 |
|
||||||
|
#| I2C2 | Camera |
|
||||||
|
#| I2C3 | Pen |
|
||||||
|
#| I2C4 | Camera |
|
||||||
|
#| I2C5 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.scl_lcnt = 185,
|
.speed_config[0] = {
|
||||||
.scl_hcnt = 90,
|
.speed = I2C_SPEED_FAST,
|
||||||
.sda_hold = 36,
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 97,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 97,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[5] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 98,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
|
# Touchscreen
|
||||||
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
|
|
||||||
# H1
|
# H1
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[1]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 100,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
.early_init = 1,
|
|
||||||
}"
|
|
||||||
|
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 97,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Pen
|
# Pen
|
||||||
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 97,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[5]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 98,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
|
|
||||||
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@ -260,9 +274,6 @@ chip soc/intel/skylake
|
||||||
# Use default SD card detect GPIO configuration
|
# Use default SD card detect GPIO configuration
|
||||||
register "sdcard_cd_gpio_default" = "GPP_E15"
|
register "sdcard_cd_gpio_default" = "GPP_E15"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
# PCH Trip Temperature in degree C
|
# PCH Trip Temperature in degree C
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
|
|
||||||
|
|
|
@ -196,58 +196,73 @@ chip soc/intel/skylake
|
||||||
|
|
||||||
# Touchscreen
|
# Touchscreen
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[0]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 185,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Trackpad
|
# Trackpad
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[1]" = "{
|
|
||||||
.early_init = 1,
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 185,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Pen
|
# Pen
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 185,
|
|
||||||
.scl_hcnt = 100,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[3]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 195,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
# Intel Common SoC Config
|
||||||
# communication before memory is up.
|
#+-------------------+---------------------------+
|
||||||
register "gspi[0]" = "{
|
#| Field | Value |
|
||||||
.speed_mhz = 1,
|
#+-------------------+---------------------------+
|
||||||
.early_init = 1,
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | Trackpad |
|
||||||
|
#| I2C2 | Pen |
|
||||||
|
#| I2C3 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.gspi[0] = {
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[3] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 195,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
||||||
|
@ -270,9 +285,6 @@ chip soc/intel/skylake
|
||||||
register "tcc_offset" = "10" # TCC of 90C
|
register "tcc_offset" = "10" # TCC of 90C
|
||||||
register "psys_pmax" = "101"
|
register "psys_pmax" = "101"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
# PCH Trip Temperature in degree C
|
# PCH Trip Temperature in degree C
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
|
|
||||||
|
|
|
@ -179,80 +179,97 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
# Touchscreen
|
# Intel Common SoC Config
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
#+-------------------+---------------------------+
|
||||||
register "i2c[0]" = "{
|
#| Field | Value |
|
||||||
.speed = I2C_SPEED_FAST,
|
#+-------------------+---------------------------+
|
||||||
.speed_config[0] = {
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C2 | Trackpad |
|
||||||
|
#| I2C3 | Pen |
|
||||||
|
#| I2C4 | Camera |
|
||||||
|
#| I2C5 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.scl_lcnt = 180,
|
.speed_config[0] = {
|
||||||
.scl_hcnt = 90,
|
.speed = I2C_SPEED_FAST,
|
||||||
.sda_hold = 36,
|
.scl_lcnt = 180,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.early_init = 1,
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[3] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 185,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[5] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 100,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
|
# Touch Screen
|
||||||
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
|
|
||||||
# H1
|
# H1
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
||||||
# Configure I2C1 for cr50 TPM. Early init is required to set up a BAR
|
|
||||||
# for TPM communication before memory is up.
|
|
||||||
register "i2c[1]" = "{
|
|
||||||
.early_init = 1,
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 185,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Trackpad
|
# Trackpad
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 100,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Pen
|
# Pen
|
||||||
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[3]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 185,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 100,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[5]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 100,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@ -278,9 +295,6 @@ chip soc/intel/skylake
|
||||||
# Use default SD card detect GPIO configuration
|
# Use default SD card detect GPIO configuration
|
||||||
register "sdcard_cd_gpio_default" = "GPP_E15"
|
register "sdcard_cd_gpio_default" = "GPP_E15"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
# PCH Trip Temperature in degree C
|
# PCH Trip Temperature in degree C
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,6 @@ chip soc/intel/skylake
|
||||||
register "psys_pmax" = "45"
|
register "psys_pmax" = "45"
|
||||||
register "tcc_offset" = "10"
|
register "tcc_offset" = "10"
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
register "pirqa_routing" = "PCH_IRQ11"
|
register "pirqa_routing" = "PCH_IRQ11"
|
||||||
register "pirqb_routing" = "PCH_IRQ10"
|
register "pirqb_routing" = "PCH_IRQ10"
|
||||||
|
@ -176,59 +175,75 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[2]" = "USB3_PORT_EMPTY" # Empty
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
|
# Intel Common SoC Config
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| Field | Value |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | Trackpad |
|
||||||
|
#| I2C3 | Camera |
|
||||||
|
#| I2C4 | Audio |
|
||||||
|
#| I2C5 | Rear Camera & SAR |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 186,
|
||||||
|
.scl_hcnt = 93,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[3] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 176,
|
||||||
|
.scl_hcnt = 95,
|
||||||
|
.sda_hold = 36,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.i2c[5] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
|
.gspi[0] = {
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
}"
|
||||||
# Touchscreen
|
# Touchscreen
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
register "i2c[0]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Trackpad
|
# Trackpad
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[1]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 186,
|
|
||||||
.scl_hcnt = 93,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Front Camera
|
# Front Camera
|
||||||
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[3]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[3]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 176,
|
|
||||||
.scl_hcnt = 95,
|
|
||||||
.sda_hold = 36,
|
|
||||||
}
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Rear Camera & SAR
|
# Rear Camera & SAR
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[5]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
# GSPI0 for cr50 TPM
|
|
||||||
register "gspi[0]" = "{
|
|
||||||
.speed_mhz = 1,
|
|
||||||
.early_init = 1,
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
[PchSerialIoIndexI2C0] = PchSerialIoPci,
|
[PchSerialIoIndexI2C0] = PchSerialIoPci,
|
||||||
|
|
|
@ -170,68 +170,86 @@ chip soc/intel/skylake
|
||||||
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
register "usb3_ports[2]" = "USB3_PORT_DEFAULT(OC_SKIP)" # Type-A Port
|
||||||
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
register "usb3_ports[3]" = "USB3_PORT_EMPTY" # Empty
|
||||||
|
|
||||||
# Touchscreen
|
# Intel Common SoC Config
|
||||||
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
#+-------------------+---------------------------+
|
||||||
register "i2c[0]" = "{
|
#| Field | Value |
|
||||||
.speed = I2C_SPEED_FAST,
|
#+-------------------+---------------------------+
|
||||||
.speed_config[0] = {
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| I2C0 | Touchscreen |
|
||||||
|
#| I2C1 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C2 | Camera |
|
||||||
|
#| I2C4 | Camera |
|
||||||
|
#| I2C5 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[0] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.scl_lcnt = 180,
|
.speed_config[0] = {
|
||||||
.scl_hcnt = 85,
|
.speed = I2C_SPEED_FAST,
|
||||||
.sda_hold = 36,
|
.scl_lcnt = 180,
|
||||||
|
.scl_hcnt = 85,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[1] = {
|
||||||
|
.early_init = 1,
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[2] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 192,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.i2c[5] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.speed_config[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.scl_lcnt = 190,
|
||||||
|
.scl_hcnt = 90,
|
||||||
|
.sda_hold = 36,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
|
# Touchscreen
|
||||||
|
register "i2c_voltage[0]" = "I2C_VOLTAGE_3V3"
|
||||||
|
|
||||||
# H1
|
# H1
|
||||||
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
|
||||||
# Configure I2C1 for cr50 TPM. Early init is required to set up a BAR
|
# Configure I2C1 for cr50 TPM. Early init is required to set up a BAR
|
||||||
# for TPM communication before memory is up.
|
# for TPM communication before memory is up.
|
||||||
register "i2c[1]" = "{
|
register "i2c_voltage[1]" = "I2C_VOLTAGE_3V3"
|
||||||
.early_init = 1,
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[2]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 192,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Camera
|
# Camera
|
||||||
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[4]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[4]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8"
|
||||||
register "i2c[5]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.speed_config[0] = {
|
|
||||||
.speed = I2C_SPEED_FAST,
|
|
||||||
.scl_lcnt = 190,
|
|
||||||
.scl_hcnt = 90,
|
|
||||||
.sda_hold = 36,
|
|
||||||
},
|
|
||||||
}"
|
|
||||||
|
|
||||||
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
# Must leave UART0 enabled or SD/eMMC will not work as PCI
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
|
@ -257,9 +275,6 @@ chip soc/intel/skylake
|
||||||
# Use default SD card detect GPIO configuration
|
# Use default SD card detect GPIO configuration
|
||||||
register "sdcard_cd_gpio_default" = "GPP_E15"
|
register "sdcard_cd_gpio_default" = "GPP_E15"
|
||||||
|
|
||||||
# Lock Down
|
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
|
||||||
|
|
||||||
# PCH Trip Temperature in degree C
|
# PCH Trip Temperature in degree C
|
||||||
register "pch_trip_temp" = "75"
|
register "pch_trip_temp" = "75"
|
||||||
|
|
||||||
|
|
|
@ -76,41 +76,44 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
||||||
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| I2C0 | Audio |
|
||||||
}"
|
#| I2C2 | TPM |
|
||||||
|
#| I2C3 | Touchscreen |
|
||||||
# Enable I2C2 bus early for TPM at 400kHz
|
#| I2C4 | Trackpad |
|
||||||
register "i2c[2]" = "{
|
#| I2C5 | Digitizer |
|
||||||
.early_init = 1,
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
register "common_soc_config" = "{
|
||||||
.rise_time_ns = 57,
|
.i2c[0] = {
|
||||||
.fall_time_ns = 28,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 104,
|
||||||
|
.fall_time_ns = 52,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[3]" = "{
|
.i2c[2] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 76,
|
.speed = I2C_SPEED_FAST,
|
||||||
.fall_time_ns = 164,
|
.rise_time_ns = 57,
|
||||||
}"
|
.fall_time_ns = 28,
|
||||||
|
},
|
||||||
# trackpad at 400kHz
|
.i2c[3] = {
|
||||||
register "i2c[4]" = "{
|
.speed = I2C_SPEED_FAST,
|
||||||
.speed = I2C_SPEED_FAST,
|
.rise_time_ns = 76,
|
||||||
.rise_time_ns = 114,
|
.fall_time_ns = 164,
|
||||||
.fall_time_ns = 164,
|
},
|
||||||
.data_hold_time_ns = 350,
|
.i2c[4] = {
|
||||||
}"
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 114,
|
||||||
# digitizer at 400kHz
|
.fall_time_ns = 164,
|
||||||
register "i2c[5]" = "{
|
.data_hold_time_ns = 350,
|
||||||
.speed = I2C_SPEED_FAST,
|
},
|
||||||
.rise_time_ns = 152,
|
.i2c[5] = {
|
||||||
.fall_time_ns = 30,
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -76,41 +76,44 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
||||||
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| I2C0 | Audio |
|
||||||
}"
|
#| I2C2 | TPM |
|
||||||
|
#| I2C3 | Touchscreen |
|
||||||
# Enable I2C2 bus early for TPM at 400kHz
|
#| I2C4 | Trackpad |
|
||||||
register "i2c[2]" = "{
|
#| I2C5 | Digitizer |
|
||||||
.early_init = 1,
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
register "common_soc_config" = "{
|
||||||
.rise_time_ns = 57,
|
.i2c[0] = {
|
||||||
.fall_time_ns = 28,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 104,
|
||||||
|
.fall_time_ns = 52,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[3]" = "{
|
.i2c[2] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 76,
|
.speed = I2C_SPEED_FAST,
|
||||||
.fall_time_ns = 164,
|
.rise_time_ns = 57,
|
||||||
}"
|
.fall_time_ns = 28,
|
||||||
|
},
|
||||||
# trackpad at 400kHz
|
.i2c[3] = {
|
||||||
register "i2c[4]" = "{
|
.speed = I2C_SPEED_FAST,
|
||||||
.speed = I2C_SPEED_FAST,
|
.rise_time_ns = 76,
|
||||||
.rise_time_ns = 114,
|
.fall_time_ns = 164,
|
||||||
.fall_time_ns = 164,
|
},
|
||||||
.data_hold_time_ns = 350,
|
.i2c[4] = {
|
||||||
}"
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 114,
|
||||||
# digitizer at 400kHz
|
.fall_time_ns = 164,
|
||||||
register "i2c[5]" = "{
|
.data_hold_time_ns = 350,
|
||||||
.speed = I2C_SPEED_FAST,
|
},
|
||||||
.rise_time_ns = 152,
|
.i2c[5] = {
|
||||||
.fall_time_ns = 30,
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -76,33 +76,37 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
||||||
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| I2C0 | Audio |
|
||||||
}"
|
#| I2C2 | TPM |
|
||||||
|
#| I2C3 | Touchscreen |
|
||||||
# Enable I2C2 bus early for TPM at 400kHz
|
#| I2C4 | Trackpad |
|
||||||
register "i2c[2]" = "{
|
#+-------------------+---------------------------+
|
||||||
.early_init = 1,
|
register "common_soc_config" = "{
|
||||||
.speed = I2C_SPEED_FAST,
|
.i2c[0] = {
|
||||||
.rise_time_ns = 50,
|
.speed = I2C_SPEED_FAST,
|
||||||
.fall_time_ns = 23,
|
.rise_time_ns = 104,
|
||||||
}"
|
.fall_time_ns = 52,
|
||||||
|
},
|
||||||
# touchscreen at 400kHz
|
.i2c[2] = {
|
||||||
register "i2c[3]" = "{
|
.early_init = 1,
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.rise_time_ns = 76,
|
.rise_time_ns = 50,
|
||||||
.fall_time_ns = 164,
|
.fall_time_ns = 23,
|
||||||
}"
|
},
|
||||||
|
.i2c[3] = {
|
||||||
# trackpad at 400kHz
|
.speed = I2C_SPEED_FAST,
|
||||||
register "i2c[4]" = "{
|
.rise_time_ns = 76,
|
||||||
.speed = I2C_SPEED_FAST,
|
.fall_time_ns = 164,
|
||||||
.rise_time_ns = 90,
|
},
|
||||||
.fall_time_ns = 164,
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 90,
|
||||||
|
.fall_time_ns = 164,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -73,40 +73,43 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
||||||
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| I2C0 | Audio |
|
||||||
}"
|
#| I2C2 | TPM |
|
||||||
|
#| I2C3 | Touchscreen |
|
||||||
# Enable I2C2 bus early for TPM at 400kHz
|
#| I2C4 | Trackpad |
|
||||||
register "i2c[2]" = "{
|
#| I2C5 | Digitizer |
|
||||||
.early_init = 1,
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
register "common_soc_config" = "{
|
||||||
.rise_time_ns = 57,
|
.i2c[0] = {
|
||||||
.fall_time_ns = 28,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 104,
|
||||||
|
.fall_time_ns = 52,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[3]" = "{
|
.i2c[2] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 76,
|
.speed = I2C_SPEED_FAST,
|
||||||
.fall_time_ns = 164,
|
.rise_time_ns = 57,
|
||||||
}"
|
.fall_time_ns = 28,
|
||||||
|
},
|
||||||
# trackpad at 400kHz
|
.i2c[3] = {
|
||||||
register "i2c[4]" = "{
|
.speed = I2C_SPEED_FAST,
|
||||||
.speed = I2C_SPEED_FAST,
|
.rise_time_ns = 76,
|
||||||
.rise_time_ns = 114,
|
.fall_time_ns = 164,
|
||||||
.fall_time_ns = 164,
|
},
|
||||||
}"
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
# digitizer at 400kHz
|
.rise_time_ns = 114,
|
||||||
register "i2c[5]" = "{
|
.fall_time_ns = 164,
|
||||||
.speed = I2C_SPEED_FAST,
|
},
|
||||||
.rise_time_ns = 152,
|
.i2c[5] = {
|
||||||
.fall_time_ns = 30,
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -76,40 +76,43 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
register "gpe0_dw2" = "PMC_GPE_N_63_32"
|
||||||
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_SW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 44,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 22,
|
#| I2C0 | Audio |
|
||||||
}"
|
#| I2C2 | TPM |
|
||||||
|
#| I2C3 | Touchscreen |
|
||||||
# Enable I2C2 bus early for TPM at 400kHz
|
#| I2C4 | Trackpad |
|
||||||
register "i2c[2]" = "{
|
#| I2C5 | Digitizer |
|
||||||
.early_init = 1,
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
register "common_soc_config" = "{
|
||||||
.rise_time_ns = 40,
|
.i2c[0] = {
|
||||||
.fall_time_ns = 20,
|
.speed = I2C_SPEED_FAST,
|
||||||
}"
|
.rise_time_ns = 44,
|
||||||
|
.fall_time_ns = 22,
|
||||||
# touchscreen at 400kHz
|
},
|
||||||
register "i2c[3]" = "{
|
.i2c[2] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.early_init = 1,
|
||||||
.rise_time_ns = 70,
|
.speed = I2C_SPEED_FAST,
|
||||||
.fall_time_ns = 164,
|
.rise_time_ns = 40,
|
||||||
}"
|
.fall_time_ns = 20,
|
||||||
|
},
|
||||||
# trackpad at 400kHz
|
.i2c[3] = {
|
||||||
register "i2c[4]" = "{
|
.speed = I2C_SPEED_FAST,
|
||||||
.speed = I2C_SPEED_FAST,
|
.rise_time_ns = 70,
|
||||||
.rise_time_ns = 20,
|
.fall_time_ns = 164,
|
||||||
.fall_time_ns = 164,
|
},
|
||||||
}"
|
.i2c[4] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
# digitizer at 400kHz
|
.rise_time_ns = 20,
|
||||||
register "i2c[5]" = "{
|
.fall_time_ns = 164,
|
||||||
.speed = I2C_SPEED_FAST,
|
},
|
||||||
.rise_time_ns = 152,
|
.i2c[5] = {
|
||||||
.fall_time_ns = 30,
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 152,
|
||||||
|
.fall_time_ns = 30,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -25,11 +25,20 @@ chip soc/intel/cannonlake
|
||||||
register "ScsEmmcHs400Enabled" = "1"
|
register "ScsEmmcHs400Enabled" = "1"
|
||||||
register "ScsSdCardEnabled" = "1"
|
register "ScsSdCardEnabled" = "1"
|
||||||
|
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
# Intel Common SoC Config
|
||||||
# communication before memory is up.
|
#+-------------------+---------------------------+
|
||||||
register "gspi[0]" = "{
|
#| Field | Value |
|
||||||
.speed_mhz = 1,
|
#+-------------------+---------------------------+
|
||||||
.early_init = 1,
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.gspi[0] = {
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"
|
register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"
|
||||||
|
|
|
@ -34,11 +34,26 @@ chip soc/intel/cannonlake
|
||||||
register "ScsEmmcHs400Enabled" = "1"
|
register "ScsEmmcHs400Enabled" = "1"
|
||||||
register "ScsSdCardEnabled" = "1"
|
register "ScsSdCardEnabled" = "1"
|
||||||
|
|
||||||
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
# Intel Common SoC Config
|
||||||
# communication before memory is up.
|
#+-------------------+---------------------------+
|
||||||
register "gspi[0]" = "{
|
#| Field | Value |
|
||||||
.speed_mhz = 1,
|
#+-------------------+---------------------------+
|
||||||
.early_init = 1,
|
#| GSPI0 | cr50 TPM. Early init is |
|
||||||
|
#| | required to set up a BAR |
|
||||||
|
#| | for TPM communication |
|
||||||
|
#| | before memory is up |
|
||||||
|
#| I2C0 | Touchscreen Digitizer |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.gspi[0] = {
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
},
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST_PLUS,
|
||||||
|
.rise_time_ns = 98,
|
||||||
|
.fall_time_ns = 38,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC2)"
|
register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC2)"
|
||||||
|
@ -55,13 +70,6 @@ chip soc/intel/cannonlake
|
||||||
register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC2)"
|
register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC2)"
|
||||||
register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC3)"
|
register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC3)"
|
||||||
|
|
||||||
# Touchscreen Digitizer
|
|
||||||
register "i2c[0]" = "{
|
|
||||||
.speed = I2C_SPEED_FAST_PLUS,
|
|
||||||
.rise_time_ns = 98,
|
|
||||||
.fall_time_ns = 38,
|
|
||||||
}"
|
|
||||||
|
|
||||||
register "PchHdaDspEnable" = "1"
|
register "PchHdaDspEnable" = "1"
|
||||||
register "PchHdaAudioLinkSsp0" = "1"
|
register "PchHdaAudioLinkSsp0" = "1"
|
||||||
register "PchHdaAudioLinkSsp1" = "1"
|
register "PchHdaAudioLinkSsp1" = "1"
|
||||||
|
|
|
@ -72,11 +72,20 @@ chip soc/intel/cannonlake
|
||||||
# Enable S0ix
|
# Enable S0ix
|
||||||
register "s0ix_enable" = "1"
|
register "s0ix_enable" = "1"
|
||||||
|
|
||||||
# Audio
|
# Intel Common SoC Config
|
||||||
register "i2c[3]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_STANDARD,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| chipset_lockdown | CHIPSET_LOCKDOWN_COREBOOT |
|
||||||
|
#| I2C3 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
.i2c[3] = {
|
||||||
|
.speed = I2C_SPEED_STANDARD,
|
||||||
|
.rise_time_ns = 104,
|
||||||
|
.fall_time_ns = 52,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
|
|
|
@ -80,11 +80,18 @@ chip soc/intel/apollolake
|
||||||
register "gpe0_dw2" = "PMC_GPE_N_95_64"
|
register "gpe0_dw2" = "PMC_GPE_N_95_64"
|
||||||
register "gpe0_dw3" = "PMC_GPE_NW_31_0"
|
register "gpe0_dw3" = "PMC_GPE_NW_31_0"
|
||||||
|
|
||||||
# Enable I2C0 for audio codec at 400kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_FAST,
|
#| Field | Value |
|
||||||
.rise_time_ns = 104,
|
#+-------------------+---------------------------+
|
||||||
.fall_time_ns = 52,
|
#| I2C0 | Audio |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_FAST,
|
||||||
|
.rise_time_ns = 104,
|
||||||
|
.fall_time_ns = 52,
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# Minimum SLP S3 assertion width 28ms.
|
# Minimum SLP S3 assertion width 28ms.
|
||||||
|
|
|
@ -214,7 +214,9 @@ chip soc/intel/skylake
|
||||||
register "VmxEnable" = "0"
|
register "VmxEnable" = "0"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -209,7 +209,9 @@ chip soc/intel/skylake
|
||||||
register "sdcard_cd_gpio_default" = "GPP_G5"
|
register "sdcard_cd_gpio_default" = "GPP_G5"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -193,7 +193,9 @@ chip soc/intel/skylake
|
||||||
register "sdcard_cd_gpio_default" = "GPP_A7"
|
register "sdcard_cd_gpio_default" = "GPP_A7"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -179,7 +179,9 @@ chip soc/intel/skylake
|
||||||
register "SendVrMbxCmd" = "2"
|
register "SendVrMbxCmd" = "2"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -186,7 +186,9 @@ chip soc/intel/skylake
|
||||||
register "SendVrMbxCmd" = "2"
|
register "SendVrMbxCmd" = "2"
|
||||||
|
|
||||||
# Lock Down
|
# Lock Down
|
||||||
register "chipset_lockdown" = "CHIPSET_LOCKDOWN_COREBOOT"
|
register "common_soc_config" = "{
|
||||||
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
}"
|
||||||
|
|
||||||
device cpu_cluster 0 on
|
device cpu_cluster 0 on
|
||||||
device lapic 0 on end
|
device lapic 0 on end
|
||||||
|
|
|
@ -43,9 +43,16 @@ chip soc/intel/apollolake
|
||||||
# [6:0] steps of delay for HS200, each 125ps.
|
# [6:0] steps of delay for HS200, each 125ps.
|
||||||
register "emmc_rx_cmd_data_cntl2" = "0x10008"
|
register "emmc_rx_cmd_data_cntl2" = "0x10008"
|
||||||
|
|
||||||
# Enable I2C0 for proximity sensor at 100kHz
|
# Intel Common SoC Config
|
||||||
register "i2c[0]" = "{
|
#+-------------------+---------------------------+
|
||||||
.speed = I2C_SPEED_STANDARD
|
#| Field | Value |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
#| I2C0 | Proximity Sensor |
|
||||||
|
#+-------------------+---------------------------+
|
||||||
|
register "common_soc_config" = "{
|
||||||
|
.i2c[0] = {
|
||||||
|
.speed = I2C_SPEED_STANDARD
|
||||||
|
},
|
||||||
}"
|
}"
|
||||||
|
|
||||||
device domain 0 on
|
device domain 0 on
|
||||||
|
|
|
@ -70,6 +70,7 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
||||||
select SOC_INTEL_COMMON_BLOCK
|
select SOC_INTEL_COMMON_BLOCK
|
||||||
select SOC_INTEL_COMMON_BLOCK_ACPI
|
select SOC_INTEL_COMMON_BLOCK_ACPI
|
||||||
|
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
|
||||||
select SOC_INTEL_COMMON_BLOCK_CPU
|
select SOC_INTEL_COMMON_BLOCK_CPU
|
||||||
select SOC_INTEL_COMMON_BLOCK_DSP
|
select SOC_INTEL_COMMON_BLOCK_DSP
|
||||||
select SOC_INTEL_COMMON_BLOCK_FAST_SPI
|
select SOC_INTEL_COMMON_BLOCK_FAST_SPI
|
||||||
|
@ -392,6 +393,10 @@ config SOC_INTEL_COMMON_BLOCK_GSPI_MAX
|
||||||
int
|
int
|
||||||
default 3
|
default 3
|
||||||
|
|
||||||
|
config SOC_INTEL_I2C_DEV_MAX
|
||||||
|
int
|
||||||
|
default 8
|
||||||
|
|
||||||
# Don't include the early page tables in RW_A or RW_B cbfs regions
|
# Don't include the early page tables in RW_A or RW_B cbfs regions
|
||||||
config RO_REGION_ONLY
|
config RO_REGION_ONLY
|
||||||
string
|
string
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define _SOC_APOLLOLAKE_CHIP_H_
|
#define _SOC_APOLLOLAKE_CHIP_H_
|
||||||
|
|
||||||
#include <commonlib/helpers.h>
|
#include <commonlib/helpers.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/gspi.h>
|
#include <intelblocks/gspi.h>
|
||||||
#include <soc/gpe.h>
|
#include <soc/gpe.h>
|
||||||
#include <soc/gpio.h>
|
#include <soc/gpio.h>
|
||||||
|
@ -31,7 +32,6 @@
|
||||||
|
|
||||||
#define MAX_PCIE_PORTS 6
|
#define MAX_PCIE_PORTS 6
|
||||||
#define CLKREQ_DISABLED 0xf
|
#define CLKREQ_DISABLED 0xf
|
||||||
#define APOLLOLAKE_I2C_DEV_MAX 8
|
|
||||||
|
|
||||||
enum pnp_settings {
|
enum pnp_settings {
|
||||||
PNP_PERF,
|
PNP_PERF,
|
||||||
|
@ -40,8 +40,9 @@ enum pnp_settings {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct soc_intel_apollolake_config {
|
struct soc_intel_apollolake_config {
|
||||||
/* GSPI */
|
|
||||||
struct gspi_cfg gspi[CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX];
|
/* Common structure containing soc config data required by common code*/
|
||||||
|
struct soc_intel_common_config common_soc_config;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mapping from PCIe root port to CLKREQ input on the SOC. The SOC has
|
* Mapping from PCIe root port to CLKREQ input on the SOC. The SOC has
|
||||||
|
@ -98,9 +99,6 @@ struct soc_intel_apollolake_config {
|
||||||
/* Configure serial IRQ (SERIRQ) line. */
|
/* Configure serial IRQ (SERIRQ) line. */
|
||||||
enum serirq_mode serirq_mode;
|
enum serirq_mode serirq_mode;
|
||||||
|
|
||||||
/* I2C bus configuration */
|
|
||||||
struct dw_i2c_bus_config i2c[APOLLOLAKE_I2C_DEV_MAX];
|
|
||||||
|
|
||||||
uint8_t gpe0_dw1; /* GPE0_63_32 STS/EN */
|
uint8_t gpe0_dw1; /* GPE0_63_32 STS/EN */
|
||||||
uint8_t gpe0_dw2; /* GPE0_95_64 STS/EN */
|
uint8_t gpe0_dw2; /* GPE0_95_64 STS/EN */
|
||||||
uint8_t gpe0_dw3; /* GPE0_127_96 STS/EN */
|
uint8_t gpe0_dw3; /* GPE0_127_96 STS/EN */
|
||||||
|
|
|
@ -24,19 +24,10 @@
|
||||||
|
|
||||||
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
||||||
{
|
{
|
||||||
DEVTREE_CONST struct soc_intel_apollolake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
int devfn = SA_DEVFN_ROOT;
|
common_config = chip_get_common_soc_structure();
|
||||||
DEVTREE_CONST struct device *dev = dev_find_slot(0, devfn);
|
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->gspi[0];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->gspi[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t gspi_get_soc_early_base(void)
|
uintptr_t gspi_get_soc_early_base(void)
|
||||||
|
|
|
@ -17,24 +17,17 @@
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <drivers/i2c/designware/dw_i2c.h>
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
||||||
{
|
{
|
||||||
const struct soc_intel_apollolake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
const struct device *dev = dev_find_slot(0, SA_DEVFN_ROOT);
|
common_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->i2c[bus];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->i2c[bus];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SOC_APOLLOLAKE_SOC_CHIP_H_
|
||||||
|
#define _SOC_APOLLOLAKE_SOC_CHIP_H_
|
||||||
|
|
||||||
|
#include "../../chip.h"
|
||||||
|
|
||||||
|
#endif /* _SOC_APOLLOLAKE_SOC_CHIP_H_ */
|
|
@ -46,6 +46,7 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
||||||
select SOC_INTEL_COMMON_BLOCK
|
select SOC_INTEL_COMMON_BLOCK
|
||||||
select SOC_INTEL_COMMON_BLOCK_ACPI
|
select SOC_INTEL_COMMON_BLOCK_ACPI
|
||||||
|
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
|
||||||
select SOC_INTEL_COMMON_BLOCK_CPU
|
select SOC_INTEL_COMMON_BLOCK_CPU
|
||||||
select SOC_INTEL_COMMON_BLOCK_CPU_MPINIT
|
select SOC_INTEL_COMMON_BLOCK_CPU_MPINIT
|
||||||
select SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2
|
select SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2
|
||||||
|
@ -188,6 +189,10 @@ config SOC_INTEL_COMMON_BLOCK_GSPI_MAX
|
||||||
int
|
int
|
||||||
default 3
|
default 3
|
||||||
|
|
||||||
|
config SOC_INTEL_I2C_DEV_MAX
|
||||||
|
int
|
||||||
|
default 6
|
||||||
|
|
||||||
# Clock divider parameters for 115200 baud rate
|
# Clock divider parameters for 115200 baud rate
|
||||||
config SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL
|
config SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL
|
||||||
hex
|
hex
|
||||||
|
|
|
@ -41,6 +41,7 @@ ramstage-y += graphics.c
|
||||||
ramstage-y += gspi.c
|
ramstage-y += gspi.c
|
||||||
ramstage-y += gpio.c
|
ramstage-y += gpio.c
|
||||||
ramstage-y += i2c.c
|
ramstage-y += i2c.c
|
||||||
|
ramstage-y += lockdown.c
|
||||||
ramstage-y += lpc.c
|
ramstage-y += lpc.c
|
||||||
ramstage-y += memmap.c
|
ramstage-y += memmap.c
|
||||||
ramstage-y += nhlt.c
|
ramstage-y += nhlt.c
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#ifndef _SOC_CHIP_H_
|
#ifndef _SOC_CHIP_H_
|
||||||
#define _SOC_CHIP_H_
|
#define _SOC_CHIP_H_
|
||||||
|
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <drivers/i2c/designware/dw_i2c.h>
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
#include <intelblocks/gspi.h>
|
#include <intelblocks/gspi.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -30,11 +31,10 @@
|
||||||
#include <soc/usb.h>
|
#include <soc/usb.h>
|
||||||
#include <soc/vr_config.h>
|
#include <soc/vr_config.h>
|
||||||
|
|
||||||
#define CANNONLAKE_I2C_DEV_MAX 6
|
|
||||||
|
|
||||||
struct soc_intel_cannonlake_config {
|
struct soc_intel_cannonlake_config {
|
||||||
/* GSPI */
|
|
||||||
struct gspi_cfg gspi[CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX];
|
/* Common struct containing soc config data required by common code */
|
||||||
|
struct soc_intel_common_config common_soc_config;
|
||||||
|
|
||||||
/* Interrupt Routing configuration.
|
/* Interrupt Routing configuration.
|
||||||
* If bit7 is 1, the interrupt is disabled. */
|
* If bit7 is 1, the interrupt is disabled. */
|
||||||
|
@ -201,11 +201,6 @@ struct soc_intel_cannonlake_config {
|
||||||
uint8_t TcoIrqSelect;
|
uint8_t TcoIrqSelect;
|
||||||
uint8_t TcoIrqEnable;
|
uint8_t TcoIrqEnable;
|
||||||
|
|
||||||
enum {
|
|
||||||
CHIPSET_LOCKDOWN_FSP = 0, /* FSP handles locking per UPDs */
|
|
||||||
CHIPSET_LOCKDOWN_COREBOOT, /* coreboot handles locking */
|
|
||||||
} chipset_lockdown;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Option for mainboard to skip coreboot MP initialization
|
* Option for mainboard to skip coreboot MP initialization
|
||||||
* 0 = Make use of coreboot MP Init
|
* 0 = Make use of coreboot MP Init
|
||||||
|
@ -281,9 +276,6 @@ struct soc_intel_cannonlake_config {
|
||||||
/* GPIO SD card detect pin */
|
/* GPIO SD card detect pin */
|
||||||
unsigned int sdcard_cd_gpio;
|
unsigned int sdcard_cd_gpio;
|
||||||
|
|
||||||
/* I2C bus configuration */
|
|
||||||
struct dw_i2c_bus_config i2c[CANNONLAKE_I2C_DEV_MAX];
|
|
||||||
|
|
||||||
/* Enable Pch iSCLK */
|
/* Enable Pch iSCLK */
|
||||||
uint8_t pch_isclk;
|
uint8_t pch_isclk;
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/gspi.h>
|
#include <intelblocks/gspi.h>
|
||||||
#include <intelblocks/spi.h>
|
#include <intelblocks/spi.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
|
@ -24,19 +25,10 @@
|
||||||
|
|
||||||
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
||||||
{
|
{
|
||||||
DEVTREE_CONST struct soc_intel_cannonlake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
int devfn = SA_DEVFN_ROOT;
|
common_config = chip_get_common_soc_structure();
|
||||||
DEVTREE_CONST struct device *dev = dev_find_slot(0, devfn);
|
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->gspi[0];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->gspi[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t gspi_get_soc_early_base(void)
|
uintptr_t gspi_get_soc_early_base(void)
|
||||||
|
|
|
@ -18,24 +18,17 @@
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/pci_def.h>
|
#include <device/pci_def.h>
|
||||||
#include <drivers/i2c/designware/dw_i2c.h>
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
||||||
{
|
{
|
||||||
const struct soc_intel_cannonlake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
const struct device *dev = dev_find_slot(0, SA_DEVFN_ROOT);
|
common_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->i2c[bus];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->i2c[bus];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SOC_CANNONLAKE_SOC_CHIP_H_
|
||||||
|
#define _SOC_CANNONLAKE_SOC_CHIP_H_
|
||||||
|
|
||||||
|
#include "../../chip.h"
|
||||||
|
|
||||||
|
#endif /* _SOC_CANNONLAKE_SOC_CHIP_H_ */
|
|
@ -16,6 +16,7 @@
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <bootstate.h>
|
#include <bootstate.h>
|
||||||
#include <chip.h>
|
#include <chip.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/fast_spi.h>
|
#include <intelblocks/fast_spi.h>
|
||||||
#include <intelblocks/lpc_lib.h>
|
#include <intelblocks/lpc_lib.h>
|
||||||
#include <intelblocks/pcr.h>
|
#include <intelblocks/pcr.h>
|
||||||
|
@ -27,15 +28,15 @@
|
||||||
#define PCR_DMI_GCS 0x274C
|
#define PCR_DMI_GCS 0x274C
|
||||||
#define PCR_DMI_GCS_BILD (1 << 0)
|
#define PCR_DMI_GCS_BILD (1 << 0)
|
||||||
|
|
||||||
static void pmc_lockdown_cfg(const struct soc_intel_cannonlake_config *config)
|
static void pmc_lockdown_cfg(const struct soc_intel_common_config *config)
|
||||||
{
|
{
|
||||||
uint8_t *pmcbase;
|
uint8_t *pmcbase, reg8;
|
||||||
uint32_t reg32, pmsyncreg;
|
uint32_t reg32, pmsyncreg;
|
||||||
|
|
||||||
/* PMSYNC */
|
/* PMSYNC */
|
||||||
pmcbase = pmc_mmio_regs();
|
pmcbase = pmc_mmio_regs();
|
||||||
pmsyncreg = read32(pmcbase + PMSYNC_TPR_CFG);
|
pmsyncreg = read32(pmcbase + PMSYNC_TPR_CFG);
|
||||||
pmsyncreg |= PMSYNC_LOCK;
|
pmsyncreg |= PCH2CPU_TPR_CFG_LOCK;
|
||||||
write32(pmcbase + PMSYNC_TPR_CFG, pmsyncreg);
|
write32(pmcbase + PMSYNC_TPR_CFG, pmsyncreg);
|
||||||
|
|
||||||
/* Lock down ABASE and sleep stretching policy */
|
/* Lock down ABASE and sleep stretching policy */
|
||||||
|
@ -66,7 +67,7 @@ static void dmi_lockdown_cfg(void)
|
||||||
pcr_or8(PID_DMI, PCR_DMI_GCS, PCR_DMI_GCS_BILD);
|
pcr_or8(PID_DMI, PCR_DMI_GCS, PCR_DMI_GCS_BILD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spi_lockdown_cfg(const struct soc_intel_cannonlake_config *config)
|
static void fast_spi_lockdown_cfg(const struct soc_intel_common_config *config)
|
||||||
{
|
{
|
||||||
/* Set FAST_SPI opcode menu */
|
/* Set FAST_SPI opcode menu */
|
||||||
fast_spi_set_opcode_menu();
|
fast_spi_set_opcode_menu();
|
||||||
|
@ -89,24 +90,17 @@ static void spi_lockdown_cfg(const struct soc_intel_cannonlake_config *config)
|
||||||
|
|
||||||
static void platform_lockdown_config(void *unused)
|
static void platform_lockdown_config(void *unused)
|
||||||
{
|
{
|
||||||
struct soc_intel_cannonlake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
struct device *dev;
|
common_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
dev = PCH_DEV_SPI;
|
|
||||||
/* Check if device is valid, else return */
|
|
||||||
if (dev == NULL || dev->chip_info == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
/* SPI lock down configuration */
|
/* SPI lock down configuration */
|
||||||
spi_lockdown_cfg(config);
|
fast_spi_lockdown_cfg(common_config);
|
||||||
|
|
||||||
/* DMI lock down configuration */
|
/* DMI lock down configuration */
|
||||||
dmi_lockdown_cfg();
|
dmi_lockdown_cfg();
|
||||||
|
|
||||||
/* PMC lock down configuration */
|
/* PMC lock down configuration */
|
||||||
pmc_lockdown_cfg(config);
|
pmc_lockdown_cfg(common_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOT_STATE_INIT_ENTRY(BS_DEV_RESOURCES, BS_ON_EXIT, platform_lockdown_config,
|
BOOT_STATE_INIT_ENTRY(BS_DEV_RESOURCES, BS_ON_EXIT, platform_lockdown_config,
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
config SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Intel Processor common soc/ chip configuration support
|
|
@ -0,0 +1,10 @@
|
||||||
|
ifeq ($(CONFIG_SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG),y)
|
||||||
|
|
||||||
|
bootblock-y += chip.c
|
||||||
|
romstage-y += chip.c
|
||||||
|
verstage-y += chip.c
|
||||||
|
ramstage-y += chip.c
|
||||||
|
smm-y += chip.c
|
||||||
|
postcar-y += chip.c
|
||||||
|
|
||||||
|
endif
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <console/console.h>
|
||||||
|
#include <soc/pci_devs.h>
|
||||||
|
#include <soc/soc_chip.h>
|
||||||
|
|
||||||
|
const struct soc_intel_common_config *chip_get_common_soc_structure(void)
|
||||||
|
{
|
||||||
|
const struct soc_intel_common_config *soc_config;
|
||||||
|
const config_t *config;
|
||||||
|
int devfn = SA_DEVFN_ROOT;
|
||||||
|
const struct device *dev = dev_find_slot(0, devfn);
|
||||||
|
|
||||||
|
if (!dev || !dev->chip_info)
|
||||||
|
die("Could not find SA_DEV_ROOT devicetree config!\n");
|
||||||
|
|
||||||
|
config = dev->chip_info;
|
||||||
|
soc_config = &config->common_soc_config;
|
||||||
|
|
||||||
|
return soc_config;
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SOC_INTEL_COMMON_BLOCK_CHIP_H
|
||||||
|
#define SOC_INTEL_COMMON_BLOCK_CHIP_H
|
||||||
|
|
||||||
|
#include <intelblocks/gspi.h>
|
||||||
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CHIPSET_LOCKDOWN_FSP = 0, /* FSP handles locking per UPDs */
|
||||||
|
CHIPSET_LOCKDOWN_COREBOOT, /* coreboot handles locking */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This structure will hold data required by common blocks.
|
||||||
|
* These are soc specific configurations which will be filled by soc.
|
||||||
|
* We'll fill this structure once during init and use the data in common block.
|
||||||
|
*/
|
||||||
|
struct soc_intel_common_config {
|
||||||
|
int chipset_lockdown;
|
||||||
|
struct gspi_cfg gspi[CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX];
|
||||||
|
struct dw_i2c_bus_config i2c[CONFIG_SOC_INTEL_I2C_DEV_MAX];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* This function to retrieve soc config structure required by common code */
|
||||||
|
const struct soc_intel_common_config *chip_get_common_soc_structure(void);
|
||||||
|
|
||||||
|
#endif /* SOC_INTEL_COMMON_BLOCK_CHIP_H */
|
|
@ -56,6 +56,7 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select SOC_INTEL_COMMON
|
select SOC_INTEL_COMMON
|
||||||
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
select SOC_INTEL_COMMON_ACPI_WAKE_SOURCE
|
||||||
select SOC_INTEL_COMMON_BLOCK
|
select SOC_INTEL_COMMON_BLOCK
|
||||||
|
select SOC_INTEL_COMMON_BLOCK_CHIP_CONFIG
|
||||||
select SOC_INTEL_COMMON_BLOCK_CPU
|
select SOC_INTEL_COMMON_BLOCK_CPU
|
||||||
select SOC_INTEL_COMMON_BLOCK_CPU_MPINIT
|
select SOC_INTEL_COMMON_BLOCK_CPU_MPINIT
|
||||||
select SOC_INTEL_COMMON_BLOCK_GPIO_LEGACY_MACROS
|
select SOC_INTEL_COMMON_BLOCK_GPIO_LEGACY_MACROS
|
||||||
|
@ -329,6 +330,10 @@ config SOC_INTEL_COMMON_BLOCK_GSPI_MAX
|
||||||
int
|
int
|
||||||
default 2
|
default 2
|
||||||
|
|
||||||
|
config SOC_INTEL_I2C_DEV_MAX
|
||||||
|
int
|
||||||
|
default 6
|
||||||
|
|
||||||
config CPU_BCLK_MHZ
|
config CPU_BCLK_MHZ
|
||||||
int
|
int
|
||||||
default 100
|
default 100
|
||||||
|
|
|
@ -69,6 +69,14 @@ static void soc_enable(struct device *dev)
|
||||||
dev->ops = &cpu_bus_ops;
|
dev->ops = &cpu_bus_ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_lockdown_config(void)
|
||||||
|
{
|
||||||
|
const struct soc_intel_common_config *soc_config;
|
||||||
|
soc_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
|
return soc_config->chipset_lockdown;
|
||||||
|
}
|
||||||
|
|
||||||
struct chip_operations soc_intel_skylake_ops = {
|
struct chip_operations soc_intel_skylake_ops = {
|
||||||
CHIP_NAME("Intel Skylake")
|
CHIP_NAME("Intel Skylake")
|
||||||
.enable_dev = &soc_enable,
|
.enable_dev = &soc_enable,
|
||||||
|
@ -145,7 +153,7 @@ void soc_silicon_init_params(SILICON_INIT_UPD *params)
|
||||||
params->SataMode = config->SataMode;
|
params->SataMode = config->SataMode;
|
||||||
params->LockDownConfigGlobalSmi = config->LockDownConfigGlobalSmi;
|
params->LockDownConfigGlobalSmi = config->LockDownConfigGlobalSmi;
|
||||||
params->LockDownConfigRtcLock = config->LockDownConfigRtcLock;
|
params->LockDownConfigRtcLock = config->LockDownConfigRtcLock;
|
||||||
if (config->chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
|
if (get_lockdown_config() == CHIPSET_LOCKDOWN_COREBOOT) {
|
||||||
params->LockDownConfigBiosInterface = 0;
|
params->LockDownConfigBiosInterface = 0;
|
||||||
params->LockDownConfigBiosLock = 0;
|
params->LockDownConfigBiosLock = 0;
|
||||||
params->LockDownConfigSpiEiss = 0;
|
params->LockDownConfigSpiEiss = 0;
|
||||||
|
@ -173,7 +181,7 @@ void soc_silicon_init_params(SILICON_INIT_UPD *params)
|
||||||
|
|
||||||
params->SkipMpInit = !config->use_fsp_mp_init;
|
params->SkipMpInit = !config->use_fsp_mp_init;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(config->i2c); i++)
|
for (i = 0; i < ARRAY_SIZE(config->i2c_voltage); i++)
|
||||||
params->SerialIoI2cVoltage[i] = config->i2c_voltage[i];
|
params->SerialIoI2cVoltage[i] = config->i2c_voltage[i];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2008 coresystems GmbH
|
* Copyright (C) 2007-2008 coresystems GmbH
|
||||||
* Copyright (C) 2014 Google Inc.
|
* Copyright (C) 2014 Google Inc.
|
||||||
* Copyright (C) 2015 Intel Corporation.
|
* Copyright (C) 2015-2018 Intel Corporation.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
#include <arch/acpi_device.h>
|
#include <arch/acpi_device.h>
|
||||||
#include <device/i2c_simple.h>
|
#include <device/i2c_simple.h>
|
||||||
#include <drivers/i2c/designware/dw_i2c.h>
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/gspi.h>
|
#include <intelblocks/gspi.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <soc/gpe.h>
|
#include <soc/gpe.h>
|
||||||
|
@ -33,14 +34,16 @@
|
||||||
#include <soc/usb.h>
|
#include <soc/usb.h>
|
||||||
#include <soc/vr_config.h>
|
#include <soc/vr_config.h>
|
||||||
|
|
||||||
#define SKYLAKE_I2C_DEV_MAX 6
|
|
||||||
|
|
||||||
enum skylake_i2c_voltage {
|
enum skylake_i2c_voltage {
|
||||||
I2C_VOLTAGE_3V3,
|
I2C_VOLTAGE_3V3,
|
||||||
I2C_VOLTAGE_1V8
|
I2C_VOLTAGE_1V8
|
||||||
};
|
};
|
||||||
|
|
||||||
struct soc_intel_skylake_config {
|
struct soc_intel_skylake_config {
|
||||||
|
|
||||||
|
/* Common struct containing soc config data required by common code */
|
||||||
|
struct soc_intel_common_config common_soc_config;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupt Routing configuration
|
* Interrupt Routing configuration
|
||||||
* If bit7 is 1, the interrupt is disabled.
|
* If bit7 is 1, the interrupt is disabled.
|
||||||
|
@ -273,11 +276,7 @@ struct soc_intel_skylake_config {
|
||||||
|
|
||||||
/* I2C */
|
/* I2C */
|
||||||
/* Bus voltage level, default is 3.3V */
|
/* Bus voltage level, default is 3.3V */
|
||||||
enum skylake_i2c_voltage i2c_voltage[SKYLAKE_I2C_DEV_MAX];
|
enum skylake_i2c_voltage i2c_voltage[CONFIG_SOC_INTEL_I2C_DEV_MAX];
|
||||||
struct dw_i2c_bus_config i2c[SKYLAKE_I2C_DEV_MAX];
|
|
||||||
|
|
||||||
/* GSPI */
|
|
||||||
struct gspi_cfg gspi[CONFIG_SOC_INTEL_COMMON_BLOCK_GSPI_MAX];
|
|
||||||
|
|
||||||
/* Camera */
|
/* Camera */
|
||||||
u8 Cio2Enable;
|
u8 Cio2Enable;
|
||||||
|
@ -544,16 +543,6 @@ struct soc_intel_skylake_config {
|
||||||
* 0b - Disabled
|
* 0b - Disabled
|
||||||
*/
|
*/
|
||||||
u8 eist_enable;
|
u8 eist_enable;
|
||||||
/* Chipset (LPC and SPI) Lock Down
|
|
||||||
* 1b - coreboot to handle lockdown
|
|
||||||
* 0b - FSP to handle lockdown
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
/* lock according to binary UPD settings */
|
|
||||||
CHIPSET_LOCKDOWN_FSP,
|
|
||||||
/* coreboot handles locking */
|
|
||||||
CHIPSET_LOCKDOWN_COREBOOT,
|
|
||||||
} chipset_lockdown;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Activates VR mailbox command for Intersil VR C-state issues.
|
* Activates VR mailbox command for Intersil VR C-state issues.
|
||||||
|
|
|
@ -211,6 +211,14 @@ static void soc_enable(struct device *dev)
|
||||||
dev->ops = &cpu_bus_ops;
|
dev->ops = &cpu_bus_ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int get_lockdown_config(void)
|
||||||
|
{
|
||||||
|
const struct soc_intel_common_config *soc_config;
|
||||||
|
soc_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
|
return soc_config->chipset_lockdown;
|
||||||
|
}
|
||||||
|
|
||||||
struct chip_operations soc_intel_skylake_ops = {
|
struct chip_operations soc_intel_skylake_ops = {
|
||||||
CHIP_NAME("Intel 6th Gen")
|
CHIP_NAME("Intel 6th Gen")
|
||||||
.enable_dev = &soc_enable,
|
.enable_dev = &soc_enable,
|
||||||
|
@ -352,7 +360,7 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
|
||||||
* do the changes and then lock it back in coreboot during finalize.
|
* do the changes and then lock it back in coreboot during finalize.
|
||||||
*/
|
*/
|
||||||
tconfig->PchSbAccessUnlock = (config->HeciEnabled == 0) ? 1 : 0;
|
tconfig->PchSbAccessUnlock = (config->HeciEnabled == 0) ? 1 : 0;
|
||||||
if (config->chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
|
if (get_lockdown_config() == CHIPSET_LOCKDOWN_COREBOOT) {
|
||||||
tconfig->PchLockDownBiosInterface = 0;
|
tconfig->PchLockDownBiosInterface = 0;
|
||||||
params->PchLockDownBiosLock = 0;
|
params->PchLockDownBiosLock = 0;
|
||||||
params->PchLockDownSpiEiss = 0;
|
params->PchLockDownSpiEiss = 0;
|
||||||
|
@ -389,7 +397,7 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
|
||||||
|
|
||||||
params->CpuConfig.Bits.SkipMpInit = !config->use_fsp_mp_init;
|
params->CpuConfig.Bits.SkipMpInit = !config->use_fsp_mp_init;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(config->i2c); i++)
|
for (i = 0; i < ARRAY_SIZE(config->i2c_voltage); i++)
|
||||||
params->SerialIoI2cVoltage[i] = config->i2c_voltage[i];
|
params->SerialIoI2cVoltage[i] = config->i2c_voltage[i];
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(config->domain_vr_config); i++)
|
for (i = 0; i < ARRAY_SIZE(config->domain_vr_config); i++)
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/gspi.h>
|
#include <intelblocks/gspi.h>
|
||||||
#include <intelblocks/spi.h>
|
#include <intelblocks/spi.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
|
@ -23,19 +24,10 @@
|
||||||
|
|
||||||
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
const struct gspi_cfg *gspi_get_soc_cfg(void)
|
||||||
{
|
{
|
||||||
DEVTREE_CONST struct soc_intel_skylake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
int devfn = SA_DEVFN_ROOT;
|
common_config = chip_get_common_soc_structure();
|
||||||
DEVTREE_CONST struct device *dev = dev_find_slot(0, devfn);
|
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->gspi[0];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->gspi[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t gspi_get_soc_early_base(void)
|
uintptr_t gspi_get_soc_early_base(void)
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <drivers/i2c/designware/dw_i2c.h>
|
#include <drivers/i2c/designware/dw_i2c.h>
|
||||||
#include <soc/iomap.h>
|
#include <soc/iomap.h>
|
||||||
#include <soc/pci_devs.h>
|
#include <soc/pci_devs.h>
|
||||||
|
@ -22,18 +23,10 @@
|
||||||
|
|
||||||
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
const struct dw_i2c_bus_config *dw_i2c_get_soc_cfg(unsigned int bus)
|
||||||
{
|
{
|
||||||
const struct soc_intel_skylake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
const struct device *dev = dev_find_slot(0, SA_DEVFN_ROOT);
|
common_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
if (!dev || !dev->chip_info) {
|
return &common_config->i2c[bus];
|
||||||
printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
|
|
||||||
__func__);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
return &config->i2c[bus];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
uintptr_t dw_i2c_get_soc_early_base(unsigned int bus)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2018 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; version 2 of the License.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SOC_SKYLAKE_SOC_CHIP_H_
|
||||||
|
#define _SOC_SKYLAKE_SOC_CHIP_H_
|
||||||
|
|
||||||
|
#include "../../chip.h"
|
||||||
|
|
||||||
|
#endif /* _SOC_SKYLAKE_SOC_CHIP_H_ */
|
|
@ -16,6 +16,7 @@
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <bootstate.h>
|
#include <bootstate.h>
|
||||||
#include <chip.h>
|
#include <chip.h>
|
||||||
|
#include <intelblocks/chip.h>
|
||||||
#include <intelblocks/fast_spi.h>
|
#include <intelblocks/fast_spi.h>
|
||||||
#include <intelblocks/lpc_lib.h>
|
#include <intelblocks/lpc_lib.h>
|
||||||
#include <intelblocks/pcr.h>
|
#include <intelblocks/pcr.h>
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
#define PCR_DMI_GCS 0x274C
|
#define PCR_DMI_GCS 0x274C
|
||||||
#define PCR_DMI_GCS_BILD (1 << 0)
|
#define PCR_DMI_GCS_BILD (1 << 0)
|
||||||
|
|
||||||
static void lpc_lockdown_config(const struct soc_intel_skylake_config *config)
|
static void lpc_lockdown_config(const struct soc_intel_common_config *config)
|
||||||
{
|
{
|
||||||
/* Set Bios Interface Lock, Bios Lock */
|
/* Set Bios Interface Lock, Bios Lock */
|
||||||
if (config->chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
|
if (config->chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) {
|
||||||
|
@ -63,7 +64,8 @@ static void dmi_lockdown_config(void)
|
||||||
pcr_or8(PID_DMI, PCR_DMI_GCS, PCR_DMI_GCS_BILD);
|
pcr_or8(PID_DMI, PCR_DMI_GCS, PCR_DMI_GCS_BILD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spi_lockdown_config(const struct soc_intel_skylake_config *config)
|
static void fast_spi_lockdown_config(const
|
||||||
|
struct soc_intel_common_config *config)
|
||||||
{
|
{
|
||||||
/* Set FAST_SPI opcode menu */
|
/* Set FAST_SPI opcode menu */
|
||||||
fast_spi_set_opcode_menu();
|
fast_spi_set_opcode_menu();
|
||||||
|
@ -86,21 +88,14 @@ static void spi_lockdown_config(const struct soc_intel_skylake_config *config)
|
||||||
|
|
||||||
static void platform_lockdown_config(void *unused)
|
static void platform_lockdown_config(void *unused)
|
||||||
{
|
{
|
||||||
struct soc_intel_skylake_config *config;
|
const struct soc_intel_common_config *common_config;
|
||||||
struct device *dev;
|
common_config = chip_get_common_soc_structure();
|
||||||
|
|
||||||
dev = PCH_DEV_SPI;
|
|
||||||
/* Check if device is valid, else return */
|
|
||||||
if (dev == NULL || dev->chip_info == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
config = dev->chip_info;
|
|
||||||
|
|
||||||
/* LPC lock down configuration */
|
/* LPC lock down configuration */
|
||||||
lpc_lockdown_config(config);
|
lpc_lockdown_config(common_config);
|
||||||
|
|
||||||
/* SPI lock down configuration */
|
/* SPI lock down configuration */
|
||||||
spi_lockdown_config(config);
|
fast_spi_lockdown_config(common_config);
|
||||||
|
|
||||||
/* DMI lock down configuration */
|
/* DMI lock down configuration */
|
||||||
dmi_lockdown_config();
|
dmi_lockdown_config();
|
||||||
|
|
Loading…
Reference in New Issue