int superhyway_add_device (unsigned int mod_id, unsigned long base, unsigned long long vcr);
This is responsible for adding a new SuperHyway module. This sets up a new struct superhyway_device for the module being added. Each one of mod_id, base, and vcr are registered with the new device for further use elsewhere.
Devices are initially added in the order that they are scanned (from the top-down of the memory map), and are assigned an ID based on the order that they are added. Any manual addition of a module will thus get the ID after the devices already discovered regardless of where it resides in memory.
Further work can and should be done in superhyway_scan_bus, to be sure that any new modules are properly discovered and subsequently registered.