And here is the sample that is working for future reference:

#include <MCP23S17.h>
#include <SPI.h>
// 8 == PIN, 0 == CHIP
MCP23S17 MCPSPI_8_0(&SPI, 8, 0);
MCP23S17 MCPSPI_8_1(&SPI, 8, 1);
MCP23S17 MCPSPI_8_2(&SPI, 8, 2);
MCP23S17 MCPSPI_8_3(&SPI, 8, 3);
MCP23S17 MCPSPI_8_4(&SPI, 8, 4);
MCP23S17 MCPSPI_8_5(&SPI, 8, 5);
MCP23S17 MCPSPI_8_6(&SPI, 8, 6);
MCP23S17 MCPSPI_8_7(&SPI, 8, 7);
//MCPSPI MCPSPI_9_1(&SPI, 9, 0);
void setup() {
Serial.begin(115200);
MCPSSetup();
}
void MCPSSetup() {
//RE-INITIALIZE THE CHIPS (AND ENABLE HAEN AGAIN)
//THIS IS NEEDED IF THE CHIP(S) CONNECTION IS LOST.
MCP23S17 MCPSPI_8_0(&SPI, 8, 0);
MCP23S17 MCPSPI_8_1(&SPI, 8, 1);
MCP23S17 MCPSPI_8_2(&SPI, 8, 2);
MCP23S17 MCPSPI_8_3(&SPI, 8, 3);
MCP23S17 MCPSPI_8_4(&SPI, 8, 4);
MCP23S17 MCPSPI_8_5(&SPI, 8, 5);
MCP23S17 MCPSPI_8_6(&SPI, 8, 6);
MCP23S17 MCPSPI_8_7(&SPI, 8, 7);
MCPSPI_8_0.begin(); MCPSPI_8_1.begin(); MCPSPI_8_2.begin(); MCPSPI_8_3.begin(); MCPSPI_8_4.begin(); MCPSPI_8_5.begin(); MCPSPI_8_6.begin(); MCPSPI_8_7.begin();
for (int i = 0; i <= 15; i++) {
MCPSPI_8_0.pinMode(i, INPUT_PULLUP);
MCPSPI_8_1.pinMode(i, INPUT_PULLUP);
MCPSPI_8_2.pinMode(i, INPUT_PULLUP);
}
for (int i = 0; i <= 15; i++) {
MCPSPI_8_3.pinMode(i, OUTPUT);
MCPSPI_8_4.pinMode(i, OUTPUT);
MCPSPI_8_5.pinMode(i, OUTPUT);
MCPSPI_8_6.pinMode(i, OUTPUT);
MCPSPI_8_7.pinMode(i, OUTPUT);
MCPSPI_8_3.digitalWrite(i, LOW);
MCPSPI_8_4.digitalWrite(i, LOW);
MCPSPI_8_5.digitalWrite(i, LOW);
MCPSPI_8_6.digitalWrite(i, LOW);
MCPSPI_8_7.digitalWrite(i, LOW);
}
}
void loop() {
if (MCPSPI_8_0.readPort(2) != 24) {
Serial.println("NOT DETECTED!!!");
MCPSSetup();
return;
}
Serial.println("DETECTED!!!");
for (int i = 0; i <= 15; i++) {
if (MCPSPI_8_0.digitalRead(i) != 1) {
Serial.print("Port Expander SPI CHIP #0: Pin: ");
Serial.print(i);
Serial.print(": Result: ");
Serial.println(MCPSPI_8_0.digitalRead(i));
Serial.println("");
}
}
for (int i = 0; i <= 15; i++) {
if (MCPSPI_8_1.digitalRead(i) != 1) {
Serial.print("Port Expander SPI CHIP #1: Pin: ");
Serial.print(i);
Serial.print(": Result: ");
Serial.println(MCPSPI_8_1.digitalRead(i));
Serial.println("");
}
}
for (int i = 0; i <= 15; i++) {
if (MCPSPI_8_2.digitalRead(i) != 1) {
Serial.print("Port Expander SPI CHIP #2: Pin: ");
Serial.print(i);
Serial.print(": Result: ");
Serial.println(MCPSPI_8_2.digitalRead(i));
Serial.println("");
}
}
}
Also, there must be a pullup resistor (I use 10Kohm) on MISO and CS line.