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 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Copyright (C) 2013 Freescale Semiconductor, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #ifndef __FSL_PAMU_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #define __FSL_PAMU_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <linux/iommu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include <linux/pci.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <asm/fsl_pamu_stash.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) /* Bit Field macros
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  *	v = bit field variable; m = mask, m##_SHIFT = shift, x = value to load
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define set_bf(v, m, x)		(v = ((v) & ~(m)) | (((x) << m##_SHIFT) & (m)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define get_bf(v, m)		(((v) & (m)) >> m##_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) /* PAMU CCSR space */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define PAMU_PGC 0x00000000     /* Allows all peripheral accesses */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define PAMU_PE 0x40000000      /* enable PAMU                    */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) /* PAMU_OFFSET to the next pamu space in ccsr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define PAMU_OFFSET 0x1000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define PAMU_MMAP_REGS_BASE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) struct pamu_mmap_regs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	u32 ppbah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	u32 ppbal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	u32 pplah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	u32 pplal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	u32 spbah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	u32 spbal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	u32 splah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	u32 splal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	u32 obah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	u32 obal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	u32 olah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	u32 olal;
^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) /* PAMU Error Registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define PAMU_POES1 0x0040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define PAMU_POES2 0x0044
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define PAMU_POEAH 0x0048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define PAMU_POEAL 0x004C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define PAMU_AVS1  0x0050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define PAMU_AVS1_AV    0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define PAMU_AVS1_OTV   0x6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define PAMU_AVS1_APV   0x78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define PAMU_AVS1_WAV   0x380
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define PAMU_AVS1_LAV   0x1c00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define PAMU_AVS1_GCV   0x2000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define PAMU_AVS1_PDV   0x4000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define PAMU_AV_MASK    (PAMU_AVS1_AV | PAMU_AVS1_OTV | PAMU_AVS1_APV | PAMU_AVS1_WAV \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 			 | PAMU_AVS1_LAV | PAMU_AVS1_GCV | PAMU_AVS1_PDV)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define PAMU_AVS1_LIODN_SHIFT 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define PAMU_LAV_LIODN_NOT_IN_PPAACT 0x400
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define PAMU_AVS2  0x0054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define PAMU_AVAH  0x0058
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define PAMU_AVAL  0x005C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define PAMU_EECTL 0x0060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #define PAMU_EEDIS 0x0064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define PAMU_EEINTEN 0x0068
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define PAMU_EEDET 0x006C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define PAMU_EEATTR 0x0070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define PAMU_EEAHI 0x0074
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define PAMU_EEALO 0x0078
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define PAMU_EEDHI 0X007C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define PAMU_EEDLO 0x0080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) #define PAMU_EECC  0x0084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define PAMU_UDAD  0x0090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) /* PAMU Revision Registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define PAMU_PR1 0x0BF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define PAMU_PR2 0x0BFC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) /* PAMU version mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define PAMU_PR1_MASK 0xffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) /* PAMU Capabilities Registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) #define PAMU_PC1 0x0C00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define PAMU_PC2 0x0C04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define PAMU_PC3 0x0C08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define PAMU_PC4 0x0C0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) /* PAMU Control Register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define PAMU_PC 0x0C10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) /* PAMU control defs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define PAMU_CONTROL 0x0C10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define PAMU_PC_PGC 0x80000000  /* PAMU gate closed bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define PAMU_PC_PE   0x40000000 /* PAMU enable bit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define PAMU_PC_SPCC 0x00000010 /* sPAACE cache enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define PAMU_PC_PPCC 0x00000001 /* pPAACE cache enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define PAMU_PC_OCE  0x00001000 /* OMT cache enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define PAMU_PFA1 0x0C14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define PAMU_PFA2 0x0C18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define PAMU_PC2_MLIODN(X) ((X) >> 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #define PAMU_PC3_MWCE(X) (((X) >> 21) & 0xf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) /* PAMU Interrupt control and Status Register */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define PAMU_PICS 0x0C1C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define PAMU_ACCESS_VIOLATION_STAT   0x8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define PAMU_ACCESS_VIOLATION_ENABLE 0x4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) /* PAMU Debug Registers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define PAMU_PD1 0x0F00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define PAMU_PD2 0x0F04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define PAMU_PD3 0x0F08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define PAMU_PD4 0x0F0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define PAACE_AP_PERMS_DENIED  0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define PAACE_AP_PERMS_QUERY   0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #define PAACE_AP_PERMS_UPDATE  0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define PAACE_AP_PERMS_ALL     0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define PAACE_DD_TO_HOST       0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define PAACE_DD_TO_IO         0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define PAACE_PT_PRIMARY       0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define PAACE_PT_SECONDARY     0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define PAACE_V_INVALID        0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define PAACE_V_VALID          0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define PAACE_MW_SUBWINDOWS    0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define PAACE_WSE_4K           0xB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define PAACE_WSE_8K           0xC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define PAACE_WSE_16K          0xD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define PAACE_WSE_32K          0xE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define PAACE_WSE_64K          0xF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define PAACE_WSE_128K         0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define PAACE_WSE_256K         0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define PAACE_WSE_512K         0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define PAACE_WSE_1M           0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define PAACE_WSE_2M           0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define PAACE_WSE_4M           0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define PAACE_WSE_8M           0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define PAACE_WSE_16M          0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define PAACE_WSE_32M          0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define PAACE_WSE_64M          0x19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define PAACE_WSE_128M         0x1A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define PAACE_WSE_256M         0x1B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define PAACE_WSE_512M         0x1C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define PAACE_WSE_1G           0x1D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define PAACE_WSE_2G           0x1E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define PAACE_WSE_4G           0x1F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define PAACE_DID_PCI_EXPRESS_1 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define PAACE_DID_PCI_EXPRESS_2 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define PAACE_DID_PCI_EXPRESS_3 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define PAACE_DID_PCI_EXPRESS_4 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define PAACE_DID_LOCAL_BUS     0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define PAACE_DID_SRIO          0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define PAACE_DID_MEM_1         0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define PAACE_DID_MEM_2         0x11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define PAACE_DID_MEM_3         0x12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define PAACE_DID_MEM_4         0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define PAACE_DID_MEM_1_2       0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define PAACE_DID_MEM_3_4       0x15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #define PAACE_DID_MEM_1_4       0x16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define PAACE_DID_BM_SW_PORTAL  0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define PAACE_DID_PAMU          0x1C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define PAACE_DID_CAAM          0x21
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define PAACE_DID_QM_SW_PORTAL  0x3C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define PAACE_DID_CORE0_INST    0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define PAACE_DID_CORE0_DATA    0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #define PAACE_DID_CORE1_INST    0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) #define PAACE_DID_CORE1_DATA    0x83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define PAACE_DID_CORE2_INST    0x84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define PAACE_DID_CORE2_DATA    0x85
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #define PAACE_DID_CORE3_INST    0x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) #define PAACE_DID_CORE3_DATA    0x87
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define PAACE_DID_CORE4_INST    0x88
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define PAACE_DID_CORE4_DATA    0x89
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define PAACE_DID_CORE5_INST    0x8A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define PAACE_DID_CORE5_DATA    0x8B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define PAACE_DID_CORE6_INST    0x8C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) #define PAACE_DID_CORE6_DATA    0x8D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define PAACE_DID_CORE7_INST    0x8E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) #define PAACE_DID_CORE7_DATA    0x8F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #define PAACE_DID_BROADCAST     0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) #define PAACE_ATM_NO_XLATE      0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) #define PAACE_ATM_WINDOW_XLATE  0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define PAACE_ATM_PAGE_XLATE    0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define PAACE_ATM_WIN_PG_XLATE  (PAACE_ATM_WINDOW_XLATE | PAACE_ATM_PAGE_XLATE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) #define PAACE_OTM_NO_XLATE      0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define PAACE_OTM_IMMEDIATE     0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define PAACE_OTM_INDEXED       0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define PAACE_OTM_RESERVED      0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define PAACE_M_COHERENCE_REQ   0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #define PAACE_PID_0             0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) #define PAACE_PID_1             0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #define PAACE_PID_2             0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #define PAACE_PID_3             0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #define PAACE_PID_4             0x4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) #define PAACE_PID_5             0x5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) #define PAACE_PID_6             0x6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) #define PAACE_PID_7             0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #define PAACE_TCEF_FORMAT0_8B   0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) #define PAACE_TCEF_FORMAT1_RSVD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)  * Hard coded value for the PAACT size to accommodate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)  * maximum LIODN value generated by u-boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define PAACE_NUMBER_ENTRIES    0x500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) /* Hard coded value for the SPAACT size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define SPAACE_NUMBER_ENTRIES	0x800
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define	OME_NUMBER_ENTRIES      16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) /* PAACE Bit Field Defines */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define PPAACE_AF_WBAL			0xfffff000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define PPAACE_AF_WBAL_SHIFT		12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) #define PPAACE_AF_WSE			0x00000fc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #define PPAACE_AF_WSE_SHIFT		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) #define PPAACE_AF_MW			0x00000020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #define PPAACE_AF_MW_SHIFT		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) #define SPAACE_AF_LIODN			0xffff0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) #define SPAACE_AF_LIODN_SHIFT		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) #define PAACE_AF_AP			0x00000018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) #define PAACE_AF_AP_SHIFT		3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) #define PAACE_AF_DD			0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) #define PAACE_AF_DD_SHIFT		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) #define PAACE_AF_PT			0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) #define PAACE_AF_PT_SHIFT		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) #define PAACE_AF_V			0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #define PAACE_AF_V_SHIFT		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) #define PAACE_DA_HOST_CR		0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) #define PAACE_DA_HOST_CR_SHIFT		7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define PAACE_IA_CID			0x00FF0000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define PAACE_IA_CID_SHIFT		16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #define PAACE_IA_WCE			0x000000F0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define PAACE_IA_WCE_SHIFT		4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define PAACE_IA_ATM			0x0000000C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) #define PAACE_IA_ATM_SHIFT		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define PAACE_IA_OTM			0x00000003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define PAACE_IA_OTM_SHIFT		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define PAACE_WIN_TWBAL			0xfffff000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) #define PAACE_WIN_TWBAL_SHIFT		12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define PAACE_WIN_SWSE			0x00000fc0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #define PAACE_WIN_SWSE_SHIFT		6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) /* PAMU Data Structures */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) /* primary / secondary paact structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) struct paace {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 	/* PAACE Offset 0x00 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	u32 wbah;				/* only valid for Primary PAACE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 	u32 addr_bitfields;		/* See P/S PAACE_AF_* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 	/* PAACE Offset 0x08 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 	/* Interpretation of first 32 bits dependent on DD above */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 			/* Destination ID, see PAACE_DID_* defines */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 			u8 did;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 			/* Partition ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 			u8 pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 			/* Snoop ID */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 			u8 snpid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 			/* coherency_required : 1 reserved : 7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 			u8 coherency_required; /* See PAACE_DA_* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 		} to_host;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 			/* Destination ID, see PAACE_DID_* defines */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 			u8  did;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 			u8  reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 			u16 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 		} to_io;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 	} domain_attr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 	/* Implementation attributes + window count + address & operation translation modes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 	u32 impl_attr;			/* See PAACE_IA_* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 	/* PAACE Offset 0x10 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 	/* Translated window base address */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 	u32 twbah;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 	u32 win_bitfields;			/* See PAACE_WIN_* */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	/* PAACE Offset 0x18 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	/* first secondary paace entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	u32 fspi;				/* only valid for Primary PAACE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	union {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 			u8 ioea;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 			u8 moea;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 			u8 ioeb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 			u8 moeb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 		} immed_ot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 		struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 			u16 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 			u16 omi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 		} index_ot;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 	} op_encode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	/* PAACE Offsets 0x20-0x38 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 	u32 reserved[8];			/* not currently implemented */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) /* OME : Operation mapping entry
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)  * MOE : Mapped Operation Encodings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)  * The operation mapping table is table containing operation mapping entries (OME).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)  * The index of a particular OME is programmed in the PAACE entry for translation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)  * in bound I/O operations corresponding to an LIODN. The OMT is used for translation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)  * specifically in case of the indexed translation mode. Each OME contains a 128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)  * byte mapped operation encoding (MOE), where each byte represents an MOE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define NUM_MOE 128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) struct ome {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 	u8 moe[NUM_MOE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) #define PAACT_SIZE              (sizeof(struct paace) * PAACE_NUMBER_ENTRIES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) #define SPAACT_SIZE              (sizeof(struct paace) * SPAACE_NUMBER_ENTRIES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) #define OMT_SIZE                (sizeof(struct ome) * OME_NUMBER_ENTRIES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define PAMU_PAGE_SHIFT 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) #define PAMU_PAGE_SIZE  4096ULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) #define IOE_READ        0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) #define IOE_READ_IDX    0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) #define IOE_WRITE       0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) #define IOE_WRITE_IDX   0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) #define IOE_EREAD0      0x82    /* Enhanced read type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) #define IOE_EREAD0_IDX  0x02    /* Enhanced read type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #define IOE_EWRITE0     0x83    /* Enhanced write type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) #define IOE_EWRITE0_IDX 0x03    /* Enhanced write type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) #define IOE_DIRECT0     0x84    /* Directive type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #define IOE_DIRECT0_IDX 0x04    /* Directive type 0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) #define IOE_EREAD1      0x85    /* Enhanced read type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #define IOE_EREAD1_IDX  0x05    /* Enhanced read type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #define IOE_EWRITE1     0x86    /* Enhanced write type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) #define IOE_EWRITE1_IDX 0x06    /* Enhanced write type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) #define IOE_DIRECT1     0x87    /* Directive type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) #define IOE_DIRECT1_IDX 0x07    /* Directive type 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) #define IOE_RAC         0x8c    /* Read with Atomic clear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) #define IOE_RAC_IDX     0x0c    /* Read with Atomic clear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) #define IOE_RAS         0x8d    /* Read with Atomic set */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) #define IOE_RAS_IDX     0x0d    /* Read with Atomic set */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) #define IOE_RAD         0x8e    /* Read with Atomic decrement */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) #define IOE_RAD_IDX     0x0e    /* Read with Atomic decrement */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) #define IOE_RAI         0x8f    /* Read with Atomic increment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #define IOE_RAI_IDX     0x0f    /* Read with Atomic increment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) #define EOE_READ        0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) #define EOE_WRITE       0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #define EOE_RAC         0x0c    /* Read with Atomic clear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) #define EOE_RAS         0x0d    /* Read with Atomic set */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) #define EOE_RAD         0x0e    /* Read with Atomic decrement */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #define EOE_RAI         0x0f    /* Read with Atomic increment */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) #define EOE_LDEC        0x10    /* Load external cache */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) #define EOE_LDECL       0x11    /* Load external cache with stash lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #define EOE_LDECPE      0x12    /* Load external cache with preferred exclusive */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) #define EOE_LDECPEL     0x13    /* Load external cache with preferred exclusive and lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) #define EOE_LDECFE      0x14    /* Load external cache with forced exclusive */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #define EOE_LDECFEL     0x15    /* Load external cache with forced exclusive and lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define EOE_RSA         0x16    /* Read with stash allocate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define EOE_RSAU        0x17    /* Read with stash allocate and unlock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define EOE_READI       0x18    /* Read with invalidate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #define EOE_RWNITC      0x19    /* Read with no intention to cache */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define EOE_WCI         0x1a    /* Write cache inhibited */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) #define EOE_WWSA        0x1b    /* Write with stash allocate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) #define EOE_WWSAL       0x1c    /* Write with stash allocate and lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #define EOE_WWSAO       0x1d    /* Write with stash allocate only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) #define EOE_WWSAOL      0x1e    /* Write with stash allocate only and lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) #define EOE_VALID       0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) /* Function prototypes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) int pamu_domain_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) int pamu_enable_liodn(int liodn);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) int pamu_disable_liodn(int liodn);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) void pamu_free_subwins(int liodn);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) int pamu_config_ppaace(int liodn, phys_addr_t win_addr, phys_addr_t win_size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) 		       u32 omi, unsigned long rpn, u32 snoopid, uint32_t stashid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) 		       u32 subwin_cnt, int prot);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) int pamu_config_spaace(int liodn, u32 subwin_cnt, u32 subwin_addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) 		       phys_addr_t subwin_size, u32 omi, unsigned long rpn,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) 		       uint32_t snoopid, u32 stashid, int enable, int prot);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) u32 get_stash_id(u32 stash_dest_hint, u32 vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) void get_ome_index(u32 *omi_index, struct device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) int  pamu_update_paace_stash(int liodn, u32 subwin, u32 value);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) int pamu_disable_spaace(int liodn, u32 subwin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) u32 pamu_get_max_subwin_cnt(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #endif  /* __FSL_PAMU_H */