|
22 | 22 | #include <assert.h>
|
23 | 23 |
|
24 | 24 | #ifdef LCM_DCU_PARITY
|
25 |
| -#define DCU_ENABLED_MASK 0x55555555 |
26 |
| -#define DCU_DISABLED_MASK 0xAAAAAAAA |
27 |
| -#else |
28 |
| -#define DCU_ENABLED_MASK 0xFFFFFFFF |
29 |
| -#define DCU_DISABLED_MASK 0x00000000 |
| 25 | +#define DCU_PARITY_ENABLED_MASK 0x55555555 |
| 26 | +#define DCU_PARITY_DISABLED_MASK 0xAAAAAAAA |
| 27 | + |
| 28 | +#ifndef LCM_DCU_PARITY_WORDS |
| 29 | +#define LCM_DCU_PARITY_WORDS 4 |
| 30 | +#endif |
30 | 31 | #endif
|
31 | 32 |
|
32 | 33 | #ifdef INTEGRITY_CHECKER_S
|
@@ -94,6 +95,26 @@ struct _lcm_reg_map_t {
|
94 | 95 | };
|
95 | 96 | };
|
96 | 97 |
|
| 98 | +static uint32_t get_enabled_mask(uint32_t dcu_word_idx) |
| 99 | +{ |
| 100 | +#ifndef LCM_DCU_PARITY |
| 101 | + (void)dcu_word_idx; |
| 102 | + return 0xFFFFFFFF; |
| 103 | +#else |
| 104 | + return dcu_word_idx < LCM_DCU_PARITY_WORDS ? DCU_PARITY_ENABLED_MASK : 0xFFFFFFFF; |
| 105 | +#endif |
| 106 | +} |
| 107 | + |
| 108 | +static uint32_t get_disabled_mask(uint32_t dcu_word_idx) |
| 109 | +{ |
| 110 | +#ifndef LCM_DCU_PARITY |
| 111 | + (void)dcu_word_idx; |
| 112 | + return 0x00000000; |
| 113 | +#else |
| 114 | + return dcu_word_idx < LCM_DCU_PARITY_WORDS ? DCU_PARITY_DISABLED_MASK : 0x00000000; |
| 115 | +#endif |
| 116 | +} |
| 117 | + |
97 | 118 | static int is_pointer_word_aligned(void *ptr) {
|
98 | 119 | return !((uintptr_t)ptr & (sizeof(uint32_t) - 1));
|
99 | 120 | }
|
@@ -268,13 +289,13 @@ static inline void mask_dcus_for_sp_enable(struct lcm_dev_t *dev)
|
268 | 289 | for (idx = 0; idx < LCM_DCU_WIDTH_IN_BYTES / sizeof(uint32_t); idx++) {
|
269 | 290 | mask_val = p_lcm->dcu_sp_disable_mask[idx];
|
270 | 291 |
|
271 |
| - mask_enabled = mask_val & DCU_ENABLED_MASK; |
272 |
| - mask_disabled = mask_val & DCU_DISABLED_MASK; |
| 292 | + mask_enabled = mask_val & get_enabled_mask(idx); |
| 293 | + mask_disabled = mask_val & get_disabled_mask(idx); |
273 | 294 |
|
274 | 295 | dcu_val = p_lcm->dcu_en[idx];
|
275 | 296 |
|
276 | 297 | dcu_val &= mask_enabled;
|
277 |
| - dcu_val |= ((~dcu_val & DCU_ENABLED_MASK) << 1) & mask_disabled; |
| 298 | + dcu_val |= ((~dcu_val & get_enabled_mask(idx)) << 1) & mask_disabled; |
278 | 299 |
|
279 | 300 | p_lcm->dcu_en[idx] = dcu_val;
|
280 | 301 | }
|
|
0 commit comments