mb/*: Update SPD mapping for sandybridge boards

Boards without HAVE_SPD_IN_CBFS: Move SPD mapping into devicetree.

Boards with HAVE_SPD_IN_CBFS: Convert to Haswell-style SPD mapping.

Change-Id: Id6ac0a36b2fc0b9686f6e875dd020ae8dba72a72
Signed-off-by: Keith Hui <buurin@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/76967
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
This commit is contained in:
Keith Hui 2023-07-22 12:49:05 -04:00 committed by Felix Held
parent 940fe080bf
commit 45e4ab4a66
112 changed files with 104 additions and 672 deletions

View File

@ -4,6 +4,7 @@ chip northbridge/intel/sandybridge
register "gpu_dp_b_hotplug" = "4" register "gpu_dp_b_hotplug" = "4"
register "gpu_dp_c_hotplug" = "4" register "gpu_dp_c_hotplug" = "4"
register "gpu_dp_d_hotplug" = "4" register "gpu_dp_d_hotplug" = "4"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
device pci 00.0 on device pci 00.0 on

View File

@ -1,16 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{1, 0, 0}, {1, 0, 0}, {1, 1, 1}, {1, 1, 1}, {1, 1, 2}, {1, 1, 2}, {1, 0, 3}, {1, 0, 0}, {1, 0, 0}, {1, 1, 1}, {1, 1, 1}, {1, 1, 2}, {1, 1, 2}, {1, 0, 3},
{1, 0, 3}, {1, 0, 4}, {1, 0, 4}, {1, 0, 6}, {1, 1, 5}, {1, 1, 5}, {1, 0, 6}, {1, 0, 3}, {1, 0, 4}, {1, 0, 4}, {1, 0, 6}, {1, 1, 5}, {1, 1, 5}, {1, 0, 6},
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -13,6 +13,7 @@ chip northbridge/intel/sandybridge
register "gpu_panel_power_down_delay" = "0" register "gpu_panel_power_down_delay" = "0"
register "gpu_panel_power_up_delay" = "0" register "gpu_panel_power_up_delay" = "0"
register "gpu_pch_backlight" = "0x00000000" register "gpu_pch_backlight" = "0x00000000"
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
device ref host_bridge on device ref host_bridge on

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
@ -40,11 +39,3 @@ void bootblock_mainboard_early_init(void)
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
device ref host_bridge on # Host bridge device ref host_bridge on # Host bridge
subsystemid 0x1849 0x0100 subsystemid 0x1849 0x0100

View File

@ -1,11 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <stdint.h> #include <stdint.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <option.h> #include <option.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
@ -87,11 +85,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-or-later ## SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
device ref host_bridge on end # Host bridge device ref host_bridge on end # Host bridge
device ref peg10 on end # PEG device ref peg10 on end # PEG

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6779d/nct6779d.h> #include <superio/nuvoton/nct6779d/nct6779d.h>
@ -35,9 +34,3 @@ void bootblock_mainboard_early_init(void)
pnp_write_config(ACPI_DEV, 0xe4, 0x10); pnp_write_config(ACPI_DEV, 0xe4, 0x10);
nuvoton_pnp_exit_conf_state(SIO_DEV); nuvoton_pnp_exit_conf_state(SIO_DEV);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,8 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/dram/ddr3.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
@ -30,9 +28,3 @@ void bootblock_mainboard_early_init(void)
{ {
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6779d/nct6779d.h> #include <superio/nuvoton/nct6779d/nct6779d.h>
@ -47,9 +46,3 @@ void bootblock_mainboard_early_init(void)
/* Do not enable UART, the header is not populated by default */ /* Do not enable UART, the header is not populated by default */
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
@ -49,9 +48,3 @@ void bootblock_mainboard_early_init(void)
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
@ -49,9 +48,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x51, id_only);
read_spd(&spd[2], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-or-later ## SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x51, 0, 0x53, 0}"
device domain 0 on device domain 0 on
chip southbridge/intel/bd82x6x chip southbridge/intel/bd82x6x
register "gen1_dec" = "0x000c0291" # HWM register "gen1_dec" = "0x000c0291" # HWM

View File

@ -1,6 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-or-later ## SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
subsystemid 0x1043 0x844d inherit subsystemid 0x1043 0x844d inherit

View File

@ -2,8 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <device/dram/ddr3.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
@ -42,11 +40,3 @@ void bootblock_mainboard_early_init(void)
nuvoton_pnp_exit_conf_state(GLOBAL_PSEUDO_DEV); nuvoton_pnp_exit_conf_state(GLOBAL_PSEUDO_DEV);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -6,6 +6,7 @@ chip northbridge/intel/sandybridge
register "ddr3lv_support" = "1" register "ddr3lv_support" = "1"
# FIXME: Nothing can run native at 800MHz on p8z77-m, others may have same problem # FIXME: Nothing can run native at 800MHz on p8z77-m, others may have same problem
register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800" register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800"
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
register "usb_port_config" = "{ register "usb_port_config" = "{
{1, 0, 0x0080}, {1, 0, 0x0080}, {1, 1, 0x0080}, {1, 1, 0x0080}, {1, 2, 0x0080}, {1, 0, 0x0080}, {1, 0, 0x0080}, {1, 1, 0x0080}, {1, 1, 0x0080}, {1, 2, 0x0080},

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6776/nct6776.h> #include <superio/nuvoton/nct6776/nct6776.h>
@ -52,11 +51,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6779d/nct6779d.h> #include <superio/nuvoton/nct6779d/nct6779d.h>
@ -50,11 +49,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/pei_data.h> #include <northbridge/intel/sandybridge/pei_data.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
@ -42,20 +41,8 @@ void bootblock_mainboard_early_init(void)
*/ */
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}
void mainboard_fill_pei_data(struct pei_data *pei) void mainboard_fill_pei_data(struct pei_data *pei)
{ {
const uint8_t spdaddr[] = {0xa0, 0xa2, 0xa4, 0xa6}; /* SMBus mul 2 */
memcpy(pei->spd_addresses, &spdaddr, sizeof(spdaddr));
/* /*
* USB 3 mode settings. * USB 3 mode settings.
* These are obtained from option table then bit masked to keep within range. * These are obtained from option table then bit masked to keep within range.

View File

@ -1,9 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/sandybridge.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
@ -11,7 +9,6 @@
#include <option.h> #include <option.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/pei_data.h> #include <northbridge/intel/sandybridge/pei_data.h>
@ -48,20 +45,8 @@ void bootblock_mainboard_early_init(void)
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xa0, 0xa2, 0xa4, 0xa6}; /* SMBus mul 2 */
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
/* /*
* USB3 mode: * USB3 mode:
* 0 = Disable: work always as USB 2.0(ehci) * 0 = Disable: work always as USB 2.0(ehci)

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
@ -47,11 +46,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <superio/nuvoton/nct6779d/nct6779d.h> #include <superio/nuvoton/nct6779d/nct6779d.h>
@ -50,11 +49,3 @@ void bootblock_mainboard_early_init(void)
/* Enable UART */ /* Enable UART */
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-only ## SPDX-License-Identifier: GPL-2.0-only
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
subsystemid 0x1565 0x3108 inherit subsystemid 0x1565 0x3108 inherit

View File

@ -1,8 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <stdbool.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 0 }, { 1, 0, 0 },
@ -20,9 +18,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 5 }, { 1, 0, 5 },
{ 1, 0, 6 }, { 1, 0, 6 },
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -6,6 +6,8 @@ chip northbridge/intel/sandybridge # FIXME: check gfx
register "gpu_dp_c_hotplug" = "4" register "gpu_dp_c_hotplug" = "4"
register "gpu_dp_d_hotplug" = "4" register "gpu_dp_d_hotplug" = "4"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
device ref host_bridge on # Host bridge device ref host_bridge on # Host bridge
subsystemid 0x8086 0x2010 subsystemid 0x8086 0x2010

View File

@ -3,7 +3,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <stdint.h> #include <stdint.h>
#include <arch/io.h> #include <arch/io.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <superio/smsc/sio1007/sio1007.h> #include <superio/smsc/sio1007/sio1007.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
@ -62,9 +61,3 @@ void bootblock_mainboard_early_init(void)
/* Turn off configuration mode. */ /* Turn off configuration mode. */
outb(0xaa, port); outb(0xaa, port);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -4,7 +4,6 @@
#include <arch/io.h> #include <arch/io.h>
#include <console/console.h> #include <console/console.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/common/rcba.h> #include <southbridge/intel/common/rcba.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/sch5545/sch5545.h> #include <superio/smsc/sch5545/sch5545.h>
@ -56,11 +55,3 @@ void mainboard_early_init(int s3resume)
outb(0, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_SMI_EN); outb(0, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_SMI_EN);
outb(SCH5545_SMI_GLOBAL_STS, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_SMI_STS); outb(SCH5545_SMI_GLOBAL_STS, SCH5545_RUNTIME_REG_BASE + SCH5545_RR_SMI_STS);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
chip cpu/intel/model_206ax chip cpu/intel/model_206ax
device cpu_cluster 0 on end device cpu_cluster 0 on end

View File

@ -1,4 +1,6 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
# FIXME: The GA-B75M-D3V only has two DIMM slots!
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
subsystemid 0x1458 0x5000 inherit subsystemid 0x1458 0x5000 inherit
device ref host_bridge on # Host bridge device ref host_bridge on # Host bridge

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/ite/common/ite.h> #include <superio/ite/common/ite.h>
#include <superio/ite/it8728f/it8728f.h> #include <superio/ite/it8728f/it8728f.h>
@ -57,12 +56,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 5, 5 }, { 1, 5, 5 },
{ 1, 5, 6 }, { 1, 5, 6 },
}; };
/* FIXME: The GA-B75M-D3V only has two DIMM slots! */
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-only ## SPDX-License-Identifier: GPL-2.0-only
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
subsystemid 0x1458 0x5000 inherit subsystemid 0x1458 0x5000 inherit

