ZTWO_VADDR() converts from physical to virtual I/O addresses, so it should return "void __iomem *" instead of "unsigned long". This allows to drop several casts, but requires adding a few casts to accomodate legacy driver frameworks that store "unsigned long" I/O addresses.
Unified · Split
| @@ -87,7 +87,7 @@ void *amiga_chip_alloc_res(unsigned long size, struct resource *res) · 86 unmodified lines | ||
| 87 | 87 | |
| 88 | 88 | atomic_sub(size, &chipavail); |
| 89 | 89 | pr_debug("amiga_chip_alloc_res: returning %pR\n", res); |
| 90 | − return (void *)ZTWO_VADDR(res->start); | |
| 90 | + return ZTWO_VADDR(res->start); | |
| 91 | 91 | } |
| 92 | 92 | |
| 93 | 93 | void amiga_chip_free(void *ptr) |
| @@ -618,7 +618,7 @@ static int __init amiga_savekmsg_setup(char *arg) · 617 unmodified lines | ||
| 618 | 618 | |
| 619 | 619 | /* Just steal the block, the chipram allocator isn't functional yet */ |
| 620 | 620 | amiga_chip_size -= SAVEKMSG_MAXMEM; |
| 621 | − savekmsg = (void *)ZTWO_VADDR(CHIP_PHYSADDR + amiga_chip_size); | |
| 621 | + savekmsg = ZTWO_VADDR(CHIP_PHYSADDR + amiga_chip_size); | |
| 622 | 622 | savekmsg->magic1 = SAVEKMSG_MAGIC1; |
| 623 | 623 | savekmsg->magic2 = SAVEKMSG_MAGIC2; |
| 624 | 624 | savekmsg->magicptr = ZTWO_PADDR(savekmsg); |
| @@ -266,7 +266,7 @@ struct CIA { · 265 unmodified lines | ||
| 266 | 266 | |
| 267 | 267 | #define zTwoBase (0x80000000) |
| 268 | 268 | #define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase) |
| 269 | −#define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase) | |
| 269 | +#define ZTWO_VADDR(x) ((void __iomem *)(((unsigned long)(x))+zTwoBase)) | |
| 270 | 270 | |
| 271 | 271 | #define CUSTOM_PHYSADDR (0xdff000) |
| 272 | 272 | #define amiga_custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR))) |
| @@ -116,8 +116,8 @@ get_z2ram( void ) · 115 unmodified lines | ||
| 116 | 116 | if ( test_bit( i, zorro_unused_z2ram ) ) |
| 117 | 117 | { |
| 118 | 118 | z2_count++; |
| 119 | − z2ram_map[ z2ram_size++ ] = | |
| 120 | − ZTWO_VADDR( Z2RAM_START ) + ( i << Z2RAM_CHUNKSHIFT ); | |
| 119 | + z2ram_map[z2ram_size++] = (unsigned long)ZTWO_VADDR(Z2RAM_START) + | |
| 120 | + (i << Z2RAM_CHUNKSHIFT); | |
| 121 | 121 | clear_bit( i, zorro_unused_z2ram ); |
| 122 | 122 | } |
| 123 | 123 | } |
| @@ -198,7 +198,7 @@ fail_base2: · 197 unmodified lines | ||
| 198 | 198 | continue; |
| 199 | 199 | } |
| 200 | 200 | } |
| 201 | − buddha_board = ZTWO_VADDR(board); | |
| 201 | + buddha_board = (unsigned long)ZTWO_VADDR(board); | |
| 202 | 202 | |
| 203 | 203 | /* write to BUDDHA_IRQ_MR to enable the board IRQ */ |
| 204 | 204 | /* X-Surf doesn't have this. IRQs are always on */ |
| @@ -113,7 +113,7 @@ static const struct net_device_ops hydra_netdev_ops = { · 112 unmodified lines | ||
| 113 | 113 | static int hydra_init(struct zorro_dev *z) |
| 114 | 114 | { |
| 115 | 115 | struct net_device *dev; |
| 116 | − unsigned long board = ZTWO_VADDR(z->resource.start); | |
| 116 | + unsigned long board = (unsigned long)ZTWO_VADDR(z->resource.start); | |
| 117 | 117 | unsigned long ioaddr = board+HYDRA_NIC_BASE; |
| 118 | 118 | const char name[] = "NE2000"; |
| 119 | 119 | int start_page, stop_page; |
| @@ -287,7 +287,7 @@ static const struct net_device_ops zorro8390_netdev_ops = { · 286 unmodified lines | ||
| 287 | 287 | }; |
| 288 | 288 | |
| 289 | 289 | static int zorro8390_init(struct net_device *dev, unsigned long board, |
| 290 | − const char *name, unsigned long ioaddr) | |
| 290 | + const char *name, void __iomem *ioaddr) | |
| 291 | 291 | { |
| 292 | 292 | int i; |
| 293 | 293 | int err; |
| @@ -354,7 +354,7 @@ static int zorro8390_init(struct net_device *dev, unsigned long board, · 60 unmodified lines | ||
| 354 | 354 | start_page = NESM_START_PG; |
| 355 | 355 | stop_page = NESM_STOP_PG; |
| 356 | 356 | |
| 357 | − dev->base_addr = ioaddr; | |
| 357 | + dev->base_addr = (unsigned long)ioaddr; | |
| 358 | 358 | dev->irq = IRQ_AMIGA_PORTS; |
| 359 | 359 | |
| 360 | 360 | /* Install the Interrupt handler */ |
| @@ -713,8 +713,8 @@ static int a2065_init_one(struct zorro_dev *z, · 712 unmodified lines | ||
| 713 | 713 | dev->dev_addr[3] = (z->rom.er_SerialNumber >> 16) & 0xff; |
| 714 | 714 | dev->dev_addr[4] = (z->rom.er_SerialNumber >> 8) & 0xff; |
| 715 | 715 | dev->dev_addr[5] = z->rom.er_SerialNumber & 0xff; |
| 716 | − dev->base_addr = ZTWO_VADDR(base_addr); | |
| 717 | − dev->mem_start = ZTWO_VADDR(mem_start); | |
| 716 | + dev->base_addr = (unsigned long)ZTWO_VADDR(base_addr); | |
| 717 | + dev->mem_start = (unsigned long)ZTWO_VADDR(mem_start); | |
| 718 | 718 | dev->mem_end = dev->mem_start + A2065_RAM_SIZE; |
| 719 | 719 | |
| 720 | 720 | priv->ll = (volatile struct lance_regs *)dev->base_addr; |
| @@ -747,8 +747,8 @@ static int ariadne_init_one(struct zorro_dev *z, · 746 unmodified lines | ||
| 747 | 747 | dev->dev_addr[3] = (z->rom.er_SerialNumber >> 16) & 0xff; |
| 748 | 748 | dev->dev_addr[4] = (z->rom.er_SerialNumber >> 8) & 0xff; |
| 749 | 749 | dev->dev_addr[5] = z->rom.er_SerialNumber & 0xff; |
| 750 | − dev->base_addr = ZTWO_VADDR(base_addr); | |
| 751 | − dev->mem_start = ZTWO_VADDR(mem_start); | |
| 750 | + dev->base_addr = (unsigned long)ZTWO_VADDR(base_addr); | |
| 751 | + dev->mem_start = (unsigned long)ZTWO_VADDR(mem_start); | |
| 752 | 752 | dev->mem_end = dev->mem_start + ARIADNE_RAM_SIZE; |
| 753 | 753 | |
| 754 | 754 | dev->netdev_ops = &ariadne_netdev_ops; |
| @@ -300,7 +300,7 @@ static int __init parport_mfc3_init(void) · 299 unmodified lines | ||
| 300 | 300 | if (!request_mem_region(piabase, sizeof(struct pia), "PIA")) |
| 301 | 301 | continue; |
| 302 | 302 | |
| 303 | − pp = (struct pia *)ZTWO_VADDR(piabase); | |
| 303 | + pp = ZTWO_VADDR(piabase); | |
| 304 | 304 | pp->crb = 0; |
| 305 | 305 | pp->pddrb = 255; /* all data pins output */ |
| 306 | 306 | pp->crb = PIA_DDR|32|8; |
| @@ -201,7 +201,7 @@ static int a2091_probe(struct zorro_dev *z, const struct zorro_device_id *ent) · 200 unmodified lines | ||
| 201 | 201 | instance->irq = IRQ_AMIGA_PORTS; |
| 202 | 202 | instance->unique_id = z->slotaddr; |
| 203 | 203 | |
| 204 | − regs = (struct a2091_scsiregs *)ZTWO_VADDR(z->resource.start); | |
| 204 | + regs = ZTWO_VADDR(z->resource.start); | |
| 205 | 205 | regs->DAWR = DAWR_A2091; |
| 206 | 206 | |
| 207 | 207 | wdregs.SASR = ®s->SASR; |
| @@ -220,7 +220,7 @@ static int __init amiga_a3000_scsi_probe(struct platform_device *pdev) · 219 unmodified lines | ||
| 220 | 220 | |
| 221 | 221 | instance->irq = IRQ_AMIGA_PORTS; |
| 222 | 222 | |
| 223 | − regs = (struct a3000_scsiregs *)ZTWO_VADDR(res->start); | |
| 223 | + regs = ZTWO_VADDR(res->start); | |
| 224 | 224 | regs->DAWR = DAWR_A3000; |
| 225 | 225 | |
| 226 | 226 | wdregs.SASR = ®s->SASR; |
| @@ -56,7 +56,7 @@ static int __init amiga_a4000t_scsi_probe(struct platform_device *pdev) · 55 unmodified lines | ||
| 56 | 56 | scsi_addr = res->start + A4000T_SCSI_OFFSET; |
| 57 | 57 | |
| 58 | 58 | /* Fill in the required pieces of hostdata */ |
| 59 | − hostdata->base = (void __iomem *)ZTWO_VADDR(scsi_addr); | |
| 59 | + hostdata->base = ZTWO_VADDR(scsi_addr); | |
| 60 | 60 | hostdata->clock = 50; |
| 61 | 61 | hostdata->chip710 = 1; |
| 62 | 62 | hostdata->dmode_extra = DMODE_FC2; |
| @@ -310,7 +310,7 @@ static int gvp11_probe(struct zorro_dev *z, const struct zorro_device_id *ent) · 309 unmodified lines | ||
| 310 | 310 | if (!request_mem_region(address, 256, "wd33c93")) |
| 311 | 311 | return -EBUSY; |
| 312 | 312 | |
| 313 | − regs = (struct gvp11_scsiregs *)(ZTWO_VADDR(address)); | |
| 313 | + regs = ZTWO_VADDR(address); | |
| 314 | 314 | |
| 315 | 315 | error = check_wd33c93(regs); |
| 316 | 316 | if (error) |
| @@ -104,7 +104,7 @@ static int zorro7xx_init_one(struct zorro_dev *z, · 103 unmodified lines | ||
| 104 | 104 | if (ioaddr > 0x01000000) |
| 105 | 105 | hostdata->base = ioremap(ioaddr, zorro_resource_len(z)); |
| 106 | 106 | else |
| 107 | − hostdata->base = (void __iomem *)ZTWO_VADDR(ioaddr); | |
| 107 | + hostdata->base = ZTWO_VADDR(ioaddr); | |
| 108 | 108 | |
| 109 | 109 | hostdata->clock = 50; |
| 110 | 110 | hostdata->chip710 = 1; |
| @@ -3710,7 +3710,7 @@ default_chipset: · 3709 unmodified lines | ||
| 3710 | 3710 | if (!videomemory) { |
| 3711 | 3711 | dev_warn(&pdev->dev, |
| 3712 | 3712 | "Unable to map videomem cached writethrough\n"); |
| 3713 | − info->screen_base = (char *)ZTWO_VADDR(info->fix.smem_start); | |
| 3713 | + info->screen_base = ZTWO_VADDR(info->fix.smem_start); | |
| 3714 | 3714 | } else |
| 3715 | 3715 | info->screen_base = (char *)videomemory; |
| 3716 | 3716 | |
| @@ -2256,7 +2256,7 @@ static int cirrusfb_zorro_register(struct zorro_dev *z, · 2255 unmodified lines | ||
| 2256 | 2256 | |
| 2257 | 2257 | info->fix.mmio_start = regbase; |
| 2258 | 2258 | cinfo->regbase = regbase > 16 * MB_ ? ioremap(regbase, 64 * 1024) |
| 2259 | − : (caddr_t)ZTWO_VADDR(regbase); | |
| 2259 | + : ZTWO_VADDR(regbase); | |
| 2260 | 2260 | if (!cinfo->regbase) { |
| 2261 | 2261 | dev_err(info->device, "Cannot map registers\n"); |
| 2262 | 2262 | error = -EIO; |
| @@ -2266,7 +2266,7 @@ static int cirrusfb_zorro_register(struct zorro_dev *z, · 3 unmodified lines | ||
| 2266 | 2266 | info->fix.smem_start = rambase; |
| 2267 | 2267 | info->screen_size = ramsize; |
| 2268 | 2268 | info->screen_base = rambase > 16 * MB_ ? ioremap(rambase, ramsize) |
| 2269 | − : (caddr_t)ZTWO_VADDR(rambase); | |
| 2269 | + : ZTWO_VADDR(rambase); | |
| 2270 | 2270 | if (!info->screen_base) { |
| 2271 | 2271 | dev_err(info->device, "Cannot map video RAM\n"); |
| 2272 | 2272 | error = -EIO; |