From 349e08535a7666cabe52ebc331e3bce5468b786b Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Sun, 9 Apr 2017 20:48:37 +0200 Subject: sb/intel/i82801jx: Add correct PCI ids and change names Change-Id: Ic9226098dafa2465aa5fccc72c442de2b94e44c7 Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/19249 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth --- src/southbridge/intel/i82801jx/i82801jx.h | 234 ++++++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 src/southbridge/intel/i82801jx/i82801jx.h (limited to 'src/southbridge/intel/i82801jx/i82801jx.h') diff --git a/src/southbridge/intel/i82801jx/i82801jx.h b/src/southbridge/intel/i82801jx/i82801jx.h new file mode 100644 index 0000000000..1c765a3d9c --- /dev/null +++ b/src/southbridge/intel/i82801jx/i82801jx.h @@ -0,0 +1,234 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Timothy Pearson , Raptor Engineering + * Copyright (C) 2008-2009 coresystems GmbH + * 2012 secunet Security Networks AG + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef SOUTHBRIDGE_INTEL_I82801GX_I82801JX_H +#define SOUTHBRIDGE_INTEL_I82801GX_I82801JX_H + +#ifndef __ACPI__ +#ifndef __ASSEMBLER__ +#include "chip.h" +#endif +#endif + +#define DEFAULT_TBAR ((u8 *)0xfed1b000) +#ifndef __ACPI__ +#define DEFAULT_RCBA ((u8 *)0xfed1c000) +#else +#define DEFAULT_RCBA 0xfed1c000 +#endif + +#define DEFAULT_PMBASE 0x00000500 +#define DEFAULT_TCOBASE (DEFAULT_PMBASE + 0x60) +#define DEFAULT_GPIOBASE 0x00000580 + + +#define APM_CNT 0xb2 + +#define PM1_STS 0x00 +#define PWRBTN_STS (1 << 8) +#define RTC_STS (1 << 10) +#define PM1_EN 0x02 +#define PWRBTN_EN (1 << 8) +#define GBL_EN (1 << 5) +#define PM1_CNT 0x04 +#define SCI_EN (1 << 0) +#define PM_LV2 0x14 +#define PM_LV3 0x15 +#define PM_LV4 0x16 +#define PM_LV5 0x17 +#define PM_LV6 0x18 +#define GPE0_STS 0x20 +#define SMI_EN 0x30 +#define PERIODIC_EN (1 << 14) +#define TCO_EN (1 << 13) +#define APMC_EN (1 << 5) +#define BIOS_EN (1 << 2) +#define EOS (1 << 1) +#define GBL_SMI_EN (1 << 0) +#define SMI_STS 0x34 +#define ALT_GP_SMI_EN 0x38 +#define ALT_GP_SMI_STS 0x3a + + +#define GP_IO_USE_SEL 0x00 +#define GP_IO_SEL 0x04 +#define GP_LVL 0x0c +#define GPO_BLINK 0x18 +#define GPI_INV 0x2c +#define GP_IO_USE_SEL2 0x30 +#define GP_IO_SEL2 0x34 +#define GP_LVL2 0x38 + +#define DEBUG_PERIODIC_SMIS 0 + +#define MAINBOARD_POWER_OFF 0 +#define MAINBOARD_POWER_ON 1 +#define MAINBOARD_POWER_KEEP 2 + +#ifndef CONFIG_MAINBOARD_POWER_ON_AFTER_POWER_FAIL +#define CONFIG_MAINBOARD_POWER_ON_AFTER_POWER_FAIL MAINBOARD_POWER_ON +#endif + + +/* D31:F0 LPC bridge */ +#define D31F0_PMBASE 0x40 +#define PMBASE D31F0_PMBASE +#define D31F0_ACPI_CNTL 0x44 +#define ACPI_CNTL D31F0_ACPI_CNTL +#define D31F0_GPIO_BASE 0x48 +#define D31F0_GPIO_CNTL 0x4c +#define D31F0_PIRQA_ROUT 0x60 +#define D31F0_PIRQB_ROUT 0x61 +#define D31F0_PIRQC_ROUT 0x62 +#define D31F0_PIRQD_ROUT 0x63 +#define D31F0_SERIRQ_CNTL 0x64 +#define D31F0_PIRQE_ROUT 0x68 +#define D31F0_PIRQF_ROUT 0x69 +#define D31F0_PIRQG_ROUT 0x6a +#define D31F0_PIRQH_ROUT 0x6b +#define D31F0_LPC_IODEC 0x80 +#define D31F0_LPC_EN 0x82 +#define D31F0_GEN1_DEC 0x84 +#define D31F0_GEN2_DEC 0x88 +#define D31F0_GEN3_DEC 0x8c +#define D31F0_GEN4_DEC 0x90 +#define D31F0_GEN_PMCON_1 0xa0 +#define D31F0_GEN_PMCON_3 0xa4 +#define D31F0_C5_EXIT_TIMING 0xa8 +#define D31F0_CxSTATE_CNF 0xa9 +#define D31F0_C4TIMING_CNT 0xaa +#define D31F0_GPIO_ROUT 0xb8 +#define D31F0_RCBA 0xf0 + +/* GEN_PMCON_3 bits */ +#define RTC_BATTERY_DEAD (1 << 2) +#define RTC_POWER_FAILED (1 << 1) +#define SLEEP_AFTER_POWER_FAIL (1 << 0) + + +/* D31:F2 SATA */ +#define D31F2_IDE_TIM_PRI 0x40 +#define D31F2_IDE_TIM_SEC 0x42 +#define D31F2_SIDX 0xa0 +#define D31F2_SDAT 0xa4 + + +/* D30:F0 PCI-to-PCI bridge */ +#define D30F0_SMLT 0x1b + + +/* D28:F0-5 PCIe root ports */ +#define D28Fx_XCAP 0x42 +#define D28Fx_SLCAP 0x54 + + +#define SMBUS_IO_BASE 0x0400 + +/* PCI Configuration Space (D31:F3): SMBus */ +#define SMB_BASE 0x20 +#define HOSTC 0x40 + +/* HOSTC bits */ +#define I2C_EN (1 << 2) +#define SMB_SMI_EN (1 << 1) +#define HST_EN (1 << 0) + +/* SMBus I/O bits. */ +#define SMBHSTSTAT 0x0 +#define SMBHSTCTL 0x2 +#define SMBHSTCMD 0x3 +#define SMBXMITADD 0x4 +#define SMBHSTDAT0 0x5 +#define SMBHSTDAT1 0x6 +#define SMBBLKDAT 0x7 +#define SMBTRNSADD 0x9 +#define SMBSLVDATA 0xa +#define SMLINK_PIN_CTL 0xe +#define SMBUS_PIN_CTL 0xf + +#define SMBUS_TIMEOUT (10 * 1000 * 100) + + +#define RCBA8(x) *((volatile u8 *)(DEFAULT_RCBA + x)) +#define RCBA16(x) *((volatile u16 *)(DEFAULT_RCBA + x)) +#define RCBA32(x) *((volatile u32 *)(DEFAULT_RCBA + x)) + +#define RCBA_V0CTL 0x0014 +#define RCBA_V1CAP 0x001c +#define RCBA_V1CTL 0x0020 +#define RCBA_V1STS 0x0026 +#define RCBA_PAT 0x0030 +#define RCBA_ESD 0x0104 +#define RCBA_ULD 0x0110 +#define RCBA_ULBA 0x0118 +#define RCBA_LCAP 0x01a4 +#define RCBA_LCTL 0x01a8 +#define RCBA_LSTS 0x01aa +#define RCBA_DMIC 0x0234 +#define RCBA_RPFN 0x0238 +#define RCBA_DMC 0x2010 +#define RCBA_HPTC 0x3404 +#define RCBA_BUC 0x3414 +#define RCBA_FD 0x3418 /* Function Disable, see below. */ +#define RCBA_CG 0x341c +#define RCBA_FDSW 0x3420 +#define RCBA_MAP 0x35f0 /* UHCI controller #6 remapping */ + +#define BUC_LAND (1 << 5) /* LAN */ +#define FD_SAD2 (1 << 25) /* SATA #2 */ +#define FD_TTD (1 << 24) /* Thermal Throttle */ +#define FD_PE6D (1 << 21) /* PCIe root port 6 */ +#define FD_PE5D (1 << 20) /* PCIe root port 5 */ +#define FD_PE4D (1 << 19) /* PCIe root port 4 */ +#define FD_PE3D (1 << 18) /* PCIe root port 3 */ +#define FD_PE2D (1 << 17) /* PCIe root port 2 */ +#define FD_PE1D (1 << 16) /* PCIe root port 1 */ +#define FD_EHCI1D (1 << 15) /* EHCI #1 */ +#define FD_LBD (1 << 14) /* LPC bridge */ +#define FD_EHCI2D (1 << 13) /* EHCI #2 */ +#define FD_U5D (1 << 12) /* UHCI #5 */ +#define FD_U4D (1 << 11) /* UHCI #4 */ +#define FD_U3D (1 << 10) /* UHCI #3 */ +#define FD_U2D (1 << 9) /* UHCI #2 */ +#define FD_U1D (1 << 8) /* UHCI #1 */ +#define FD_U6D (1 << 7) /* UHCI #6 */ +#define FD_HDAD (1 << 4) /* HD audio */ +#define FD_SD (1 << 3) /* SMBus */ +#define FD_SAD1 (1 << 2) /* SATA #1 */ + + +#ifndef __ACPI__ +#ifndef __ASSEMBLER__ + +static inline int lpc_is_mobile(const u16 devid) +{ + return (devid == 0x2917) || (devid == 0x2919); +} +#define LPC_IS_MOBILE(dev) lpc_is_mobile(pci_read_config16(dev, PCI_DEVICE_ID)) + +#if defined(__PRE_RAM__) +void enable_smbus(void); +int smbus_read_byte(unsigned device, unsigned address); +void i82801jx_early_init(void); +void i82801jx_dmi_setup(void); +void i82801jx_dmi_poll_vc1(void); +#endif + +#endif +#endif + +#endif -- cgit v1.2.3