void __iomem *sba_addr = ioremap(dev->hpa, SBA_FUNC_SIZE); 
void __iomem *sba_addr = ioremap(dev->hpa.start, SBA_FUNC_SIZE); 
sba_driver_callback(struct parisc_device *dev){	struct sba_device *sba_dev;	u32 func_class;	int i;	char *version;	void __iomem *sba_addr = ioremap(dev->hpa, SBA_FUNC_SIZE);	sba_dump_ranges(sba_addr);	/* Read HW Rev First */	func_class = READ_REG(sba_addr + SBA_FCLASS);	if (IS_ASTRO(&dev->id)) {		unsigned long fclass;		static char astro_rev[]="Astro ?.?";		/* Astro is broken...Read HW Rev First */		fclass = READ_REG(sba_addr);		astro_rev[6] = '1' + (char) (fclass & 0x7);		astro_rev[8] = '0' + (char) ((fclass & 0x18) >> 3);		version = astro_rev;	} else if (IS_IKE(&dev->id)) {		static char ike_rev[] = "Ike rev ?";		ike_rev[8] = '0' + (char) (func_class & 0xff);		version = ike_rev;	} else if (IS_PLUTO(&dev->id)) {		static char pluto_rev[]="Pluto ?.?";		pluto_rev[6] = '0' + (char) ((func_class & 0xf0) >> 4); 		pluto_rev[8] = '0' + (char) (func_class & 0x0f); 		version = pluto_rev;	} else {		static char reo_rev[] = "REO rev ?";		reo_rev[8] = '0' + (char) (func_class & 0xff);		version = reo_rev;	}	if (!global_ioc_cnt) {		global_ioc_cnt = count_parisc_driver(&sba_driver);		/* Astro and Pluto have one IOC per SBA */		if ((!IS_ASTRO(&dev->id)) || (!IS_PLUTO(&dev->id)))			global_ioc_cnt *= 2;	}	printk(KERN_INFO "%s found %s at 0x%lx\n",		MODULE_NAME, version, dev->hpa);	sba_dev = kmalloc(sizeof(struct sba_device), GFP_KERNEL);	if (!sba_dev) {		printk(KERN_ERR MODULE_NAME " - couldn't alloc sba_device\n");		return -ENOMEM;	}	parisc_set_drvdata(dev, sba_dev);	memset(sba_dev, 0, sizeof(struct sba_device));	for(i=0; i<MAX_IOC; i++)		spin_lock_init(&(sba_dev->ioc[i].res_lock));	sba_dev->dev = dev;	sba_dev->hw_rev = func_class;	sba_dev->iodc = &dev->id;	sba_dev->name = dev->name;	sba_dev->sba_hpa = sba_addr;	sba_get_pat_resources(sba_dev);	sba_hw_init(sba_dev);	sba_common_init(sba_dev);	hppa_dma_ops = &sba_ops;#ifdef CONFIG_PROC_FS	if (IS_ASTRO(&dev->id)) {		create_proc_info_entry("Astro", 0, proc_runway_root, sba_proc_info);	} else if (IS_IKE(&dev->id)) {		create_proc_info_entry("Ike", 0, proc_runway_root, sba_proc_info);	} else if (IS_PLUTO(&dev->id)) {		create_proc_info_entry("Pluto", 0, proc_mckinley_root, sba_proc_info);	} else {		create_proc_info_entry("Reo", 0, proc_runway_root, sba_proc_info);	}#if 0	create_proc_info_entry("bitmap", 0, proc_runway_root, sba_resource_map);#endif#endif	parisc_vmerge_boundary = IOVP_SIZE;	parisc_vmerge_max_size = IOVP_SIZE * BITS_PER_LONG;	parisc_has_iommu();	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/53f01bba49938f115237fe43a261c31ac13ae5c6/sba_iommu.c/buggy/drivers/parisc/sba_iommu.c