/** @file Register names for PCH High Definition Audio device. Conventions: - Register definition format: Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterSpace_RegisterName - Prefix: Definitions beginning with "R_" are registers Definitions beginning with "B_" are bits within registers Definitions beginning with "V_" are meaningful values within the bits Definitions beginning with "S_" are register size Definitions beginning with "N_" are the bit position - [GenerationName]: Three letter acronym of the generation is used . Register name without GenerationName applies to all generations. - [ComponentName]: This field indicates the component name that the register belongs to (e.g. PCH, SA etc.) Register name without ComponentName applies to all components. Register that is specific to -H denoted by "_PCH_H_" in component name. Register that is specific to -LP denoted by "_PCH_LP_" in component name. - SubsystemName: This field indicates the subsystem name of the component that the register belongs to (e.g. PCIE, USB, SATA, GPIO, PMC etc.). - RegisterSpace: MEM - MMIO space register of subsystem. IO - IO space register of subsystem. PCR - Private configuration register of subsystem. CFG - PCI configuration space register of subsystem. - RegisterName: Full register name. Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_REGS_HDA_H_ #define _PCH_REGS_HDA_H_ // // HD-A Controller Registers (D31:F3) // // PCI Configuration Space Registers // #define PCI_DEVICE_NUMBER_PCH_HDA 31 #define PCI_FUNCTION_NUMBER_PCH_HDA 3 #define R_HDA_CFG_PI 0x09 #define V_HDA_CFG_PI_ADSP_UAA 0x80 #define R_HDA_CFG_SCC 0x0A #define V_HDA_CFG_SCC_ADSP 0x01 #define R_HDA_CFG_HDALBA 0x10 #define B_HDA_CFG_HDALBA_LBA 0xFFFFC000 #define V_HDA_CFG_HDBAR_SIZE (1 << 14) #define R_HDA_CFG_HDAUBA 0x14 #define B_HDA_CFG_HDAUBA_UBA 0xFFFFFFFF #define R_HDA_CFG_CGCTL 0x48 #define B_HDA_CFG_CGCTL_RSMTCGE BIT18 #define B_HDA_CFG_CGCTL_MISCBDCGE BIT6 #define R_HDA_CFG_PC 0x52 #define V_HDA_CFG_PC_PMES 0x18 #define N_HDA_CFG_PC_PMES 11 #define R_HDA_CFG_PCS 0x54 #define B_HDA_CFG_PCS_PMEE BIT8 #define B_HDA_CFG_PCS_PS (BIT1 | BIT0) #define R_HDA_CFG_MMC 0x62 #define B_HDA_CFG_MMC_ME BIT0 #define R_HDA_CFG_DEVC 0x78 #define B_HDA_CFG_DEVC_NSNPEN BIT11 #define R_HDA_CFG_SEM1 0xC0 #define B_HDA_CFG_SEM1_LFLCS BIT24 #define B_HDA_CFG_SEM1_BLKC3DIS BIT17 #define B_HDA_CFG_SEM1_TMODE BIT12 #define B_HDA_CFG_SEM1_FIFORDYSEL (BIT10 | BIT9) #define R_HDA_CFG_SEM2 0xC4 #define B_HDA_CFG_SEM2_BSMT (BIT27 | BIT26) #define V_HDA_CFG_SEM2_BSMT 0x1 #define N_HDA_CFG_SEM2_BSMT 26 #define B_HDA_CFG_SEM2_VC0SNR BIT24 #define B_HDA_CFG_SEM2_DUM BIT23 #define R_HDA_CFG_SEM3L 0xC8 #define B_HDA_CFG_SEM3L_ISL1EXT2 (BIT21 | BIT20) #define V_HDA_CFG_SEM3L_ISL1EXT2 0x2 #define N_HDA_CFG_SEM3L_ISL1EXT2 20 #define R_HDA_CFG_SEM4L 0xD0 #define B_HDA_CFG_SEM4L_OSL1EXT2 (BIT21 | BIT20) #define V_HDA_CFG_SEM4L_OSL1EXT2 0x3 #define N_HDA_CFG_SEM4L_OSL1EXT2 20 // // Memory Space Registers // // // Resides in 'HD Audio Global Registers' (0000h) // #define R_HDA_MEM_GCAP 0x00 #define R_HDA_MEM_GCTL 0x08 #define B_HDA_MEM_GCTL_CRST BIT0 #define R_HDA_MEM_OUTPAY 0x04 #define R_HDA_MEM_INPAY 0x06 #define V_HDA_MEM_INPAY_DEFAULT 0x1C #define R_HDA_MEM_WAKEEN 0x0C #define B_HDA_MEM_WAKEEN_SDI_3 BIT3 #define B_HDA_MEM_WAKEEN_SDI_2 BIT2 #define B_HDA_MEM_WAKEEN_SDI_1 BIT1 #define B_HDA_MEM_WAKEEN_SDI_0 BIT0 #define R_HDA_MEM_WAKESTS 0x0E #define B_HDA_MEM_WAKESTS_SDIN3 BIT3 #define B_HDA_MEM_WAKESTS_SDIN2 BIT2 #define B_HDA_MEM_WAKESTS_SDIN1 BIT1 #define B_HDA_MEM_WAKESTS_SDIN0 BIT0 // // Resides in 'HD Audio Controller Registers' (0030h) // #define R_HDA_MEM_IC 0x60 #define R_HDA_MEM_IR 0x64 #define R_HDA_MEM_ICS 0x68 #define B_HDA_MEM_ICS_IRV BIT1 #define B_HDA_MEM_ICS_ICB BIT0 // // Resides in 'HD Audio Processing Pipe Capability Structure' (0800h) // #define R_HDA_MEM_PPC 0x0800 // Processing Pipe Capability Structure (Memory Space, offset 0800h) #define R_HDA_MEM_PPCTL (R_HDA_MEM_PPC + 0x04) #define B_HDA_MEM_PPCTL_GPROCEN BIT30 // // Resides in 'HD Audio Multiple Links Capability Structure' (0C00h) // #define HDA_HDALINK_INDEX 0 #define HDA_IDISPLINK_INDEX 1 #define R_HDA_MEM_MLC 0x0C00 // Multiple Links Capability Structure (Memory Space, offset 0C00h) #define R_HDA_MEM_LCTLX(x) (R_HDA_MEM_MLC + (0x40 + (0x40 * (x)) + 0x04)) // x - Link index: 0 - HDA Link, 1 - iDisp Link #define B_HDA_MEM_LCTLX_CPA BIT23 #define B_HDA_MEM_LCTLX_SPA BIT16 #define N_HDA_MEM_LCTLX_SCF 0 #define V_HDA_MEM_LCTLX_SCF_6MHZ 0x0 #define V_HDA_MEM_LCTLX_SCF_12MHZ 0x1 #define V_HDA_MEM_LCTLX_SCF_24MHZ 0x2 #define V_HDA_MEM_LCTLX_SCF_48MHZ 0x3 #define V_HDA_MEM_LCTLX_SCF_96MHZ 0x4 // // Resides in 'HD Audio Vendor Specific Registers' (1000h) // #define R_HDA_MEM_LTRC 0x1048 #define V_HDA_MEM_LTRC_GB 0x29 #define N_HDA_MEM_LTRC_GB 0 #define R_HDA_MEM_PCE 0x104B #define B_HDA_MEM_PCE_D3HE BIT2 // // Private Configuration Space Registers // // // Resides in IOSF & Fabric Configuration Registers (000h) // #define R_HDA_PCR_TTCCFG 0xE4 #define B_HDA_PCR_TTCCFG_HCDT BIT1 // // Resides in PCI & Codec Configuration Registers (500h) // #define R_HDA_PCR_PCICDCCFG 0x500 // PCI & Codec Configuration Registers (PCR, offset 500h) #define B_HDA_PCR_PCICDCCFG_ACPIIN 0x0000FF00 #define N_HDA_PCR_PCICDCCFG_ACPIIN 8 #define R_HDA_PCR_FNCFG (R_HDA_PCR_PCICDCCFG + 0x30) #define B_HDA_PCR_FNCFG_PGD BIT5 #define B_HDA_PCR_FNCFG_BCLD BIT4 #define B_HDA_PCR_FNCFG_CGD BIT3 #define B_HDA_PCR_FNCFG_ADSPD BIT2 #define B_HDA_PCR_FNCFG_HDASD BIT0 #define R_HDA_PCR_CDCCFG (R_HDA_PCR_PCICDCCFG + 0x34) #define B_HDA_PCR_CDCCFG_DIS_SDIN2 BIT2 // // Resides in Power Management & EBB Configuration Registers (600h) // #define R_HDA_PCR_PWRMANCFG 0x600 // Power Management & EBB Configuration Registers (PCR, offset 600h) #define R_HDA_PCR_APLLP0 (R_HDA_PCR_PWRMANCFG + 0x10) #define V_HDA_PCR_APLLP0 0xFC1E0000 #define R_HDA_PCR_APLLP1 (R_HDA_PCR_PWRMANCFG + 0x14) #define V_HDA_PCR_APLLP1 0x00003F00 #define R_HDA_PCR_APLLP2 (R_HDA_PCR_PWRMANCFG + 0x18) #define V_HDA_PCR_APLLP2 0x0000011D #define R_HDA_PCR_IOBCTL (R_HDA_PCR_PWRMANCFG + 0x1C) #define B_HDA_PCR_IOBCTL_OSEL (BIT9 | BIT8) #define V_HDA_PCR_IOBCTL_OSEL_HDALINK 0 #define V_HDA_PCR_IOBCTL_OSEL_HDALINK_I2S 1 #define V_HDA_PCR_IOBCTL_OSEL_I2S 3 #define N_HDA_PCR_IOBCTL_OSEL 8 #define B_HDA_PCR_IOBCTL_VSEL BIT1 #define R_HDA_PCR_PTDC (R_HDA_PCR_PWRMANCFG + 0x28) #define B_HDA_PCR_PTDC_SRMIW (BIT6 | BIT5 | BIT4) #endif