public UDMA(Machine machine, int numberOfChannels = 32) { engine = new DmaEngine(machine); SystemBus = machine.SystemBus; channels = new Channel[numberOfChannels]; IRQ = new GPIO(); Reset(); }
public UDMA(Machine machine) { engine = new DmaEngine(machine); SystemBus = machine.SystemBus; channels = new Channel[32]; IRQ = new GPIO(); Reset(); }
public STM32LDMA(Machine machine) { engine = new DmaEngine(machine); channels = new Channel[8]; for (var i = 0; i < channels.Length; i++) { channels[i] = new Channel(this, i); } }
public STM32DMA(Machine machine) { streamFinished = new bool[NumberOfStreams]; streams = new Stream[NumberOfStreams]; for (var i = 0; i < streams.Length; i++) { streams[i] = new Stream(this, i); } this.machine = machine; engine = new DmaEngine(machine); Reset(); }
public VybridDma(Machine mach) { machine = mach; engine = new DmaEngine(machine); channels = new Channel[32]; for (var i = 0; i < 32; i++) { channels[i] = new Channel(this, i); } IRQ = new GPIO(); }
public TegraDma(Machine machine) { dmaEngine = new DmaEngine(machine); channels = new Channel[ChannelNo]; var innerConnections = new Dictionary <int, IGPIO>(); for (var i = 0; i < channels.Length; i++) { channels[i] = new Channel(this, i); innerConnections[i] = channels[i].IRQ; } Connections = new ReadOnlyDictionary <int, IGPIO>(innerConnections); Reset(); }
public MPFS_PDMA(Machine machine) { this.machine = machine; dmaEngine = new DmaEngine(this.machine); channels = new Channel[ChannelCount]; var irqCounter = 0; var innerConnections = new Dictionary <int, IGPIO>(); for (var i = 0; i < ChannelCount; ++i) { channels[i] = new Channel(this, i); innerConnections[irqCounter++] = channels[i].DoneInterrupt; innerConnections[irqCounter++] = channels[i].ErrorInterrupt; } Connections = new ReadOnlyDictionary <int, IGPIO>(innerConnections); Reset(); }
public STM32G0DMA(Machine machine, int numberOfChannels) { this.machine = machine; engine = new DmaEngine(machine); this.numberOfChannels = numberOfChannels; channels = new Channel[numberOfChannels]; var innerConnections = new Dictionary <int, IGPIO>(); for (var i = 0; i < numberOfChannels; ++i) { channels[i] = new Channel(this, i); innerConnections[i] = new GPIO(); } Connections = new ReadOnlyDictionary <int, IGPIO>(innerConnections); var interruptStatus = new DoubleWordRegister(this); var interruptFlagClear = new DoubleWordRegister(this) .WithWriteCallback((_, __) => Update()); for (var i = 0; i < numberOfChannels; ++i) { var j = i; interruptStatus.DefineFlagField(j * 4 + 0, FieldMode.Read, valueProviderCallback: _ => channels[j].GlobalInterrupt, name: $"Global interrupt flag for channel {j} (GIF{j})"); interruptStatus.DefineFlagField(j * 4 + 1, FieldMode.Read, valueProviderCallback: _ => channels[j].TransferComplete, name: $"Transfer complete flag for channel {j} (TCIF{j})"); interruptStatus.DefineFlagField(j * 4 + 2, FieldMode.Read, valueProviderCallback: _ => channels[j].HalfTransfer, name: $"Half transfer flag for channel {j} (HTIF{j})"); interruptStatus.Tag($"Transfer error flag for channel {j} (TEIF{j})", j * 4 + 3, 1); interruptFlagClear.DefineFlagField(j * 4 + 0, FieldMode.Write, writeCallback: (_, val) => channels[j].GlobalInterrupt = !val, name: $"Global interrupt flag clear for channel {j} (CGIF{j})"); interruptFlagClear.DefineFlagField(j * 4 + 1, FieldMode.Write, writeCallback: (_, val) => channels[j].TransferComplete = !val, name: $"Transfer complete flag clear for channel {j} (CTEIF{j})"); interruptFlagClear.DefineFlagField(j * 4 + 2, FieldMode.Write, writeCallback: (_, val) => channels[j].HalfTransfer = !val, name: $"Half transfer flag clear for channel {j} (CHTIF{j})"); interruptFlagClear.Tag($"Transfer error flag clear for channel {j} (CTEIF{j})", j * 4 + 3, 1); } var registerMap = new Dictionary <long, DoubleWordRegister> { { (long)Registers.InterruptStatus, interruptStatus }, { (long)Registers.InterruptFlagClear, interruptFlagClear }, }; registers = new DoubleWordRegisterCollection(this, registerMap); }
public TegraDmaHost1X(Machine machine) { dmaEngine = new DmaEngine(machine); sysbus = machine.SystemBus; }