Use dcr_host_t.base in ibm_emac_mal
authorMichael Ellerman <michael@ellerman.id.au>
Mon, 15 Oct 2007 09:34:35 +0000 (19:34 +1000)
committerJeff Garzik <jeff@garzik.org>
Mon, 15 Oct 2007 18:29:49 +0000 (14:29 -0400)
This requires us to do a sort-of fake dcr_map(), so that base is set
properly. This will be fixed/removed when the device-tree-aware emac driver
is merged.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/ibm_emac/ibm_emac_mal.c
drivers/net/ibm_emac/ibm_emac_mal.h

index 4e49e8c..dcd8826 100644 (file)
@@ -413,7 +413,10 @@ static int __init mal_probe(struct ocp_device *ocpdev)
                       ocpdev->def->index);
                return -ENOMEM;
        }
-       mal->dcrbase = maldata->dcr_base;
+
+       /* XXX This only works for native dcr for now */
+       mal->dcrhost = dcr_map(NULL, maldata->dcr_base, 0);
+
        mal->def = ocpdev->def;
 
        INIT_LIST_HEAD(&mal->poll_list);
index 8f54d62..aa76d3f 100644 (file)
@@ -191,7 +191,6 @@ struct mal_commac {
 };
 
 struct ibm_ocp_mal {
-       int                     dcrbase;
        dcr_host_t              dcrhost;
 
        struct list_head        poll_list;
@@ -209,12 +208,12 @@ struct ibm_ocp_mal {
 
 static inline u32 get_mal_dcrn(struct ibm_ocp_mal *mal, int reg)
 {
-       return dcr_read(mal->dcrhost, mal->dcrbase + reg);
+       return dcr_read(mal->dcrhost, mal->dcrhost.base + reg);
 }
 
 static inline void set_mal_dcrn(struct ibm_ocp_mal *mal, int reg, u32 val)
 {
-       dcr_write(mal->dcrhost, mal->dcrbase + reg, val);
+       dcr_write(mal->dcrhost, mal->dcrhost.base + reg, val);
 }
 
 /* Register MAL devices */