View File

@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/ite/common/ite.h> #include <superio/ite/common/ite.h>
#include <superio/ite/it8728f/it8728f.h> #include <superio/ite/it8728f/it8728f.h>
@ -36,9 +36,3 @@ void bootblock_mainboard_early_init(void)
/* Disable SIO WDT which kicks in DualBIOS */ /* Disable SIO WDT which kicks in DualBIOS */
ite_reg_write(SUPERIO_GPIO, 0xEF, 0x7E); ite_reg_write(SUPERIO_GPIO, 0xEF, 0x7E);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -18,6 +18,7 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x000001e8" register "gpu_cpu_backlight" = "0x000001e8"
register "gpu_pch_backlight" = "0x03d00000" register "gpu_pch_backlight" = "0x03d00000"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "ec_present" = "1" register "ec_present" = "1"
# FIXME: Native raminit requires reduced max clock # FIXME: Native raminit requires reduced max clock
register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800" register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800"

View File

@ -1,12 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <stdint.h> #include <stdint.h>
#include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h>
void mainboard_late_rcba_config(void) void mainboard_late_rcba_config(void)
{ {
@ -66,17 +62,7 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 0, 0, -1 }, /* P13: Empty */ { 0, 0, -1 }, /* P13: Empty */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xA0, 0x00, 0xA4, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
/* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */ /* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */
} }

