southbridge/via/vt8237r: Get rid of #include early_smbus.c

Use linker instead of '#include *.c'.

The smbus_fixup() was changed not to use a structure that's defined by a
northbridge since multiple different northbridges can be used. Instead
the caller now directly passed the memory slot details.

Change-Id: Ia369ece6365accbc531736fc463c713bbc134807
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Reviewed-on: https://review.coreboot.org/19082
Tested-by: build bot (Jenkins)
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Lubomir Rintel 2017-04-03 15:35:09 +02:00 committed by Martin Roth
parent 38d1eb4403
commit b0161fd2d8
14 changed files with 23 additions and 20 deletions

View File

@ -37,7 +37,7 @@ unsigned int get_sbdn(unsigned bus);
#include "northbridge/amd/amdk8/early_ht.c" #include "northbridge/amd/amdk8/early_ht.c"
#include <superio/winbond/common/winbond.h> #include <superio/winbond/common/winbond.h>
#include <superio/winbond/w83627ehg/w83627ehg.h> #include <superio/winbond/w83627ehg/w83627ehg.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */ #include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include "northbridge/amd/amdk8/setup_resource_map.c" #include "northbridge/amd/amdk8/setup_resource_map.c"

View File

@ -37,7 +37,7 @@ unsigned int get_sbdn(unsigned bus);
#include "northbridge/amd/amdk8/early_ht.c" #include "northbridge/amd/amdk8/early_ht.c"
#include <superio/winbond/common/winbond.h> #include <superio/winbond/common/winbond.h>
#include <superio/winbond/w83627ehg/w83627ehg.h> #include <superio/winbond/w83627ehg/w83627ehg.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */ #include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include "northbridge/amd/amdk8/setup_resource_map.c" #include "northbridge/amd/amdk8/setup_resource_map.c"

View File

@ -37,7 +37,7 @@ unsigned int get_sbdn(unsigned bus);
#include "northbridge/amd/amdk8/early_ht.c" #include "northbridge/amd/amdk8/early_ht.c"
#include <superio/winbond/common/winbond.h> #include <superio/winbond/common/winbond.h>
#include <superio/winbond/w83697hf/w83697hf.h> #include <superio/winbond/w83697hf/w83697hf.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */ #include "northbridge/amd/amdk8/debug.c" /* After vt8237r/early_smbus.c! */
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include "northbridge/amd/amdk8/setup_resource_map.c" #include "northbridge/amd/amdk8/setup_resource_map.c"

View File

@ -37,7 +37,7 @@ unsigned int get_sbdn(unsigned bus);
#include "northbridge/amd/amdk8/debug.c" #include "northbridge/amd/amdk8/debug.c"
#include <superio/ite/common/ite.h> #include <superio/ite/common/ite.h>
#include <superio/ite/it8712f/it8712f.h> #include <superio/ite/it8712f/it8712f.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include "northbridge/amd/amdk8/setup_resource_map.c" #include "northbridge/amd/amdk8/setup_resource_map.c"
#include <spd.h> #include <spd.h>

View File

@ -37,7 +37,7 @@ unsigned int get_sbdn(unsigned bus);
#include "northbridge/amd/amdk8/debug.c" #include "northbridge/amd/amdk8/debug.c"
#include <superio/ite/common/ite.h> #include <superio/ite/common/ite.h>
#include <superio/ite/it8712f/it8712f.h> #include <superio/ite/it8712f/it8712f.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include "northbridge/amd/amdk8/setup_resource_map.c" #include "northbridge/amd/amdk8/setup_resource_map.c"
#include <spd.h> #include <spd.h>

View File

@ -27,7 +27,7 @@
#include <delay.h> #include <delay.h>
#include <lib.h> #include <lib.h>
#include <spd.h> #include <spd.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include <superio/winbond/common/winbond.h> #include <superio/winbond/common/winbond.h>
#include <superio/winbond/w83697hf/w83697hf.h> #include <superio/winbond/w83697hf/w83697hf.h>
@ -84,7 +84,7 @@ void main(unsigned long bist)
console_init(); console_init();
enable_smbus(); enable_smbus();
smbus_fixup(&ctrl); smbus_fixup(ctrl.channel0, ARRAY_SIZE(ctrl.channel0));
/* Halt if there was a built-in self test failure. */ /* Halt if there was a built-in self test failure. */
report_bist_failure(bist); report_bist_failure(bist);

View File

@ -25,7 +25,7 @@
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include <cpu/amd/car.h> #include <cpu/amd/car.h>
#include <delay.h> #include <delay.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include <superio/fintek/common/fintek.h> #include <superio/fintek/common/fintek.h>
#include <superio/fintek/f71805f/f71805f.h> #include <superio/fintek/f71805f/f71805f.h>
#include <lib.h> #include <lib.h>
@ -88,7 +88,7 @@ void main(unsigned long bist)
console_init(); console_init();
enable_smbus(); enable_smbus();
smbus_fixup(&ctrl); smbus_fixup(ctrl.channel0, ARRAY_SIZE(ctrl.channel0));
/* Halt if there was a built-in self test failure. */ /* Halt if there was a built-in self test failure. */
report_bist_failure(bist); report_bist_failure(bist);

View File

