blob: 51cb888bfcc72fa2c143c79c546a68cf31519683 [file] [log] [blame]
/* SPDX-License-Identifier: Apache-2.0
*
* Copyright(c) 2016 Intel Corporation. All rights reserved.
*
* Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
* Keyon Jie <yang.jie@linux.intel.com>
*/
#ifndef __PLATFORM_SHIM_H__
#define __PLATFORM_SHIM_H__
#include <platform/memory.h>
#ifndef ASSEMBLY
#include <stdint.h>
#endif
#if !defined(__ASSEMBLER__) && !defined(LINKER)
#include <sys/sys_io.h>
#include <arch/common/sys_io.h>
#endif
#ifndef BIT
#define BIT(b) (1 << (b))
#endif
/* DSP IPC for Host Registers */
#define IPC_DIPCT 0x00
#define IPC_DIPCTE 0x04
#define IPC_DIPCI 0x08
#define IPC_DIPCIE 0x0c
#define IPC_DIPCCTL 0x10
/* DIPCT */
#define IPC_DIPCT_BUSY (1 << 31)
#define IPC_DIPCT_MSG_MASK 0x7FFFFFFF
/* DIPCTE */
#define IPC_DIPCTE_MSG_MASK 0x3FFFFFFF
/* DIPCI */
#define IPC_DIPCI_BUSY (1 << 31)
#define IPC_DIPCI_MSG_MASK 0x7FFFFFFF
/* DIPCIE */
#define IPC_DIPCIE_DONE (1 << 30)
#define IPC_DIPCIE_MSG_MASK 0x3FFFFFFF
/* DIPCCTL */
#define IPC_DIPCCTL_IPCIDIE (1 << 1)
#define IPC_DIPCCTL_IPCTBIE (1 << 0)
#define IPC_DSP_OFFSET 0x10
#define SHIM_PWRCTL 0x90
#define SHIM_PWRSTS 0x92
#define SHIM_LPSCTL 0x94
/* HP & LP SRAM Power Gating */
#define SHIM_HSPGCTL 0x80
#define SHIM_LSPGCTL 0x84
#define SHIM_SPSREQ 0xa0
#define LSPGCTL SHIM_LSPGCTL
#define SHIM_SPSREQ_RVNNP (0x1 << 0)
/** \brief LDO Control */
#define SHIM_LDOCTL 0xA4
#define SHIM_LDOCTL_HPSRAM_MASK (3 << 0)
#define SHIM_LDOCTL_LPSRAM_MASK (3 << 2)
#define SHIM_LDOCTL_HPSRAM_LDO_ON (3 << 0)
#define SHIM_LDOCTL_LPSRAM_LDO_ON (3 << 2)
#define SHIM_LDOCTL_HPSRAM_LDO_BYPASS BIT(0)
#define SHIM_LDOCTL_LPSRAM_LDO_BYPASS BIT(2)
#define SHIM_LDOCTL_HPSRAM_LDO_OFF (0 << 0)
#define SHIM_LDOCTL_LPSRAM_LDO_OFF (0 << 2)
#define SHIM_HSPGISTS 0xb0
#define SHIM_LSPGISTS 0xb4
#define LSPGISTS (SHIM_BASE + SHIM_LSPGISTS)
#define SHIM_LPSCTL_FDSPRUN (0X1 << 9)
#define SHIM_LPSCTL_FDMARUN (0X1 << 8)
#define SHIM_L2_MECS (SHIM_BASE + 0xd0)
#define SHIM_L2_CACHE_CTRL (SHIM_BASE + 0x500)
#define SHIM_L2_PREF_CFG (SHIM_BASE + 0x508)
#define SHIM_L2_CACHE_PREF (SHIM_BASE + 0x510)
/* host windows */
#define DMWBA(x) (HOST_WIN_BASE(x) + 0x0)
#define DMWLO(x) (HOST_WIN_BASE(x) + 0x4)
#define DMWBA_ENABLE (1 << 0)
#define DMWBA_READONLY (1 << 1)
#if !defined(__ASSEMBLER__) && !defined(LINKER)
static inline uint32_t shim_read(uint32_t reg)
{
return sys_read32(SHIM_BASE + reg);
}
static inline void shim_write(uint32_t reg, uint32_t val)
{
sys_write32(val, (SHIM_BASE + reg));
}
static inline uint32_t ipc_read(uint32_t reg)
{
return sys_read32(IPC_HOST_BASE + reg);
}
static inline void ipc_write(uint32_t reg, uint32_t val)
{
sys_write32(val, (IPC_HOST_BASE + reg));
}
#endif /* !defined(__ASSEMBLER__) && !defined(LINKER) */
#endif