View File

@ -1,17 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <stdint.h>
#include <string.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <console/console.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
#include "ec/google/chromeec/ec.h" #include "ec/google/chromeec/ec.h"
#include <cbfs.h>
#include <southbridge/intel/bd82x6x/chip.h> #include <southbridge/intel/bd82x6x/chip.h>
@ -58,39 +52,15 @@ void mainboard_late_rcba_config(void)
DIR_ROUTE(D22IR, PIRQA, PIRQB, PIRQC, PIRQD); DIR_ROUTE(D22IR, PIRQA, PIRQB, PIRQC, PIRQD);
} }
static uint8_t *locate_spd(void) static unsigned int get_spd_index(void)
{ {
const int gpio_vector[] = {41, 42, 43, 10, -1}; const int gpio_vector[] = {41, 42, 43, 10, -1};
uint8_t *spd_file; return get_gpios(gpio_vector);
size_t spd_file_len;
int spd_index = get_gpios(gpio_vector);
printk(BIOS_DEBUG, "spd index %d\n", spd_index);
spd_file = cbfs_map("spd.bin", &spd_file_len);
if (!spd_file)
die("SPD data not found.");
if (spd_file_len < ((spd_index + 1) * 256)) {
printk(BIOS_ERR, "spd index override to 0 - old hardware?\n");
spd_index = 0;
}
if (spd_file_len < 256)
die("Missing SPD data.");
return spd_file + spd_index * 256;
} }
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
/* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */ /* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */
/* LINK has 2 channels of memory down, so spd_data[0] and [2]
both need to be populated */
memcpy(pei_data->spd_data[0], locate_spd(),
sizeof(pei_data->spd_data[0]));
memcpy(pei_data->spd_data[2], pei_data->spd_data[0],
sizeof(pei_data->spd_data[0]));
} }
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
@ -111,12 +81,12 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 0, 0, -1 }, /* P13: Empty */ { 0, 0, -1 }, /* P13: Empty */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only) void mb_get_spd_map(struct spd_info *spdi)
{ {
/* LINK has 2 channels of memory down, so spd_data[0] and [2] /* LINK has 2 channels of memory down */
both need to be populated */ spdi->addresses[0] = SPD_MEMORY_DOWN;
memcpy(&spd[0], locate_spd(), 128); spdi->addresses[2] = SPD_MEMORY_DOWN;
memcpy(&spd[2], &spd[0], 128); spdi->spd_index = get_spd_index();
} }
void mainboard_early_init(int s3resume) void mainboard_early_init(int s3resume)

View File

@ -17,6 +17,7 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x000001d4" register "gpu_cpu_backlight" = "0x000001d4"
register "gpu_pch_backlight" = "0x03aa0000" register "gpu_pch_backlight" = "0x03aa0000"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "ec_present" = "1" register "ec_present" = "1"
# FIXME: Native raminit requires reduced max clock # FIXME: Native raminit requires reduced max clock
register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800" register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800"

View File

@ -1,12 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <stdint.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h>
#include "ec/compal/ene932/ec.h" #include "ec/compal/ene932/ec.h"
void mainboard_late_rcba_config(void) void mainboard_late_rcba_config(void)
@ -52,10 +48,6 @@ void mainboard_late_rcba_config(void)
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xA0, 0x00, 0xA4, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
/* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */ /* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */
} }
@ -77,9 +69,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 0, 0, -1 }, /* P12: Empty */ { 0, 0, -1 }, /* P12: Empty */
{ 0, 0, -1 }, /* P13: Empty */ { 0, 0, -1 }, /* P13: Empty */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -17,6 +17,7 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x06100610" register "gpu_pch_backlight" = "0x06100610"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "ec_present" = "1" register "ec_present" = "1"
# FIXME: Native raminit requires reduced max clock # FIXME: Native raminit requires reduced max clock
register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800" register "max_mem_clock_mhz" = "CONFIG(USE_NATIVE_RAMINIT) ? 666 : 800"

View File

@ -1,11 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <stdint.h> #include <stdint.h>
#include <console/console.h> #include <console/console.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
#include <bootmode.h> #include <bootmode.h>
@ -81,18 +79,8 @@ static void early_ec_init(void)
} }
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xA0, 0x00, 0xA4, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
/* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */ /* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */
} }

View File

