GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Support for Intel Application Digital Signal Processor
|
||||
*
|
||||
* Copyright 2019 Google LLC
|
||||
*
|
||||
* Modified from coreboot file of the same name
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_BROADWELL_ADSP_H
|
||||
#define __ASM_ARCH_BROADWELL_ADSP_H
|
||||
|
||||
#define ADSP_PCI_IRQ 23
|
||||
#define ADSP_ACPI_IRQ 3
|
||||
#define ADSP_ACPI_IRQEN BIT(3)
|
||||
|
||||
#define ADSP_SHIM_BASE_LPT 0xe7000
|
||||
#define ADSP_SHIM_BASE_WPT 0xfb000
|
||||
#define ADSP_SHIM_LTRC 0xe0
|
||||
#define ADSP_SHIM_LTRC_VALUE 0x3003
|
||||
#define ADSP_SHIM_IMC 0x28
|
||||
#define ADSP_SHIM_IPCD 0x40
|
||||
|
||||
#define ADSP_PCI_VDRTCTL0 0xa0
|
||||
#define ADSP_VDRTCTL0_D3PGD_LPT BIT(1)
|
||||
#define ADSP_VDRTCTL0_D3PGD_WPT BIT(0)
|
||||
#define ADSP_VDRTCTL0_D3SRAMPGD_LPT BIT(2)
|
||||
#define ADSP_VDRTCTL0_D3SRAMPGD_WPT BIT(1)
|
||||
#define ADSP_PCI_VDRTCTL1 0xa4
|
||||
#define ADSP_PCI_VDRTCTL2 0xa8
|
||||
#define ADSP_VDRTCTL2_VALUE 0x00000fff
|
||||
|
||||
#define ADSP_IOBP_VDLDAT1 0xd7000624
|
||||
#define ADSP_VDLDAT1_VALUE 0x00040100
|
||||
#define ADSP_IOBP_VDLDAT2 0xd7000628
|
||||
#define ADSP_IOBP_ACPI_IRQ3 0xd9d8
|
||||
#define ADSP_IOBP_ACPI_IRQ3I 0xd8d9
|
||||
#define ADSP_IOBP_ACPI_IRQ4 0xdbda
|
||||
#define ADSP_IOBP_PMCTL 0xd70001e0
|
||||
#define ADSP_PMCTL_VALUE 0x3f
|
||||
#define ADSP_IOBP_PCICFGCTL 0xd7000500
|
||||
#define ADSP_PCICFGCTL_PCICD BIT(0)
|
||||
#define ADSP_PCICFGCTL_ACPIIE BIT(1)
|
||||
#define ADSP_PCICFGCTL_SPCBAD BIT(7)
|
||||
|
||||
#endif /* __ASM_ARCH_BROADWELL_ADSP_H */
|
||||
@@ -0,0 +1,44 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2016 Google, Inc
|
||||
*/
|
||||
|
||||
#ifndef __asm_arch_cpu_h
|
||||
#define __asm_arch_cpu_h
|
||||
|
||||
/* CPU types */
|
||||
#define HASWELL_FAMILY_ULT 0x40650
|
||||
#define BROADWELL_FAMILY_ULT 0x306d0
|
||||
|
||||
/* Supported CPUIDs */
|
||||
#define CPUID_HASWELL_A0 0x306c1
|
||||
#define CPUID_HASWELL_B0 0x306c2
|
||||
#define CPUID_HASWELL_C0 0x306c3
|
||||
#define CPUID_HASWELL_ULT_B0 0x40650
|
||||
#define CPUID_HASWELL_ULT 0x40651
|
||||
#define CPUID_HASWELL_HALO 0x40661
|
||||
#define CPUID_BROADWELL_C0 0x306d2
|
||||
#define CPUID_BROADWELL_D0 0x306d3
|
||||
#define CPUID_BROADWELL_E0 0x306d4
|
||||
|
||||
#define BROADWELL_FAMILY_ULT 0x306d0
|
||||
|
||||
#define CORE_THREAD_COUNT_MSR 0x35
|
||||
|
||||
#define MSR_VR_CURRENT_CONFIG 0x601
|
||||
#define MSR_VR_MISC_CONFIG 0x603
|
||||
#define MSR_PKG_POWER_SKU 0x614
|
||||
#define MSR_DDR_RAPL_LIMIT 0x618
|
||||
#define MSR_VR_MISC_CONFIG2 0x636
|
||||
|
||||
/* Latency times in units of 1024ns. */
|
||||
#define C_STATE_LATENCY_CONTROL_0_LIMIT 0x42
|
||||
#define C_STATE_LATENCY_CONTROL_1_LIMIT 0x73
|
||||
#define C_STATE_LATENCY_CONTROL_2_LIMIT 0x91
|
||||
#define C_STATE_LATENCY_CONTROL_3_LIMIT 0xe4
|
||||
#define C_STATE_LATENCY_CONTROL_4_LIMIT 0x145
|
||||
#define C_STATE_LATENCY_CONTROL_5_LIMIT 0x1ef
|
||||
|
||||
void cpu_set_power_limits(int power_limit_1_time);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,90 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2016 Google, Inc
|
||||
*
|
||||
* From Coreboot src/soc/intel/broadwell/include/soc/gpio.h
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_GPIO
|
||||
#define __ASM_ARCH_GPIO
|
||||
|
||||
#define GPIO_PER_BANK 32
|
||||
#define GPIO_BANKS 3
|
||||
|
||||
struct broadwell_bank_platdata {
|
||||
uint16_t base_addr;
|
||||
const char *bank_name;
|
||||
int bank;
|
||||
};
|
||||
|
||||
/* PCH-LP GPIOBASE Registers */
|
||||
struct pch_lp_gpio_regs {
|
||||
u32 own[GPIO_BANKS];
|
||||
u32 reserved0;
|
||||
|
||||
u16 pirq_to_ioxapic;
|
||||
u16 reserved1[3];
|
||||
u32 blink;
|
||||
u32 ser_blink;
|
||||
|
||||
u32 ser_blink_cmdsts;
|
||||
u32 ser_blink_data;
|
||||
u16 gpi_nmi_en;
|
||||
u16 gpi_nmi_sts;
|
||||
u32 reserved2;
|
||||
|
||||
u32 gpi_route[GPIO_BANKS];
|
||||
u32 reserved3;
|
||||
|
||||
u32 reserved4[4];
|
||||
|
||||
u32 alt_gpi_smi_sts;
|
||||
u32 alt_gpi_smi_en;
|
||||
u32 reserved5[2];
|
||||
|
||||
u32 rst_sel[GPIO_BANKS];
|
||||
u32 reserved6;
|
||||
|
||||
u32 reserved9[3];
|
||||
u32 gpio_gc;
|
||||
|
||||
u32 gpi_is[GPIO_BANKS];
|
||||
u32 reserved10;
|
||||
|
||||
u32 gpi_ie[GPIO_BANKS];
|
||||
u32 reserved11;
|
||||
|
||||
u32 reserved12[24];
|
||||
|
||||
struct {
|
||||
u32 conf_a;
|
||||
u32 conf_b;
|
||||
} config[GPIO_BANKS * GPIO_PER_BANK];
|
||||
};
|
||||
check_member(pch_lp_gpio_regs, gpi_ie[0], 0x90);
|
||||
check_member(pch_lp_gpio_regs, config[0], 0x100);
|
||||
|
||||
enum {
|
||||
CONFA_MODE_SHIFT = 0,
|
||||
CONFA_MODE_GPIO = 1 << CONFA_MODE_SHIFT,
|
||||
|
||||
CONFA_DIR_SHIFT = 2,
|
||||
CONFA_DIR_INPUT = 1 << CONFA_DIR_SHIFT,
|
||||
|
||||
CONFA_INVERT_SHIFT = 3,
|
||||
CONFA_INVERT = 1 << CONFA_INVERT_SHIFT,
|
||||
|
||||
CONFA_TRIGGER_SHIFT = 4,
|
||||
CONFA_TRIGGER_LEVEL = 1 << CONFA_TRIGGER_SHIFT,
|
||||
|
||||
CONFA_LEVEL_SHIFT = 30,
|
||||
CONFA_LEVEL_HIGH = 1UL << CONFA_LEVEL_SHIFT,
|
||||
|
||||
CONFA_OUTPUT_SHIFT = 31,
|
||||
CONFA_OUTPUT_HIGH = 1UL << CONFA_OUTPUT_SHIFT,
|
||||
|
||||
CONFB_SENSE_SHIFT = 2,
|
||||
CONFB_SENSE_DISABLE = 1 << CONFB_SENSE_SHIFT,
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,52 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
/*
|
||||
* From Coreboot soc/intel/broadwell/include/soc/iomap.h
|
||||
*
|
||||
* Copyright (C) 2016 Google Inc.
|
||||
*/
|
||||
|
||||
#ifndef __asm_arch_iomap_h
|
||||
#define __asm_arch_iomap_h
|
||||
|
||||
#define MCFG_BASE_ADDRESS 0xf0000000
|
||||
#define MCFG_BASE_SIZE 0x4000000
|
||||
|
||||
#define HPET_BASE_ADDRESS 0xfed00000
|
||||
|
||||
#define MCH_BASE_ADDRESS 0xfed10000
|
||||
#define MCH_BASE_SIZE 0x8000
|
||||
|
||||
#define DMI_BASE_ADDRESS 0xfed18000
|
||||
#define DMI_BASE_SIZE 0x1000
|
||||
|
||||
#define EP_BASE_ADDRESS 0xfed19000
|
||||
#define EP_BASE_SIZE 0x1000
|
||||
|
||||
#define EDRAM_BASE_ADDRESS 0xfed80000
|
||||
#define EDRAM_BASE_SIZE 0x4000
|
||||
|
||||
#define GDXC_BASE_ADDRESS 0xfed84000
|
||||
#define GDXC_BASE_SIZE 0x1000
|
||||
|
||||
#define RCBA_BASE_ADDRESS 0xfed1c000
|
||||
#define RCBA_BASE_SIZE 0x4000
|
||||
|
||||
#define HPET_BASE_ADDRESS 0xfed00000
|
||||
|
||||
#define ACPI_BASE_ADDRESS 0x1000
|
||||
#define ACPI_BASE_SIZE 0x100
|
||||
|
||||
#define GPIO_BASE_ADDRESS 0x1400
|
||||
#define GPIO_BASE_SIZE 0x400
|
||||
|
||||
#define SMBUS_BASE_ADDRESS 0x0400
|
||||
#define SMBUS_BASE_SIZE 0x10
|
||||
|
||||
/* Temporary addresses used before relocation */
|
||||
#define EARLY_GTT_BAR 0xe0000000
|
||||
#define EARLY_XHCI_BAR 0xd7000000
|
||||
#define EARLY_EHCI_BAR 0xd8000000
|
||||
#define EARLY_UART_BAR 0x3f8
|
||||
#define EARLY_TEMP_MMIO 0xfed08000
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* From coreboot soc/intel/broadwell/include/soc/lpc.h
|
||||
*
|
||||
* Copyright (C) 2016 Google Inc.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_ARCH_LPC_H
|
||||
#define _ASM_ARCH_LPC_H
|
||||
|
||||
#define GEN_PMCON_1 0xa0
|
||||
#define SMI_LOCK (1 << 4)
|
||||
#define GEN_PMCON_2 0xa2
|
||||
#define SYSTEM_RESET_STS (1 << 4)
|
||||
#define THERMTRIP_STS (1 << 3)
|
||||
#define SYSPWR_FLR (1 << 1)
|
||||
#define PWROK_FLR (1 << 0)
|
||||
#define GEN_PMCON_3 0xa4
|
||||
#define SUS_PWR_FLR (1 << 14)
|
||||
#define GEN_RST_STS (1 << 9)
|
||||
#define RTC_BATTERY_DEAD (1 << 2)
|
||||
#define PWR_FLR (1 << 1)
|
||||
#define SLEEP_AFTER_POWER_FAIL (1 << 0)
|
||||
#define GEN_PMCON_LOCK 0xa6
|
||||
#define SLP_STR_POL_LOCK (1 << 2)
|
||||
#define ACPI_BASE_LOCK (1 << 1)
|
||||
#define PMIR 0xac
|
||||
#define PMIR_CF9LOCK (1 << 31)
|
||||
#define PMIR_CF9GR (1 << 20)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,199 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* From coreboot soc/intel/broadwell/include/soc/me.h
|
||||
*
|
||||
* Copyright (C) 2014 Google Inc.
|
||||
*/
|
||||
|
||||
#ifndef _asm_arch_me_h
|
||||
#define _asm_arch_me_h
|
||||
|
||||
#include <asm/me_common.h>
|
||||
|
||||
#define ME_INIT_STATUS_SUCCESS_OTHER 3 /* SEE ME9 BWG */
|
||||
|
||||
#define ME_HSIO_MESSAGE (7 << 28)
|
||||
#define ME_HSIO_CMD_GETHSIOVER 1
|
||||
#define ME_HSIO_CMD_CLOSE 0
|
||||
|
||||
/*
|
||||
* Apparently the GMES register is renamed to HFS2 (or HFSTS2 according
|
||||
* to ME9 BWG). Sadly the PCH EDS and the ME BWG do not match on nomenclature.
|
||||
*/
|
||||
#define PCI_ME_HFS2 0x48
|
||||
/* Infrastructure Progress Values */
|
||||
#define ME_HFS2_PHASE_ROM 0
|
||||
#define ME_HFS2_PHASE_BUP 1
|
||||
#define ME_HFS2_PHASE_UKERNEL 2
|
||||
#define ME_HFS2_PHASE_POLICY 3
|
||||
#define ME_HFS2_PHASE_MODULE_LOAD 4
|
||||
#define ME_HFS2_PHASE_UNKNOWN 5
|
||||
#define ME_HFS2_PHASE_HOST_COMM 6
|
||||
/* Current State - Based on Infra Progress values. */
|
||||
/* ROM State */
|
||||
#define ME_HFS2_STATE_ROM_BEGIN 0
|
||||
#define ME_HFS2_STATE_ROM_DISABLE 6
|
||||
/* BUP State */
|
||||
#define ME_HFS2_STATE_BUP_INIT 0
|
||||
#define ME_HFS2_STATE_BUP_DIS_HOST_WAKE 1
|
||||
#define ME_HFS2_STATE_BUP_FLOW_DET 4
|
||||
#define ME_HFS2_STATE_BUP_VSCC_ERR 8
|
||||
#define ME_HFS2_STATE_BUP_CHECK_STRAP 0xa
|
||||
#define ME_HFS2_STATE_BUP_PWR_OK_TIMEOUT 0xb
|
||||
#define ME_HFS2_STATE_BUP_MANUF_OVRD_STRAP 0xd
|
||||
#define ME_HFS2_STATE_BUP_M3 0x11
|
||||
#define ME_HFS2_STATE_BUP_M0 0x12
|
||||
#define ME_HFS2_STATE_BUP_FLOW_DET_ERR 0x13
|
||||
#define ME_HFS2_STATE_BUP_M3_CLK_ERR 0x15
|
||||
#define ME_HFS2_STATE_BUP_CPU_RESET_DID_TIMEOUT_MEM_MISSING 0x17
|
||||
#define ME_HFS2_STATE_BUP_M3_KERN_LOAD 0x18
|
||||
#define ME_HFS2_STATE_BUP_T32_MISSING 0x1c
|
||||
#define ME_HFS2_STATE_BUP_WAIT_DID 0x1f
|
||||
#define ME_HFS2_STATE_BUP_WAIT_DID_FAIL 0x20
|
||||
#define ME_HFS2_STATE_BUP_DID_NO_FAIL 0x21
|
||||
#define ME_HFS2_STATE_BUP_ENABLE_UMA 0x22
|
||||
#define ME_HFS2_STATE_BUP_ENABLE_UMA_ERR 0x23
|
||||
#define ME_HFS2_STATE_BUP_SEND_DID_ACK 0x24
|
||||
#define ME_HFS2_STATE_BUP_SEND_DID_ACK_ERR 0x25
|
||||
#define ME_HFS2_STATE_BUP_M0_CLK 0x26
|
||||
#define ME_HFS2_STATE_BUP_M0_CLK_ERR 0x27
|
||||
#define ME_HFS2_STATE_BUP_TEMP_DIS 0x28
|
||||
#define ME_HFS2_STATE_BUP_M0_KERN_LOAD 0x32
|
||||
/* Policy Module State */
|
||||
#define ME_HFS2_STATE_POLICY_ENTRY 0
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_S3 3
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_S4 4
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_S5 5
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_UPD 6
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_PCR 7
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_NPCR 8
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_HOST_WAKE 9
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_AC_DC 0xa
|
||||
#define ME_HFS2_STATE_POLICY_RCVD_DID 0xb
|
||||
#define ME_HFS2_STATE_POLICY_VSCC_NOT_FOUND 0xc
|
||||
#define ME_HFS2_STATE_POLICY_VSCC_INVALID 0xd
|
||||
#define ME_HFS2_STATE_POLICY_FPB_ERR 0xe
|
||||
#define ME_HFS2_STATE_POLICY_DESCRIPTOR_ERR 0xf
|
||||
#define ME_HFS2_STATE_POLICY_VSCC_NO_MATCH 0x10
|
||||
/* Current PM Event Values */
|
||||
#define ME_HFS2_PMEVENT_CLEAN_MOFF_MX_WAKE 0
|
||||
#define ME_HFS2_PMEVENT_MOFF_MX_WAKE_ERROR 1
|
||||
#define ME_HFS2_PMEVENT_CLEAN_GLOBAL_RESET 2
|
||||
#define ME_HFS2_PMEVENT_CLEAN_GLOBAL_RESET_ERROR 3
|
||||
#define ME_HFS2_PMEVENT_CLEAN_ME_RESET 4
|
||||
#define ME_HFS2_PMEVENT_ME_RESET_EXCEPTION 5
|
||||
#define ME_HFS2_PMEVENT_PSEUDO_ME_RESET 6
|
||||
#define ME_HFS2_PMEVENT_S0MO_SXM3 7
|
||||
#define ME_HFS2_PMEVENT_SXM3_S0M0 8
|
||||
#define ME_HFS2_PMEVENT_NON_PWR_CYCLE_RESET 9
|
||||
#define ME_HFS2_PMEVENT_PWR_CYCLE_RESET_M3 0xa
|
||||
#define ME_HFS2_PMEVENT_PWR_CYCLE_RESET_MOFF 0xb
|
||||
#define ME_HFS2_PMEVENT_SXMX_SXMOFF 0xc
|
||||
|
||||
struct me_hfs2 {
|
||||
u32 bist_in_progress:1;
|
||||
u32 reserved1:2;
|
||||
u32 invoke_mebx:1;
|
||||
u32 cpu_replaced_sts:1;
|
||||
u32 mbp_rdy:1;
|
||||
u32 mfs_failure:1;
|
||||
u32 warm_reset_request:1;
|
||||
u32 cpu_replaced_valid:1;
|
||||
u32 reserved2:4;
|
||||
u32 mbp_cleared:1;
|
||||
u32 reserved3:2;
|
||||
u32 current_state:8;
|
||||
u32 current_pmevent:4;
|
||||
u32 progress_code:4;
|
||||
} __packed;
|
||||
|
||||
#define PCI_ME_HFS5 0x68
|
||||
|
||||
#define PCI_ME_H_GS2 0x70
|
||||
#define PCI_ME_MBP_GIVE_UP 0x01
|
||||
|
||||
/* ICC Messages */
|
||||
#define ICC_SET_CLOCK_ENABLES 0x3
|
||||
#define ICC_API_VERSION_LYNXPOINT 0x00030000
|
||||
|
||||
struct icc_header {
|
||||
u32 api_version;
|
||||
u32 icc_command;
|
||||
u32 icc_status;
|
||||
u32 length;
|
||||
u32 reserved;
|
||||
} __packed;
|
||||
|
||||
struct icc_clock_enables_msg {
|
||||
u32 clock_enables;
|
||||
u32 clock_mask;
|
||||
u32 no_response:1;
|
||||
u32 reserved:31;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* ME to BIOS Payload Datastructures and definitions. The ordering of the
|
||||
* structures follows the ordering in the ME9 BWG.
|
||||
*/
|
||||
|
||||
#define MBP_APPID_KERNEL 1
|
||||
#define MBP_APPID_INTEL_AT 3
|
||||
#define MBP_APPID_HWA 4
|
||||
#define MBP_APPID_ICC 5
|
||||
#define MBP_APPID_NFC 6
|
||||
/* Kernel items: */
|
||||
#define MBP_KERNEL_FW_VER_ITEM 1
|
||||
#define MBP_KERNEL_FW_CAP_ITEM 2
|
||||
#define MBP_KERNEL_ROM_BIST_ITEM 3
|
||||
#define MBP_KERNEL_PLAT_KEY_ITEM 4
|
||||
#define MBP_KERNEL_FW_TYPE_ITEM 5
|
||||
#define MBP_KERNEL_MFS_FAILURE_ITEM 6
|
||||
#define MBP_KERNEL_PLAT_TIME_ITEM 7
|
||||
/* Intel AT items: */
|
||||
#define MBP_INTEL_AT_STATE_ITEM 1
|
||||
/* ICC Items: */
|
||||
#define MBP_ICC_PROFILE_ITEM 1
|
||||
/* HWA Items: */
|
||||
#define MBP_HWA_REQUEST_ITEM 1
|
||||
/* NFC Items: */
|
||||
#define MBP_NFC_SUPPORT_DATA_ITEM 1
|
||||
|
||||
#define MBP_MAKE_IDENT(appid, item) ((appid << 8) | item)
|
||||
#define MBP_IDENT(appid, item) \
|
||||
MBP_MAKE_IDENT(MBP_APPID_##appid, MBP_##appid##_##item##_ITEM)
|
||||
|
||||
struct mbp_fw_version_name {
|
||||
u32 major_version:16;
|
||||
u32 minor_version:16;
|
||||
u32 hotfix_version:16;
|
||||
u32 build_version:16;
|
||||
} __packed;
|
||||
|
||||
struct icc_address_mask {
|
||||
u16 icc_start_address;
|
||||
u16 mask;
|
||||
} __packed;
|
||||
|
||||
struct mbp_icc_profile {
|
||||
u8 num_icc_profiles;
|
||||
u8 icc_profile_soft_strap;
|
||||
u8 icc_profile_index;
|
||||
u8 reserved;
|
||||
u32 icc_reg_bundles;
|
||||
struct icc_address_mask icc_address_mask[0];
|
||||
} __packed;
|
||||
|
||||
struct me_bios_payload {
|
||||
struct mbp_fw_version_name *fw_version_name;
|
||||
struct mbp_mefwcaps *fw_capabilities;
|
||||
struct mbp_rom_bist_data *rom_bist_data;
|
||||
struct mbp_platform_key *platform_key;
|
||||
struct mbp_plat_type *fw_plat_type;
|
||||
struct mbp_icc_profile *icc_profile;
|
||||
struct mbp_at_state *at_state;
|
||||
u32 *mfsintegrity;
|
||||
struct mbp_plat_time *plat_time;
|
||||
struct mbp_nfc_data *nfc_data;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,152 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2016 Google, Inc
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_PCH_H
|
||||
#define __ASM_ARCH_PCH_H
|
||||
|
||||
#define PMBASE 0x40
|
||||
#define ACPI_CNTL 0x44
|
||||
#define ACPI_EN (1 << 7)
|
||||
|
||||
#define GPIO_BASE 0x48 /* LPC GPIO Base Address Register */
|
||||
#define GPIO_CNTL 0x4C /* LPC GPIO Control Register */
|
||||
#define GPIO_EN (1 << 4)
|
||||
|
||||
#define PCIEXBAR 0x60
|
||||
|
||||
#define PCH_DEV_LPC PCI_BDF(0, 0x1f, 0)
|
||||
|
||||
/* RCB registers */
|
||||
#define OIC 0x31fe /* 16bit */
|
||||
#define HPTC 0x3404 /* 32bit */
|
||||
#define FD 0x3418 /* 32bit */
|
||||
|
||||
/* Function Disable 1 RCBA 0x3418 */
|
||||
#define PCH_DISABLE_ALWAYS (1 << 0)
|
||||
|
||||
/* PM registers */
|
||||
#define TCO1_CNT 0x60
|
||||
#define TCO_TMR_HLT (1 << 11)
|
||||
|
||||
|
||||
/* Device 0:0.0 PCI configuration space */
|
||||
|
||||
#define EPBAR 0x40
|
||||
#define MCHBAR 0x48
|
||||
#define PCIEXBAR 0x60
|
||||
#define DMIBAR 0x68
|
||||
#define GGC 0x50 /* GMCH Graphics Control */
|
||||
#define DEVEN 0x54 /* Device Enable */
|
||||
#define DEVEN_D7EN (1 << 14)
|
||||
#define DEVEN_D4EN (1 << 7)
|
||||
#define DEVEN_D3EN (1 << 5)
|
||||
#define DEVEN_D2EN (1 << 4)
|
||||
#define DEVEN_D1F0EN (1 << 3)
|
||||
#define DEVEN_D1F1EN (1 << 2)
|
||||
#define DEVEN_D1F2EN (1 << 1)
|
||||
#define DEVEN_D0EN (1 << 0)
|
||||
#define DPR 0x5c
|
||||
#define DPR_EPM (1 << 2)
|
||||
#define DPR_PRS (1 << 1)
|
||||
#define DPR_SIZE_MASK 0xff0
|
||||
|
||||
#define MCHBAR_PEI_VERSION 0x5034
|
||||
#define BIOS_RESET_CPL 0x5da8
|
||||
#define EDRAMBAR 0x5408
|
||||
#define MCH_PAIR 0x5418
|
||||
#define GDXCBAR 0x5420
|
||||
|
||||
#define PAM0 0x80
|
||||
#define PAM1 0x81
|
||||
#define PAM2 0x82
|
||||
#define PAM3 0x83
|
||||
#define PAM4 0x84
|
||||
#define PAM5 0x85
|
||||
#define PAM6 0x86
|
||||
|
||||
/* PCODE MMIO communications live in the MCHBAR. */
|
||||
#define BIOS_MAILBOX_INTERFACE 0x5da4
|
||||
#define MAILBOX_RUN_BUSY (1 << 31)
|
||||
#define MAILBOX_BIOS_CMD_READ_PCS 1
|
||||
#define MAILBOX_BIOS_CMD_WRITE_PCS 2
|
||||
#define MAILBOX_BIOS_CMD_READ_CALIBRATION 0x509
|
||||
#define MAILBOX_BIOS_CMD_FSM_MEASURE_INTVL 0x909
|
||||
#define MAILBOX_BIOS_CMD_READ_PCH_POWER 0xa
|
||||
#define MAILBOX_BIOS_CMD_READ_PCH_POWER_EXT 0xb
|
||||
#define MAILBOX_BIOS_CMD_READ_C9C10_VOLTAGE 0x26
|
||||
#define MAILBOX_BIOS_CMD_WRITE_C9C10_VOLTAGE 0x27
|
||||
/* Errors are returned back in bits 7:0. */
|
||||
#define MAILBOX_BIOS_ERROR_NONE 0
|
||||
#define MAILBOX_BIOS_ERROR_INVALID_COMMAND 1
|
||||
#define MAILBOX_BIOS_ERROR_TIMEOUT 2
|
||||
#define MAILBOX_BIOS_ERROR_ILLEGAL_DATA 3
|
||||
#define MAILBOX_BIOS_ERROR_RESERVED 4
|
||||
#define MAILBOX_BIOS_ERROR_ILLEGAL_VR_ID 5
|
||||
#define MAILBOX_BIOS_ERROR_VR_INTERFACE_LOCKED 6
|
||||
#define MAILBOX_BIOS_ERROR_VR_ERROR 7
|
||||
/* Data is passed through bits 31:0 of the data register. */
|
||||
#define BIOS_MAILBOX_DATA 0x5da0
|
||||
|
||||
/* SATA IOBP Registers */
|
||||
#define SATA_IOBP_SP0_SECRT88 0xea002688
|
||||
#define SATA_IOBP_SP1_SECRT88 0xea002488
|
||||
|
||||
#define SATA_SECRT88_VADJ_MASK 0xff
|
||||
#define SATA_SECRT88_VADJ_SHIFT 16
|
||||
|
||||
#define SATA_IOBP_SP0DTLE_DATA 0xea002550
|
||||
#define SATA_IOBP_SP0DTLE_EDGE 0xea002554
|
||||
#define SATA_IOBP_SP1DTLE_DATA 0xea002750
|
||||
#define SATA_IOBP_SP1DTLE_EDGE 0xea002754
|
||||
|
||||
#define SATA_DTLE_MASK 0xF
|
||||
#define SATA_DTLE_DATA_SHIFT 24
|
||||
#define SATA_DTLE_EDGE_SHIFT 16
|
||||
|
||||
/* Power Management */
|
||||
#define PCH_PCS 0x84
|
||||
#define PCH_PCS_PS_D3HOT 3
|
||||
|
||||
#define GEN_PMCON_1 0xa0
|
||||
#define SMI_LOCK (1 << 4)
|
||||
#define GEN_PMCON_2 0xa2
|
||||
#define SYSTEM_RESET_STS (1 << 4)
|
||||
#define THERMTRIP_STS (1 << 3)
|
||||
#define SYSPWR_FLR (1 << 1)
|
||||
#define PWROK_FLR (1 << 0)
|
||||
#define GEN_PMCON_3 0xa4
|
||||
#define SUS_PWR_FLR (1 << 14)
|
||||
#define GEN_RST_STS (1 << 9)
|
||||
#define RTC_BATTERY_DEAD (1 << 2)
|
||||
#define PWR_FLR (1 << 1)
|
||||
#define SLEEP_AFTER_POWER_FAIL (1 << 0)
|
||||
#define GEN_PMCON_LOCK 0xa6
|
||||
#define SLP_STR_POL_LOCK (1 << 2)
|
||||
#define ACPI_BASE_LOCK (1 << 1)
|
||||
#define PMIR 0xac
|
||||
#define PMIR_CF9LOCK (1 << 31)
|
||||
#define PMIR_CF9GR (1 << 20)
|
||||
|
||||
/* Broadwell PCH (Wildcat Point) */
|
||||
#define PCH_WPT_HSW_U_SAMPLE 0x9cc1
|
||||
#define PCH_WPT_BDW_U_SAMPLE 0x9cc2
|
||||
#define PCH_WPT_BDW_U_PREMIUM 0x9cc3
|
||||
#define PCH_WPT_BDW_U_BASE 0x9cc5
|
||||
#define PCH_WPT_BDW_Y_SAMPLE 0x9cc6
|
||||
#define PCH_WPT_BDW_Y_PREMIUM 0x9cc7
|
||||
#define PCH_WPT_BDW_Y_BASE 0x9cc9
|
||||
#define PCH_WPT_BDW_H 0x9ccb
|
||||
|
||||
#define SA_IGD_OPROM_VENDEV 0x80860406
|
||||
|
||||
/* Dynamically determine if the part is ULT */
|
||||
bool cpu_is_ult(void);
|
||||
|
||||
u32 pch_iobp_read(u32 address);
|
||||
int pch_iobp_write(u32 address, u32 data);
|
||||
int pch_iobp_update(u32 address, u32 andvalue, u32 orvalue);
|
||||
int pch_iobp_exec(u32 addr, u16 op_dcode, u8 route_id, u32 *data, u8 *resp);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,176 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
/*
|
||||
* From Coreboot soc/intel/broadwell/include/soc/pei_data.h
|
||||
*
|
||||
* Copyright (C) 2014 Google Inc.
|
||||
*/
|
||||
|
||||
#ifndef ASM_ARCH_PEI_DATA_H
|
||||
#define ASM_ARCH_PEI_DATA_H
|
||||
|
||||
#include <linux/linkage.h>
|
||||
|
||||
#define PEI_VERSION 22
|
||||
|
||||
typedef void asmlinkage (*tx_byte_func)(unsigned char byte);
|
||||
|
||||
enum board_type {
|
||||
BOARD_TYPE_CRB_MOBILE = 0, /* CRB Mobile */
|
||||
BOARD_TYPE_CRB_DESKTOP, /* CRB Desktop */
|
||||
BOARD_TYPE_USER1, /* SV mobile */
|
||||
BOARD_TYPE_USER2, /* SV desktop */
|
||||
BOARD_TYPE_USER3, /* SV server */
|
||||
BOARD_TYPE_ULT, /* ULT */
|
||||
BOARD_TYPE_CRB_EMBDEDDED, /* CRB Embedded */
|
||||
BOARD_TYPE_UNKNOWN,
|
||||
};
|
||||
|
||||
#define MAX_USB2_PORTS 14
|
||||
#define MAX_USB3_PORTS 6
|
||||
#define USB_OC_PIN_SKIP 8
|
||||
|
||||
enum usb2_port_location {
|
||||
USB_PORT_BACK_PANEL = 0,
|
||||
USB_PORT_FRONT_PANEL,
|
||||
USB_PORT_DOCK,
|
||||
USB_PORT_MINI_PCIE,
|
||||
USB_PORT_FLEX,
|
||||
USB_PORT_INTERNAL,
|
||||
USB_PORT_SKIP,
|
||||
USB_PORT_NGFF_DEVICE_DOWN,
|
||||
};
|
||||
|
||||
struct usb2_port_setting {
|
||||
/*
|
||||
* Usb Port Length:
|
||||
* [16:4] = length in inches in octal format
|
||||
* [3:0] = decimal point
|
||||
*/
|
||||
uint16_t length;
|
||||
uint8_t enable;
|
||||
uint8_t oc_pin;
|
||||
uint8_t location;
|
||||
} __packed;
|
||||
|
||||
struct usb3_port_setting {
|
||||
uint8_t enable;
|
||||
uint8_t oc_pin;
|
||||
/*
|
||||
* Set to 0 if trace length is > 5 inches
|
||||
* Set to 1 if trace length is <= 5 inches
|
||||
*/
|
||||
uint8_t fixed_eq;
|
||||
} __packed;
|
||||
|
||||
|
||||
struct pei_data {
|
||||
uint32_t pei_version;
|
||||
|
||||
enum board_type board_type;
|
||||
int boot_mode;
|
||||
int ec_present;
|
||||
int usbdebug;
|
||||
|
||||
/* Base addresses */
|
||||
uint32_t pciexbar;
|
||||
uint16_t smbusbar;
|
||||
uint32_t xhcibar;
|
||||
uint32_t ehcibar;
|
||||
uint32_t gttbar;
|
||||
uint32_t rcba;
|
||||
uint32_t pmbase;
|
||||
uint32_t gpiobase;
|
||||
uint32_t temp_mmio_base;
|
||||
uint32_t tseg_size;
|
||||
|
||||
/*
|
||||
* 0 = leave channel enabled
|
||||
* 1 = disable dimm 0 on channel
|
||||
* 2 = disable dimm 1 on channel
|
||||
* 3 = disable dimm 0+1 on channel
|
||||
*/
|
||||
int dimm_channel0_disabled;
|
||||
int dimm_channel1_disabled;
|
||||
/* Set to 0 for memory down */
|
||||
uint8_t spd_addresses[4];
|
||||
/* Enable 2x Refresh Mode */
|
||||
int ddr_refresh_2x;
|
||||
/* DQ pins are interleaved on board */
|
||||
int dq_pins_interleaved;
|
||||
/* Limit DDR3 frequency */
|
||||
int max_ddr3_freq;
|
||||
/* Disable self refresh */
|
||||
int disable_self_refresh;
|
||||
/* Disable cmd power/CKEPD */
|
||||
int disable_cmd_pwr;
|
||||
|
||||
/* USB port configuration */
|
||||
struct usb2_port_setting usb2_ports[MAX_USB2_PORTS];
|
||||
struct usb3_port_setting usb3_ports[MAX_USB3_PORTS];
|
||||
|
||||
/*
|
||||
* USB3 board specific PHY tuning
|
||||
*/
|
||||
|
||||
/* Valid range: 0x69 - 0x80 */
|
||||
uint8_t usb3_txout_volt_dn_amp_adj[MAX_USB3_PORTS];
|
||||
/* Valid range: 0x80 - 0x9c */
|
||||
uint8_t usb3_txout_imp_sc_volt_amp_adj[MAX_USB3_PORTS];
|
||||
/* Valid range: 0x39 - 0x80 */
|
||||
uint8_t usb3_txout_de_emp_adj[MAX_USB3_PORTS];
|
||||
/* Valid range: 0x3d - 0x4a */
|
||||
uint8_t usb3_txout_imp_adj_volt_amp[MAX_USB3_PORTS];
|
||||
|
||||
/* Console output function */
|
||||
tx_byte_func tx_byte;
|
||||
|
||||
/*
|
||||
* DIMM SPD data for memory down configurations
|
||||
* [CHANNEL][SLOT][SPD]
|
||||
*/
|
||||
uint8_t spd_data[2][2][512];
|
||||
|
||||
/*
|
||||
* LPDDR3 DQ byte map
|
||||
* [CHANNEL][ITERATION][2]
|
||||
*
|
||||
* Maps which PI clocks are used by what LPDDR DQ Bytes (from CPU side)
|
||||
* DQByteMap[0] - ClkDQByteMap:
|
||||
* - If clock is per rank, program to [0xFF, 0xFF]
|
||||
* - If clock is shared by 2 ranks, program to [0xFF, 0] or [0, 0xFF]
|
||||
* - If clock is shared by 2 ranks but does not go to all bytes,
|
||||
* Entry[i] defines which DQ bytes Group i services
|
||||
* DQByteMap[1] - CmdNDQByteMap: [0] is CmdN/CAA and [1] is CmdN/CAB
|
||||
* DQByteMap[2] - CmdSDQByteMap: [0] is CmdS/CAA and [1] is CmdS/CAB
|
||||
* DQByteMap[3] - CkeDQByteMap : [0] is CKE /CAA and [1] is CKE /CAB
|
||||
* For DDR, DQByteMap[3:1] = [0xFF, 0]
|
||||
* DQByteMap[4] - CtlDQByteMap : Always program to [0xFF, 0]
|
||||
* since we have 1 CTL / rank
|
||||
* DQByteMap[5] - CmdVDQByteMap: Always program to [0xFF, 0]
|
||||
* since we have 1 CA Vref
|
||||
*/
|
||||
uint8_t dq_map[2][6][2];
|
||||
|
||||
/*
|
||||
* LPDDR3 Map from CPU DQS pins to SDRAM DQS pins
|
||||
* [CHANNEL][MAX_BYTES]
|
||||
*/
|
||||
uint8_t dqs_map[2][8];
|
||||
|
||||
/* Data read from flash and passed into MRC */
|
||||
const void *saved_data;
|
||||
int saved_data_size;
|
||||
|
||||
/* Disable use of saved data (can be set by mainboard) */
|
||||
int disable_saved_data;
|
||||
|
||||
/* Data from MRC that should be saved to flash */
|
||||
void *data_to_save;
|
||||
int data_to_save_size;
|
||||
struct pei_memory_info meminfo;
|
||||
} __packed;
|
||||
|
||||
void mainboard_fill_pei_data(struct pei_data *pei_data);
|
||||
void broadwell_fill_pei_data(struct pei_data *pei_data);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,128 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* From coreboot src/soc/intel/broadwell/include/soc/pm.h
|
||||
*
|
||||
* Copyright (C) 2016 Google, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_PM_H
|
||||
#define __ASM_ARCH_PM_H
|
||||
|
||||
#define PM1_STS 0x00
|
||||
#define WAK_STS (1 << 15)
|
||||
#define PCIEXPWAK_STS (1 << 14)
|
||||
#define PRBTNOR_STS (1 << 11)
|
||||
#define RTC_STS (1 << 10)
|
||||
#define PWRBTN_STS (1 << 8)
|
||||
#define GBL_STS (1 << 5)
|
||||
#define BM_STS (1 << 4)
|
||||
#define TMROF_STS (1 << 0)
|
||||
#define PM1_EN 0x02
|
||||
#define PCIEXPWAK_DIS (1 << 14)
|
||||
#define RTC_EN (1 << 10)
|
||||
#define PWRBTN_EN (1 << 8)
|
||||
#define GBL_EN (1 << 5)
|
||||
#define TMROF_EN (1 << 0)
|
||||
#define PM1_CNT 0x04
|
||||
#define SLP_EN (1 << 13)
|
||||
#define SLP_TYP (7 << 10)
|
||||
#define SLP_TYP_SHIFT 10
|
||||
#define SLP_TYP_S0 0
|
||||
#define SLP_TYP_S1 1
|
||||
#define SLP_TYP_S3 5
|
||||
#define SLP_TYP_S4 6
|
||||
#define SLP_TYP_S5 7
|
||||
#define GBL_RLS (1 << 2)
|
||||
#define BM_RLD (1 << 1)
|
||||
#define SCI_EN (1 << 0)
|
||||
#define PM1_TMR 0x08
|
||||
#define SMI_EN 0x30
|
||||
#define XHCI_SMI_EN (1 << 31)
|
||||
#define ME_SMI_EN (1 << 30)
|
||||
#define GPIO_UNLOCK_SMI_EN (1 << 27)
|
||||
#define INTEL_USB2_EN (1 << 18)
|
||||
#define LEGACY_USB2_EN (1 << 17)
|
||||
#define PERIODIC_EN (1 << 14)
|
||||
#define TCO_EN (1 << 13)
|
||||
#define MCSMI_EN (1 << 11)
|
||||
#define BIOS_RLS (1 << 7)
|
||||
#define SWSMI_TMR_EN (1 << 6)
|
||||
#define APMC_EN (1 << 5)
|
||||
#define SLP_SMI_EN (1 << 4)
|
||||
#define LEGACY_USB_EN (1 << 3)
|
||||
#define BIOS_EN (1 << 2)
|
||||
#define EOS (1 << 1)
|
||||
#define GBL_SMI_EN (1 << 0)
|
||||
#define SMI_STS 0x34
|
||||
#define UPWRC 0x3c
|
||||
#define UPWRC_WS (1 << 8)
|
||||
#define UPWRC_WE (1 << 1)
|
||||
#define UPWRC_SMI (1 << 0)
|
||||
#define GPE_CNTL 0x42
|
||||
#define SWGPE_CTRL (1 << 1)
|
||||
#define DEVACT_STS 0x44
|
||||
#define PM2_CNT 0x50
|
||||
#define TCO1_CNT 0x60
|
||||
#define TCO_TMR_HLT (1 << 11)
|
||||
#define TCO1_STS 0x64
|
||||
#define DMISCI_STS (1 << 9)
|
||||
#define TCO2_STS 0x66
|
||||
#define TCO2_STS_SECOND_TO (1 << 1)
|
||||
|
||||
#define GPE0_REG_MAX 4
|
||||
#define GPE0_REG_SIZE 32
|
||||
#define GPE0_STS(x) (0x80 + (x * 4))
|
||||
#define GPE_31_0 0 /* 0x80/0x90 = GPE[31:0] */
|
||||
#define GPE_63_32 1 /* 0x84/0x94 = GPE[63:32] */
|
||||
#define GPE_94_64 2 /* 0x88/0x98 = GPE[94:64] */
|
||||
#define GPE_STD 3 /* 0x8c/0x9c = Standard GPE */
|
||||
#define WADT_STS (1 << 18)
|
||||
#define GP27_STS (1 << 16)
|
||||
#define PME_B0_STS (1 << 13)
|
||||
#define ME_SCI_STS (1 << 12)
|
||||
#define PME_STS (1 << 11)
|
||||
#define BATLOW_STS (1 << 10)
|
||||
#define PCI_EXP_STS (1 << 9)
|
||||
#define SMB_WAK_STS (1 << 7)
|
||||
#define TCOSCI_STS (1 << 6)
|
||||
#define SWGPE_STS (1 << 2)
|
||||
#define HOT_PLUG_STS (1 << 1)
|
||||
#define GPE0_EN(x) (0x90 + (x * 4))
|
||||
#define WADT_en (1 << 18)
|
||||
#define GP27_EN (1 << 16)
|
||||
#define PME_B0_EN (1 << 13)
|
||||
#define ME_SCI_EN (1 << 12)
|
||||
#define PME_EN (1 << 11)
|
||||
#define BATLOW_EN (1 << 10)
|
||||
#define PCI_EXP_EN (1 << 9)
|
||||
#define TCOSCI_EN (1 << 6)
|
||||
#define SWGPE_EN (1 << 2)
|
||||
#define HOT_PLUG_EN (1 << 1)
|
||||
|
||||
#define MAINBOARD_POWER_OFF 0
|
||||
#define MAINBOARD_POWER_ON 1
|
||||
#define MAINBOARD_POWER_KEEP 2
|
||||
|
||||
#define SLEEP_STATE_S0 0
|
||||
#define SLEEP_STATE_S3 3
|
||||
#define SLEEP_STATE_S5 5
|
||||
|
||||
struct chipset_power_state {
|
||||
uint16_t pm1_sts;
|
||||
uint16_t pm1_en;
|
||||
uint32_t pm1_cnt;
|
||||
uint16_t tco1_sts;
|
||||
uint16_t tco2_sts;
|
||||
uint32_t gpe0_sts[4];
|
||||
uint32_t gpe0_en[4];
|
||||
uint16_t gen_pmcon1;
|
||||
uint16_t gen_pmcon2;
|
||||
uint16_t gen_pmcon3;
|
||||
int prev_sleep_state;
|
||||
uint16_t hsio_version;
|
||||
uint16_t hsio_checksum;
|
||||
};
|
||||
|
||||
void power_state_get(struct udevice *pch_dev, struct chipset_power_state *ps);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,59 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2016 Google, Inc
|
||||
*/
|
||||
|
||||
#ifndef __asm_arch_rcba_h
|
||||
#define __asm_arch_rcba_h
|
||||
|
||||
#define ACPIIRQEN 0x31e0 /* 32bit */
|
||||
|
||||
#define PMSYNC_CONFIG 0x33c4 /* 32bit */
|
||||
#define PMSYNC_CONFIG2 0x33cc /* 32bit */
|
||||
|
||||
#define DEEP_S3_POL 0x3328 /* 32bit */
|
||||
#define DEEP_S3_EN_AC (1 << 0)
|
||||
#define DEEP_S3_EN_DC (1 << 1)
|
||||
#define DEEP_S5_POL 0x3330 /* 32bit */
|
||||
#define DEEP_S5_EN_AC (1 << 14)
|
||||
#define DEEP_S5_EN_DC (1 << 15)
|
||||
#define DEEP_SX_CONFIG 0x3334 /* 32bit */
|
||||
#define DEEP_SX_WAKE_PIN_EN (1 << 2)
|
||||
#define DEEP_SX_ACPRESENT_PD (1 << 1)
|
||||
#define DEEP_SX_GP27_PIN_EN (1 << 0)
|
||||
#define PMSYNC_CONFIG 0x33c4 /* 32bit */
|
||||
#define PMSYNC_CONFIG2 0x33cc /* 32bit */
|
||||
|
||||
#define RC 0x3400 /* 32bit */
|
||||
#define HPTC 0x3404 /* 32bit */
|
||||
#define GCS 0x3410 /* 32bit */
|
||||
#define BUC 0x3414 /* 32bit */
|
||||
#define PCH_DISABLE_GBE (1 << 5)
|
||||
#define FD 0x3418 /* 32bit */
|
||||
#define FDSW 0x3420 /* 8bit */
|
||||
#define DISPBDF 0x3424 /* 16bit */
|
||||
#define FD2 0x3428 /* 32bit */
|
||||
#define CG 0x341c /* 32bit */
|
||||
|
||||
/* Function Disable 1 RCBA 0x3418 */
|
||||
#define PCH_DISABLE_ALWAYS (1 << 0)
|
||||
#define PCH_DISABLE_ADSPD (1 << 1)
|
||||
#define PCH_DISABLE_SATA1 (1 << 2)
|
||||
#define PCH_DISABLE_SMBUS (1 << 3)
|
||||
#define PCH_DISABLE_HD_AUDIO (1 << 4)
|
||||
#define PCH_DISABLE_EHCI2 (1 << 13)
|
||||
#define PCH_DISABLE_LPC (1 << 14)
|
||||
#define PCH_DISABLE_EHCI1 (1 << 15)
|
||||
#define PCH_DISABLE_PCIE(x) (1 << (16 + x))
|
||||
#define PCH_DISABLE_THERMAL (1 << 24)
|
||||
#define PCH_DISABLE_SATA2 (1 << 25)
|
||||
#define PCH_DISABLE_XHCI (1 << 27)
|
||||
|
||||
/* Function Disable 2 RCBA 0x3428 */
|
||||
#define PCH_DISABLE_KT (1 << 4)
|
||||
#define PCH_DISABLE_IDER (1 << 3)
|
||||
#define PCH_DISABLE_MEI2 (1 << 2)
|
||||
#define PCH_DISABLE_MEI1 (1 << 1)
|
||||
#define PCH_ENABLE_DBDF (1 << 0)
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,82 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Serial IO defintiions (taken from coreboot file of same name)
|
||||
*
|
||||
* Copyright 2019 Google LLC
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_BROADWELL_SERIALIO_H_
|
||||
#define __ARCH_BROADWELL_SERIALIO_H_
|
||||
|
||||
/* Serial IO IOBP Registers */
|
||||
#define SIO_IOBP_PORTCTRL0 0xcb000000 /* SDIO D23:F0 */
|
||||
#define SIO_IOBP_PORTCTRL0_ACPI_IRQ_EN BIT(5)
|
||||
#define SIO_IOBP_PORTCTRL0_PCI_CONF_DIS BIT(4)
|
||||
#define SIO_IOBP_PORTCTRL1 0xcb000014 /* SDIO D23:F0 */
|
||||
#define SIO_IOBP_PORTCTRL1_SNOOP_SELECT(x) (((x) & 3) << 13)
|
||||
#define SIO_IOBP_GPIODF 0xcb000154
|
||||
#define SIO_IOBP_GPIODF_SDIO_IDLE_DET_EN BIT(4)
|
||||
#define SIO_IOBP_GPIODF_DMA_IDLE_DET_EN BIT(3)
|
||||
#define SIO_IOBP_GPIODF_UART_IDLE_DET_EN BIT(2)
|
||||
#define SIO_IOBP_GPIODF_I2C_IDLE_DET_EN BIT(1)
|
||||
#define SIO_IOBP_GPIODF_SPI_IDLE_DET_EN BIT(0)
|
||||
#define SIO_IOBP_GPIODF_UART0_BYTE_ACCESS BIT(10)
|
||||
#define SIO_IOBP_GPIODF_UART1_BYTE_ACCESS BIT(11)
|
||||
#define SIO_IOBP_PORTCTRL2 0xcb000240 /* DMA D21:F0 */
|
||||
#define SIO_IOBP_PORTCTRL3 0xcb000248 /* I2C0 D21:F1 */
|
||||
#define SIO_IOBP_PORTCTRL4 0xcb000250 /* I2C1 D21:F2 */
|
||||
#define SIO_IOBP_PORTCTRL5 0xcb000258 /* SPI0 D21:F3 */
|
||||
#define SIO_IOBP_PORTCTRL6 0xcb000260 /* SPI1 D21:F4 */
|
||||
#define SIO_IOBP_PORTCTRL7 0xcb000268 /* UART0 D21:F5 */
|
||||
#define SIO_IOBP_PORTCTRL8 0xcb000270 /* UART1 D21:F6 */
|
||||
#define SIO_IOBP_PORTCTRLX(x) (0xcb000240 + ((x) * 8))
|
||||
/* PORTCTRL 2-8 have the same layout */
|
||||
#define SIO_IOBP_PORTCTRL_ACPI_IRQ_EN BIT(21)
|
||||
#define SIO_IOBP_PORTCTRL_PCI_CONF_DIS BIT(20)
|
||||
#define SIO_IOBP_PORTCTRL_SNOOP_SELECT(x) (((x) & 3) << 18)
|
||||
#define SIO_IOBP_PORTCTRL_INT_PIN(x) (((x) & 0xf) << 2)
|
||||
#define SIO_IOBP_PORTCTRL_PM_CAP_PRSNT BIT(1)
|
||||
#define SIO_IOBP_FUNCDIS0 0xce00aa07 /* DMA D21:F0 */
|
||||
#define SIO_IOBP_FUNCDIS1 0xce00aa47 /* I2C0 D21:F1 */
|
||||
#define SIO_IOBP_FUNCDIS2 0xce00aa87 /* I2C1 D21:F2 */
|
||||
#define SIO_IOBP_FUNCDIS3 0xce00aac7 /* SPI0 D21:F3 */
|
||||
#define SIO_IOBP_FUNCDIS4 0xce00ab07 /* SPI1 D21:F4 */
|
||||
#define SIO_IOBP_FUNCDIS5 0xce00ab47 /* UART0 D21:F5 */
|
||||
#define SIO_IOBP_FUNCDIS6 0xce00ab87 /* UART1 D21:F6 */
|
||||
#define SIO_IOBP_FUNCDIS7 0xce00ae07 /* SDIO D23:F0 */
|
||||
#define SIO_IOBP_FUNCDIS_DIS BIT(8)
|
||||
|
||||
/* Serial IO Devices */
|
||||
#define SIO_ID_SDMA 0 /* D21:F0 */
|
||||
#define SIO_ID_I2C0 1 /* D21:F1 */
|
||||
#define SIO_ID_I2C1 2 /* D21:F2 */
|
||||
#define SIO_ID_SPI0 3 /* D21:F3 */
|
||||
#define SIO_ID_SPI1 4 /* D21:F4 */
|
||||
#define SIO_ID_UART0 5 /* D21:F5 */
|
||||
#define SIO_ID_UART1 6 /* D21:F6 */
|
||||
#define SIO_ID_SDIO 7 /* D23:F0 */
|
||||
|
||||
#define SIO_REG_PPR_CLOCK 0x800
|
||||
#define SIO_REG_PPR_CLOCK_EN BIT(0)
|
||||
#define SIO_REG_PPR_CLOCK_UPDATE BIT(31)
|
||||
#define SIO_REG_PPR_CLOCK_M_DIV 0x25a
|
||||
#define SIO_REG_PPR_CLOCK_N_DIV 0x7fff
|
||||
#define SIO_REG_PPR_RST 0x804
|
||||
#define SIO_REG_PPR_RST_ASSERT 0x3
|
||||
#define SIO_REG_PPR_GEN 0x808
|
||||
#define SIO_REG_PPR_GEN_LTR_MODE_MASK BIT(2)
|
||||
#define SIO_REG_PPR_GEN_VOLTAGE_MASK BIT(3)
|
||||
#define SIO_REG_PPR_GEN_VOLTAGE(x) ((x & 1) << 3)
|
||||
#define SIO_REG_AUTO_LTR 0x814
|
||||
|
||||
#define SIO_REG_SDIO_PPR_GEN 0x1008
|
||||
#define SIO_REG_SDIO_PPR_SW_LTR 0x1010
|
||||
#define SIO_REG_SDIO_PPR_CMD12 0x3c
|
||||
#define SIO_REG_SDIO_PPR_CMD12_B30 BIT(30)
|
||||
|
||||
#define SIO_PIN_INTA 1 /* IRQ5 in ACPI mode */
|
||||
#define SIO_PIN_INTB 2 /* IRQ6 in ACPI mode */
|
||||
#define SIO_PIN_INTC 3 /* IRQ7 in ACPI mode */
|
||||
#define SIO_PIN_INTD 4 /* IRQ13 in ACPI mode */
|
||||
|
||||
#endif /* __ARCH_BROADWELL_SERIALIO_H_ */
|
||||
@@ -0,0 +1,86 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) 2014 Google Inc.
|
||||
*
|
||||
* This file is from coreboot soc/intel/broadwell/include/soc/spi.h
|
||||
*/
|
||||
|
||||
#ifndef _BROADWELL_SPI_H_
|
||||
#define _BROADWELL_SPI_H_
|
||||
|
||||
/*
|
||||
* SPI Opcode Menu setup for SPIBAR lockdown
|
||||
* should support most common flash chips.
|
||||
*/
|
||||
|
||||
#define SPIBAR_OFFSET 0x3800
|
||||
#define SPI_REG(x) (RCB_REG(SPIBAR_OFFSET + (x)))
|
||||
|
||||
/* Reigsters within the SPIBAR */
|
||||
#define SPIBAR_SSFC 0x91
|
||||
#define SPIBAR_FDOC 0xb0
|
||||
#define SPIBAR_FDOD 0xb4
|
||||
|
||||
#define SPIBAR_PREOP 0x94
|
||||
#define SPIBAR_OPTYPE 0x96
|
||||
#define SPIBAR_OPMENU_LOWER 0x98
|
||||
#define SPIBAR_OPMENU_UPPER 0x9c
|
||||
|
||||
#define SPI_OPMENU_0 0x01 /* WRSR: Write Status Register */
|
||||
#define SPI_OPTYPE_0 0x01 /* Write, no address */
|
||||
|
||||
#define SPI_OPMENU_1 0x02 /* BYPR: Byte Program */
|
||||
#define SPI_OPTYPE_1 0x03 /* Write, address required */
|
||||
|
||||
#define SPI_OPMENU_2 0x03 /* READ: Read Data */
|
||||
#define SPI_OPTYPE_2 0x02 /* Read, address required */
|
||||
|
||||
#define SPI_OPMENU_3 0x05 /* RDSR: Read Status Register */
|
||||
#define SPI_OPTYPE_3 0x00 /* Read, no address */
|
||||
|
||||
#define SPI_OPMENU_4 0x20 /* SE20: Sector Erase 0x20 */
|
||||
#define SPI_OPTYPE_4 0x03 /* Write, address required */
|
||||
|
||||
#define SPI_OPMENU_5 0x9f /* RDID: Read ID */
|
||||
#define SPI_OPTYPE_5 0x00 /* Read, no address */
|
||||
|
||||
#define SPI_OPMENU_6 0xd8 /* BED8: Block Erase 0xd8 */
|
||||
#define SPI_OPTYPE_6 0x03 /* Write, address required */
|
||||
|
||||
#define SPI_OPMENU_7 0x0b /* FAST: Fast Read */
|
||||
#define SPI_OPTYPE_7 0x02 /* Read, address required */
|
||||
|
||||
#define SPI_OPMENU_UPPER ((SPI_OPMENU_7 << 24) | (SPI_OPMENU_6 << 16) | \
|
||||
(SPI_OPMENU_5 << 8) | SPI_OPMENU_4)
|
||||
#define SPI_OPMENU_LOWER ((SPI_OPMENU_3 << 24) | (SPI_OPMENU_2 << 16) | \
|
||||
(SPI_OPMENU_1 << 8) | SPI_OPMENU_0)
|
||||
|
||||
#define SPI_OPTYPE ((SPI_OPTYPE_7 << 14) | (SPI_OPTYPE_6 << 12) | \
|
||||
(SPI_OPTYPE_5 << 10) | (SPI_OPTYPE_4 << 8) | \
|
||||
(SPI_OPTYPE_3 << 6) | (SPI_OPTYPE_2 << 4) | \
|
||||
(SPI_OPTYPE_1 << 2) | (SPI_OPTYPE_0))
|
||||
|
||||
#define SPI_OPPREFIX ((0x50 << 8) | 0x06) /* EWSR and WREN */
|
||||
|
||||
#define SPIBAR_HSFS 0x04 /* SPI hardware sequence status */
|
||||
#define SPIBAR_HSFS_FLOCKDN (1 << 15)/* Flash Configuration Lock-Down */
|
||||
#define SPIBAR_HSFS_SCIP (1 << 5) /* SPI Cycle In Progress */
|
||||
#define SPIBAR_HSFS_AEL (1 << 2) /* SPI Access Error Log */
|
||||
#define SPIBAR_HSFS_FCERR (1 << 1) /* SPI Flash Cycle Error */
|
||||
#define SPIBAR_HSFS_FDONE (1 << 0) /* SPI Flash Cycle Done */
|
||||
#define SPIBAR_HSFC 0x06 /* SPI hardware sequence control */
|
||||
#define SPIBAR_HSFC_BYTE_COUNT(c) (((c - 1) & 0x3f) << 8)
|
||||
#define SPIBAR_HSFC_CYCLE_READ (0 << 1) /* Read cycle */
|
||||
#define SPIBAR_HSFC_CYCLE_WRITE (2 << 1) /* Write cycle */
|
||||
#define SPIBAR_HSFC_CYCLE_ERASE (3 << 1) /* Erase cycle */
|
||||
#define SPIBAR_HSFC_GO (1 << 0) /* GO: start SPI transaction */
|
||||
#define SPIBAR_FADDR 0x08 /* SPI flash address */
|
||||
#define SPIBAR_FDATA(n) (0x10 + (4 * n)) /* SPI flash data */
|
||||
#define SPIBAR_SSFS 0x90
|
||||
#define SPIBAR_SSFS_ERROR (1 << 3)
|
||||
#define SPIBAR_SSFS_DONE (1 << 2)
|
||||
#define SPIBAR_SSFC 0x91
|
||||
#define SPIBAR_SSFC_DATA (1 << 14)
|
||||
#define SPIBAR_SSFC_GO (1 << 1)
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user