@@ -152,14 +152,19 @@ uint32_t CruBar::getSuperpageSize(uint32_t link)
152152 return superpageSize;
153153}
154154
155- // / Enables the data emulator
156- // / \param enabled true for enabled
157- void CruBar::setDataEmulatorEnabled (bool enabled)
155+ // / Signals the CRU DMA engine to start
156+ void CruBar::startDmaEngine ()
158157{
159- writeRegister (Cru::Registers::DMA_CONTROL.index , enabled ? 0x1 : 0x0 );
160- uint32_t bits = readRegister (Cru::Registers::DATA_GENERATOR_CONTROL.index );
161- setDataGeneratorEnableBits (bits, enabled);
162- writeRegister (Cru::Registers::DATA_GENERATOR_CONTROL.index , bits);
158+ writeRegister (Cru::Registers::DMA_CONTROL.index , 0x11 ); // send DMA start (bit #0)
159+ // dyn offset enabled (bit #4)
160+ modifyRegister (Cru::Registers::DATA_GENERATOR_CONTROL.index , 0 , 1 , 0x1 ); // enable data generator
161+ }
162+
163+ // / Signals the CRU DMA engine to stop
164+ void CruBar::stopDmaEngine ()
165+ {
166+ modifyRegister (Cru::Registers::DMA_CONTROL.index , 8 , 1 , 0x1 ); // send DMA flush to the CRU
167+ modifyRegister (Cru::Registers::DATA_GENERATOR_CONTROL.index , 0 , 1 , 0x0 ); // disable data generator
163168}
164169
165170// / Resets the data generator counter
@@ -387,14 +392,6 @@ FirmwareFeatures CruBar::convertToFirmwareFeatures(uint32_t reg)
387392 return features;
388393}
389394
390- // / Sets the bits for the data generator enabled in the given integer
391- // / \param bits Integer with bits to set
392- // / \param enabled Generator enabled or not
393- void CruBar::setDataGeneratorEnableBits (uint32_t & bits, bool enabled)
394- {
395- Utilities::setBit (bits, 0 , enabled);
396- }
397-
398395// / Reports the CRU status
399396Cru::ReportInfo CruBar::report ()
400397{
0 commit comments