@ -26,7 +26,7 @@
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include <cpu/amd/car.h> #include <cpu/amd/car.h>
#include <delay.h> #include <delay.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include "southbridge/via/vt8237r/early_serial.c" #include "southbridge/via/vt8237r/early_serial.c"
#include <spd.h> #include <spd.h>
@ -80,7 +80,7 @@ void main(unsigned long bist)
enable_vt8237r_serial(); enable_vt8237r_serial();
console_init(); console_init();
enable_smbus(); enable_smbus();
smbus_fixup(&ctrl); smbus_fixup(ctrl.channel0, ARRAY_SIZE(ctrl.channel0));
report_bist_failure(bist); report_bist_failure(bist);
enable_mainboard_devices(); enable_mainboard_devices();
ddr_ram_setup(&ctrl); ddr_ram_setup(&ctrl);

View File

@ -439,7 +439,7 @@ void main(unsigned long bist)
enable_smbus(); enable_smbus();
/* This fix does help vx800!, but vx855 doesn't need this. */ /* This fix does help vx800!, but vx855 doesn't need this. */
/* smbus_fixup(&ctrl); */ /* smbus_fixup(ctrl.channel0, ARRAY_SIZE(ctrl.channel0)); */
/* Halt if there was a built-in self test failure. */ /* Halt if there was a built-in self test failure. */
report_bist_failure(bist); report_bist_failure(bist);

View File

@ -26,7 +26,7 @@
#include <cpu/x86/bist.h> #include <cpu/x86/bist.h>
#include <cpu/amd/car.h> #include <cpu/amd/car.h>
#include <delay.h> #include <delay.h>
#include "southbridge/via/vt8237r/early_smbus.c" #include <southbridge/via/vt8237r/vt8237r.h>
#include <superio/ite/common/ite.h> #include <superio/ite/common/ite.h>
#include <superio/ite/it8716f/it8716f.h> #include <superio/ite/it8716f/it8716f.h>
#include <spd.h> #include <spd.h>
@ -56,7 +56,7 @@ void main(unsigned long bist)
ite_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); ite_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
console_init(); console_init();
enable_smbus(); enable_smbus();
smbus_fixup(&ctrl); smbus_fixup(ctrl.channel0, ARRAY_SIZE(ctrl.channel0));
report_bist_failure(bist); report_bist_failure(bist);
ddr_ram_setup(&ctrl); ddr_ram_setup(&ctrl);
} }

View File

@ -22,6 +22,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <cbmem.h> #include <cbmem.h>
#include <arch/io.h> #include <arch/io.h>
#include <arch/acpi.h>
#include "k8x8xx.h" #include "k8x8xx.h"
/* The 256 bytes of NVRAM for S3 storage, 256B aligned */ /* The 256 bytes of NVRAM for S3 storage, 256B aligned */

View File

@ -24,6 +24,7 @@ ramstage-y += usb.c
ramstage-$(CONFIG_PIRQ_ROUTE) += pirq.c ramstage-$(CONFIG_PIRQ_ROUTE) += pirq.c
ramstage-$(CONFIG_HAVE_ACPI_TABLES) += fadt.c ramstage-$(CONFIG_HAVE_ACPI_TABLES) += fadt.c
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smi.c
romstage-y += early_smbus.c
smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c
endif endif

View File

@ -18,6 +18,9 @@
#if !defined(__ROMCC__) #if !defined(__ROMCC__)
#include <arch/acpi.h> #include <arch/acpi.h>
#endif #endif
#include <console/console.h>
#include <arch/io.h>
#include <device/pci_def.h>
#include <device/pci_ids.h> #include <device/pci_ids.h>
#include <spd.h> #include <spd.h>
#include <stdlib.h> #include <stdlib.h>
@ -218,12 +221,11 @@ void enable_smbus(void)
* *
* @param ctrl The memory controller and SMBus addresses. * @param ctrl The memory controller and SMBus addresses.
*/ */
void smbus_fixup(const struct mem_controller *ctrl) void smbus_fixup(const u8 channel0[], int ram_slots)
{ {
int i, ram_slots, current_slot = 0; int i, current_slot = 0;
u8 result = 0; u8 result = 0;
ram_slots = ARRAY_SIZE(ctrl->channel0);
if (!ram_slots) { if (!ram_slots) {
printk(BIOS_ERR, "smbus_fixup() thinks there are no RAM slots!\n"); printk(BIOS_ERR, "smbus_fixup() thinks there are no RAM slots!\n");
return; return;
@ -242,7 +244,7 @@ void smbus_fixup(const struct mem_controller *ctrl)
if (current_slot > ram_slots) if (current_slot > ram_slots)
current_slot = 0; current_slot = 0;
result = smbus_read_byte(ctrl->channel0[current_slot], result = smbus_read_byte(channel0[current_slot],
SPD_MEMORY_TYPE); SPD_MEMORY_TYPE);
current_slot++; current_slot++;
PRINT_DEBUG("."); PRINT_DEBUG(".");

View File

@ -136,8 +136,7 @@ struct vt8237_network_rom {
u8 smbus_read_byte(u8 dimm, u8 offset); u8 smbus_read_byte(u8 dimm, u8 offset);
void smbus_write_byte(u8 dimm, u8 offset, u8 data); void smbus_write_byte(u8 dimm, u8 offset, u8 data);
void enable_smbus(void); void enable_smbus(void);
void smbus_fixup(const struct mem_controller *ctrl); void smbus_fixup(const u8 channel0[], int ram_slots);
// these are in vt8237_early_smbus.c - do they really belong there?
void vt8237_sb_enable_fid_vid(void); void vt8237_sb_enable_fid_vid(void);
void enable_rom_decode(void); void enable_rom_decode(void);
void vt8237_early_spi_init(void); void vt8237_early_spi_init(void);