@ -5,6 +5,8 @@ chip northbridge/intel/sandybridge
register "gpu_dp_b_hotplug" = "0" register "gpu_dp_b_hotplug" = "0"
register "gpu_dp_c_hotplug" = "0" register "gpu_dp_c_hotplug" = "0"
register "gpu_dp_d_hotplug" = "0" register "gpu_dp_d_hotplug" = "0"
# BTX mainboard: Reversed mapping
register "spd_addresses" = "{0x53, 0x52, 0x51, 0x50}"
device domain 0 on device domain 0 on
subsystemid 0x103c 0x1495 inherit subsystemid 0x103c 0x1495 inherit

View File

@ -3,7 +3,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <superio/nuvoton/npcd378/npcd378.h> #include <superio/nuvoton/npcd378/npcd378.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#define SERIAL_DEV PNP_DEV(0x2e, NPCD378_SP2) #define SERIAL_DEV PNP_DEV(0x2e, NPCD378_SP2)
@ -30,12 +29,3 @@ void bootblock_mainboard_early_init(void)
if (CONFIG(CONSOLE_SERIAL)) if (CONFIG(CONSOLE_SERIAL))
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
/* BTX mainboard: Reversed mapping */
read_spd(&spd[3], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
read_spd(&spd[1], 0x52, id_only);
read_spd(&spd[0], 0x53, id_only);
}

View File

@ -1,6 +1,8 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "gpu_dp_b_hotplug" = "4" register "gpu_dp_b_hotplug" = "4"
register "gpu_dp_c_hotplug" = "4" register "gpu_dp_c_hotplug" = "4"
# BTX mainboard: Reversed mapping
register "spd_addresses" = "{0, 0x52, 0, 0x50}"
device domain 0x0 on device domain 0x0 on
chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH
register "docking_supported" = "0" register "docking_supported" = "0"

View File

@ -1,14 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <superio/nuvoton/npcd378/npcd378.h> #include <superio/nuvoton/npcd378/npcd378.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 0 }, { 1, 0, 0 },
{ 1, 0, 0 }, { 1, 0, 0 },
@ -31,9 +28,3 @@ void bootblock_mainboard_early_init(void)
pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x82, 0x1408); pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x82, 0x1408);
pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x80, 0x0010); pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x80, 0x0010);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[3], 0x50, id_only);
read_spd(&spd[1], 0x52, id_only);
}

View File

@ -15,6 +15,7 @@ chip northbridge/intel/sandybridge
register "gpu_panel_power_down_delay" = "230" register "gpu_panel_power_down_delay" = "230"
register "gpu_panel_power_up_delay" = "300" register "gpu_panel_power_up_delay" = "300"
register "gpu_pch_backlight" = "0x02880288" register "gpu_pch_backlight" = "0x02880288"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/lpc47n217/lpc47n217.h> #include <superio/smsc/lpc47n217/lpc47n217.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -35,9 +34,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -32,9 +31,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_exit_conf(); kbc1126_exit_conf();
kbc1126_disable4e(); kbc1126_disable4e();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -32,9 +31,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_exit_conf(); kbc1126_exit_conf();
kbc1126_disable4e(); kbc1126_disable4e();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -33,9 +32,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_exit_conf(); kbc1126_exit_conf();
kbc1126_disable4e(); kbc1126_disable4e();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/lpc47n217/lpc47n217.h> #include <superio/smsc/lpc47n217/lpc47n217.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -35,9 +34,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/lpc47n217/lpc47n217.h> #include <superio/smsc/lpc47n217/lpc47n217.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -35,9 +34,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/lpc47n217/lpc47n217.h> #include <superio/smsc/lpc47n217/lpc47n217.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -35,11 +34,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
subsystemid 0x103c 0x176c inherit subsystemid 0x103c 0x176c inherit

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -31,9 +30,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,8 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/smsc/lpc47n217/lpc47n217.h> #include <superio/smsc/lpc47n217/lpc47n217.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -36,9 +34,3 @@ void bootblock_mainboard_early_init(void)
kbc1126_pm1_init(); kbc1126_pm1_init();
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,10 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <string.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <cbfs.h>
#include <console/console.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/hp/kbc1126/ec.h> #include <ec/hp/kbc1126/ec.h>
@ -35,15 +32,10 @@ void bootblock_mainboard_early_init(void)
kbc1126_exit_conf(); kbc1126_exit_conf();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only) void mb_get_spd_map(struct spd_info *spdi)
{ {
spdi->addresses[0] = 0x50;
/* C1S0 is a soldered RAM with no real SPD. Use stored SPD. */ /* C1S0 is a soldered RAM with no real SPD. Use stored SPD. */
size_t spd_file_len = 0; spdi->addresses[2] = SPD_MEMORY_DOWN;
void *spd_file = cbfs_map("spd.bin", &spd_file_len); spdi->spd_index = 0;
if (!spd_file || spd_file_len < sizeof(spd_raw_data))
die("SPD data for C1S0 not found.");
read_spd(&spd[0], 0x50, id_only);
memcpy(&spd[2], spd_file, spd_file_len);
} }

View File

@ -5,6 +5,8 @@ chip northbridge/intel/sandybridge
register "gpu_dp_b_hotplug" = "0" register "gpu_dp_b_hotplug" = "0"
register "gpu_dp_c_hotplug" = "0" register "gpu_dp_c_hotplug" = "0"
register "gpu_dp_d_hotplug" = "0" register "gpu_dp_d_hotplug" = "0"
# BTX mainboard: Reversed mapping
register "spd_addresses" = "{0x53, 0x52, 0x51, 0x50}"
device domain 0 on device domain 0 on
subsystemid 0x103c 0x1791 inherit subsystemid 0x103c 0x1791 inherit

