struct mal_instance *mal;
        int err = 0, i, bd_size;
        int index = mal_count++;
+       unsigned int dcr_base;
        const u32 *prop;
        u32 cfg;
 
        }
        mal->num_rx_chans = prop[0];
 
-       mal->dcr_base = dcr_resource_start(ofdev->node, 0);
-       if (mal->dcr_base == 0) {
+       dcr_base = dcr_resource_start(ofdev->node, 0);
+       if (dcr_base == 0) {
                printk(KERN_ERR
                       "mal%d: can't find DCR resource!\n", index);
                err = -ENODEV;
                goto fail;
        }
-        mal->dcr_host = dcr_map(ofdev->node, mal->dcr_base, 0x100);
+       mal->dcr_host = dcr_map(ofdev->node, dcr_base, 0x100);
        if (!DCR_MAP_OK(mal->dcr_host)) {
                printk(KERN_ERR
                       "mal%d: failed to map DCRs !\n", index);
  fail2:
        dma_free_coherent(&ofdev->dev, bd_size, mal->bd_virt, mal->bd_dma);
  fail_unmap:
-       dcr_unmap(mal->dcr_host, mal->dcr_base, 0x100);
+       dcr_unmap(mal->dcr_host, dcr_base, 0x100);
  fail:
        kfree(mal);
 
 
 
 struct mal_instance {
        int                     version;
-       int                     dcr_base;
        dcr_host_t              dcr_host;
 
        int                     num_tx_chans;   /* Number of TX channels */
 
 static inline u32 get_mal_dcrn(struct mal_instance *mal, int reg)
 {
-       return dcr_read(mal->dcr_host, mal->dcr_base + reg);
+       return dcr_read(mal->dcr_host, mal->dcr_host.base + reg);
 }
 
 static inline void set_mal_dcrn(struct mal_instance *mal, int reg, u32 val)
 {
-       dcr_write(mal->dcr_host, mal->dcr_base + reg, val);
+       dcr_write(mal->dcr_host, mal->dcr_host.base + reg, val);
 }
 
 /* Register MAL devices */