19fe51c55SCezary Rojewski /* SPDX-License-Identifier: GPL-2.0-only */ 29fe51c55SCezary Rojewski /* 39fe51c55SCezary Rojewski * Copyright(c) 2021-2022 Intel Corporation. All rights reserved. 49fe51c55SCezary Rojewski * 59fe51c55SCezary Rojewski * Authors: Cezary Rojewski <cezary.rojewski@intel.com> 69fe51c55SCezary Rojewski * Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com> 79fe51c55SCezary Rojewski */ 89fe51c55SCezary Rojewski 99fe51c55SCezary Rojewski #ifndef __SOUND_SOC_INTEL_AVS_REGS_H 109fe51c55SCezary Rojewski #define __SOUND_SOC_INTEL_AVS_REGS_H 119fe51c55SCezary Rojewski 12b27f4523SCezary Rojewski #define AZX_PCIREG_PGCTL 0x44 13b27f4523SCezary Rojewski #define AZX_PCIREG_CGCTL 0x48 14b27f4523SCezary Rojewski #define AZX_PGCTL_LSRMD_MASK BIT(4) 15b27f4523SCezary Rojewski #define AZX_CGCTL_MISCBDCGE_MASK BIT(6) 16b27f4523SCezary Rojewski #define AZX_VS_EM2_L1SEN BIT(13) 171affc44eSCezary Rojewski #define AZX_VS_EM2_DUM BIT(23) 18b27f4523SCezary Rojewski 199fe51c55SCezary Rojewski /* Intel HD Audio General DSP Registers */ 209fe51c55SCezary Rojewski #define AVS_ADSP_GEN_BASE 0x0 219fe51c55SCezary Rojewski #define AVS_ADSP_REG_ADSPCS (AVS_ADSP_GEN_BASE + 0x04) 222879516fSCezary Rojewski #define AVS_ADSP_REG_ADSPIC (AVS_ADSP_GEN_BASE + 0x08) 232879516fSCezary Rojewski #define AVS_ADSP_REG_ADSPIS (AVS_ADSP_GEN_BASE + 0x0C) 242879516fSCezary Rojewski 252879516fSCezary Rojewski #define AVS_ADSP_ADSPIC_IPC BIT(0) 2645864e49SCezary Rojewski #define AVS_ADSP_ADSPIC_CLDMA BIT(1) 272879516fSCezary Rojewski #define AVS_ADSP_ADSPIS_IPC BIT(0) 2845864e49SCezary Rojewski #define AVS_ADSP_ADSPIS_CLDMA BIT(1) 299fe51c55SCezary Rojewski 309fe51c55SCezary Rojewski #define AVS_ADSPCS_CRST_MASK(cm) (cm) 319fe51c55SCezary Rojewski #define AVS_ADSPCS_CSTALL_MASK(cm) ((cm) << 8) 329fe51c55SCezary Rojewski #define AVS_ADSPCS_SPA_MASK(cm) ((cm) << 16) 339fe51c55SCezary Rojewski #define AVS_ADSPCS_CPA_MASK(cm) ((cm) << 24) 349fe51c55SCezary Rojewski #define AVS_MAIN_CORE_MASK BIT(0) 359fe51c55SCezary Rojewski 362879516fSCezary Rojewski #define AVS_ADSP_HIPCCTL_BUSY BIT(0) 372879516fSCezary Rojewski #define AVS_ADSP_HIPCCTL_DONE BIT(1) 382879516fSCezary Rojewski 392879516fSCezary Rojewski /* SKL Intel HD Audio Inter-Processor Communication Registers */ 402879516fSCezary Rojewski #define SKL_ADSP_IPC_BASE 0x40 412879516fSCezary Rojewski #define SKL_ADSP_REG_HIPCT (SKL_ADSP_IPC_BASE + 0x00) 422879516fSCezary Rojewski #define SKL_ADSP_REG_HIPCTE (SKL_ADSP_IPC_BASE + 0x04) 432879516fSCezary Rojewski #define SKL_ADSP_REG_HIPCI (SKL_ADSP_IPC_BASE + 0x08) 442879516fSCezary Rojewski #define SKL_ADSP_REG_HIPCIE (SKL_ADSP_IPC_BASE + 0x0C) 452879516fSCezary Rojewski #define SKL_ADSP_REG_HIPCCTL (SKL_ADSP_IPC_BASE + 0x10) 462879516fSCezary Rojewski 472879516fSCezary Rojewski #define SKL_ADSP_HIPCI_BUSY BIT(31) 482879516fSCezary Rojewski #define SKL_ADSP_HIPCIE_DONE BIT(30) 492879516fSCezary Rojewski #define SKL_ADSP_HIPCT_BUSY BIT(31) 502879516fSCezary Rojewski 51b3e29075SCezary Rojewski /* Intel HD Audio SRAM windows base addresses */ 52b3e29075SCezary Rojewski #define SKL_ADSP_SRAM_BASE_OFFSET 0x8000 53b3e29075SCezary Rojewski #define SKL_ADSP_SRAM_WINDOW_SIZE 0x2000 54c8c960c1SCezary Rojewski #define APL_ADSP_SRAM_BASE_OFFSET 0x80000 55c8c960c1SCezary Rojewski #define APL_ADSP_SRAM_WINDOW_SIZE 0x20000 56b3e29075SCezary Rojewski 572879516fSCezary Rojewski /* Constants used when accessing SRAM, space shared with firmware */ 58*b9db15cfSCezary Rojewski #define AVS_FW_REG_BASE(adev) ((adev)->spec->sram->base_offset) 592879516fSCezary Rojewski #define AVS_FW_REG_STATUS(adev) (AVS_FW_REG_BASE(adev) + 0x0) 602879516fSCezary Rojewski #define AVS_FW_REG_ERROR_CODE(adev) (AVS_FW_REG_BASE(adev) + 0x4) 612879516fSCezary Rojewski 6285ac9c8cSCezary Rojewski #define AVS_WINDOW_CHUNK_SIZE PAGE_SIZE 6385ac9c8cSCezary Rojewski #define AVS_FW_REGS_SIZE AVS_WINDOW_CHUNK_SIZE 642879516fSCezary Rojewski #define AVS_FW_REGS_WINDOW 0 652879516fSCezary Rojewski /* DSP -> HOST communication window */ 662879516fSCezary Rojewski #define AVS_UPLINK_WINDOW AVS_FW_REGS_WINDOW 672879516fSCezary Rojewski /* HOST -> DSP communication window */ 682879516fSCezary Rojewski #define AVS_DOWNLINK_WINDOW 1 694b86115cSCezary Rojewski #define AVS_DEBUG_WINDOW 2 702879516fSCezary Rojewski 712879516fSCezary Rojewski /* registry I/O helpers */ 722879516fSCezary Rojewski #define avs_sram_offset(adev, window_idx) \ 73*b9db15cfSCezary Rojewski ((adev)->spec->sram->base_offset + \ 74*b9db15cfSCezary Rojewski (adev)->spec->sram->window_size * (window_idx)) 752879516fSCezary Rojewski 762879516fSCezary Rojewski #define avs_sram_addr(adev, window_idx) \ 772879516fSCezary Rojewski ((adev)->dsp_ba + avs_sram_offset(adev, window_idx)) 782879516fSCezary Rojewski 792879516fSCezary Rojewski #define avs_uplink_addr(adev) \ 802879516fSCezary Rojewski (avs_sram_addr(adev, AVS_UPLINK_WINDOW) + AVS_FW_REGS_SIZE) 812879516fSCezary Rojewski #define avs_downlink_addr(adev) \ 822879516fSCezary Rojewski avs_sram_addr(adev, AVS_DOWNLINK_WINDOW) 832879516fSCezary Rojewski 849fe51c55SCezary Rojewski #endif /* __SOUND_SOC_INTEL_AVS_REGS_H */ 85