Adafruit ILI9341 not using the whole display

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.