mirror of https://github.com/akuker/RASCSI.git
118 lines
4.0 KiB
C++
118 lines
4.0 KiB
C++
//---------------------------------------------------------------------------
|
|
//
|
|
// SCSI Target Emulator RaSCSI Reloaded
|
|
// for Raspberry Pi
|
|
//
|
|
// Powered by XM6 TypeG Technology.
|
|
// Copyright (C) 2016-2020 GIMONS
|
|
// Copyright (C) 2022 akuker
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
|
|
namespace board_type
|
|
{
|
|
|
|
// This class will define the _physical_ pin numbers associated with the
|
|
// GPIOs on the Pi SBC. The equivalent Raspberry Pi GPIO numbers are
|
|
// shown as a reference. However, these are NOT applicable to other types
|
|
// of SBCs, such as the Banana Pi.
|
|
enum class pi_physical_pin_e : int {
|
|
PI_PHYS_PIN_NONE = -1,
|
|
PI_PHYS_PIN_03 = 3, // RPi GPIO 02
|
|
PI_PHYS_PIN_05 = 5, // RPi GPIO 03
|
|
PI_PHYS_PIN_07 = 7, // RPi GPIO 04
|
|
PI_PHYS_PIN_08 = 8, // RPi GPIO 14
|
|
PI_PHYS_PIN_10 = 10, // RPi GPIO 15
|
|
PI_PHYS_PIN_11 = 11, // RPi GPIO 17
|
|
PI_PHYS_PIN_12 = 12, // RPi GPIO 18
|
|
PI_PHYS_PIN_13 = 13, // RPi GPIO 27
|
|
PI_PHYS_PIN_15 = 15, // RPi GPIO 22
|
|
PI_PHYS_PIN_16 = 16, // RPi GPIO 23
|
|
PI_PHYS_PIN_18 = 18, // RPi GPIO 24
|
|
PI_PHYS_PIN_19 = 19, // RPi GPIO 10
|
|
PI_PHYS_PIN_21 = 21, // RPi GPIO 09
|
|
PI_PHYS_PIN_22 = 22, // RPi GPIO 25
|
|
PI_PHYS_PIN_23 = 23, // RPi GPIO 11
|
|
PI_PHYS_PIN_24 = 24, // RPi GPIO 08
|
|
PI_PHYS_PIN_26 = 26, // RPi GPIO 07
|
|
PI_PHYS_PIN_27 = 27, // RPi GPIO 00
|
|
PI_PHYS_PIN_28 = 28, // RPi GPIO 01
|
|
PI_PHYS_PIN_29 = 29, // RPi GPIO 05
|
|
PI_PHYS_PIN_31 = 31, // RPi GPIO 06
|
|
PI_PHYS_PIN_32 = 32, // RPi GPIO 12
|
|
PI_PHYS_PIN_33 = 33, // RPi GPIO 13
|
|
PI_PHYS_PIN_35 = 35, // RPi GPIO 19
|
|
PI_PHYS_PIN_36 = 36, // RPi GPIO 16
|
|
PI_PHYS_PIN_37 = 37, // RPi GPIO 26
|
|
PI_PHYS_PIN_38 = 38, // RPi GPIO 20
|
|
PI_PHYS_PIN_40 = 40, // RPi GPIO 21
|
|
};
|
|
|
|
// Operation modes definition
|
|
enum class gpio_direction_e : int {
|
|
GPIO_INPUT = 0,
|
|
GPIO_OUTPUT = 1,
|
|
};
|
|
|
|
enum class gpio_pull_up_down_e : int {
|
|
GPIO_PULLNONE = 0,
|
|
GPIO_PULLDOWN = 1,
|
|
GPIO_PULLUP = 2,
|
|
};
|
|
|
|
enum class active_high_low_e : int {
|
|
ACTIVE_HIGH = 1, // Equivalent of "ON" in old code
|
|
ACTIVE_LOW = 0, // Equivalent of "OFF" in old code
|
|
};
|
|
|
|
struct Rascsi_Board_Type {
|
|
public:
|
|
const std::string connect_desc;
|
|
|
|
const int signal_control_mode;
|
|
|
|
// Control signal output logic
|
|
const active_high_low_e act_on; // ACTIVE SIGNAL ON
|
|
const active_high_low_e enb_on; // ENABLE SIGNAL ON
|
|
const active_high_low_e ind_in; // INITIATOR SIGNAL INPUT
|
|
const active_high_low_e tad_in; // TARGET SIGNAL INPUT
|
|
const active_high_low_e dtd_in; // DATA SIGNAL INPUT
|
|
|
|
// Control signal pin assignment (-1 means no control)
|
|
const pi_physical_pin_e pin_act; // ACTIVE
|
|
const pi_physical_pin_e pin_enb; // ENABLE
|
|
const pi_physical_pin_e pin_ind; // INITIATOR CTRL DIRECTION
|
|
const pi_physical_pin_e pin_tad; // TARGET CTRL DIRECTION
|
|
const pi_physical_pin_e pin_dtd; // DATA DIRECTION
|
|
|
|
// SCSI signal pin assignment
|
|
const pi_physical_pin_e pin_dt0; // Data 0
|
|
const pi_physical_pin_e pin_dt1; // Data 1
|
|
const pi_physical_pin_e pin_dt2; // Data 2
|
|
const pi_physical_pin_e pin_dt3; // Data 3
|
|
const pi_physical_pin_e pin_dt4; // Data 4
|
|
const pi_physical_pin_e pin_dt5; // Data 5
|
|
const pi_physical_pin_e pin_dt6; // Data 6
|
|
const pi_physical_pin_e pin_dt7; // Data 7
|
|
const pi_physical_pin_e pin_dp; // Data parity
|
|
const pi_physical_pin_e pin_atn; // ATN
|
|
const pi_physical_pin_e pin_rst; // RST
|
|
const pi_physical_pin_e pin_ack; // ACK
|
|
const pi_physical_pin_e pin_req; // REQ
|
|
const pi_physical_pin_e pin_msg; // MSG
|
|
const pi_physical_pin_e pin_cd; // CD
|
|
const pi_physical_pin_e pin_io; // IO
|
|
const pi_physical_pin_e pin_bsy; // BSY
|
|
const pi_physical_pin_e pin_sel; // SEL
|
|
};
|
|
|
|
// extern const Rascsi_Board_Type board_type_aibom;
|
|
// extern const Rascsi_Board_Type board_type_fullspec;
|
|
// extern const Rascsi_Board_Type board_type_gamernium;
|
|
// extern const Rascsi_Board_Type board_type_standard;
|
|
|
|
} // namespace board_type
|