#ifndef LINUX_OBC_PDEC_H_ #define LINUX_OBC_PDEC_H_ #include namespace pdec { static const uint8_t STAT_POSITION = 31; static const uint8_t FRAME_ANA_POSITION = 28; static const uint8_t IREASON_POSITION = 25; static const uint8_t NEW_FAR_RECEIVED = 0; static constexpr uint32_t NEW_FAR_MASK = 1 << 2; static constexpr uint32_t TC_ABORT_MASK = 1 << 1; static constexpr uint32_t TC_NEW_MASK = 1 << 0; static constexpr uint32_t FAR_STAT_MASK = 1 << 31; static const uint32_t FRAME_ANA_MASK = 0x70000000; static const uint32_t IREASON_MASK = 0x0E000000; static const uint32_t TC_CHANNEL_INACTIVE = 0x0; static const uint32_t TC_CHANNEL_ACTIVE = 0x1; static const uint32_t TC_CHANNEL_TIMEDOUT = 0x2; static const uint32_t TC0_STATUS_MASK = 0x3; static const uint32_t TC1_STATUS_MASK = 0xC; static const uint32_t TC2_STATUS_MASK = 0x300; static const uint32_t TC3_STATUS_MASK = 0xC00; static const uint32_t TC4_STATUS_MASK = 0x30000; static const uint32_t TC5_STATUS_MASK = 0xc00000; // Lock register set to 1 when start sequence has been found (CLTU is beeing processed) static const uint32_t LOCK_MASK = 0xc00000; static const uint32_t TC0_STATUS_POS = 0; static const uint32_t TC1_STATUS_POS = 2; static const uint32_t TC2_STATUS_POS = 4; static const uint32_t TC3_STATUS_POS = 6; static const uint32_t TC4_STATUS_POS = 8; static const uint32_t TC5_STATUS_POS = 10; // Lock register set to 1 when start sequence has been found (CLTU is beeing processed) static const uint32_t LOCK_POS = 12; /** * UIO is 4 byte aligned. Thus offset is calculated with "true offset" / 4 * Example: PDEC_FAR = 0x2840 => Offset in virtual address space is 0xA10 */ static constexpr uint32_t PDEC_PISR_OFFSET = 0xA02; static constexpr uint32_t PDEC_PIR_OFFSET = 0xA03; static constexpr uint32_t PDEC_IMR_OFFSET = 0xA04; static const uint32_t PDEC_FAR_OFFSET = 0xA10; static const uint32_t PDEC_CLCW_OFFSET = 0xA12; static const uint32_t PDEC_BFREE_OFFSET = 0xA24; static const uint32_t PDEC_BPTR_OFFSET = 0xA25; static const uint32_t PDEC_SLEN_OFFSET = 0xA26; static const uint32_t PDEC_MON_OFFSET = 0xA27; } // namespace pdec #endif /* LINUX_OBC_PDEC_H_ */