Commit b1f54ba3 authored by Vitaly Bordug's avatar Vitaly Bordug Committed by Jeff Garzik

FS_ENET: OF-related fixup for FEC and SCC MAC's

Updated direct resource pass with ioremap call, make it grant proper IRQ
mapping, stuff incompatible with the new approach were respectively put
under #ifndef CONFIG_PPC_MERGE.  It is required so that both ppc and
powerpc could utilize fs_enet effectively.
Signed-off-by: default avatarVitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 0c0b3ae6
...@@ -106,7 +106,7 @@ static int do_pd_setup(struct fs_enet_private *fep) ...@@ -106,7 +106,7 @@ static int do_pd_setup(struct fs_enet_private *fep)
return -EINVAL; return -EINVAL;
r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
fep->fec.fecp =(void*)r->start; fep->fec.fecp = ioremap(r->start, r->end - r->start + 1);
if(fep->fec.fecp == NULL) if(fep->fec.fecp == NULL)
return -EINVAL; return -EINVAL;
...@@ -319,8 +319,11 @@ static void restart(struct net_device *dev) ...@@ -319,8 +319,11 @@ static void restart(struct net_device *dev)
* Clear any outstanding interrupt. * Clear any outstanding interrupt.
*/ */
FW(fecp, ievent, 0xffc0); FW(fecp, ievent, 0xffc0);
#ifndef CONFIG_PPC_MERGE
FW(fecp, ivec, (fep->interrupt / 2) << 29); FW(fecp, ivec, (fep->interrupt / 2) << 29);
#else
FW(fecp, ivec, (virq_to_hw(fep->interrupt) / 2) << 29);
#endif
/* /*
* adjust to speed (only for DUET & RMII) * adjust to speed (only for DUET & RMII)
...@@ -418,6 +421,7 @@ static void stop(struct net_device *dev) ...@@ -418,6 +421,7 @@ static void stop(struct net_device *dev)
static void pre_request_irq(struct net_device *dev, int irq) static void pre_request_irq(struct net_device *dev, int irq)
{ {
#ifndef CONFIG_PPC_MERGE
immap_t *immap = fs_enet_immap; immap_t *immap = fs_enet_immap;
u32 siel; u32 siel;
...@@ -431,6 +435,7 @@ static void pre_request_irq(struct net_device *dev, int irq) ...@@ -431,6 +435,7 @@ static void pre_request_irq(struct net_device *dev, int irq)
siel &= ~(0x80000000 >> (irq & ~1)); siel &= ~(0x80000000 >> (irq & ~1));
out_be32(&immap->im_siu_conf.sc_siel, siel); out_be32(&immap->im_siu_conf.sc_siel, siel);
} }
#endif
} }
static void post_free_irq(struct net_device *dev, int irq) static void post_free_irq(struct net_device *dev, int irq)
......
...@@ -121,13 +121,13 @@ static int do_pd_setup(struct fs_enet_private *fep) ...@@ -121,13 +121,13 @@ static int do_pd_setup(struct fs_enet_private *fep)
return -EINVAL; return -EINVAL;
r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
fep->scc.sccp = (void *)r->start; fep->scc.sccp = ioremap(r->start, r->end - r->start + 1);
if (fep->scc.sccp == NULL) if (fep->scc.sccp == NULL)
return -EINVAL; return -EINVAL;
r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram"); r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram");
fep->scc.ep = (void *)r->start; fep->scc.ep = ioremap(r->start, r->end - r->start + 1);
if (fep->scc.ep == NULL) if (fep->scc.ep == NULL)
return -EINVAL; return -EINVAL;
...@@ -397,6 +397,7 @@ static void stop(struct net_device *dev) ...@@ -397,6 +397,7 @@ static void stop(struct net_device *dev)
static void pre_request_irq(struct net_device *dev, int irq) static void pre_request_irq(struct net_device *dev, int irq)
{ {
#ifndef CONFIG_PPC_MERGE
immap_t *immap = fs_enet_immap; immap_t *immap = fs_enet_immap;
u32 siel; u32 siel;
...@@ -410,6 +411,7 @@ static void pre_request_irq(struct net_device *dev, int irq) ...@@ -410,6 +411,7 @@ static void pre_request_irq(struct net_device *dev, int irq)
siel &= ~(0x80000000 >> (irq & ~1)); siel &= ~(0x80000000 >> (irq & ~1));
out_be32(&immap->im_siu_conf.sc_siel, siel); out_be32(&immap->im_siu_conf.sc_siel, siel);
} }
#endif
} }
static void post_free_irq(struct net_device *dev, int irq) static void post_free_irq(struct net_device *dev, int irq)
......
...@@ -349,7 +349,7 @@ static int __init fixed_init(void) ...@@ -349,7 +349,7 @@ static int __init fixed_init(void)
fixed_mdio_register_device(0, 100, 1); fixed_mdio_register_device(0, 100, 1);
#endif #endif
#ifdef CONFIX_FIXED_MII_10_FDX #ifdef CONFIG_FIXED_MII_10_FDX
fixed_mdio_register_device(0, 10, 1); fixed_mdio_register_device(0, 10, 1);
#endif #endif
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment