Is it possible to define two overlapping resources ("uart" and "uart_dte"), and let the user choose which one to claim? One resource would use dce role, the other one dte.
Yes, but if this requires reflashing the devboard, it's probably best to leave this up to add to whoever uses the platform.
Speaking of which: do you think you could take a look at the other board and figure out if DTR/RTS are swapped on them, too? I think most FPGA boards are configured as DCE (correct me if I'm wrong), and you might actually be the first to care about the direction of those signals, so it's quite possible that our default is wrong and should be switched.
Turns out things get a bit complicated with some existing boards.
For example, nexys4ddr: the platform file defines rts="D3", cts="E5". This doesn't match the schematic, though (https://reference.digilentinc.com/_media/nexys4-ddr:nexys_4_ddr_sch.pdf — RTS is E5, CTS is D3). So the pins have likely been swapped in the platform definition to make it useable with signal directions defined in UARTResource. If i now restore the signal names used in the schematic, and set role="dce" in UARTResource, this would be "correct", but would break existing projects based on that board. This repository is pre-1.0, so I suppose some breaking changes are allowed, the question is, how much breakage is acceptable?
Same story with ice40_hx8k_b_evn: PR m-labs/nmigen-boards#41 has swapped DTR/RTS as a fix for incorrect direction. But the problem is, the direction is still incorrect for the remaining signals (like rts/cts). And for some signals (like ri), there is nothing to swap them with!