Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * This file is provided under a dual BSD/GPLv2 license.  When using or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * redistributing this file, you may do so under either license.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * Copyright(c) 2017 Intel Corporation. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #ifndef __SOF_INTEL_SHIM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #define __SOF_INTEL_SHIM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * SHIM registers for BYT, BSW, CHT, BDW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define SHIM_CSR		(SHIM_OFFSET + 0x00)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define SHIM_PISR		(SHIM_OFFSET + 0x08)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define SHIM_PIMR		(SHIM_OFFSET + 0x10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define SHIM_ISRX		(SHIM_OFFSET + 0x18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define SHIM_ISRD		(SHIM_OFFSET + 0x20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define SHIM_IMRX		(SHIM_OFFSET + 0x28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define SHIM_IMRD		(SHIM_OFFSET + 0x30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define SHIM_IPCX		(SHIM_OFFSET + 0x38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define SHIM_IPCD		(SHIM_OFFSET + 0x40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define SHIM_ISRSC		(SHIM_OFFSET + 0x48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define SHIM_ISRLPESC		(SHIM_OFFSET + 0x50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define SHIM_IMRSC		(SHIM_OFFSET + 0x58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define SHIM_IMRLPESC		(SHIM_OFFSET + 0x60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define SHIM_IPCSC		(SHIM_OFFSET + 0x68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define SHIM_IPCLPESC		(SHIM_OFFSET + 0x70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define SHIM_CLKCTL		(SHIM_OFFSET + 0x78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define SHIM_CSR2		(SHIM_OFFSET + 0x80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define SHIM_LTRC		(SHIM_OFFSET + 0xE0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define SHIM_HMDC		(SHIM_OFFSET + 0xE8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define SHIM_PWMCTRL		0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41)  * SST SHIM register bits for BYT, BSW, CHT, BDW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)  * Register bit naming and functionaility can differ between devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) /* CSR / CS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define SHIM_CSR_RST		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define SHIM_CSR_SBCS0		BIT(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define SHIM_CSR_SBCS1		BIT(3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define SHIM_CSR_DCS(x)		((x) << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define SHIM_CSR_DCS_MASK	(0x7 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define SHIM_CSR_STALL		BIT(10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define SHIM_CSR_S0IOCS		BIT(21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define SHIM_CSR_S1IOCS		BIT(23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define SHIM_CSR_LPCS		BIT(31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define SHIM_CSR_24MHZ_LPCS \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	(SHIM_CSR_SBCS0 | SHIM_CSR_SBCS1 | SHIM_CSR_LPCS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define SHIM_CSR_24MHZ_NO_LPCS	(SHIM_CSR_SBCS0 | SHIM_CSR_SBCS1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define SHIM_BYT_CSR_RST	BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define SHIM_BYT_CSR_VECTOR_SEL	BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define SHIM_BYT_CSR_STALL	BIT(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define SHIM_BYT_CSR_PWAITMODE	BIT(3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) /*  ISRX / ISC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define SHIM_ISRX_BUSY		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define SHIM_ISRX_DONE		BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define SHIM_BYT_ISRX_REQUEST	BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) /*  ISRD / ISD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define SHIM_ISRD_BUSY		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define SHIM_ISRD_DONE		BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) /* IMRX / IMC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define SHIM_IMRX_BUSY		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define SHIM_IMRX_DONE		BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define SHIM_BYT_IMRX_REQUEST	BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) /* IMRD / IMD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define SHIM_IMRD_DONE		BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define SHIM_IMRD_BUSY		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define SHIM_IMRD_SSP0		BIT(16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define SHIM_IMRD_DMAC0		BIT(21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define SHIM_IMRD_DMAC1		BIT(22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define SHIM_IMRD_DMAC		(SHIM_IMRD_DMAC0 | SHIM_IMRD_DMAC1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) /*  IPCX / IPCC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define	SHIM_IPCX_DONE		BIT(30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define	SHIM_IPCX_BUSY		BIT(31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define SHIM_BYT_IPCX_DONE	BIT_ULL(62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define SHIM_BYT_IPCX_BUSY	BIT_ULL(63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) /*  IPCD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define	SHIM_IPCD_DONE		BIT(30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define	SHIM_IPCD_BUSY		BIT(31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define SHIM_BYT_IPCD_DONE	BIT_ULL(62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define SHIM_BYT_IPCD_BUSY	BIT_ULL(63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) /* CLKCTL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define SHIM_CLKCTL_SMOS(x)	((x) << 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define SHIM_CLKCTL_MASK	(3 << 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define SHIM_CLKCTL_DCPLCG	BIT(18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define SHIM_CLKCTL_SCOE1	BIT(17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define SHIM_CLKCTL_SCOE0	BIT(16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) /* CSR2 / CS2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define SHIM_CSR2_SDFD_SSP0	BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define SHIM_CSR2_SDFD_SSP1	BIT(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) /* LTRC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define SHIM_LTRC_VAL(x)	((x) << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) /* HMDC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define SHIM_HMDC_HDDA0(x)	((x) << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define SHIM_HMDC_HDDA1(x)	((x) << 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define SHIM_HMDC_HDDA_E0_CH0	1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define SHIM_HMDC_HDDA_E0_CH1	2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define SHIM_HMDC_HDDA_E0_CH2	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define SHIM_HMDC_HDDA_E0_CH3	8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define SHIM_HMDC_HDDA_E1_CH0	SHIM_HMDC_HDDA1(SHIM_HMDC_HDDA_E0_CH0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define SHIM_HMDC_HDDA_E1_CH1	SHIM_HMDC_HDDA1(SHIM_HMDC_HDDA_E0_CH1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define SHIM_HMDC_HDDA_E1_CH2	SHIM_HMDC_HDDA1(SHIM_HMDC_HDDA_E0_CH2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define SHIM_HMDC_HDDA_E1_CH3	SHIM_HMDC_HDDA1(SHIM_HMDC_HDDA_E0_CH3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define SHIM_HMDC_HDDA_E0_ALLCH	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	(SHIM_HMDC_HDDA_E0_CH0 | SHIM_HMDC_HDDA_E0_CH1 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	 SHIM_HMDC_HDDA_E0_CH2 | SHIM_HMDC_HDDA_E0_CH3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define SHIM_HMDC_HDDA_E1_ALLCH	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	(SHIM_HMDC_HDDA_E1_CH0 | SHIM_HMDC_HDDA_E1_CH1 | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	 SHIM_HMDC_HDDA_E1_CH2 | SHIM_HMDC_HDDA_E1_CH3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) /* Audio DSP PCI registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define PCI_VDRTCTL0		0xa0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define PCI_VDRTCTL1		0xa4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define PCI_VDRTCTL2		0xa8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define PCI_VDRTCTL3		0xaC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) /* VDRTCTL0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define PCI_VDRTCL0_D3PGD		BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define PCI_VDRTCL0_D3SRAMPGD		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define PCI_VDRTCL0_DSRAMPGE_SHIFT	12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define PCI_VDRTCL0_DSRAMPGE_MASK	GENMASK(PCI_VDRTCL0_DSRAMPGE_SHIFT + 19,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 						PCI_VDRTCL0_DSRAMPGE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define PCI_VDRTCL0_ISRAMPGE_SHIFT	2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define PCI_VDRTCL0_ISRAMPGE_MASK	GENMASK(PCI_VDRTCL0_ISRAMPGE_SHIFT + 9,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 						PCI_VDRTCL0_ISRAMPGE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) /* VDRTCTL2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define PCI_VDRTCL2_DCLCGE		BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define PCI_VDRTCL2_DTCGE		BIT(10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define PCI_VDRTCL2_APLLSE_MASK		BIT(31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) /* PMCS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define PCI_PMCS		0x84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define PCI_PMCS_PS_MASK	0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) /* DSP hardware descriptor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) struct sof_intel_dsp_desc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	int cores_num;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	int host_managed_cores_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	int init_core_mask; /* cores available after fw boot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	int ipc_req;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	int ipc_req_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	int ipc_ack;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	int ipc_ack_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	int ipc_ctl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	int rom_init_timeout;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	int ssp_count;			/* ssp count of the platform */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	int ssp_base_offset;		/* base address of the SSPs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) extern const struct snd_sof_dsp_ops sof_tng_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) extern const struct snd_sof_dsp_ops sof_byt_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) extern const struct snd_sof_dsp_ops sof_cht_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) extern const struct snd_sof_dsp_ops sof_bdw_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) extern const struct sof_intel_dsp_desc byt_chip_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) extern const struct sof_intel_dsp_desc cht_chip_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) extern const struct sof_intel_dsp_desc bdw_chip_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) extern const struct sof_intel_dsp_desc tng_chip_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) struct sof_intel_stream {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	size_t posn_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #endif