/* A native bus (eg Runway or GSC) may have up to 64 devices on it, spaced at intervals of 0x1000 bytes. PDC may not inform us of these devices, so we have to probe for them. Unfortunately, we may find devices which are not physically connected (such as extra serial & keyboard ports). This problem is not yet solved.  */
static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, struct device *parent)
/* A native bus (eg Runway or GSC) may have up to 64 devices on it, spaced at intervals of 0x1000 bytes. PDC may not inform us of these devices, so we have to probe for them. Unfortunately, we may find devices which are not physically connected (such as extra serial & keyboard ports). This problem is not yet solved.  */
static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, struct device *parent)
{
	int i, devices_found = 0;
	unsigned long hpa = io_io_low;
	struct hardware_path path;
	get_node_path(parent, &path);
	do {
		for(i = 0; i < MAX_NATIVE_DEVICES; i++, hpa += NATIVE_DEVICE_OFFSET) {
			struct parisc_device *dev;
			dev = find_device_by_addr(hpa);
			if (!dev) {
				path.mod = i;
				dev = alloc_pa_dev(hpa, &path);
				if (!dev)
					continue;
				register_parisc_device(dev);
				devices_found++;
			}
			walk_lower_bus(dev);
		}
	} while(!devices_found && hpa < io_io_high);
}