/* EccErrCnt max value */ #define UMC_V6_7_CE_CNT_MAX 0xffff /* umc ce interrupt threshold */ #define UMC_V6_7_CE_INT_THRESHOLD 0xffff /* umc ce count initial value */ #define UMC_V6_7_CE_CNT_INIT (UMC_V6_7_CE_CNT_MAX - UMC_V6_7_CE_INT_THRESHOLD)
#define UMC_V6_7_INST_DIST 0x40000
/* number of umc channel instance with memory map register access */ #define UMC_V6_7_UMC_INSTANCE_NUM 4 /* number of umc instance with memory map register access */ #define UMC_V6_7_CHANNEL_INSTANCE_NUM 8 /* total channel instances in one umc block */ #define UMC_V6_7_TOTAL_CHANNEL_NUM (UMC_V6_7_CHANNEL_INSTANCE_NUM * UMC_V6_7_UMC_INSTANCE_NUM) /* one piece of normalizing address is mapped to 8 pieces of physical address */ #define UMC_V6_7_NA_MAP_PA_NUM 8 /* R14 bit shift should be considered, double the number */ #define UMC_V6_7_BAD_PAGE_NUM_PER_CHANNEL (UMC_V6_7_NA_MAP_PA_NUM * 2) /* The CH4 bit in SOC physical address */ #define UMC_V6_7_PA_CH4_BIT 12 /* The C2 bit in SOC physical address */ #define UMC_V6_7_PA_C2_BIT 17 /* The R14 bit in SOC physical address */ #define UMC_V6_7_PA_R14_BIT 34 /* UMC regiser per channel offset */ #define UMC_V6_7_PER_CHANNEL_OFFSET 0x400
/* XOR bit 20, 25, 34 of PA into CH4 bit (bit 12 of PA), *hashbitisonlyeffectivewhenrelatedsettingisenabled
*/ #define CHANNEL_HASH(channel_idx, pa) (((channel_idx) >> 4) ^ \
(((pa) >> 20) & 0x1ULL & adev->df.hash_status.hash_64k) ^ \
(((pa) >> 25) & 0x1ULL & adev->df.hash_status.hash_2m) ^ \
(((pa) >> 34) & 0x1ULL & adev->df.hash_status.hash_1g)) #define SET_CHANNEL_HASH(channel_idx, pa) do { \
(pa) &= ~(0x1ULL << UMC_V6_7_PA_CH4_BIT); \
(pa) |= (CHANNEL_HASH(channel_idx, pa) << UMC_V6_7_PA_CH4_BIT); \
} while (0)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.