summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2014-10-16 21:35:48 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2014-10-23 19:18:17 +0200
commit29d9c5675865e902cfd46df4b2f948c195de8884 (patch)
treeb412c0a392bcca408b1fd16260f1d15e8836bcc7
parenta10bde9048952c7a9a2f63d8450da35bbeda08c0 (diff)
AMD Trinity and Kabini: fix fan control
The fan can stop but can't run again. "AGESA: Call get_bus_conf() just once" (commit ef40ca57) results to this problem. This patch can resolve this problem. Change-Id: I1b5bf3f6f7a66c60743f78918dc5442cdfc8b6e4 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/6981 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
-rw-r--r--src/cpu/amd/agesa/amd_late_init.c8
-rw-r--r--src/southbridge/amd/agesa/hudson/hudson.c12
2 files changed, 11 insertions, 9 deletions
diff --git a/src/cpu/amd/agesa/amd_late_init.c b/src/cpu/amd/agesa/amd_late_init.c
index c7927dc7c1..cab03a3096 100644
--- a/src/cpu/amd/agesa/amd_late_init.c
+++ b/src/cpu/amd/agesa/amd_late_init.c
@@ -27,9 +27,6 @@
#include <agesawrapper.h>
#include <northbridge/amd/agesa/agesawrapper_call.h>
-#if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
-#include <southbridge/amd/agesa/hudson/imc.h>
-#endif
#if CONFIG_AMD_SB_CIMX
#include <sb_cimx.h>
#endif
@@ -58,11 +55,6 @@ static void agesawrapper_post_device(void *unused)
pci_write_config32(dev, 0x60, value);
#endif
-#if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
- /* AMD AGESA does not enable thermal zone, so we enable it here. */
- enable_imc_thermal_zone();
-#endif
-
#if CONFIG_AMD_SB_CIMX
sb_Late_Post();
#endif
diff --git a/src/southbridge/amd/agesa/hudson/hudson.c b/src/southbridge/amd/agesa/hudson/hudson.c
index 0edca6eafe..f60dddb71f 100644
--- a/src/southbridge/amd/agesa/hudson/hudson.c
+++ b/src/southbridge/amd/agesa/hudson/hudson.c
@@ -28,6 +28,7 @@
#include <device/pci_ops.h>
#include <cbmem.h>
#include "hudson.h"
+#include "imc.h"
#include "smbus.h"
#include "smi.h"
@@ -161,8 +162,17 @@ static void hudson_init(void *chip_info)
hudson_init_acpi_ports();
}
+static void hudson_final(void *chip_info)
+{
+#if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
+ /* AMD AGESA does not enable thermal zone, so we enable it here. */
+ enable_imc_thermal_zone();
+#endif
+}
+
struct chip_operations southbridge_amd_agesa_hudson_ops = {
CHIP_NAME("ATI HUDSON")
.enable_dev = hudson_enable,
- .init = hudson_init
+ .init = hudson_init,
+ .final = hudson_final
};