View File

@ -3,7 +3,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <superio/nuvoton/npcd378/npcd378.h> #include <superio/nuvoton/npcd378/npcd378.h>
#include <superio/nuvoton/common/nuvoton.h> #include <superio/nuvoton/common/nuvoton.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#define SERIAL_DEV PNP_DEV(0x2e, NPCD378_SP2) #define SERIAL_DEV PNP_DEV(0x2e, NPCD378_SP2)
@ -30,12 +29,3 @@ void bootblock_mainboard_early_init(void)
if (CONFIG(CONSOLE_SERIAL)) if (CONFIG(CONSOLE_SERIAL))
nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); nuvoton_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
/* BTX mainboard: Reversed mapping */
read_spd(&spd[3], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
read_spd(&spd[1], 0x52, id_only);
read_spd(&spd[0], 0x53, id_only);
}

View File

@ -13,6 +13,7 @@ chip northbridge/intel/sandybridge
# 1333MHz RAM frequency # 1333MHz RAM frequency
register "max_mem_clock_mhz" = "666" register "max_mem_clock_mhz" = "666"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
register "usb_port_config" = "{ register "usb_port_config" = "{
{1, 0, 0x0040}, {1, 0, 0x0040},

View File

@ -2,7 +2,6 @@
#include <bootblock_common.h> #include <bootblock_common.h>
#include <stdint.h> #include <stdint.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include "superio.h" #include "superio.h"
@ -126,12 +125,6 @@ void bootblock_mainboard_early_init(void)
hwm_init(); hwm_init();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
#define USB_CONFIG(enabled, current, ocpin) { enabled, current, ocpin } #define USB_CONFIG(enabled, current, ocpin) { enabled, current, ocpin }
#include "usb.h" #include "usb.h"

View File

@ -2,13 +2,8 @@
#include <stdint.h> #include <stdint.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <southbridge/intel/bd82x6x/pch.h>
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xa0, 0x00, 0xa2, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
/* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */ /* TODO: Confirm if nortbridge_fill_pei_data() gets .system_type right (should be 0) */
} }

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x51, 0x52, 0x53}"
device domain 0 on device domain 0 on
subsystemid 0x8086 0x2008 inherit subsystemid 0x8086 0x2008 inherit
device ref host_bridge on end # Host bridge device ref host_bridge on end # Host bridge

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h> #include <bootblock_common.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <superio/winbond/w83667hg-a/w83667hg-a.h> #include <superio/winbond/w83667hg-a/w83667hg-a.h>
#include <superio/winbond/common/winbond.h> #include <superio/winbond/common/winbond.h>
@ -29,11 +28,3 @@ void bootblock_mainboard_early_init(void)
{ {
winbond_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE); winbond_enable_serial(SERIAL_DEV, CONFIG_TTYS0_BASE);
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x51, id_only);
read_spd(&spd[2], 0x52, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -12,6 +12,7 @@ chip northbridge/intel/sandybridge
register "gpu_dp_b_hotplug" = "0x06" register "gpu_dp_b_hotplug" = "0x06"
register "max_mem_clock_mhz" = "800" register "max_mem_clock_mhz" = "800"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "usb_port_config" = "{ register "usb_port_config" = "{
{ 1, 0, 0x0040 }, { 1, 0, 0x0040 },

View File

@ -1,15 +1,11 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <stdint.h> #include <stdint.h>
#include <arch/io.h> #include <arch/io.h>
#include <superio/smsc/sio1007/sio1007.h> #include <superio/smsc/sio1007/sio1007.h>
#include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h>
#define SIO_PORT 0x164e #define SIO_PORT 0x164e
@ -50,9 +46,6 @@ void bootblock_mainboard_early_init(void)
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = { 0xa0, 0x00, 0xa4, 0x00 };
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
} }
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
@ -72,9 +65,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 6 }, /* P12: Back port (OC6) */ { 1, 0, 6 }, /* P12: Back port (OC6) */
{ 1, 0, 5 }, /* P13: Back port (OC5) */ { 1, 0, 5 }, /* P13: Back port (OC5) */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -2,6 +2,7 @@ chip northbridge/intel/sandybridge
# IGD Displays # IGD Displays
register "gfx" = "GMA_STATIC_DISPLAYS(0)" register "gfx" = "GMA_STATIC_DISPLAYS(0)"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "max_mem_clock_mhz" = "800" register "max_mem_clock_mhz" = "800"
register "ec_present" = "1" register "ec_present" = "1"

View File

