scsi_accel_rp2040.h 965 B

123456789101112131415161718192021222324
  1. // Accelerated SCSI subroutines using RP2040 hardware PIO peripheral.
  2. #pragma once
  3. #include <stdint.h>
  4. void scsi_accel_rp2040_init();
  5. // Set SCSI access mode for write requests.
  6. // Setting syncOffset = 0 enables asynchronous SCSI.
  7. // Setting syncOffset > 0 enables synchronous SCSI.
  8. void scsi_accel_rp2040_setWriteMode(int syncOffset, int syncPeriod);
  9. void scsi_accel_rp2040_startWrite(const uint8_t* data, uint32_t count, volatile int *resetFlag);
  10. void scsi_accel_rp2040_stopWrite(volatile int *resetFlag);
  11. void scsi_accel_rp2040_finishWrite(volatile int *resetFlag);
  12. // Query whether the data at pointer has already been read, i.e. buffer can be reused.
  13. // If data is NULL, checks if all writes have completed.
  14. bool scsi_accel_rp2040_isWriteFinished(const uint8_t* data);
  15. // Read data from SCSI bus.
  16. // Works for both asynchronous and synchronous modes.
  17. void scsi_accel_rp2040_read(uint8_t *buf, uint32_t count, int *parityError, volatile int *resetFlag);