I'm making a custom board, and would indeed be using SPI (I don't have a particular objection to using I2C, but all the driver code seems to assume a SPI connecton). I'd probably be using the MAX14830 (need 5 UARTs in total: two radios, a GPS, a UART-based motor controller, and a debug console), which max310x.c says is supported along with the actual 310x part numbers.
The extra 16 GPIOs provided by that chip would be handy as well, since I was planning to drop a PCA9555 on I2C, taking advantage of the fact that the kernel already expects three of those on the Arduino board and knows how to configure them so they just show up as gpio2xx. I believe the max310x driver supports those GPIOs, but I didn't get far into figuring out how those are configured, e.g. how the gpiochipxxx/gpioxxx numbers are set (I think I saw some hard-coded numbers in one of the really old versions, possibly before max3107.c was replaced with max301x.c, but that may not still be relevant). Any advice that would save me a few hours of debugging and digging through the source code would be appreciated.
Since you are creating your own board you may have to build a kernel and add drivers to it, so I'd suggest you to take a look at Yocto Project Linux Kernel Development Manual it is a guide that will can follow in order to develop your custom kernel. If you have any questions about it I'd also suggest you to contact https://www.yoctoproject.org/.