@ -1,13 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <bootblock_common.h> #include <bootblock_common.h>
#include <stdint.h>
#include <device/pnp_def.h> #include <device/pnp_def.h>
#include <device/pnp_ops.h> #include <device/pnp_ops.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <device/pci_def.h> #include <device/pci_def.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
@ -55,9 +52,6 @@ void bootblock_mainboard_early_init(void)
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xA0, 0x00, 0xA4, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
} }
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
@ -78,12 +72,6 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 4 }, /* P13: internal USB 2.0 (OC4) */ { 1, 0, 4 }, /* P13: internal USB 2.0 (OC4) */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}
void mainboard_early_init(int s3resume) void mainboard_early_init(int s3resume)
{ {
/* Enable PEG10 (1x16) */ /* Enable PEG10 (1x16) */

View File

@ -11,6 +11,7 @@ chip northbridge/intel/sandybridge
register "gpu_panel_power_down_delay" = "0" register "gpu_panel_power_down_delay" = "0"
register "gpu_panel_power_up_delay" = "0" register "gpu_panel_power_up_delay" = "0"
register "gpu_pch_backlight" = "0x00000000" register "gpu_pch_backlight" = "0x00000000"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21dd inherit subsystemid 0x17aa 0x21dd inherit

View File

@ -1,6 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
@ -20,9 +19,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, -1 }, { 1, 0, -1 },
{ 1, 0, -1 }, { 1, 0, -1 },
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,17 +1,12 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <stdint.h>
#include <string.h>
#include <cbfs.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <console/console.h> #include <console/console.h>
#include <northbridge/intel/sandybridge/raminit_native.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
#include "ec.h" #include "ec.h"
#define SPD_LEN 256
void mainboard_pch_lpc_setup(void) void mainboard_pch_lpc_setup(void)
{ {
/* Memory map KB9012 EC registers */ /* Memory map KB9012 EC registers */
@ -54,26 +49,27 @@ static const char *mainboard_spd_names[9] = {
"HYNIX 2GB", "HYNIX 2GB",
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only) static unsigned int get_spd_index(void)
{ {
void *spd_file;
size_t spd_file_len = 0;
const int spd_gpios[] = {71, 70, 16, 48, -1}; const int spd_gpios[] = {71, 70, 16, 48, -1};
u32 spd_index = get_gpios(spd_gpios); unsigned int spd_index = get_gpios(spd_gpios);
if (spd_index >= ARRAY_SIZE(mainboard_spd_names)) { if (spd_index >= ARRAY_SIZE(mainboard_spd_names)) {
/* Fallback to pessimistic 2GB image (ELPIDA 2GB) */ /* Fallback to pessimistic 2GB image (ELPIDA 2GB) */
spd_index = 6; spd_index = 6;
} }
return spd_index;
}
void mb_get_spd_map(struct spd_info *spdi)
{
unsigned int spd_index = get_spd_index();
printk(BIOS_INFO, "SPD index %d (%s)\n", printk(BIOS_INFO, "SPD index %d (%s)\n",
spd_index, mainboard_spd_names[spd_index]); spd_index, mainboard_spd_names[spd_index]);
/* C0S0 is a soldered RAM with no real SPD. Use stored SPD. */ /* C0S0 is a soldered RAM with no real SPD. Use stored SPD. */
spd_file = cbfs_map("spd.bin", &spd_file_len); spdi->addresses[0] = SPD_MEMORY_DOWN;
spdi->spd_index = spd_index;
if (!spd_file || spd_file_len < SPD_LEN * spd_index + SPD_LEN)
die("SPD data not found.");
memcpy(spd, spd_file + SPD_LEN * spd_index, SPD_LEN);
} }

View File

@ -15,6 +15,8 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x06100610" register "gpu_pch_backlight" = "0x06100610"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21ce inherit subsystemid 0x17aa 0x21ce inherit

View File

@ -1,11 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h> #include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <device/device.h>
static void hybrid_graphics_init(void) static void hybrid_graphics_init(void)
{ {
@ -51,12 +49,6 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera (LCD), no OC */ { 1, 1, -1 }, /* P13: camera (LCD), no OC */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) void mainboard_early_init(int s3resume)
{ {
hybrid_graphics_init(); hybrid_graphics_init();

View File

@ -15,6 +15,8 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x06100610" register "gpu_pch_backlight" = "0x06100610"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21d2 inherit subsystemid 0x17aa 0x21d2 inherit

View File

@ -1,11 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h> #include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <device/device.h>
static void hybrid_graphics_init(void) static void hybrid_graphics_init(void)
{ {
@ -50,12 +48,6 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera (LCD), no OC */ { 1, 1, -1 }, /* P13: camera (LCD), no OC */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) void mainboard_early_init(int s3resume)
{ {
hybrid_graphics_init(); hybrid_graphics_init();

View File

@ -14,6 +14,8 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x11551155" register "gpu_pch_backlight" = "0x11551155"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21f3 inherit subsystemid 0x17aa 0x21f3 inherit

View File

@ -2,12 +2,10 @@
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <device/pci_def.h> #include <device/pci_def.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/lenovo/pmh7/pmh7.h> #include <ec/lenovo/pmh7/pmh7.h>
#include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h> #include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <device/device.h>
static void hybrid_graphics_init(void) static void hybrid_graphics_init(void)
{ {
@ -57,9 +55,3 @@ void mainboard_early_init(int s3resume)
{ {
hybrid_graphics_init(); hybrid_graphics_init();
} }
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
# Enable hotplug on Port 5 for Thunderbolt controller # Enable hotplug on Port 5 for Thunderbolt controller

View File

@ -3,7 +3,7 @@
#include <option.h> #include <option.h>
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <device/pci_def.h> #include <device/pci_def.h>
#include <northbridge/intel/sandybridge/raminit_native.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/lenovo/pmh7/pmh7.h> #include <ec/lenovo/pmh7/pmh7.h>
#include <types.h> #include <types.h>
@ -25,12 +25,6 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera, no OC */ { 1, 1, -1 }, /* P13: camera, no OC */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) void mainboard_early_init(int s3resume)
{ {
u8 enable_peg = get_uint_option("enable_dual_graphics", 0); u8 enable_peg = get_uint_option("enable_dual_graphics", 0);

View File

@ -1,11 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <console/console.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <cbfs.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <string.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <ec/lenovo/pmh7/pmh7.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 0, 0 }, /* SSP1: right */ { 1, 0, 0 }, /* SSP1: right */
@ -24,15 +20,10 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* B1P6: Camera */ { 1, 1, -1 }, /* B1P6: Camera */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only) void mb_get_spd_map(struct spd_info *spdi)
{ {
/* C1S0 is a soldered RAM with no real SPD. Use stored SPD. */ /* C1S0 is a soldered RAM with no real SPD. Use stored SPD. */
size_t spd_file_len = 0; spdi->addresses[0] = SPD_MEMORY_DOWN;
void *spd_file = cbfs_map("spd.bin", &spd_file_len); spdi->addresses[2] = 0x51;
spdi->spd_index = 0;
if (!spd_file || spd_file_len < sizeof(spd_raw_data))
die("SPD data for C1S0 not found.");
memcpy(&spd[0], spd_file, spd_file_len);
read_spd(&spd[2], 0x51, id_only);
} }

View File

@ -2,7 +2,6 @@
bootblock-y += variants/$(VARIANT_DIR)/gpio.c bootblock-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/gpio.c romstage-y += variants/$(VARIANT_DIR)/gpio.c
romstage-y += variants/$(VARIANT_DIR)/romstage.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
bootblock-y += early_init.c bootblock-y += early_init.c
romstage-y += early_init.c romstage-y += early_init.c

View File

@ -4,7 +4,6 @@
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <device/pci_def.h> #include <device/pci_def.h>
#include <northbridge/intel/sandybridge/sandybridge.h> #include <northbridge/intel/sandybridge/sandybridge.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h> #include <drivers/lenovo/hybrid_graphics/hybrid_graphics.h>
#include <device/device.h> #include <device/device.h>

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH
device pci 1f.0 on # LPC bridge device pci 1f.0 on # LPC bridge

View File

@ -1,9 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x52, 0x51, 0x53}"
device domain 0 on device domain 0 on
chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH chip southbridge/intel/bd82x6x # Intel Series 6 Cougar Point PCH
device pci 1c.6 on end # PCIe Port #7 USB 3.0 device pci 1c.6 on end # PCIe Port #7 USB 3.0

View File

@ -1,11 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x52, id_only);
read_spd(&spd[2], 0x51, id_only);
read_spd(&spd[3], 0x53, id_only);
}

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH
device pci 1f.0 on # PCI-LPC bridge device pci 1f.0 on # PCI-LPC bridge

View File

@ -1,14 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, 0 }, /* P0: USB double port upper, USB3, OC 0 */ { 1, 1, 0 }, /* P0: USB double port upper, USB3, OC 0 */
{ 1, 1, 1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */ { 1, 1, 1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0x52, 0x51, 0x53}"
device domain 0 on device domain 0 on
device pci 02.0 on # Internal graphics VGA controller device pci 02.0 on # Internal graphics VGA controller
subsystemid 0x17aa 0x21f5 subsystemid 0x17aa 0x21f5

View File

@ -1,16 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[1], 0x52, id_only);
read_spd(&spd[2], 0x51, id_only);
read_spd(&spd[3], 0x53, id_only);
}
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, 0 }, /* P0: USB double port upper, USB3, OC 0 */ { 1, 1, 0 }, /* P0: USB double port upper, USB3, OC 0 */
{ 1, 1, 1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */ { 1, 1, 1 }, /* P1: USB double port lower, USB3, (EHCI debug) OC 1 */

View File

@ -14,6 +14,8 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x11551155" register "gpu_pch_backlight" = "0x11551155"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21fe inherit subsystemid 0x17aa 0x21fe inherit

View File

@ -1,6 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
@ -19,9 +18,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{0, 0, 0}, {0, 0, 0},
{1, 0, -1}, /* P13: Bluetooth (no OC) */ {1, 0, -1}, /* P13: Bluetooth (no OC) */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -1,12 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <stdint.h>
#include <string.h> #include <string.h>
#include <console/console.h> #include <console/console.h>
#include <northbridge/intel/sandybridge/raminit_native.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
#include <cbfs.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
/* enabled, current, OC pin */ /* enabled, current, OC pin */
@ -26,27 +24,10 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 },/* P13 Camera */ { 1, 1, -1 },/* P13 Camera */
}; };
static uint8_t *get_spd_data(int spd_index) static unsigned int get_spd_index(void)
{ {
uint8_t *spd_file;
size_t spd_file_len;
printk(BIOS_DEBUG, "spd index %d\n", spd_index);
spd_file = cbfs_map("spd.bin", &spd_file_len);
if (!spd_file)
die("SPD data not found.");
if (spd_file_len < spd_index * 256)
die("Missing SPD data.");
return spd_file + spd_index * 256;
}
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
uint8_t *memory;
const int spd_gpio_vector[] = {25, 45, -1}; const int spd_gpio_vector[] = {25, 45, -1};
int spd_index = get_gpios(spd_gpio_vector); unsigned int spd_index = get_gpios(spd_gpio_vector);
/* 4gb model = 0, 8gb model = 1 */ /* 4gb model = 0, 8gb model = 1 */
/* int extended_memory_version = get_gpio(44); */ /* int extended_memory_version = get_gpio(44); */
@ -69,7 +50,12 @@ void mainboard_get_spd(spd_raw_data *spd, bool id_only)
if (spd_index == 3) if (spd_index == 3)
die("Unsupported Memory. (detected 'reserved' memory configuration)."); die("Unsupported Memory. (detected 'reserved' memory configuration).");
memory = get_spd_data(spd_index); return spd_index;
memcpy(&spd[0], memory, 256); }
memcpy(&spd[2], memory, 256);
void mb_get_spd_map(struct spd_info *spdi)
{
spdi->addresses[0] = SPD_MEMORY_DOWN;
spdi->addresses[2] = SPD_MEMORY_DOWN;
spdi->spd_index = get_spd_index();
} }

View File

@ -15,6 +15,7 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x06100610" register "gpu_pch_backlight" = "0x06100610"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
register "ec_present" = "1" # I have an embedded controller register "ec_present" = "1" # I have an embedded controller
register "max_mem_clock_mhz" = "666" # So DDR3 freq = 1333 register "max_mem_clock_mhz" = "666" # So DDR3 freq = 1333

View File

@ -1,21 +1,9 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/hpet.h>
#include <stdint.h> #include <stdint.h>
#include <northbridge/intel/sandybridge/raminit.h> #include <northbridge/intel/sandybridge/raminit.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h>
void mainboard_fill_pei_data(struct pei_data *pei_data) void mainboard_fill_pei_data(struct pei_data *pei_data)
{ {
const uint8_t spdaddr[] = {0xa0, 0x00, 0xa2, 0x00};
memcpy(pei_data->spd_addresses, &spdaddr, sizeof(pei_data->spd_addresses));
}
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
} }

