With a µC I'd have to latch the bus for it though, otherwise there's no way it could even react to a control register write... and if I'm going to have multiple ICs I might as well just drop a 16C550 and a CP210x in there... Unless we're talking like 2000 wait states!
I decided neither of the two FT232H interface options really work. In "CPU-like" mode it has no way to interrupt on rx high/tx low leading to polling and a timer set to 100Hz or something to keep checking it for rx and tx status. In "FIFO" mode it can interrupt, but while writing or read there's no way to know how much is available (when tx is full or rx is empty), while the external status pins only signal rx full and tx empty, which is useless while draining/filling a FIFO... Basically whoever designed this interface doesn't understand how software works; the only way it can work is read or writing (maybe both) a single byte per interrupt. So why even have FIFOs. The FT232H is a dead end for this, but I don't see anyone else who has even tried...
An FPGA could work, but I'd still be stuck trying to find a VCP implementation (some sort of softcore presumably) and then likely till need an external USB PHY. But it could also do other useful things, like a software-friendly sdio interface and perhaps implement an RMII ethernet controller. Perhaps one exists that has all these internally and I'd just need to present them via peripheral registers on an 8/16-bit 3.3V bus. Still, lots of complexity and a project in itsel, very tangential to what I'm doing. (A small NS32016 board to boot the last version of NetBSD to support it, cross built with the last version of gcc to support it, with a fair bit of driver work.) Also, if I do put a bunch of basic peripherals in an FPGA I'd like to be able to update it over the serial port, which means the FPGA probably shouldn't implement it in the first place. But maybe other things.