mainboard/asus/kfsn4-dre: Enable W83793 fan controller
The Winbond W83793 fan controller is not automatically configured correctly on power application, leading to abnormal, and in some cases random, fan behaviour. This commit enables the controller and sets sane default values. TEST: Booted mainboard and verified that the correct number of fan speed sensors were visible from hwmon under Linux. Also verified that, unlike before, the CPU fans were running at a high enough speed to properly cool the CPUs. Verified the 8 fan outputs under direct control of the W83793 device. Verified voltage and temperature sensors and limits via output of the 'sensors' command. Change-Id: Ie3753bd3111d9d9eb46826da410c132caec4d9fe Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com> Reviewed-on: http://review.coreboot.org/8503 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
parent
d3e31be8c5
commit
c684d05b0f
|
@ -20,6 +20,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select ENABLE_APIC_EXT_ID
|
select ENABLE_APIC_EXT_ID
|
||||||
select AMDMCT
|
select AMDMCT
|
||||||
select MMCONF_SUPPORT_DEFAULT
|
select MMCONF_SUPPORT_DEFAULT
|
||||||
|
select DRIVERS_I2C_W83793
|
||||||
select DRIVERS_XGI_Z9S
|
select DRIVERS_XGI_Z9S
|
||||||
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
||||||
select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
|
select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG
|
||||||
|
|
|
@ -75,6 +75,78 @@ chip northbridge/amd/amdfam10/root_complex # Root complex
|
||||||
chip drivers/generic/generic # DIMM n-1-1-1
|
chip drivers/generic/generic # DIMM n-1-1-1
|
||||||
device i2c 57 on end
|
device i2c 57 on end
|
||||||
end
|
end
|
||||||
|
chip drivers/i2c/w83793
|
||||||
|
register "mfc" = "0x29" # Enable FANIN1/FANIN12, FANIN9/FANIN10, and FANIN8/FANCTRL8 inputs
|
||||||
|
register "fanin" = "0x7f" # Enable monitoring of FANIN6 - FANIN12
|
||||||
|
register "fanin_sel" = "0x0f" # Connect FANIN9 - FANIN12 to pins 37 - 40
|
||||||
|
register "peci_agent_conf" = "0x33" # Set Intel CPU PECI agent domain (not used by AMD but may affect chip operation)
|
||||||
|
register "tcase0" = "94" # Set maximum Intel CPU case temperature to 94°C (not used by AMD but may affect chip operation)
|
||||||
|
register "tcase1" = "94" # Set maximum Intel CPU case temperature to 94°C (not used by AMD but may affect chip operation)
|
||||||
|
register "tcase2" = "94" # Set maximum Intel CPU case temperature to 94°C (not used by AMD but may affect chip operation)
|
||||||
|
register "tcase3" = "94" # Set maximum Intel CPU case temperature to 94°C (not used by AMD but may affect chip operation)
|
||||||
|
register "tr_enable" = "0x03" # Enable montoring of TR1 and TR2
|
||||||
|
register "td_mode_select" = "0x05" # Use internal temperature sensors and disable unconnected TD3/TD4
|
||||||
|
register "td1_critical_temperature" = "85" # Set TD1 (CPU0) critical temperature to 85°C
|
||||||
|
register "td1_critical_hysteresis" = "80" # Set TD1 (CPU0) critical hysteresis temperature to 80°C
|
||||||
|
register "td1_warning_temperature" = "70" # Set TD1 (CPU0) warning temperature to 70°C
|
||||||
|
register "td1_warning_hysteresis" = "65" # Set TD1 (CPU0) warning hysteresis temperature to 65°C
|
||||||
|
register "td2_critical_temperature" = "85" # Set TD2 (CPU1) critical temperature to 85°C
|
||||||
|
register "td2_critical_hysteresis" = "80" # Set TD2 (CPU1) critical hysteresis temperature to 80°C
|
||||||
|
register "td2_warning_temperature" = "70" # Set TD2 (CPU1) warning temperature to 70°C
|
||||||
|
register "td2_warning_hysteresis" = "65" # Set TD2 (CPU1) warning hysteresis temperature to 65°C
|
||||||
|
register "tr1_critical_temperature" = "60" # Set TR1 (mainboard) critical temperature to 60°C
|
||||||
|
register "tr1_critical_hysteresis" = "55" # Set TR1 (mainboard) critical hysteresis temperature to 55°C
|
||||||
|
register "tr1_warning_temperature" = "50" # Set TR1 (mainboard) warning temperature to 50°C
|
||||||
|
register "tr1_warning_hysteresis" = "45" # Set TR1 (mainboard) warning hysteresis temperature to 45°C
|
||||||
|
register "critical_temperature" = "80" # Set critical temperature to 80°C
|
||||||
|
register "fanctrl1" = "0x48" # Set Fan 4 and Fan 7 to output buffer mode, all others to open drain
|
||||||
|
register "fanctrl2" = "0x01" # Set Fan 4 to Fan 7 to output buffer mode, Fan 1 to DC mode
|
||||||
|
register "first_valid_fan_number" = "2" # Fan 1/Fan 2 controls and sensors are not connected to anything
|
||||||
|
register "td1_fan_select" = "0x00" # All fans to manual mode (no dependence on TD1)
|
||||||
|
register "td2_fan_select" = "0x00" # All fans to manual mode (no dependence on TD2)
|
||||||
|
register "td3_fan_select" = "0x00" # All fans to manual mode (no dependence on TD3)
|
||||||
|
register "td4_fan_select" = "0x00" # All fans to manual mode (no dependence on TD4)
|
||||||
|
register "tr1_fan_select" = "0x00" # All fans to manual mode (no dependence on TR1)
|
||||||
|
register "tr2_fan_select" = "0x00" # All fans to manual mode (no dependence on TR2)
|
||||||
|
register "fan1_nonstop" = "7" # Set Fan 1 minimum speed
|
||||||
|
register "fan2_nonstop" = "7" # Set Fan 2 minimum speed
|
||||||
|
register "fan3_nonstop" = "7" # Set Fan 3 minimum speed
|
||||||
|
register "fan4_nonstop" = "7" # Set Fan 4 minimum speed
|
||||||
|
register "fan5_nonstop" = "7" # Set Fan 5 minimum speed
|
||||||
|
register "fan6_nonstop" = "7" # Set Fan 6 minimum speed
|
||||||
|
register "fan7_nonstop" = "7" # Set Fan 7 minimum speed
|
||||||
|
register "fan8_nonstop" = "7" # Set Fan 8 minimum speed
|
||||||
|
register "default_speed" = "100" # All fans to full speed on power up
|
||||||
|
register "fan1_duty" = "100" # Fan 1 to full speed
|
||||||
|
register "fan2_duty" = "100" # Fan 2 to full speed
|
||||||
|
register "fan3_duty" = "100" # Fan 3 to full speed
|
||||||
|
register "fan4_duty" = "100" # Fan 4 to full speed
|
||||||
|
register "fan5_duty" = "100" # Fan 5 to full speed
|
||||||
|
register "fan6_duty" = "100" # Fan 6 to full speed
|
||||||
|
register "fan7_duty" = "100" # Fan 7 to full speed
|
||||||
|
register "fan8_duty" = "100" # Fan 8 to full speed
|
||||||
|
register "vcorea_high_limit_mv" = "1500" # VCOREA (Node 0) high limit to 1.5V
|
||||||
|
register "vcorea_low_limit_mv" = "900" # VCOREA (Node 0) low limit to 0.9V
|
||||||
|
register "vcoreb_high_limit_mv" = "1500" # VCOREB (Node 1) high limit to 1.5V
|
||||||
|
register "vcoreb_low_limit_mv" = "900" # VCOREB (Node 1) low limit to 0.9V
|
||||||
|
register "vtt_high_limit_mv" = "1250" # VTT (HT link voltage) high limit to 1.25V
|
||||||
|
register "vtt_low_limit_mv" = "1150" # VTT (HT link voltage) low limit to 1.15V
|
||||||
|
register "vsen1_high_limit_mv" = "1900" # VSEN1 (Node 0 RAM voltage) high limit to 1.9V
|
||||||
|
register "vsen1_low_limit_mv" = "1700" # VSEN1 (Node 0 RAM voltage) low limit to 1.7V
|
||||||
|
register "vsen2_high_limit_mv" = "1900" # VSEN2 (Node 1 RAM voltage) high limit to 1.9V
|
||||||
|
register "vsen2_low_limit_mv" = "1700" # VSEN2 (Node 1 RAM voltage) low limit to 1.7V
|
||||||
|
register "vsen3_high_limit_mv" = "3500" # VSEN3 (+3.3V) high limit to 3.5V
|
||||||
|
register "vsen3_low_limit_mv" = "3100" # VSEN3 (+3.3V) low limit to 3.1V
|
||||||
|
register "vsen4_high_limit_mv" = "1070" # VSEN4 (+12V, scaling factor ~12.15) high limit to 13V
|
||||||
|
register "vsen4_low_limit_mv" = "905" # VSEN4 (+12V, scaling factor ~12.15) low limit to 11V
|
||||||
|
register "vdd_high_limit_mv" = "5200" # 5VDD high limit to 5.2V
|
||||||
|
register "vdd_low_limit_mv" = "4800" # 5VDD low limit to 4.8V
|
||||||
|
register "vsb_high_limit_mv" = "5200" # 5VSB high limit to 5.2V
|
||||||
|
register "vsb_low_limit_mv" = "4800" # 5VSB low limit to 4.8V
|
||||||
|
register "vbat_high_limit_mv" = "3500" # VBAT (+3V) high limit to 3.5V
|
||||||
|
register "vbat_low_limit_mv" = "2500" # VBAT (+3V) low limit to 2.5V
|
||||||
|
device i2c 0x2f on end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
device pci 1.1 on end # SM 1
|
device pci 1.1 on end # SM 1
|
||||||
device pci 2.0 on end # USB 1.1
|
device pci 2.0 on end # USB 1.1
|
||||||
|
|
|
@ -23,6 +23,22 @@ After probing with a custom GPIO-flipping tool under Linux the following GPIO ma
|
||||||
CK804 pin W2 <--> GPIO43
|
CK804 pin W2 <--> GPIO43
|
||||||
CK804 pin W3 <--> GPIO44
|
CK804 pin W3 <--> GPIO44
|
||||||
|
|
||||||
|
====================================================================================================
|
||||||
|
W83793 (U46)
|
||||||
|
====================================================================================================
|
||||||
|
|
||||||
|
Sensor mappings:
|
||||||
|
FRNT_FAN1: FAN3
|
||||||
|
FRNT_FAN2: FAN4
|
||||||
|
FRNT_FAN3: FAN5
|
||||||
|
FRNT_FAN4: FAN6
|
||||||
|
FRNT_FAN5: FAN9
|
||||||
|
FRNT_FAN6: FAN10
|
||||||
|
REAR_FAN1: FAN7
|
||||||
|
REAR_FAN2: FAN8
|
||||||
|
REAR_FAN3: FAN11
|
||||||
|
REAR_FAN4: FAN12
|
||||||
|
|
||||||
====================================================================================================
|
====================================================================================================
|
||||||
Other hardware
|
Other hardware
|
||||||
====================================================================================================
|
====================================================================================================
|
||||||
|
|
Loading…
Reference in New Issue