Improve IOPort code

This commit is contained in:
Jaby
2022-09-05 20:58:33 +02:00
parent acfa8dae92
commit 2ecd72a447
4 changed files with 106 additions and 78 deletions

View File

@@ -3,14 +3,14 @@
#include "IOPort.hpp"
namespace DMA {
struct __no_align MADR : public IOPort<uint32_t> {
__io_port_inherit(MADR);
struct __no_align MADR : public ComplexBitMap<uint32_t> {
__io_port_inherit_complex_bit_map(MADR);
static constexpr BitRange<uint32_t> MemoryAdr = BitRange<uint32_t>::from_to(0, 23);
};
struct __no_align BCR : public IOPort<uint32_t> {
__io_port_inherit(BCR);
struct __no_align BCR : public ComplexBitMap<uint32_t> {
__io_port_inherit_complex_bit_map(BCR);
struct __no_align SyncMode0 {
static constexpr BitRange<uint16_t> NumberOfWords = BitRange<uint16_t>::from_to(0, 15);
@@ -26,8 +26,8 @@ namespace DMA {
};
};
struct __no_align CHCHR : public IOPort<uint32_t> {
__io_port_inherit(CHCHR);
struct __no_align CHCHR : public ComplexBitMap<uint32_t> {
__io_port_inherit_complex_bit_map(CHCHR);
enum _SyncMode {
Sync0 = 0, //Start immediately,
@@ -92,8 +92,8 @@ namespace DMA {
static constexpr Priority HighestPriority = 0;
static constexpr Priority LowestPriority = 7;
struct __no_align DMAControlRegister : public IOPort<uint32_t> {
__io_port_inherit(DMAControlRegister);
struct __no_align DMAControlRegister : public ComplexBitMap<uint32_t> {
__io_port_inherit_complex_bit_map(DMAControlRegister);
static constexpr Bit<uint32_t> OTCEnable = 27;
static constexpr BitRange<Priority> OTCPriority = BitRange<Priority>::from_to(24, 26);
@@ -117,8 +117,8 @@ namespace DMA {
static constexpr BitRange<Priority> MDECinPriority = BitRange<Priority>::from_to(0, 2);
};
struct __no_align DMAInterruptRegister : public IOPort<uint32_t> {
__io_port_inherit(DMAInterruptRegister);
struct __no_align DMAInterruptRegister : public ComplexBitMap<uint32_t> {
__io_port_inherit_complex_bit_map(DMAInterruptRegister);
static constexpr Bit<uint32_t> MasterEnable = 31;
static constexpr BitRange<uint32_t> Flags = BitRange<uint32_t>::from_to(24, 30);