View File

@ -15,6 +15,7 @@ chip northbridge/intel/sandybridge
register "gpu_cpu_backlight" = "0x1155" register "gpu_cpu_backlight" = "0x1155"
register "gpu_pch_backlight" = "0x11551155" register "gpu_pch_backlight" = "0x11551155"
register "spd_addresses" = "{0x50, 0, 0x51, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x21fa inherit subsystemid 0x17aa 0x21fa inherit

View File

@ -1,6 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
#include <southbridge/intel/common/gpio.h> #include <southbridge/intel/common/gpio.h>
@ -20,9 +19,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P12: wlan, no OC */ { 1, 1, -1 }, /* P12: wlan, no OC */
{ 1, 1, -1 }, /* P13: webcam, no OC */ { 1, 1, -1 }, /* P13: webcam, no OC */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x51, id_only);
}

View File

@ -1,6 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
const struct southbridge_usb_port mainboard_usb_ports[] = { const struct southbridge_usb_port mainboard_usb_ports[] = {
@ -19,8 +18,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{1, 3, -1}, /* B1P5: WLAN USB */ {1, 3, -1}, /* B1P5: WLAN USB */
{1, 1, -1}, /* B1P6: Camera */ {1, 1, -1}, /* B1P6: Camera */
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
}

View File

@ -11,6 +11,7 @@ chip northbridge/intel/sandybridge
register "gpu_panel_power_down_delay" = "500" # 50ms register "gpu_panel_power_down_delay" = "500" # 50ms
register "gpu_panel_power_up_delay" = "2000" # 200ms register "gpu_panel_power_up_delay" = "2000" # 200ms
register "spd_addresses" = "{0x50, 0, 0, 0}"
device domain 0 on device domain 0 on
subsystemid 0x17aa 0x2209 inherit subsystemid 0x17aa 0x2209 inherit
chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH chip southbridge/intel/bd82x6x # Intel Series 7 Panther Point PCH

View File

@ -1,4 +1,5 @@
chip northbridge/intel/sandybridge chip northbridge/intel/sandybridge
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
device domain 0 on device domain 0 on
subsystemid 0x1462 0x7707 inherit subsystemid 0x1462 0x7707 inherit

View File

@ -1,7 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <device/pci_ops.h> #include <device/pci_ops.h>
#include <northbridge/intel/sandybridge/raminit_native.h>
#include <southbridge/intel/common/pmbase.h> #include <southbridge/intel/common/pmbase.h>
#include <southbridge/intel/bd82x6x/pch.h> #include <southbridge/intel/bd82x6x/pch.h>
@ -29,9 +28,3 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{1, 0, 5}, {1, 0, 5},
{1, 0, 6}, {1, 0, 6},
}; };
void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
read_spd(&spd[0], 0x50, id_only);
read_spd(&spd[2], 0x52, id_only);
}

View File

@ -22,6 +22,7 @@ chip northbridge/intel/sandybridge
register "usb3.preboot_support" = "1" register "usb3.preboot_support" = "1"
register "usb3.xhci_streams" = "1" register "usb3.xhci_streams" = "1"
register "spd_addresses" = "{0x50, 0, 0x52, 0}"
register "ec_present" = "1" register "ec_present" = "1"
register "max_mem_clock_mhz" = "800" register "max_mem_clock_mhz" = "800"

Some files were not shown because too many files have changed in this diff Show More