Instead of FT231X, Use 4-port FT4232 for HAT
port A: FPGA JTAG (MPSSE capable, programming FPGA)
port B: FPGA GPIO (MPPSE capable, programming user core like linux)
port C: FPGA GPIO (user core serial port general purpose)
port D: ESP32 programming (RX/TX and 2 NPN transistors for programming)
jumpers or switches to swap port B and D (in case of mounting
FT2232 2-port (AB) instead of FT4232 4-port (ABCD) to keep all
functionality but with manual switching
Instead of FT231X, Use 4-port FT4232 for HAT port A: FPGA JTAG (MPSSE capable, programming FPGA) port B: FPGA GPIO (MPPSE capable, programming user core like linux) port C: FPGA GPIO (user core serial port general purpose) port D: ESP32 programming (RX/TX and 2 NPN transistors for programming)
jumpers or switches to swap port B and D (in case of mounting FT2232 2-port (AB) instead of FT4232 4-port (ABCD) to keep all functionality but with manual switching