Hi Paul,
You have three ports on Revo: FlexiIO, Flexi and Main.
If I understand correctly, you want to connect, OSD, GPS, I2C and some DSM receiver.
As described on wiki
https://librepilot.atlassian.net/wiki/display/LPDOC/Revolution+ConfigurationFlexiIO (aka receiver) port has different configurations in table. Two of pins on Revo (except mini-revo clone) are just TX,RX serial lines. These you can use to hook-up anything that needs serial protocol, that would be Telelemtry(OSD) or GPS in your case.
Telemetry is just sending UAVTalk so minimoposd with firmware provided on wiki
https://librepilot.atlassian.net/wiki/display/LPDOC/MinOPOSD+setup can be used.
GPS is just UBX protocol which is also serial.
For that to work your receiver must be able to send PPM signal. Since for other protocols you would need another port and that is taken already.
For I2C you can only use Flexi port on Revo. Sparky2 has additional I2C port, but since its using the same STM32F405 chip it has similar limitations to total number of I/O. For example it does not have so flexible FlexiIO port.
Another option is getting DJI Naze GPS which protocol is supported by LP. This GPS uses just single serial line to communicate both GPS and Mag data. With DJI Naze GPS you would use just main port, leaving Flexi port available.
Again according to wiki Flexi supports DSM, GPS, I2C etc.. So you could place DSM on your Flexi and GPS+Mag on Main port. And OSD on receiver port. I imagine this as most optimal configuration for you.