.. | .. |
---|
1 | | -// SPDX-License-Identifier: GPL-2.0 |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0 */ |
---|
2 | 2 | /* |
---|
3 | 3 | * Intel(R) Trace Hub Memory Storage Unit (MSU) data structures |
---|
4 | 4 | * |
---|
.. | .. |
---|
11 | 11 | enum { |
---|
12 | 12 | REG_MSU_MSUPARAMS = 0x0000, |
---|
13 | 13 | REG_MSU_MSUSTS = 0x0008, |
---|
| 14 | + REG_MSU_MINTCTL = 0x0004, /* MSU-global interrupt control */ |
---|
14 | 15 | REG_MSU_MSC0CTL = 0x0100, /* MSC0 control */ |
---|
15 | 16 | REG_MSU_MSC0STS = 0x0104, /* MSC0 status */ |
---|
16 | 17 | REG_MSU_MSC0BAR = 0x0108, /* MSC0 output base address */ |
---|
.. | .. |
---|
28 | 29 | |
---|
29 | 30 | /* MSUSTS bits */ |
---|
30 | 31 | #define MSUSTS_MSU_INT BIT(0) |
---|
| 32 | +#define MSUSTS_MSC0BLAST BIT(16) |
---|
| 33 | +#define MSUSTS_MSC1BLAST BIT(24) |
---|
31 | 34 | |
---|
32 | 35 | /* MSCnCTL bits */ |
---|
33 | 36 | #define MSC_EN BIT(0) |
---|
.. | .. |
---|
36 | 39 | #define MSC_MODE (BIT(4) | BIT(5)) |
---|
37 | 40 | #define MSC_LEN (BIT(8) | BIT(9) | BIT(10)) |
---|
38 | 41 | |
---|
39 | | -/* MSC operating modes (MSC_MODE) */ |
---|
40 | | -enum { |
---|
41 | | - MSC_MODE_SINGLE = 0, |
---|
42 | | - MSC_MODE_MULTI, |
---|
43 | | - MSC_MODE_EXI, |
---|
44 | | - MSC_MODE_DEBUG, |
---|
45 | | -}; |
---|
| 42 | +/* MINTCTL bits */ |
---|
| 43 | +#define MICDE BIT(0) |
---|
| 44 | +#define M0BLIE BIT(16) |
---|
| 45 | +#define M1BLIE BIT(24) |
---|
46 | 46 | |
---|
47 | 47 | /* MSCnSTS bits */ |
---|
48 | 48 | #define MSCSTS_WRAPSTAT BIT(1) /* Wrap occurred */ |
---|
.. | .. |
---|
85 | 85 | return bdesc->valid_dw * 4 - MSC_BDESC; |
---|
86 | 86 | } |
---|
87 | 87 | |
---|
| 88 | +static inline unsigned long msc_total_sz(struct msc_block_desc *bdesc) |
---|
| 89 | +{ |
---|
| 90 | + return bdesc->valid_dw * 4; |
---|
| 91 | +} |
---|
| 92 | + |
---|
| 93 | +static inline unsigned long msc_block_sz(struct msc_block_desc *bdesc) |
---|
| 94 | +{ |
---|
| 95 | + return bdesc->block_sz * 64 - MSC_BDESC; |
---|
| 96 | +} |
---|
| 97 | + |
---|
88 | 98 | static inline bool msc_block_wrapped(struct msc_block_desc *bdesc) |
---|
89 | 99 | { |
---|
90 | | - if (bdesc->hw_tag & MSC_HW_TAG_BLOCKWRAP) |
---|
| 100 | + if (bdesc->hw_tag & (MSC_HW_TAG_BLOCKWRAP | MSC_HW_TAG_WINWRAP)) |
---|
91 | 101 | return true; |
---|
92 | 102 | |
---|
93 | 103 | return false; |
---|
.. | .. |
---|
96 | 106 | static inline bool msc_block_last_written(struct msc_block_desc *bdesc) |
---|
97 | 107 | { |
---|
98 | 108 | if ((bdesc->hw_tag & MSC_HW_TAG_ENDBIT) || |
---|
99 | | - (msc_data_sz(bdesc) != DATA_IN_PAGE)) |
---|
| 109 | + (msc_data_sz(bdesc) != msc_block_sz(bdesc))) |
---|
100 | 110 | return true; |
---|
101 | 111 | |
---|
102 | 112 | return false; |
---|