|
| 1 | +/* |
| 2 | + * SPDX-License-Identifier: BSD-2-Clause |
| 3 | + * |
| 4 | + * Copyright (c) 2025 MIPS |
| 5 | + * |
| 6 | + */ |
| 7 | + |
| 8 | +#ifndef __P8700_H__ |
| 9 | +#define __P8700_H__ |
| 10 | + |
| 11 | +#include <mips/board.h> |
| 12 | + |
| 13 | +/* PMA */ |
| 14 | +#define CSR_MIPSPMACFG0 0x7e0 |
| 15 | +#define CSR_MIPSPMACFG1 0x7e1 |
| 16 | +#define CSR_MIPSPMACFG2 0x7e2 |
| 17 | +#define CSR_MIPSPMACFG3 0x7e3 |
| 18 | +#define CSR_MIPSPMACFG4 0x7e4 |
| 19 | +#define CSR_MIPSPMACFG5 0x7e5 |
| 20 | +#define CSR_MIPSPMACFG6 0x7e6 |
| 21 | +#define CSR_MIPSPMACFG7 0x7e7 |
| 22 | +#define CSR_MIPSPMACFG8 0x7e8 |
| 23 | +#define CSR_MIPSPMACFG9 0x7e9 |
| 24 | +#define CSR_MIPSPMACFG10 0x7ea |
| 25 | +#define CSR_MIPSPMACFG11 0x7eb |
| 26 | +#define CSR_MIPSPMACFG12 0x7ec |
| 27 | +#define CSR_MIPSPMACFG13 0x7ed |
| 28 | +#define CSR_MIPSPMACFG14 0x7ee |
| 29 | +#define CSR_MIPSPMACFG15 0x7ef |
| 30 | + |
| 31 | +/* MIPS CCA */ |
| 32 | +#define CCA_CACHE_ENABLE 0 |
| 33 | +#define CCA_CACHE_DISABLE 2 |
| 34 | +#define PMA_SPECULATION (1 << 3) |
| 35 | + |
| 36 | +/* MIPS CSR */ |
| 37 | +#define CSR_MIPSTVEC 0x7c0 |
| 38 | +#define CSR_MIPSCONFIG0 0x7d0 |
| 39 | +#define CSR_MIPSCONFIG1 0x7d1 |
| 40 | +#define CSR_MIPSCONFIG2 0x7d2 |
| 41 | +#define CSR_MIPSCONFIG3 0x7d3 |
| 42 | +#define CSR_MIPSCONFIG4 0x7d4 |
| 43 | +#define CSR_MIPSCONFIG5 0x7d5 |
| 44 | +#define CSR_MIPSCONFIG6 0x7d6 |
| 45 | +#define CSR_MIPSCONFIG7 0x7d7 |
| 46 | +#define CSR_MIPSCONFIG8 0x7d8 |
| 47 | +#define CSR_MIPSCONFIG9 0x7d9 |
| 48 | +#define CSR_MIPSCONFIG10 0x7da |
| 49 | +#define CSR_MIPSCONFIG11 0x7db |
| 50 | + |
| 51 | +#define MIPSCONFIG5_MTW 4 |
| 52 | + |
| 53 | +#define GEN_MASK(h, l) (((1ul << ((h) + 1 - (l))) - 1) << (l)) |
| 54 | +#define EXT(val, mask) (((val) & (mask)) >> (__builtin_ffs(mask) - 1)) |
| 55 | + |
| 56 | +/* |
| 57 | + * We allocate the number of bits to encode clusters, cores, and harts |
| 58 | + * from the original mhartid to a new dense index. |
| 59 | + */ |
| 60 | +#define NUM_OF_BITS_FOR_CLUSTERS 4 |
| 61 | +#define NUM_OF_BITS_FOR_CORES 12 |
| 62 | +#define NUM_OF_BITS_FOR_HARTS 4 |
| 63 | + |
| 64 | +/* To get the field from new/hashed mhartid */ |
| 65 | +#define NEW_CLUSTER_SHIFT (NUM_OF_BITS_FOR_CORES + NUM_OF_BITS_FOR_HARTS) |
| 66 | +#define NEW_CLUSTER_MASK ((1 << NUM_OF_BITS_FOR_CLUSTERS) - 1) |
| 67 | +#define NEW_CORE_SHIFT NUM_OF_BITS_FOR_HARTS |
| 68 | +#define NEW_CORE_MASK ((1 << NUM_OF_BITS_FOR_CORES) - 1) |
| 69 | +#define NEW_HART_MASK ((1 << NUM_OF_BITS_FOR_HARTS) - 1) |
| 70 | +#define cpu_cluster(i) (((i) >> NEW_CLUSTER_SHIFT) & NEW_CLUSTER_MASK) |
| 71 | +#define cpu_core(i) (((i) >> NEW_CORE_SHIFT) & NEW_CORE_MASK) |
| 72 | +#define cpu_hart(i) ((i) & NEW_HART_MASK) |
| 73 | + |
| 74 | +#define CPC_BASE (CM_BASE + 0x8000) |
| 75 | + |
| 76 | +#define SIZE_FOR_CPC_MTIME 0x10000 /* The size must be 2^order */ |
| 77 | +#define AIA_BASE (CM_BASE + 0x40000) |
| 78 | +#define SIZE_FOR_AIA_M_MODE 0x20000 /* The size must be 2^order */ |
| 79 | +#define P8700_ALIGN 0x10000 |
| 80 | + |
| 81 | +#define CM_BASE_HART_SHIFT 3 |
| 82 | +#define CM_BASE_CORE_SHIFT 8 |
| 83 | +#define CM_BASE_CLUSTER_SHIFT 19 |
| 84 | + |
| 85 | +/* GCR Block offsets */ |
| 86 | +#define GCR_OFF_LOCAL 0x2000 |
| 87 | + |
| 88 | +#define GCR_BASE_OFFSET 0x0008 |
| 89 | +#define GCR_CORE_COH_EN 0x00f8 |
| 90 | +#define GCR_CORE_COH_EN_EN (0x1 << 0) |
| 91 | + |
| 92 | +#define L2_PFT_CONTROL_OFFSET 0x0300 |
| 93 | +#define L2_PFT_CONTROL_B_OFFSET 0x0308 |
| 94 | + |
| 95 | +/* CPC Block offsets */ |
| 96 | +#define CPC_PWRUP_CTL 0x0030 |
| 97 | +#define CPC_CM_STAT_CONF 0x1008 |
| 98 | + |
| 99 | +#define CPC_OFF_LOCAL 0x2000 |
| 100 | + |
| 101 | +#define CPC_Cx_VP_STOP 0x0020 |
| 102 | +#define CPC_Cx_VP_RUN 0x0028 |
| 103 | +#define CPC_Cx_CMD 0x0000 |
| 104 | + |
| 105 | +#define CPC_Cx_CMD_PWRUP 0x3 |
| 106 | +#define CPC_Cx_CMD_RESET 0x4 |
| 107 | + |
| 108 | +#define CPC_Cx_STAT_CONF 0x0008 |
| 109 | +#define CPC_Cx_STAT_CONF_SEQ_STATE GEN_MASK(22, 19) |
| 110 | +#define CPC_Cx_STAT_CONF_SEQ_STATE_U5 6 |
| 111 | +#define CPC_Cx_STAT_CONF_SEQ_STATE_U6 7 |
| 112 | + |
| 113 | +#endif |
0 commit comments