liberis
Enumerations | Functions
scsi.h File Reference

Low-level control of the KING processor's SCSI controller. More...

#include <eris/types.h>

Go to the source code of this file.

Enumerations

enum  scsi_low_phase {
  SCSI_LOW_PHASE_BUS_FREE = 0, SCSI_LOW_PHASE_SELECT = 1, SCSI_LOW_PHASE_DATA_OUT = 2, SCSI_LOW_PHASE_DATA_IN = 3,
  SCSI_LOW_PHASE_COMMAND = 4, SCSI_LOW_PHASE_STATUS = 5, SCSI_LOW_PHASE_MESSAGE_OUT = 6, SCSI_LOW_PHASE_MESSAGE_IN = 7,
  SCSI_LOW_PHASE_ILLEGAL = 8
}
enum  scsi_low_status {
  SCSI_LOW_STATUS_MISC = -5, SCSI_LOW_STATUS_NEED_MESSAGE = -4, SCSI_LOW_STATUS_NEED_DATA = -3, SCSI_LOW_STATUS_HAVE_DATA = -2,
  SCSI_LOW_STATUS_IN_PROGRESS = -1, SCSI_LOW_STATUS_GOOD = 0x0, SCSI_LOW_STATUS_CHECK_CONDITION = 0x2, SCSI_LOW_STATUS_CONDITION_MET = 0x4,
  SCSI_LOW_STATUS_BUSY = 0x6, SCSI_LOW_STATUS_INTERMEDIATE = 0x10
}
enum  scsi_low_cmd {
  SCSI_LOW_CMD_TEST_UNIT_READY = 0x00, SCSI_LOW_CMD_REQ_SENSE = 0x03, SCSI_LOW_CMD_READ10 = 0x28, SCSI_LOW_CMD_SEEK10 = 0x2B,
  SCSI_LOW_CMD_PREFETCH10 = 0x34, SCSI_LOW_CMD_READ_SUBQ = 0x42, SCSI_LOW_CMD_READ_TOC = 0x43, SCSI_LOW_CMD_READ_HEADER = 0x44,
  SCSI_LOW_CMD_PLAY_AUDIO_INDEX = 0x48, SCSI_LOW_CMD_PAUSE = 0x4B
}

Functions

scsi_low_phase eris_low_scsi_get_phase (void)
 Get SCSI phase.
scsi_low_status eris_low_scsi_status (void)
 Get SCSI status.
void eris_low_scsi_reset (void)
 Reset the SCSI drive.
u32 eris_low_scsi_data_in (u8 *buf, u32 maxlen)
 Read data from the SCSI drive.
u32 eris_low_scsi_data_out (u8 *buf, u32 len)
 Write data to the SCSI drive.
void eris_low_scsi_begin_dma (u32 kram_addr, u32 size)
 Begin a DMA from the SCSI drive.
int eris_low_scsi_check_dma (void)
 Check if a DMA is in progress.
void eris_low_scsi_finish_dma (void)
 Finish a DMA from the SCSI drive.
void eris_low_scsi_abort (void)
 Abort the current SCSI operation.
int eris_low_scsi_command (u8 *cdb, u32 len)
 Send a command to the SCSI drive.

Detailed Description

Low-level control of the KING processor's SCSI controller.


Function Documentation

void eris_low_scsi_begin_dma ( u32  kram_addr,
u32  size 
)

Begin a DMA from the SCSI drive.

Parameters:
kram_addrAddress in KRAM to DMA to.
sizeHow many bytes to transfer (must be a multiple of 2).
int eris_low_scsi_check_dma ( void  )

Check if a DMA is in progress.

Returns:
1 if a DMA is in progress, 0 if not.
int eris_low_scsi_command ( u8 cdb,
u32  len 
)

Send a command to the SCSI drive.

Parameters:
cdbCommand bytes.
lenLength of the command data.
u32 eris_low_scsi_data_in ( u8 buf,
u32  maxlen 
)

Read data from the SCSI drive.

Parameters:
bufBuffer to read into.
maxlenMaximum length to read from.
Returns:
Bytes read.
u32 eris_low_scsi_data_out ( u8 buf,
u32  len 
)

Write data to the SCSI drive.

Parameters:
bufBuffer to write from.
lenLength of the buffer.
scsi_low_phase eris_low_scsi_get_phase ( void  )

Get SCSI phase.

Returns:
Returns the current phase of the SCSI drive.
scsi_low_status eris_low_scsi_status ( void  )

Get SCSI status.

Returns:
Returns the current state of the SCSI drive.
 All Files Functions Typedefs Enumerations Enumerator Defines