Since you are getting "read" values, I assume that you are using proper 3.3V GPIO e.g. Zero, Due, Teensy4.0, ...
I suspect that you have an ST7789 controller. Edit the graphictest.ino example
...
x = tft.readcommand8(ILI9341_RDSELFDIAG);
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDID1);
Serial.print(" RDID1: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDID2);
Serial.print(" RDID2: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDID3);
Serial.print(" RDID3: 0x"); Serial.println(x, HEX);
This should show 0x85, 0x85, 0x52 for a ST7789
You can also just run the Adafruit_ST7789 library examples.
I have several bidirectional SPI ST7789 displays (SDA pin). None with a separate SDO pin.
If you do possess a genuine 4-Wire SPI ST7789 display, I will post a diagnostic program.
David.