Skip to content

Commit

Permalink
Adjust bus settle delay to match SCSI standard (PiSCSI#544)
Browse files Browse the repository at this point in the history
* Move the GCC v10 compiler flags into makefile instead of easyinstall.sh

* PiSCSI#504 - Update the bus settle time to match the SCSI standard

Co-authored-by: RaSCSI User <[email protected]>
  • Loading branch information
akuker and RaSCSI User authored Dec 20, 2021
1 parent 200bc72 commit 958fb95
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 13 deletions.
9 changes: 1 addition & 8 deletions easyinstall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,8 @@ function installPackages() {
function compileRaScsi() {
cd "$BASE/src/raspberrypi" || exit 1

# Compiler flags needed for gcc v10 and up
if [[ `gcc --version | awk '/gcc/' | awk -F ' ' '{print $3}' | awk -F '.' '{print $1}'` -ge 10 ]]; then
echo -n "gcc 10 or later detected. Will compile with the following flags: "
COMPILER_FLAGS="-DFMT_HEADER_ONLY"
echo $COMPILER_FLAGS
fi

echo "Compiling with ${CORES:-1} simultaneous cores..."
( make clean && EXTRA_FLAGS="$COMPILER_FLAGS" make -j "${CORES:-1}" all CONNECT_TYPE="${CONNECT_TYPE:-FULLSPEC}" ) </dev/null
( make clean && make -j "${CORES:-1}" all CONNECT_TYPE="${CONNECT_TYPE:-FULLSPEC}" ) </dev/null
}

# install the RaSCSI binaries and modify the service configuration
Expand Down
10 changes: 10 additions & 0 deletions src/raspberrypi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ CXXFLAGS += -std=c++17 -Wno-psabi -iquote . -D_FILE_OFFSET_BITS=64 -MD -MP
CFLAGS += $(EXTRA_FLAGS)
CXXFLAGS += $(EXTRA_FLAGS)

# If we're using GCC version 10 or later, we need to add the FMT_HEADER_ONLY definition
GCCVERSION10 := $(shell expr `gcc -dumpversion` \>= 10)

ifeq "$(GCCVERSION10)" "1"
CFLAGS += -DFMT_HEADER_ONLY
CXXFLAGS += -DFMT_HEADER_ONLY
endif



## CONNECT_TYPE=FULLSPEC : Specify the type of RaSCSI board type
## that you are using. The typical options are
## STANDARD or FULLSPEC. The default is FULLSPEC
Expand Down
8 changes: 4 additions & 4 deletions src/raspberrypi/gpiobus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -840,7 +840,7 @@ int GPIOBUS::CommandHandShake(BYTE *buf)
BOOL ret = WaitSignal(PIN_ACK, TRUE);

// Wait until the signal line stabilizes
SysTimer::SleepNsec(GPIO_DATA_SETTLING);
SysTimer::SleepNsec(SCSI_DELAY_BUS_SETTLE_DELAY_NS);

// Get data
*buf = GetDAT();
Expand Down Expand Up @@ -874,7 +874,7 @@ int GPIOBUS::CommandHandShake(BYTE *buf)
ret = WaitSignal(PIN_ACK, TRUE);

// Wait until the signal line stabilizes
SysTimer::SleepNsec(GPIO_DATA_SETTLING);
SysTimer::SleepNsec(SCSI_DELAY_BUS_SETTLE_DELAY_NS);

// Get data
*buf = GetDAT();
Expand Down Expand Up @@ -930,7 +930,7 @@ int GPIOBUS::ReceiveHandShake(BYTE *buf, int count)
ret = WaitSignal(PIN_ACK, TRUE);

// Wait until the signal line stabilizes
SysTimer::SleepNsec(GPIO_DATA_SETTLING);
SysTimer::SleepNsec(SCSI_DELAY_BUS_SETTLE_DELAY_NS);

// Get data
*buf = GetDAT();
Expand Down Expand Up @@ -973,7 +973,7 @@ int GPIOBUS::ReceiveHandShake(BYTE *buf, int count)
}

// Wait until the signal line stabilizes
SysTimer::SleepNsec(GPIO_DATA_SETTLING);
SysTimer::SleepNsec(SCSI_DELAY_BUS_SETTLE_DELAY_NS);

// Get data
*buf = GetDAT();
Expand Down
1 change: 0 additions & 1 deletion src/raspberrypi/gpiobus.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,6 @@
// Constant declarations (bus control timing)
//
//---------------------------------------------------------------------------
#define GPIO_DATA_SETTLING 100 // Data bus stabilization time (ns)
// SCSI Bus timings taken from:
// https://www.staff.uni-mainz.de/tacke/scsi/SCSI2-05.html
#define SCSI_DELAY_ARBITRATION_DELAY_NS 2400
Expand Down

0 comments on commit 958fb95

Please sign in to comment.